diff options
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 |
commit | 848cc70191b6dd4804dd7f6967a46383baca1ed9 (patch) | |
tree | 740047b39dcb8b418642d6f4390c80c8da0fef77 | |
parent | 0f5d9704430be08691749593b25edc8f783810e2 (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.cpp | 2 | ||||
-rw-r--r-- | src/devices/machine/sunplus_gcm394_video.cpp | 95 | ||||
-rw-r--r-- | src/devices/machine/sunplus_gcm394_video.h | 1 | ||||
-rw-r--r-- | src/mame/drivers/sunplus_unsp20soc.cpp | 100 | ||||
-rw-r--r-- | src/mame/drivers/xavix.cpp | 43 | ||||
-rw-r--r-- | src/mame/includes/sunplus_unsp20soc.h | 4 | ||||
-rw-r--r-- | src/mame/mame.lst | 4 |
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 // |