diff --git a/hash/gameking.xml b/hash/gameking.xml index 95029d439f5..763b4e71f6d 100644 --- a/hash/gameking.xml +++ b/hash/gameking.xml @@ -364,7 +364,7 @@ S1: is on some carts directly connected to VCC - 4 in 1 - TrojanLegend (Trojan) + HappyBall + Supermotor (Motor) + Lanneret (Hawk) + 4 in 1 - TrojanLegend (Trojan) + HappyBall + Supermotor (Motor) + Lanneret (Hawk) (1MB cartridge) 200? TimeTop @@ -374,6 +374,17 @@ S1: is on some carts directly connected to VCC + + 4 in 1 - TrojanLegend (Trojan) + HappyBall + Supermotor (Motor) + Lanneret (Hawk) (512KB cartridge) + 200? + TimeTop + + + + + + + 4 in 1 Vol. 8 - 2004 + Dragon + StreetHero + Penguin 200? @@ -476,7 +487,7 @@ S1: is on some carts directly connected to VCC - 4 in 1 - Manhunt + Bobby + Tantivy + Racing Car + 4 in 1 - Manhunt + Bobby + Tantivy + Racing Car (1MB cartridge) 200? TimeTop @@ -486,6 +497,17 @@ S1: is on some carts directly connected to VCC + + 4 in 1 - Manhunt + Bobby + Tantivy + Racing Car (512KB cartridge) + 200? + TimeTop + + + + + + + 4 in 1 - Nagual + Revenger + Terminator + Black Jack 200? diff --git a/hash/vtech_innotv_innotabmax_cart.xml b/hash/vtech_innotv_innotabmax_cart.xml new file mode 100644 index 00000000000..5d51e76c4ad --- /dev/null +++ b/hash/vtech_innotv_innotabmax_cart.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + Paw Patrol - Pups Save a UFO! (80-274103 UK) + 2015 + VTech + + + + + + + + + DC Comics - Gotham City Robots (80-274803 UK) + 2015 + VTech + + + + + + + + + Finding Dory (80-274903 UK) + 2015 + VTech + + + + + + + + + The Lion Guard (80-275203 UK) + 2015 + VTech + + + + + + + + diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 11242885892..2cb7f0b6701 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -4219,6 +4219,7 @@ files { MAME_DIR .. "src/mame/drivers/vsmileb.cpp", MAME_DIR .. "src/mame/drivers/clickstart.cpp", MAME_DIR .. "src/mame/drivers/storio.cpp", + MAME_DIR .. "src/mame/drivers/innotv_innotabmax.cpp", } createMESSProjects(_target, _subtarget, "wang") diff --git a/src/mame/drivers/innotv_innotabmax.cpp b/src/mame/drivers/innotv_innotabmax.cpp new file mode 100644 index 00000000000..7eaac55cc5a --- /dev/null +++ b/src/mame/drivers/innotv_innotabmax.cpp @@ -0,0 +1,163 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood +/****************************************************************************** + + VTech InnoTV / InnoTab MAX + 'Android' based platforms + + The InnoTV outputs 1280x720, the InnoTab MAX uses the same cartridges + (both also support games downloaded from VTech to the internal storage) + + These are NOT compatible with the original InnoTab 1/2/3, and although + some games for the platform claims compatibility with the older platforms + on the box, this is done through a download code rather than the cartridge + being compatible. + + This file exists so that the Software List has a place to hook up to for + the time being. + + InnoTV details + + Rockchip RK3168 (Main CPU / SoC) + Rockchip RK616 ('Partner Chip for Rockchip mobile application processor' + 2x EtronTech EM6GE16EWXD-12H (RAM) + Ricoh RC5T619 (Power Management) + MicroSDHC 8GB card in internal slot + Realtek RTL8188EU (Wireless) + + There don't appear to be any ROM / SPI / NAND devicesonboard, so must either + boot directly from the SD, or have some boot program internal to the SoC + + The following pinout was used for the InnoTV / InnoTab MAX cartridges + + +---------------------+ + | |--+ + | |--| I/O8 + | |--| I/O7 + | +---------------+ |--| I/O6 + | ||||||||||||||||| |--| I/O5 + | | | |--| ? + | | NAND | |--| I/O1 + | | | |--| I/O2 + | | | |--| I/O3 + | | | |--| I/O4 + | |TC58NVG1S3HTA00| |--| GND + | | | |--| GND + | | | |--| CLE + | | | |--| ALE + | | | |--| WE + | | | |--| WP + | | | |--| VCC + | ||||||||||||||||| |--| VCC + | +---------------+ |--| CE + | |--| RE + | |--| RY/BY + | |--+ + +---------------------+ + +*******************************************************************************/ + +#include "emu.h" + +#include "cpu/arm7/arm7.h" +#include "cpu/arm7/arm7core.h" + +#include "bus/generic/slot.h" +#include "bus/generic/carts.h" + +#include "screen.h" +#include "softlist.h" +#include "speaker.h" +#include "screen.h" + +class vtech_innotv_innotabmax_state : public driver_device +{ +public: + vtech_innotv_innotabmax_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_cart(*this, "cartslot") + , m_screen(*this, "screen") + , m_cart_region(nullptr) + { } + + void vtech_innotv_innotabmax(machine_config &config); + +private: + virtual void machine_start() override; + virtual void machine_reset() override; + + void main_map(address_map &map); + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load); + + required_device m_maincpu; + required_device m_cart; + required_device m_screen; + memory_region *m_cart_region; +}; + + + +void vtech_innotv_innotabmax_state::machine_start() +{ + // if there's a cart, override the standard mapping + if (m_cart && m_cart->exists()) + { + m_cart_region = memregion(std::string(m_cart->tag()) + GENERIC_ROM_REGION_TAG); + } +} + +void vtech_innotv_innotabmax_state::machine_reset() +{ +} + +DEVICE_IMAGE_LOAD_MEMBER(vtech_innotv_innotabmax_state::cart_load) +{ + uint32_t size = m_cart->common_get_size("rom"); + + m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); + m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom"); + + return image_init_result::PASS; +} + +static INPUT_PORTS_START( vtech_innotv_innotabmax ) +INPUT_PORTS_END + +uint32_t vtech_innotv_innotabmax_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void vtech_innotv_innotabmax_state::main_map(address_map &map) +{ +} + +void vtech_innotv_innotabmax_state::vtech_innotv_innotabmax(machine_config &config) +{ + ARM9(config, m_maincpu, 240000000); // unknown core type / frequency, but confirmed as ARM based + m_maincpu->set_addrmap(AS_PROGRAM, &vtech_innotv_innotabmax_state::main_map); + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(10)); + m_screen->set_size(1280, 720); + m_screen->set_visarea(0, 1280-1, 0, 720-1); + m_screen->set_screen_update(FUNC(vtech_innotv_innotabmax_state::screen_update)); + + GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vtech_innotv_innotabmax_cart"); + m_cart->set_width(GENERIC_ROM16_WIDTH); + m_cart->set_device_load(FUNC(vtech_innotv_innotabmax_state::cart_load)); + + SOFTWARE_LIST(config, "cart_list").set_original("vtech_innotv_innotabmax_cart"); +} + +ROM_START( innotv ) + DISK_REGION( "internalsd" ) + DISK_IMAGE( "8gb_sdhc_internal", 0, SHA1(443a0a9cc830387317d3218955b72295ee5a88eb) ) +ROM_END + +CONS( 2015, innotv, 0, 0, vtech_innotv_innotabmax, vtech_innotv_innotabmax, vtech_innotv_innotabmax_state, empty_init, "VTech", "InnoTV", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 4ed25526608..d9a14f95609 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -16777,6 +16777,9 @@ in207376 // Informer 207/376 in213 // Informer 213 in213ae // Informer 213 AE +@source:innotv_innotabmax.cpp +innotv + @source:instantm.cpp instantm // diff --git a/src/mame/mess.flt b/src/mame/mess.flt index 2d5cccdc8a3..17981558ed3 100644 --- a/src/mame/mess.flt +++ b/src/mame/mess.flt @@ -429,6 +429,7 @@ indy_indigo2.cpp informer_207_100.cpp informer_207_376.cpp informer_213.cpp +innotv_innotabmax.cpp instruct.cpp inteladv.cpp intellec4.cpp