mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
new NOT WORKING machines (#7142)
New NOT WORKING machines ---- Zeebo (Brazil) [Triple Oxygen]
This commit is contained in:
parent
47037c19df
commit
f634b3ee94
@ -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
|
||||
|
142
src/mame/drivers/zeebo_qualcomm_adreno130.cpp
Normal file
142
src/mame/drivers/zeebo_qualcomm_adreno130.cpp
Normal 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 )
|
@ -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 //
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user