summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <28625134+DavidHaywood@users.noreply.github.com>2020-03-09 17:37:58 +0000
committer GitHub <noreply@github.com>2020-03-09 18:37:58 +0100
commit848cc70191b6dd4804dd7f6967a46383baca1ed9 (patch)
tree740047b39dcb8b418642d6f4390c80c8da0fef77
parent0f5d9704430be08691749593b25edc8f783810e2 (diff)
Plug and Play work (#6411)
New machines marked as NOT_WORKING ---------------------------------- Power Rangers Force In Time (JAKKS Pacific TV Motion Game) [Sean Riddle, Kev (FBN)] Domyos Step Concept (Domyos Interactive System) [Sean Riddle, 404_11] Tinker Bell and the Lost Treasure (JAKKS Pacific TV Motion Game) [Sean Riddle, David Haywood] Phineas and Ferb: Best Game Ever! (JAKKS Pacific TV Motion Game) [Sean Riddle, David Haywood] * some paccon visual improvements (nw) * some bits for gormiti (nw) * this seems to be # of sprites to draw, paccon uses it extensively (nw) * realistic address mode select (nw) * notes on flipping (nw)
-rw-r--r--src/devices/machine/sunplus_gcm394.cpp2
-rw-r--r--src/devices/machine/sunplus_gcm394_video.cpp95
-rw-r--r--src/devices/machine/sunplus_gcm394_video.h1
-rw-r--r--src/mame/drivers/sunplus_unsp20soc.cpp100
-rw-r--r--src/mame/drivers/xavix.cpp43
-rw-r--r--src/mame/includes/sunplus_unsp20soc.h4
-rw-r--r--src/mame/mame.lst4
7 files changed, 183 insertions, 66 deletions
diff --git a/src/devices/machine/sunplus_gcm394.cpp b/src/devices/machine/sunplus_gcm394.cpp
index d48e110787c..ceef80a6776 100644
--- a/src/devices/machine/sunplus_gcm394.cpp
+++ b/src/devices/machine/sunplus_gcm394.cpp
@@ -701,6 +701,8 @@ void sunplus_gcm394_base_device::base_internal_map(address_map &map)
map(0x007087, 0x007087).w(m_spg_video, FUNC(gcm394_base_video_device::video_7087_w));
map(0x007088, 0x007088).w(m_spg_video, FUNC(gcm394_base_video_device::video_7088_w));
+ map(0x0070e0, 0x0070e0).r(m_spg_video, FUNC(gcm394_base_video_device::video_70e0_r)); // gormiti checks this
+
// ######################################################################################################################################################################################
// 73xx-77xx = video ram
// ######################################################################################################################################################################################
diff --git a/src/devices/machine/sunplus_gcm394_video.cpp b/src/devices/machine/sunplus_gcm394_video.cpp
index e91061dc94b..34eb17c3d32 100644
--- a/src/devices/machine/sunplus_gcm394_video.cpp
+++ b/src/devices/machine/sunplus_gcm394_video.cpp
@@ -365,6 +365,17 @@ void gcm394_base_video_device::draw(const rectangle &cliprect, uint32_t line, ui
{
words_per_tile = 8; // seems to be correct for sprites regardless of size / bpp on smartfp
}
+
+ int x_max;
+ if (m_707f & 0x0010)
+ {
+ x_max = 0x400;
+ }
+ else
+ {
+ x_max = 0x200;
+ }
+
uint32_t m = (bitmap_addr) + (words_per_tile * tile + bits_per_row * (line ^ yflipmask));
@@ -428,9 +439,9 @@ void gcm394_base_video_device::draw(const rectangle &cliprect, uint32_t line, ui
if (RowScroll)
xx -= 0;// (int16_t)m_scrollram[yy & 0x1ff];
- //xx &= 0x01ff;
- //if (xx >= 0x01c0)
- // xx -= 0x0200;
+ xx &= (x_max-1);
+ if (xx >= (x_max-0x40))
+ xx -= x_max;
if (xx >= 0 && xx <= cliprect.max_x)
{
@@ -686,7 +697,7 @@ void gcm394_base_video_device::draw_page(const rectangle &cliprect, uint32_t sca
}
-void gcm394_base_video_device::draw_sprite(const rectangle &cliprect, uint32_t scanline, int priority, uint32_t base_addr)
+void gcm394_base_video_device::draw_sprite(const rectangle& cliprect, uint32_t scanline, int priority, uint32_t base_addr)
{
uint32_t bitmap_addr = (m_sprite_702d_gfxbase_msb << 16) | m_sprite_7022_gfxbase_lsb;
uint32_t tile = m_spriteram[base_addr + 0];
@@ -702,14 +713,29 @@ void gcm394_base_video_device::draw_sprite(const rectangle &cliprect, uint32_t s
int addressing_mode = 0;
- // m_7042_sprite is f7 on smartfp
- // 01 on wrlshunt
- // this is not enough to conclude anything
+ int screenwidth, screenheight, x_max;
+ if (m_707f & 0x0010)
+ {
+ screenwidth = 640;
+ screenheight = 480;
+ x_max = 0x400;
+ }
+ else
+ {
+ screenwidth = 320;
+ screenheight = 240;
+ x_max = 0x200;
+ }
- if (m_7042_sprite == 0x01)
+
+ // good for gormiti, smartfp, wrlshunt, paccon, jak_totm, jak_s500, jak_gtg
+ if ((m_7042_sprite & 0x0010) == 0x10)
+ addressing_mode = 0; // smartfp, paccon
+ else
addressing_mode = 1;
- tile |= m_spriteextra[base_addr / 4] << 16;
+ if (addressing_mode == 0) // smartfp, paccon
+ tile |= m_spriteextra[base_addr / 4] << 16;
if (((attr & PAGE_PRIORITY_FLAG_MASK) >> PAGE_PRIORITY_FLAG_SHIFT) != priority)
{
@@ -719,15 +745,16 @@ void gcm394_base_video_device::draw_sprite(const rectangle &cliprect, uint32_t s
const uint32_t h = 8 << ((attr & PAGE_TILE_HEIGHT_MASK) >> PAGE_TILE_HEIGHT_SHIFT);
const uint32_t w = 8 << ((attr & PAGE_TILE_WIDTH_MASK) >> PAGE_TILE_WIDTH_SHIFT);
- /*
- if (!(m_video_regs[0x42] & SPRITE_COORD_TL_MASK))
+
+
+ if (!(m_7042_sprite & SPRITE_COORD_TL_MASK))
{
- x = (160 + x) - w / 2;
- y = (120 - y) - (h / 2) + 8;
+ x = ((screenwidth / 2) + x) - w / 2;
+ y = ((screenheight / 2) - y) - (h / 2) + 8;
}
- */
- x &= 0x01ff;
+
+ x &= (x_max - 1);
y &= 0x01ff;
uint32_t tile_line = ((scanline - y) + 0x200) % h;
@@ -742,17 +769,26 @@ void gcm394_base_video_device::draw_sprite(const rectangle &cliprect, uint32_t s
bool blend = (attr & 0x4000);
- bool flip_x = false;
+ bool flip_x;
+ uint8_t bpp;
+ uint32_t yflipmask;
+ uint32_t palette_offset;
// different attribute use?
- if (addressing_mode == 0)
+ if (addressing_mode == 0) // smartfp, paccon
{
flip_x = (attr & TILE_X_FLIP);
+ bpp = attr & 0x0003;
+ yflipmask = attr & TILE_Y_FLIP ? h - 1 : 0;
+ palette_offset = (attr & 0x0f00) >> 4;
+ }
+ else
+ {
+ flip_x = 0;// (attr & TILE_X_FLIP); // wrlshunt, jak_totm, jak_s550 do not want this to be flip bit, gormiti does. also configurable, or error in spriteram content?
+ bpp = attr & 0x0003;
+ yflipmask = 0;// attr& TILE_Y_FLIP ? h - 1 : 0; // see flipx comment
+ palette_offset = (attr & 0x0f00) >> 4;
}
-
- const uint8_t bpp = attr & 0x0003;
- const uint32_t yflipmask = attr & TILE_Y_FLIP ? h - 1 : 0;
- uint32_t palette_offset = (attr & 0x0f00) >> 4;
//palette_offset |= 0x0d00;
palette_offset |= 0x0500;
@@ -775,7 +811,12 @@ void gcm394_base_video_device::draw_sprite(const rectangle &cliprect, uint32_t s
void gcm394_base_video_device::draw_sprites(const rectangle &cliprect, uint32_t scanline, int priority)
{
- for (uint32_t n = 0; n < 0x100; n++)
+ // paccon suggests this, does older hardware have similar?
+ int numsprites = (m_7042_sprite & 0xff00) >> 8;
+ if (numsprites == 0)
+ numsprites = 0x100;
+
+ for (uint32_t n = 0; n < numsprites; n++)
{
draw_sprite(cliprect, scanline, priority, 4 * n);
}
@@ -1282,6 +1323,8 @@ WRITE16_MEMBER(gcm394_base_video_device::video_707f_w)
}
m_707f = data;
+
+ //popmessage("707f is %04x\n", data);
}
READ16_MEMBER(gcm394_base_video_device::video_703a_palettebank_r)
@@ -1408,6 +1451,14 @@ READ16_MEMBER(gcm394_base_video_device::video_7051_r)
return retdat;
}
+READ16_MEMBER(gcm394_base_video_device::video_70e0_r)
+{
+ uint16_t retdat = machine().rand();
+ LOGMASKED(LOG_GCM394_VIDEO, "%s:gcm394_base_video_device::video_70e0_r (returning %04x)\n", machine().describe_context(), retdat);
+ return retdat;
+}
+
+
// this block get set once, in a single function, could be important
WRITE16_MEMBER(gcm394_base_video_device::video_7080_w) { LOGMASKED(LOG_GCM394_VIDEO, "%s:gcm394_base_video_device::video_7080_w %04x\n", machine().describe_context(), data); m_7080 = data; }
WRITE16_MEMBER(gcm394_base_video_device::video_7081_w) { LOGMASKED(LOG_GCM394_VIDEO, "%s:gcm394_base_video_device::video_7081_w %04x\n", machine().describe_context(), data); m_7081 = data; }
diff --git a/src/devices/machine/sunplus_gcm394_video.h b/src/devices/machine/sunplus_gcm394_video.h
index e9349700e3b..e88cf402c82 100644
--- a/src/devices/machine/sunplus_gcm394_video.h
+++ b/src/devices/machine/sunplus_gcm394_video.h
@@ -124,6 +124,7 @@ public:
DECLARE_READ16_MEMBER(spriteram_r);
DECLARE_READ16_MEMBER(video_7051_r);
+ DECLARE_READ16_MEMBER(video_70e0_r);
auto write_video_irq_callback() { return m_video_irq_cb.bind(); };
diff --git a/src/mame/drivers/sunplus_unsp20soc.cpp b/src/mame/drivers/sunplus_unsp20soc.cpp
index 95a842e7eba..db9bdc478ef 100644
--- a/src/mame/drivers/sunplus_unsp20soc.cpp
+++ b/src/mame/drivers/sunplus_unsp20soc.cpp
@@ -203,6 +203,9 @@ READ16_MEMBER(jak_s500_game_state::porta_r)
//if (mem.read_word(0x236271) == 0x4846)
// mem.write_word(0x236271, 0x4840); // jak_totm force service mode
+ //if (mem.read_word(0x22D6F7) == 0x4846)
+ // mem.write_word(0x22D6F7, 0x4840); // jak_pf force service mode
+
return data;
}
@@ -263,12 +266,12 @@ WRITE16_MEMBER(generalplus_gpac800_game_state::cs0_w)
READ16_MEMBER(generalplus_gpac800_game_state::cs1_r)
{
- return m_sdram[offset & 0x3fffff];
+ return m_sdram[offset & (m_sdram_kwords-1)];
}
WRITE16_MEMBER(generalplus_gpac800_game_state::cs1_w)
{
- m_sdram[offset & 0x3fffff] = data;
+ m_sdram[offset & (m_sdram_kwords-1)] = data;
}
READ8_MEMBER(generalplus_gpac800_game_state::read_nand)
@@ -353,6 +356,14 @@ void wrlshunt_game_state::wrlshunt(machine_config &config)
gcm394_game_state::base(config);
}
+void wrlshunt_game_state::paccon(machine_config &config)
+{
+ gcm394_game_state::base(config);
+
+ m_maincpu->set_clock(96000000); // needs to be somewhere in this region or the emulator running on the SunPlus is too slow
+}
+
+
void tkmag220_game_state::tkmag220(machine_config &config)
{
gcm394_game_state::base(config);
@@ -621,29 +632,15 @@ static INPUT_PORTS_START( smartfp )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
INPUT_PORTS_END
-static INPUT_PORTS_START( gormiti )
+static INPUT_PORTS_START( gormiti ) // DOWN with A+B+C for test mode?
PORT_START("IN0")
- PORT_DIPNAME( 0x0001, 0x0001, "IN0" )
- PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
@@ -653,9 +650,7 @@ static INPUT_PORTS_START( gormiti )
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 ) // causes long delay in test mode?
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
@@ -1331,6 +1326,34 @@ ROM_START(jak_s500)
ROM_LOAD16_WORD_SWAP("spbwheel.bin", 0x000000, 0x800000, CRC(6ba1d335) SHA1(1bb3e4d02c7b35dd4d336971c6a9f82071cc6ce1) )
ROM_END
+ROM_START(jak_pf)
+ //ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
+ //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
+
+ ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
+ ROM_LOAD16_WORD_SWAP("phineas.bin", 0x000000, 0x800000, CRC(bb18f70d) SHA1(4e3c204e44efe9186809404521ebeac348c45fac))
+ROM_END
+
+ROM_START(jak_prft)
+ //ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
+ //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
+
+ ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
+ ROM_LOAD16_WORD_SWAP("powerrangerssword.bin", 0x000000, 0x800000, CRC(77bc8aea) SHA1(a2efaa718d8ecece46cebb9f0f13a8fa10fc2826) )
+ROM_END
+
+ROM_START(jak_tink)
+ //ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
+ //ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
+
+ ROM_REGION(0x800000, "maincpu", ROMREGION_ERASE00)
+ ROM_LOAD16_WORD_SWAP("disneyfairies.bin", 0x000000, 0x800000, CRC(566dae87) SHA1(3abe1b7d578ed9255101bfec0e4bb4d6dc0aa0b7) )
+ROM_END
+
+
+
+
+
ROM_START(jak_totm)
//ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 ) // not on this model? (or at least not this size, as CS base is different)
//ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP )
@@ -1557,10 +1580,13 @@ CONS(2013, gormiti, 0, 0, base, gormiti, gcm394_game_state, empty_init, "Gioc
// Fun 2 Learn 3-in-1 SMART SPORTS ?
// also sold as "Pac-Man Connect & Play 35th Anniversary" (same ROM?)
-CONS(2012, paccon, 0, 0, wrlshunt, paccon, jak_s500_game_state, init_wrlshunt, "Bandai", "Pac-Man Connect & Play (Feb 14 2012 10:46:23)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
+CONS(2012, paccon, 0, 0, paccon, paccon, jak_s500_game_state, init_wrlshunt, "Bandai", "Pac-Man Connect & Play (Feb 14 2012 10:46:23)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
CONS(2009, jak_s500, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "SpongeBob SquarePants Bikini Bottom 500 (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
+CONS(2010, jak_pf, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "Phineas and Ferb: Best Game Ever! (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // build date is 2009, but onscreen display is 2010
+CONS(2009, jak_prft, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "Power Rangers Force In Time (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
+CONS(2009, jak_tink, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "Tinker Bell and the Lost Treasure (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
CONS(200?, jak_totm, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_wrlshunt, "JAKKS Pacific Inc", "Toy Story - Toys on the Move (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND) // Toys on the Move has ISSI 404A
CONS(2009, jak_ths, 0, 0, wrlshunt, jak_s500, jak_s500_game_state, init_ths, "JAKKS Pacific Inc", "Triple Header Sports (JAKKS Pacific TV Motion Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
@@ -1677,7 +1703,7 @@ void generalplus_gpac800_game_state::machine_reset()
void generalplus_gpac800_game_state::nand_init210()
{
- m_sdram.resize(0x400000); // 0x400000 words (0x800000 bytes)
+ m_sdram.resize(m_sdram_kwords);
m_sdram2.resize(0x10000);
m_nandblocksize = 0x210;
@@ -1686,9 +1712,15 @@ void generalplus_gpac800_game_state::nand_init210()
m_vectorbase = 0x6fe0;
}
+void generalplus_gpac800_game_state::nand_init210_32mb()
+{
+ m_sdram_kwords = 0x400000 * 4;
+ nand_init210();
+}
+
void generalplus_gpac800_game_state::nand_init840()
{
- m_sdram.resize(0x400000); // 0x400000 words (0x800000 bytes)
+ m_sdram.resize(m_sdram_kwords);
m_sdram2.resize(0x10000);
m_nandblocksize = 0x840;
@@ -1744,10 +1776,10 @@ CONS(200?, vbaby, 0, 0, generalplus_gpac800_vbaby, jak_car2, generalplus_gpac
// There were 1 player and 2 player versions for several of the JAKKS guns. The 2nd gun appears to be simply a controller (no AV connectors) but as they were separate products with the 2 player verisons being released up to a year after the original, the code could differ.
// If they differ, it is currently uncertain which versions these ROMs are from
-CONS(2012, jak_wdzh, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "The Walking Dead: Zombie Hunter (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // gun games all had Atmel 16CM (24C16).
-CONS(2013, jak_swc, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "Star Wars Clone Trooper (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(2013, jak_duck, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "Duck Commander (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // no 2 Player version was released
-CONS(2014, jak_wdbg, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "The Walking Dead: Battleground (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(2012, jak_wdzh, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc", "The Walking Dead: Zombie Hunter (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // gun games all had Atmel 16CM (24C16).
+CONS(2013, jak_swc, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc", "Star Wars Clone Trooper (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+CONS(2013, jak_duck, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc", "Duck Commander (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // no 2 Player version was released
+CONS(2014, jak_wdbg, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc", "The Walking Dead: Battleground (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
ROM_START( bkrankp )
diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp
index eeac276c1d2..50ce2923ff8 100644
--- a/src/mame/drivers/xavix.cpp
+++ b/src/mame/drivers/xavix.cpp
@@ -2458,10 +2458,14 @@ ROM_START( xavbox )
ROM_LOAD( "xpboxing.bin", 0x000000, 0x800000, CRC(b61e7717) SHA1(162b9c53ac8c9d7b6972db44f7bc1cb0a7837b70) )
ROM_END
+// Several of the XaviXport and DiS games are 2 glob setups (and must have some kind of banking)
ROM_START( xavjmat )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpjmat.bin", 0x000000, 0x1000000, CRC(71a51eef) SHA1(41fd2c3013d1c86756046ec9174e94400f8fa06d) )
+ ROM_REGION( 0x0800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "u2", 0x0000000, 0x0800000, CRC(1420640d) SHA1(dd714cd57cff885293688f74f69b5c1726e20ec0) )
+
+ ROM_REGION( 0x0800000, "biosu3", ROMREGION_ERASE00 )
+ ROM_LOAD( "u3", 0x0000000, 0x0800000, CRC(52dc318c) SHA1(dc50e0747ba29cfb1048fd4a55d26870086c869b) )
ROM_END
// currently copies the wrong code into RAM to execute (due to extended ROM size, and possible banking)
@@ -2470,28 +2474,46 @@ ROM_END
// needs to come from 006be2d3 (so still from lower 8MB, not upper 8MB)
ROM_START( xavmusic )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpmusicandcircuit.bin", 0x000000, 0x1000000, CRC(e06129d2) SHA1(d074d0dd85ce870f435da3c066a7f52b50999665) )
+ ROM_REGION( 0x0800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "u2", 0x0000000, 0x0800000, CRC(e7c8ad59) SHA1(d47fac8b480de4db88a1b306ff8830a65d1738a3) )
+
+ ROM_REGION( 0x0800000, "biosu3", ROMREGION_ERASE00 )
+ ROM_LOAD( "u3", 0x0000000, 0x0800000, CRC(977c956f) SHA1(debc086d0cf6c391002ad163e7bfaa2f010cc8f5) )
ROM_END
// Domyos DiS (XaviX 2002 based titles)
ROM_START( domfitex )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnessexercise.bin", 0x000000, 0x1000000, CRC(f1089229) SHA1(803df8ba0a05cb004a4238c6c71ea1ffa4428990) )
+ ROM_REGION( 0x0800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "u2", 0x0000000, 0x0800000, CRC(841fe3cd) SHA1(8678b8a0c5198b24169a84dbe3ae979bb0838f23) )
+
+ ROM_REGION( 0x0800000, "biosu3", ROMREGION_ERASE00 )
+ ROM_LOAD( "u3", 0x0000000, 0x0800000, CRC(1dc844ea) SHA1(c23da9006227f7fe4982998c17759d403a47472a) )
ROM_END
ROM_START( domfitch )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnesschallenge.bin", 0x000000, 0x1000000, CRC(e0a4093d) SHA1(2692ac03f8be4f86a4777ad0c365cbab7b469e3b) )
+ ROM_REGION( 0x0800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "u2", 0x0000000, 0x0800000, CRC(0ff2a7a6) SHA1(9b924cc4330e3f8d9204390854048fe2325bfdf7) )
+
+ ROM_REGION( 0x0800000, "biosu3", ROMREGION_ERASE00 )
+ ROM_LOAD( "u3", 0x0000000, 0x0800000, CRC(284583f6) SHA1(bd2d5304f1e01eed656b5de957ec0a0330a3d969) )
ROM_END
ROM_START( domdance )
- ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
- ROM_LOAD( "xpfitnessdance.bin", 0x000000, 0x1000000, CRC(3170dd41) SHA1(9c9b4f1d8e7c5097271bb8712463ad93c8d55d97) )
+ ROM_REGION( 0x0800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "u2", 0x0000000, 0x0800000, CRC(74f9499d) SHA1(a64235075e32567cd6d2ab7b1284efcb8e7538e2) )
+
+ ROM_REGION( 0x0800000, "biosu3", ROMREGION_ERASE00 )
+ ROM_LOAD( "u3", 0x0000000, 0x0800000, CRC(e437565c) SHA1(f6db219ea14404b698ca453f6e50c726b2e77abb) )
ROM_END
+ROM_START( domstepc )
+ ROM_REGION( 0x0800000, "bios", ROMREGION_ERASE00 )
+ ROM_LOAD( "u2", 0x0000000, 0x0800000, CRC(cb37b5e9) SHA1(b742e3db98f36720adf5af9096c6bc235279de12) )
+ ROM_REGION( 0x0800000, "biosu3", ROMREGION_ERASE00 )
+ ROM_LOAD( "u3", 0x0000000, 0x0800000, CRC(dadaa744) SHA1(fd7ca77232a8fe228fc93b0a8a47ba3260349d90) )
+ROM_END
ROM_START( mrangbat )
ROM_REGION(0x400000, "bios", ROMREGION_ERASE00)
@@ -2536,6 +2558,7 @@ CONS( 2007, xavmusic, 0, 0, xavix2002_i2c_jmat, xavix, xavix_i2c_jmat_stat
CONS( 2008, domfitex, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Exercises (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 2008, domfitch, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Challenge (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 2007, domdance, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Dance (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+CONS( 2007, domstepc, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Step Concept (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// some DIS games run on XaviX 2 instead, see xavix2.cpp for Domyos Fitness Adventure and Domyos Bike Concept
diff --git a/src/mame/includes/sunplus_unsp20soc.h b/src/mame/includes/sunplus_unsp20soc.h
index 994bf682c64..ce4c06360d8 100644
--- a/src/mame/includes/sunplus_unsp20soc.h
+++ b/src/mame/includes/sunplus_unsp20soc.h
@@ -111,6 +111,7 @@ public:
generalplus_gpac800_game_state(const machine_config& mconfig, device_type type, const char* tag) :
gcm394_game_state(mconfig, type, tag),
m_nandregion(*this, "nandrom"),
+ m_sdram_kwords(0x400000), // 0x400000 words (0x800000 bytes)
m_initial_copy_words(0x2000)
{
}
@@ -118,6 +119,7 @@ public:
void generalplus_gpac800(machine_config &config);
void nand_init210();
+ void nand_init210_32mb();
void nand_init840();
void nand_wlsair60();
void nand_vbaby();
@@ -148,6 +150,7 @@ private:
int m_nandblocksize;
int m_nandblocksize_stripped;
+ int m_sdram_kwords;
int m_initial_copy_words;
int m_vectorbase;
};
@@ -258,6 +261,7 @@ public:
}
void wrlshunt(machine_config &config);
+ void paccon(machine_config &config);
void init_wrlshunt();
void init_ths();
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 4c031763381..5ffbd4f21a2 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -37825,6 +37825,9 @@ starfigh // (c) 1990 SunA
@source:sunplus_unsp20soc.cpp
paccon
jak_s500
+jak_pf
+jak_prft
+jak_tink
jak_totm
jak_ths
smartfp // Smart Fit Park
@@ -41422,6 +41425,7 @@ xavmusic //
domfitex //
domfitch //
domdance //
+domstepc //
@source:xavix2.cpp
ltv_naru //