summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/generalplus_gpl16250_nand.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/generalplus_gpl16250_nand.cpp')
-rw-r--r--src/mame/drivers/generalplus_gpl16250_nand.cpp937
1 files changed, 0 insertions, 937 deletions
diff --git a/src/mame/drivers/generalplus_gpl16250_nand.cpp b/src/mame/drivers/generalplus_gpl16250_nand.cpp
deleted file mode 100644
index 22ab9726fb5..00000000000
--- a/src/mame/drivers/generalplus_gpl16250_nand.cpp
+++ /dev/null
@@ -1,937 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-/*
- GPL16250 / GPAC800 / GMC384 / GCM420 related support
-
- GPL16250 is the GeneralPlus / SunPlus part number
- GPAC800 is the JAKKS Pacific codename
- GMC384 / GCM420 is what is printed on the die
-
- ----
-
- GPL16250 games using NAND + RAM configuration
-*/
-
-/*
- map info (NAND type)
-
- map(0x000000, 0x006fff) internal RAM
- map(0x007000, 0x007fff) internal peripherals
- map(0x008000, 0x00ffff) internal ROM (lower 32kwords) - can also be configured to mirror CS0 308000 area with external pin for boot from external ROM
- map(0x010000, 0x027fff) internal ROM (upper 96kwords) - can't be switched
- map(0x028000, 0x02ffff) reserved
-
- map(0x030000, 0x0.....) view into external spaces (CS0 area starts here. followed by CS1 area, CS2 area etc.)
-
- map(0x200000, 0x3fffff) continued view into external spaces, but this area is banked with m_membankswitch_7810 (valid bank values 0x00-0x3f)
-*/
-
-
-
-#include "emu.h"
-#include "includes/generalplus_gpl16250.h"
-#include "includes/generalplus_gpl16250_nand.h"
-
-uint16_t generalplus_gpac800_game_state::cs0_r(offs_t offset)
-{
- return m_sdram2[offset & 0xffff];
-}
-
-void generalplus_gpac800_game_state::cs0_w(offs_t offset, uint16_t data)
-{
- m_sdram2[offset & 0xffff] = data;
-}
-
-uint16_t generalplus_gpac800_game_state::cs1_r(offs_t offset)
-{
- return m_sdram[offset & (m_sdram_kwords-1)];
-}
-
-void generalplus_gpac800_game_state::cs1_w(offs_t offset, uint16_t data)
-{
- m_sdram[offset & (m_sdram_kwords-1)] = data;
-}
-
-uint8_t generalplus_gpac800_game_state::read_nand(offs_t offset)
-{
- if (!m_nandregion)
- return 0x0000;
-
- if (offset < m_size)
- {
- return m_nandregion[offset];
- }
- else
- {
- popmessage("read outside of NAND ROM space (offset %08x) (size %08x)\n", offset, m_size);
- return 0xff;
- }
-
- return 0x00;
-}
-
-void generalplus_gpac800_game_state::generalplus_gpac800(machine_config &config)
-{
- GPAC800(config, m_maincpu, 96000000/2, m_screen);
- m_maincpu->porta_in().set(FUNC(generalplus_gpac800_game_state::porta_r));
- m_maincpu->portb_in().set(FUNC(generalplus_gpac800_game_state::portb_r));
- m_maincpu->portc_in().set(FUNC(generalplus_gpac800_game_state::portc_r));
- m_maincpu->porta_out().set(FUNC(generalplus_gpac800_game_state::porta_w));
- m_maincpu->space_read_callback().set(FUNC(generalplus_gpac800_game_state::read_external_space));
- m_maincpu->space_write_callback().set(FUNC(generalplus_gpac800_game_state::write_external_space));
- m_maincpu->set_irq_acknowledge_callback(m_maincpu, FUNC(sunplus_gcm394_base_device::irq_vector_cb));
- m_maincpu->add_route(ALL_OUTPUTS, "lspeaker", 0.5);
- m_maincpu->add_route(ALL_OUTPUTS, "rspeaker", 0.5);
- m_maincpu->set_bootmode(0); // boot from internal ROM (NAND bootstrap)
- m_maincpu->set_cs_config_callback(FUNC(gcm394_game_state::cs_callback));
-
- m_maincpu->nand_read_callback().set(FUNC(generalplus_gpac800_game_state::read_nand));
-
- FULL_MEMORY(config, m_memory).set_map(&generalplus_gpac800_game_state::cs_map_base);
-
- SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
- m_screen->set_refresh_hz(60);
- m_screen->set_size(320*2, 262*2);
- m_screen->set_visarea(0, (320*2)-1, 0, (240*2)-1);
- m_screen->set_screen_update("maincpu", FUNC(sunplus_gcm394_device::screen_update));
- m_screen->screen_vblank().set(m_maincpu, FUNC(sunplus_gcm394_device::vblank));
-
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-}
-
-DEVICE_IMAGE_LOAD_MEMBER(generalplus_gpac800_vbaby_game_state::cart_load)
-{
- uint32_t size = m_cart->common_get_size("rom");
-
- m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
- m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
-
- return image_init_result::PASS;
-}
-
-void generalplus_gpac800_vbaby_game_state::generalplus_gpac800_vbaby(machine_config &config)
-{
- generalplus_gpac800_game_state::generalplus_gpac800(config);
-
- GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vbaby_cart");
- m_cart->set_width(GENERIC_ROM16_WIDTH);
- m_cart->set_device_load(FUNC(generalplus_gpac800_vbaby_game_state::cart_load));
-
- SOFTWARE_LIST(config, "cart_list").set_original("vbaby_cart");
-}
-
-static INPUT_PORTS_START( jak_car2 )
- 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_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON3 ) // unused
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("IN1")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x0001, 0x0001, "IN2" )
- 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_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- 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_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( jak_gtg )
- 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_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- 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_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("IN1")
- PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x0001, 0x0001, "IN2" )
- 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_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- 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_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-
-
-
-static INPUT_PORTS_START( jak_hsm )
- 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_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON4 )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("IN1")
- PORT_DIPNAME( 0x0001, 0x0001, "IN1" )
- 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( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON2 )
- 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_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-
- PORT_START("IN2")
- PORT_DIPNAME( 0x0001, 0x0001, "IN2" )
- 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_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- 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( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON3 )
- PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
- PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
-INPUT_PORTS_END
-
-
-
-ROM_START( wlsair60 )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x8400000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "wlsair60.nand", 0x0000, 0x8400000, CRC(eec23b97) SHA1(1bb88290cf54579a5bb51c08a02d793cd4d79f7a) )
-ROM_END
-
-ROM_START( kiugames )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x21000000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "hy27084g2m.u2", 0x0000, 0x21000000, CRC(65cc3864) SHA1(b759ec9816fe98a33ee7d5e12e5492f0160c5b31) )
-ROM_END
-
-
-ROM_START( jak_gtg )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "goldentee.bin", 0x0000, 0x4200000, CRC(87d5e815) SHA1(5dc46cd753b791449cc41d5eff4928c0dcaf35c0) )
-ROM_END
-
-ROM_START( jak_car2 )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "cars2.bin", 0x0000, 0x4200000, CRC(4d610e09) SHA1(bc59f5f7f676a8f2a78dfda7fb62c804bbf850b6) )
-ROM_END
-
-
-/* The following pinout was used when dumping jak_sspop, jak_hmhsm, jak_umdf
- For the 256Mbyte parts the parameters of the programmer had to be overridden to dump the full capacity as there were no equivalent parts.
-
- Sandisk TSOP32 NAND Flash
-
- +----------------------------------------------+
- NC-|01 32|-NC
- VSS-|02 31|-NC
- R/B-|03 SanDisk 30|-I/O7
- NC-|04 NAND 29|-I/O6
- RE-|05 28|-I/O5
- CE-|06 32PIN 27|-I/O4
- NC-|07 26|-VCC
- VCC-|08 25|-VSS
- VSS-|09 24|-NC
- NC-|10 23|-I/O3
- NC-|11 22|-I/O2
- CLE-|12 21|-I/O1
- ALE-|13 20|-I/O0
- WE-|14 19|-NC
- WP-|15 18|-NC
- NC-|16 17|-NC
- +----------------------------------------------+
-
-One of the games has pin 2 grounded, and the other 2 have it N/C. I'm not sure what it would be, since all the signals are accounted for.
-
-*/
-
-ROM_START( jak_sspop )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- /* TSOP32 NAND ROM
-
- S976172-1
- SanDisk
- 11015-128B
- POC142
- 0845
- <obscured #>
-
- appears to be a 128MByte part (or at least that is how much service mode tests)
-
- */
-
- ROM_REGION( 0x8400000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "singscenepop_as_hy27us081g1m_4579.bin", 0x0000, 0x8400000, CRC(4c8123fe) SHA1(388fda8ddd90b541a53eac4bcbe66bebe7360724) )
-ROM_END
-
-ROM_START( jak_hmhsm )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- /* TSOP32 NAND ROM
-
- 5769522.1
- SanDisk
- 11354-256B
- P44247.00
- xx20
- 01xxxx_HSM
-
- 256Mbyte part, 2nd half is just 0xff filled tho so a 128Mbyte part would have been fine
-
- */
-
- ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "hmhsm.bin", 0x0000, 0x10800000, CRC(e63ad24c) SHA1(a7844b14af701914150aa7c06743a410f478ff7b) )
-ROM_END
-
-ROM_START( jak_camp )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "camprockguitar1_sandisk11352-256b_45da.bin", 0x0000, 0x10800000, CRC(f52a4289) SHA1(d027ae274cd4ac97924d2344df1a96456e8e7c55) )
-ROM_END
-
-ROM_START( jak_hmpt )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "hmsecretstar_sandisk11270_9876.bin", 0x0000, 0x10800000, CRC(fbe09633) SHA1(169a1546072f53c2da19ce97396cacd25412c5f2) )
-ROM_END
-
-ROM_START( jak_hsmg2 )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "hsm_as_hy27ys08121a_9876.bin", 0x0000, 0x4200000, CRC(4da61056) SHA1(d6c529a6df2703dd55b864e9d7c655203206f8b6) )
-ROM_END
-
-ROM_START( jak_hmg2 )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "hm_as_hy27us08121a_9876_fixed.bin", 0x0000, 0x4200000, BAD_DUMP CRC(ba97fcd6) SHA1(c02a6878910b1312009b21220d51d7c1c3adb767) ) // 4 blocks had to be fixed using data from jak_hmhsm
-ROM_END
-
-
-ROM_START( jak_umdf )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- /* TSOP32 NAND ROM
-
- S744565-1
- SanDisk
- 11352-256B
- PA2777.00
- 0834
- 61050
-
- again part number would suggest that this is a 256MByte ROM, although in reality all data fits into 64Mbyte, rest is blank
-
- */
-
- ROM_REGION( 0x10800000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "jak_umdf.bin", 0x0000, 0x10800000, CRC(05f47aca) SHA1(61b417141ccc22324224b1862ea2f5778453f206) )
-ROM_END
-
-
-ROM_START( jak_tsm )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "toystorymania.bin", 0x0000, 0x4200000, CRC(183b20a5) SHA1(eb4fa5ee9dfac58f5244d00d4e833b1e461cc52c) )
-ROM_END
-
-
-ROM_START( jak_duck )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "duckcommander_gpr27p512a_c276_as_hy27us08121a.bin", 0x0000, 0x4200000, CRC(d9356d5b) SHA1(aca05525b4a504f7ad264ae9bbc2f1f8f399c4ca) )
-ROM_END
-
-ROM_START( jak_swc )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "jakksstarwarspistol_gpr27p512a_c276_as_hy27us08121a.bin", 0x0000, 0x4200000, CRC(024d49b8) SHA1(9694f4c7cd083c976ffbbcfa6f626fc6b4bc8d91) )
-ROM_END
-
-ROM_START( jak_wdzh )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "walkingdeadrifle_gpr27p512a_c276_as_hy27us08121a.bin", 0x0000, 0x4200000, CRC(b2c762f0) SHA1(7e10df517cc24924e0ec55e2a263563023d945f8) )
-ROM_END
-
-ROM_START( jak_wdbg )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "amcwalkingdeadcrossbow_gpr27p512a_c276_as_hy27us08121a.bin", 0x0000, 0x4200000, CRC(66510fd4) SHA1(3ad6347c5a7758c035654cb3e96858320875b97a) )
-ROM_END
-
-
-ROM_START( vbaby )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x8400000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "vbaby.bin", 0x0000, 0x8400000, CRC(d904441b) SHA1(3742bc4e1e403f061ce2813ecfafc6f30a44d287) )
-ROM_END
-
-ROM_START( mgtfit )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x8400000, "nandrom", ROMREGION_ERASE00 ) // Samsung 937 K9F1G08U0D Ident: 0xEC 0xF1 Full Ident: 0xECF1001540
- ROM_LOAD( "k9f1g08u0d.bin", 0x0000, 0x8400000, CRC(1ca5ac09) SHA1(c2e123085d2198999c2c0edb1df4895361c00a99) )
-ROM_END
-
-ROM_START( beambox )
- ROM_REGION16_BE( 0x40000, "maincpu:internal", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "internal.rom", 0x00000, 0x40000, NO_DUMP ) // used as bootstrap only
-
- ROM_REGION( 0x4200000, "nandrom", ROMREGION_ERASE00 )
- ROM_LOAD( "beambox.bin", 0x0000, 0x4200000, CRC(a486f04e) SHA1(73c7d99d8922eba58d94e955e254b9c3baa4443e) )
-ROM_END
-
-
-void generalplus_gpac800_game_state::machine_start()
-{
- save_item(NAME(m_sdram));
-}
-
-void generalplus_gpac800_game_state::nand_create_stripped_region()
-{
- uint8_t* rom = m_nandregion;
- int size = memregion("nandrom")->bytes();
- m_size = size;
-
- int numblocks = size / m_nandblocksize;
- m_strippedsize = numblocks * m_nandblocksize_stripped;
- m_strippedrom.resize(m_strippedsize);
-
- for (int i = 0; i < numblocks; i++)
- {
- const int base = i * m_nandblocksize;
- const int basestripped = i * m_nandblocksize_stripped;
-
- for (int j = 0; j < m_nandblocksize_stripped; j++)
- {
- m_strippedrom[basestripped + j] = rom[(base + j)];
- }
- }
-
- // debug to allow for easy use of unidasm.exe
- if (0)
- {
- FILE *fp;
- char filename[256];
- sprintf(filename,"stripped_%s", machine().system().name);
- fp=fopen(filename, "w+b");
- if (fp)
- {
- fwrite(&m_strippedrom[0], m_nandblocksize_stripped * numblocks, 1, fp);
- fclose(fp);
- }
- }
-}
-
-void generalplus_gpac800_game_state::machine_reset()
-{
- // configure CS defaults
- address_space& mem = m_maincpu->space(AS_PROGRAM);
- mem.write_word(0x007820, 0x0047);
- mem.write_word(0x007821, 0xff47);
- mem.write_word(0x007822, 0x00c7);
- mem.write_word(0x007823, 0x0047);
- mem.write_word(0x007824, 0x0047);
-
- m_maincpu->set_cs_space(m_memory->get_program());
-
- if (m_nandregion)
- {
- nand_create_stripped_region();
-
- // up to 256 pages (16384kw) for each space
-
- // (size of cs0 + cs1 + cs2 + cs3 + cs4) <= 81920kwords
-
- // simulate bootstrap / internal ROM
-
- address_space& mem = m_maincpu->space(AS_PROGRAM);
-
- /* Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
- 00000000 (50 47 61 6E 64 6E 61 6E 64 6E)-- -- -- -- -- -- PGandnandn------
- 00000010 -- -- -- -- -- bb -- -- -- -- -- -- -- -- -- -- ----------------
-
- bb = where to copy first block
-
- The header is GPnandnand (byteswapped) then some params
- one of the params appears to be for the initial code copy operation done
- by the bootstrap
- */
-
- // probably more bytes are used
- int dest = m_strippedrom[0x15] << 8 | (m_strippedrom[0x16] << 16);
-
- // copy a block of code from the NAND to RAM
- for (int i = 0; i < m_initial_copy_words; i++)
- {
- uint16_t word = m_strippedrom[(i * 2) + 0] | (m_strippedrom[(i * 2) + 1] << 8);
-
- mem.write_word(dest + i, word);
- }
-
- /* these vectors must either directly point to RAM, or at least redirect there after some code
-
- kiugames has the startup code copied to 20xxx which is outside the scope of a 16-bit vector
- so these must trampoline (although 20xxx currently isn't handled as RAM, so that needs more
- thought anyway
- */
- uint16_t* internal = (uint16_t*)memregion("maincpu:internal")->base();
-
- int addr;
- addr = (m_vectorbase + 0x0a) & 0x000fffff;
- internal[0x7f00] = 0xfe80 | (addr >> 16);
- internal[0x7f01] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x0c) & 0x000fffff;
- internal[0x7f02] = 0xfe80 | (addr >> 16);
- internal[0x7f03] = (addr & 0xffff);
-
- addr = (dest + 0x20) & 0x000fffff; // point boot vector at code in RAM (probably in reality points to internal code that copies the first block)
- internal[0x7f04] = 0xfe80 | (addr >> 16);
- internal[0x7f05] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x10) & 0x000fffff;
- internal[0x7f06] = 0xfe80 | (addr >> 16);
- internal[0x7f07] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x12) & 0x000fffff;
- internal[0x7f08] = 0xfe80 | (addr >> 16);
- internal[0x7f09] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x14) & 0x000fffff;
- internal[0x7f0a] = 0xfe80 | (addr >> 16);
- internal[0x7f0b] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x16) & 0x000fffff;
- internal[0x7f0c] = 0xfe80 | (addr >> 16);
- internal[0x7f0d] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x18) & 0x000fffff;
- internal[0x7f0e] = 0xfe80 | (addr >> 16);
- internal[0x7f0f] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x1a) & 0x000fffff;
- internal[0x7f10] = 0xfe80 | (addr >> 16);
- internal[0x7f11] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x1c) & 0x000fffff;
- internal[0x7f12] = 0xfe80 | (addr >> 16);
- internal[0x7f13] = (addr & 0xffff);
-
- addr = (m_vectorbase + 0x1e) & 0x000fffff;
- internal[0x7f14] = 0xfe80 | (addr >> 16);
- internal[0x7f15] = (addr & 0xffff);
-
-
- internal[0x7ff5] = 0xff00;
-
- internal[0x7ff6] = 0xff02;
- internal[0x7ff7] = 0xff04;
- internal[0x7ff8] = 0xff06;
- internal[0x7ff9] = 0xff08;
- internal[0x7ffa] = 0xff0a;
- internal[0x7ffb] = 0xff0c;
- internal[0x7ffc] = 0xff0e;
- internal[0x7ffd] = 0xff10;
- internal[0x7ffe] = 0xff12;
- internal[0x7fff] = 0xff14;
- }
-
- m_maincpu->reset(); // reset CPU so vector gets read etc.
-
- //m_maincpu->set_paldisplaybank_high_hack(0);
- m_maincpu->set_alt_tile_addressing_hack(1);
-}
-
-
-void generalplus_gpac800_game_state::nand_init210()
-{
- m_sdram.resize(m_sdram_kwords);
- m_sdram2.resize(0x10000);
-
- m_nandblocksize = 0x210;
- m_nandblocksize_stripped = 0x200;
-
- 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(m_sdram_kwords);
- m_sdram2.resize(0x10000);
-
- m_nandblocksize = 0x840;
- m_nandblocksize_stripped = 0x800;
-
- m_vectorbase = 0x6fe0;
-}
-
-void generalplus_gpac800_game_state::nand_wlsair60()
-{
- nand_init840();
- m_initial_copy_words = 0x2800;
-}
-
-void generalplus_gpac800_game_state::nand_kiugames()
-{
- nand_init840();
- m_initial_copy_words = 0x10000;
-}
-
-
-void generalplus_gpac800_game_state::nand_vbaby()
-{
- nand_init840();
- m_initial_copy_words = 0x1000;
- m_maincpu->set_romtype(2);
-}
-
-void generalplus_gpac800_game_state::nand_tsm()
-{
-
- // something odd must be going on with the bootloader?
- // structure has the first 0x4000 block repeated 3 times (must appear in RAM on startup?)
- // then it has a 0x10000 block repeated 4 times (must get copied to 0x30000 by code)
- // then it has the larger, main payload, just the once.
-
- // the addresses written to the NAND device don't compensate for these data repeats, however dump seems ok as no other data is being repeated?
- // reads after startup still need checking
- nand_init210();
- m_maincpu->set_romtype(1);
-}
-
-void generalplus_gpac800_game_state::nand_beambox()
-{
- nand_init210();
- m_vectorbase = 0x2fe0;
-}
-
-// NAND dumps w/ internal bootstrap (and u'nSP 2.0 extended opcodes) (have gpnandnand strings)
-// the JAKKS ones seem to be known as 'Generalplus GPAC800' hardware
-CONS(2010, wlsair60, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_wlsair60, "Jungle Soft / Kids Station Toys Inc", "Wireless Air 60", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // some of th games seem to be based on ones found in the 'Millennium Arcade' multigames (WinFun related) so might have the same external timer check
-CONS(200?, beambox, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_beambox, "Hasbro", "Playskool Heroes Transformers Rescue Bots Beam Box (Spain)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, mgtfit, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_wlsair60, "MGT", "Fitness Konsole (NC1470)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // probably has other names in English too? menus don't appear to be in German
-CONS(200?, vbaby, 0, 0, generalplus_gpac800_vbaby, jak_car2, generalplus_gpac800_vbaby_game_state, nand_vbaby, "VTech", "V.Baby", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, kiugames, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_kiugames, "VideoJet", "Kiu Games", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // probably has other names in English too? menus don't appear to be in German
-
-CONS(200?, jak_gtg, 0, 0, generalplus_gpac800, jak_gtg, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc / HotGen Ltd", "Golden Tee Golf (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(200?, jak_car2, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210, "JAKKS Pacific Inc / HotGen Ltd", "Cars 2 (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(2010, jak_tsm, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_tsm, "JAKKS Pacific Inc / Schell Games", "Toy Story Mania (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(2009, jak_sspop, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Sing Scene Pop (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(2008, jak_hmg2, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Hannah Montana G2 Deluxe - All in One (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // Jul 9 2008 11:50:08
-CONS(2008, jak_hsmg2, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "High School Musical G2 Deluxe - All in One (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // Jun 25 2008 14:53:14
-CONS(2008, jak_hmhsm, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Hannah Montana G2 Deluxe / High School Musical G2 Deluxe - Two in One (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // Sep 12 2008 18:48:14 (Menu/HM) / Sep 12 2008 18:50:45 (HSM)
-CONS(2008, jak_umdf, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / Handheld Games", "Ultimotion - Disney Fairies Sleeping Beauty & TinkerBell (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-// Ultimotion Swing Zone is SPG29xx instead
-CONS(2008, jak_camp, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Camp Rock - Guitar Video Game (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-
-// 2 blocks fail the hidden ROM test in jak_hmpt set below, however this seems to be an error in the test mode, not the dump
-// a different set, https://www.youtube.com/watch?v=XiEMtLzcTFw showing a date of May 14 2008 10:05:22 shows exactly the same failures
-CONS(2008, jak_hmpt, 0, 0, generalplus_gpac800, jak_hsm, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / HotGen Ltd", "Hannah Montana Pop Tour - Guitar Video Game (JAKKS Pacific TV Game) (May 16 2008)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // May 16 2008 10:36:59
-
-// 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 versions 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 / Merge Interactive", "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_duck, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / Merge Interactive", "Duck Commander (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING) // no 2 Player version was released
-CONS(2013, jak_swc, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / Merge Interactive", "Star Wars Clone Trooper (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
-CONS(2014, jak_wdbg, 0, 0, generalplus_gpac800, jak_car2, generalplus_gpac800_game_state, nand_init210_32mb, "JAKKS Pacific Inc / Super Happy Fun Fun", "The Walking Dead: Battleground (JAKKS Pacific TV Game)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)