summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/actions_atj2279b.cpp
blob: beb53f04e9e6ff2d42d4f79bfc4a58b7522c34ef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// license:BSD-3-Clause
// copyright-holders:David Haywood
/******************************************************************************

    System is fairly barebones
    Main PCB has the SoC, RAM, ROM
    connects to other PCBs with various types of slots (USB, SD etc.)
    (ADD FULL DETAILS)

    Specifications (incomplete and unconfirmed):
    CPU: 450 MHz ATJ227X with intergrated GPU
    SDRAM: 256MB
    (source: http://wecmuseum.org/index.php?title=Retro-Bit_Generations)

    TODO: everything - emulate the SoC

    Presumably has an internal bootstrap (at least) to boot from the NAND

    --

    reviews for this device were less than favourable with many comments
    about how the SNES and Arcade games often did not run at full speed
    and how the overall quality of emulation was unremarkable

*******************************************************************************/

#include "emu.h"

#include "cpu/arm7/arm7.h"

#include "speaker.h"
#include "screen.h"


class actions_atj2279b_state : public driver_device
{
public:
	actions_atj2279b_state(const machine_config &mconfig, device_type type, const char *tag) :
		driver_device(mconfig, type, tag),
		m_maincpu(*this, "arm7")
	{ }

	void actions_atj2279b(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 atj2279b_map(address_map &map);

	required_device<arm7_cpu_device> m_maincpu;
};

void actions_atj2279b_state::atj2279b_map(address_map &map)
{
}

void actions_atj2279b_state::machine_start()
{
}

void actions_atj2279b_state::machine_reset()
{
}

static INPUT_PORTS_START( actions_atj2279b )
INPUT_PORTS_END


uint32_t actions_atj2279b_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
	return 0;
}

void actions_atj2279b_state::actions_atj2279b(machine_config &config)
{
	ARM7_BE(config, m_maincpu, 450'000'000); // Probably ATJ227X 450MHz, but this needs to be checked more closely
	m_maincpu->set_addrmap(AS_PROGRAM, &actions_atj2279b_state::atj2279b_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(1280, 720);
	screen.set_visarea(0, 1280-1, 0, 720-1); // resolution unconfirmed (possibly 1080p as well, but this is unlikely)
	screen.set_screen_update(FUNC(actions_atj2279b_state::screen_update));

	SPEAKER(config, "lspeaker").front_left();
	SPEAKER(config, "rspeaker").front_right();
}

ROM_START( rbitgen )
	ROM_REGION32_BE( 0x21000000, "nand", 0 ) // NAND dump
	//TOSHIBA
	// TC58NVG2S3?A00  (there is a yellow stripe on the label before A00 obscuring the text)
	ROM_LOAD16_WORD_SWAP( "nand.bin", 0x000000, 0x21000000, CRC(92576add) SHA1(1fe61ef1d2dd24e5b5d48c477846ef0c83ec6568) )
ROM_END


//    year, name,         parent,  compat, machine,      input,        class,              init,       company,  fullname,                             flags
CONS( 2016, rbitgen,      0,       0,      actions_atj2279b, actions_atj2279b, actions_atj2279b_state, empty_init, "Retro-Bit", "Generations (Retro-Bit)", MACHINE_IS_SKELETON )