summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author David Haywood <28625134+DavidHaywood@users.noreply.github.com>2020-08-27 21:03:19 +0100
committer GitHub <noreply@github.com>2020-08-27 16:03:19 -0400
commitf634b3ee9452cfc43a099bbbec7296f73667b1dd (patch)
treedb88f6a6d9f5fe955620b5f225220fdc4e8df4fa
parent47037c19df95e2aaaf8a4c198a8a06ae9b7436cf (diff)
new NOT WORKING machines (#7142)
New NOT WORKING machines ---- Zeebo (Brazil) [Triple Oxygen]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/zeebo_qualcomm_adreno130.cpp142
-rw-r--r--src/mame/mame.lst3
3 files changed, 146 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index dc6560cc99c..265f3f4a117 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -4520,6 +4520,7 @@ files {
MAME_DIR .. "src/mame/drivers/gscpm.cpp",
MAME_DIR .. "src/mame/drivers/gsz80.cpp",
MAME_DIR .. "src/mame/drivers/ultim809.cpp",
+ MAME_DIR .. "src/mame/drivers/zeebo_qualcomm_adreno130.cpp",
}
end
diff --git a/src/mame/drivers/zeebo_qualcomm_adreno130.cpp b/src/mame/drivers/zeebo_qualcomm_adreno130.cpp
new file mode 100644
index 00000000000..3978046dfaf
--- /dev/null
+++ b/src/mame/drivers/zeebo_qualcomm_adreno130.cpp
@@ -0,0 +1,142 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/******************************************************************************
+
+"Zeebo", or "Genie" or "Longcheer W800", is a video game developed in a partnership
+between Qualcomm and Zeebo Inc., the North American arm of the Brazilian company Tectoy.
+
+A large amount of information can be found on
+https://www.tripleoxygen.net/wiki/console/zeebo/start
+
+----
+
+Zeebo comes equipped with an ARM11 processor running at 528 MHZ. It is a chip
+with low energy consumption and widely used in smartphones, such as the iPhone 3G.
+
+Its graphics core is called Adreno 130, and was developed by Qualcomm with technology
+from ATI.
+
+----
+
+System was launched in 2009, but discontinued shortly after.
+
+Games were downloaded to NAND, but once the online store was closed the games could
+no longer be downloaded, leaving no way to get them back onto the system after
+after a factory restore or similar.
+
+----
+
+The information from the site above should be transferred into the driver, there
+are details such as the memory map, and dumps of RAM from a running system.
+
+Is there a bootstrap ROM, or does this happen transparently to the CPU? how is
+memory configuration determined by default etc?
+
+This driver needs a proper owner.
+
+*******************************************************************************/
+
+#include "emu.h"
+
+#include "cpu/arm7/arm7.h"
+#include "speaker.h"
+#include "screen.h"
+
+
+class zeebo_game_state : public driver_device
+{
+public:
+ zeebo_game_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "arm11")
+ { }
+
+ void zeebo(machine_config &config);
+
+private:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
+ void zeebo_arm11_map(address_map &map);
+
+ void copy_block(int i, int blocksize, int blocksize_stripped, uint8_t* nandrom, int dest);
+ void bootstrap();
+
+ required_device<arm11_cpu_device> m_maincpu;
+};
+
+void zeebo_game_state::zeebo_arm11_map(address_map &map)
+{
+ map(0x00000000, 0x03ffffff).ram();
+}
+
+
+void zeebo_game_state::copy_block(int i, int blocksize, int blocksize_stripped, uint8_t* nandrom, int dest)
+{
+ const int base = i * blocksize;
+ address_space& mem = m_maincpu->space(AS_PROGRAM);
+
+ for (int j = 0; j < blocksize_stripped; j++)
+ {
+ uint8_t data = nandrom[base + j];
+ //printf("writing to %08x : %02x", dest + j, data);
+ mem.write_byte((dest+j)^3, data);
+ }
+}
+
+void zeebo_game_state::bootstrap()
+{
+ uint8_t* rom = memregion("nand")->base();
+
+ int j = 0;
+ for (int i = 0xB700; i < 0xB800; i++) // how much is copied?
+ {
+ copy_block(i, 0x210, 0x200, rom, j * 0x200);
+ j++;
+ }
+}
+
+
+void zeebo_game_state::machine_start()
+{
+}
+
+void zeebo_game_state::machine_reset()
+{
+ bootstrap();
+}
+
+
+static INPUT_PORTS_START( zeebo )
+INPUT_PORTS_END
+
+
+uint32_t zeebo_game_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+void zeebo_game_state::zeebo(machine_config &config)
+{
+ ARM11(config, m_maincpu, 528000000); // 528 MHz ARM11 based SoC
+ m_maincpu->set_addrmap(AS_PROGRAM, &zeebo_game_state::zeebo_arm11_map);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(640, 480);
+ screen.set_visarea(0, 640-1, 0, 480-1);
+ screen.set_screen_update(FUNC(zeebo_game_state::screen_update));
+
+ SPEAKER(config, "speaker").front_center();
+}
+
+ROM_START( zeebo )
+ ROM_REGION32_BE( 0x8400000, "nand", 0 )
+ // older versions should be dumped too if possible
+ ROM_LOAD( "1.1.2_spare.bin", 0x000000, 0x8400000, CRC(64bd6faa) SHA1(da0db9585d15cf7f1f127e39b0a5fa47f3c13cc0) )
+ROM_END
+
+CONS( 2009, zeebo, 0, 0, zeebo, zeebo, zeebo_game_state, empty_init, "Zeebo Inc.", "Zeebo (Brazil)", MACHINE_IS_SKELETON )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 531a74f81e6..bb6cd32c4dc 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -42652,6 +42652,9 @@ zerozone // (c) 1993 Comad
@source:zexall.cpp
zexall // zexall z80 test suite with kevtris' preloader/serial interface at 0000-00ff
+@source:zeebo_qualcomm_adreno130.cpp
+zeebo
+
@source:zms8085.cpp
zephyr //