new NOT WORKING machines (#7142)

New NOT WORKING machines
----
Zeebo (Brazil) [Triple Oxygen]
This commit is contained in:
David Haywood 2020-08-27 21:03:19 +01:00 committed by GitHub
parent 47037c19df
commit f634b3ee94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 146 additions and 0 deletions

View File

@ -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

View File

@ -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 )

View File

@ -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 //