mirror of
https://github.com/holub/mame
synced 2025-04-25 01:40:16 +03:00
new NOT WORKING : Play TV Football 2 [Sean Riddle, Peter Wilhelmsen] (note, vii.cpp, not XaviX) + Baseball 3 + Huntin' 3 (Elan HW) (#4462)
* new NOT WORKING : Play TV Football 2 [Sean Riddle, Peter Wilhelmsen] (note, vii.cpp, not XaviX) * note (nw) * kill off old cricket hack, add logging function to calculate crc showing in header for radica games for easy verification * better comment (nw) * basketball seems to have been fixed at some point, remove old notes (nw) * new NOT WORKING Play TV Baseball 3 [Sean Riddle, Peter Wilhelmsen, David Haywood] Play TV Huntin' 3 [Sean Riddle, Peter Wilhelmsen, David Haywood] (need work on the hardware emulation and inputs) * (nw) * (nw)
This commit is contained in:
parent
dd1a04267e
commit
082e78ddc7
@ -10,18 +10,16 @@
|
||||
|
||||
Known to be on this hardware
|
||||
|
||||
Golden Tee Golf Home Edition (developed by FarSight Studios)
|
||||
Connectv Football (developed by Medialink)
|
||||
|
||||
Also on this hardware
|
||||
|
||||
name PCB ID ROM width TSOP pads ROM size SEEPROM die markings
|
||||
|
||||
Real Swing Golf 74037 x16 48 not dumped no ELAN EU3A14
|
||||
Play TV Basketball 75029 x16 48 not dumped no ELAN EU3A14
|
||||
Baseball 3 ? x16 48 not dumped no ELAN EU3A14
|
||||
|
||||
Huntin’3 ? x16 48 not dumped no Elan ?
|
||||
name PCB ID ROM width TSOP pads ROM size SEEPROM die markings
|
||||
Golden Tee Golf Home Edition ELAN EU3A14 (developed by FarSight Studios)
|
||||
Connectv Football ELAN EU3A14 (developed by Medialink)
|
||||
Play TV Basketball 75029 x16 48 4MB no ELAN EU3A14
|
||||
Baseball 3 ? x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
|
||||
Huntin’3 ? x16 48 4MB no Elan ?
|
||||
--------------
|
||||
Also on this hardware
|
||||
--------------
|
||||
Real Swing Golf 74037 x16 48 not dumped no ELAN EU3A14
|
||||
|
||||
In many ways this is similar to the rad_eu3a05.cpp hardware
|
||||
but the video system has changed, here the sprites are more traditional non-tile based, rather
|
||||
@ -82,15 +80,18 @@ public:
|
||||
m_dmaparams(*this, "dmaparams"),
|
||||
m_bank(*this, "bank"),
|
||||
m_palette(*this, "palette"),
|
||||
m_gfxdecode(*this, "gfxdecode")
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_tvtype(*this, "TV")
|
||||
{ }
|
||||
|
||||
|
||||
void radica_eu3a14(machine_config &config);
|
||||
void radica_eu3a14_adc(machine_config &config);
|
||||
void radica_eu3a14p(machine_config &config);
|
||||
|
||||
void init_rad_gtg();
|
||||
void init_rad_foot();
|
||||
void init_rad_hnt3();
|
||||
|
||||
private:
|
||||
READ8_MEMBER(irq_vector_r);
|
||||
@ -112,6 +113,8 @@ private:
|
||||
DECLARE_WRITE8_MEMBER(radicasi_rombank_lo_w);
|
||||
DECLARE_WRITE8_MEMBER(radicasi_rombank_hi_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(radica_5009_unk_r) { return machine().rand(); };
|
||||
|
||||
DECLARE_READ8_MEMBER(random_r) { return machine().rand(); };
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(scanline_cb);
|
||||
@ -141,11 +144,14 @@ private:
|
||||
required_device<address_map_bank_device> m_bank;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_ioport m_tvtype;
|
||||
|
||||
uint8_t m_rombank_hi;
|
||||
uint8_t m_rombank_lo;
|
||||
int m_tilerambase;
|
||||
int m_spriterambase;
|
||||
int m_pagewidth;
|
||||
int m_pageheight;
|
||||
|
||||
void handle_palette(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void draw_page(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int xbase, int ybase, int size);
|
||||
@ -211,28 +217,37 @@ void radica_eu3a14_state::draw_page(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
{
|
||||
gfx_element *gfx;
|
||||
|
||||
int pagesize = m_pagewidth * m_pageheight * 2;
|
||||
|
||||
int base = (m_tilebase[1] << 8) | m_tilebase[0];
|
||||
if (m_tilecfg[2] & 0x04)
|
||||
if (m_tilecfg[2] & 0x04) // 4bpp selection
|
||||
{
|
||||
gfx = m_gfxdecode->gfx(4);
|
||||
gfx = m_gfxdecode->gfx(4); // 16x16 4bpp
|
||||
base <<= 1;
|
||||
|
||||
if (size == 8)
|
||||
{
|
||||
gfx = m_gfxdecode->gfx(5);
|
||||
gfx = m_gfxdecode->gfx(6); // 8x8 4bpp
|
||||
base <<= 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
else // 8bpp selection
|
||||
{
|
||||
gfx = m_gfxdecode->gfx(3);
|
||||
gfx = m_gfxdecode->gfx(3); // 16x16 8bpp
|
||||
|
||||
if (size == 8)
|
||||
{
|
||||
gfx = m_gfxdecode->gfx(5); // 8x8 8bpp
|
||||
base <<= 2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int xdraw = xbase;
|
||||
int ydraw = ybase;
|
||||
int count = 0;
|
||||
|
||||
for (int i = m_tilerambase+0x1c0*which; i < m_tilerambase+0x1c0*(which+1); i+=2)
|
||||
for (int i = m_tilerambase+pagesize*which; i < m_tilerambase+pagesize*(which+1); i+=2)
|
||||
{
|
||||
int tile = m_mainram[i+0] | (m_mainram[i+1] << 8);
|
||||
|
||||
@ -240,9 +255,9 @@ void radica_eu3a14_state::draw_page(screen_device &screen, bitmap_ind16 &bitmap,
|
||||
xdraw+=size;
|
||||
|
||||
count++;
|
||||
if (((count % 16) == 0))
|
||||
if (((count % m_pagewidth) == 0))
|
||||
{
|
||||
xdraw -= size*16;
|
||||
xdraw -= size*m_pagewidth;
|
||||
ydraw += size;
|
||||
}
|
||||
}
|
||||
@ -255,30 +270,35 @@ void radica_eu3a14_state::draw_background(screen_device &screen, bitmap_ind16 &b
|
||||
|
||||
int size = 16;
|
||||
// or 0x10?
|
||||
if (m_tilecfg[0] & 0x80)
|
||||
if (m_tilecfg[0] & 0x10)
|
||||
{
|
||||
size = 8;
|
||||
}
|
||||
|
||||
draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * 16) - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * 14) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * 16) - xscroll, (size * 14) - yscroll, size);
|
||||
// normal
|
||||
draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth) - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * m_pageheight) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth) - xscroll, (size * m_pageheight) - yscroll, size);
|
||||
|
||||
draw_page(screen, bitmap, cliprect, 0, (size * 16 * 2) + 0 - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * 16 * 3) - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, (size * 16 * 2) + 0 - xscroll, (size * 14) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * 16 * 3) - xscroll, (size * 14) - yscroll, size);
|
||||
// wrap x
|
||||
draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth * 2) + 0 - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth * 3) - xscroll, 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, (size * m_pagewidth * 2) + 0 - xscroll, (size * m_pageheight) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth * 3) - xscroll, (size * m_pageheight) - yscroll, size);
|
||||
|
||||
draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, (size * 14 * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * 16) - xscroll, (size * 14 * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * 14 * 3) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * 16) - xscroll, (size * 14 * 3) - yscroll, size);
|
||||
// wrap y
|
||||
draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth) - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, 0 - xscroll, (size * m_pageheight * 3) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth) - xscroll, (size * m_pageheight * 3) - yscroll, size);
|
||||
|
||||
// wrap x+y
|
||||
draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth * 2) + 0 - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * m_pagewidth * 3) - xscroll, (size * m_pageheight * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, (size * m_pagewidth * 2) + 0 - xscroll, (size * m_pageheight * 3) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * m_pagewidth * 3) - xscroll, (size * m_pageheight * 3) - yscroll, size);
|
||||
|
||||
draw_page(screen, bitmap, cliprect, 0, (size * 16 * 2) + 0 - xscroll, (size * 14 * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 1, (size * 16 * 3) - xscroll, (size * 14 * 2) + 0 - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 2, (size * 16 * 2) + 0 - xscroll, (size * 14 * 3) - yscroll, size);
|
||||
draw_page(screen, bitmap, cliprect, 3, (size * 16 * 3) - xscroll, (size * 14 * 3) - yscroll, size);
|
||||
}
|
||||
|
||||
void radica_eu3a14_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
@ -473,8 +493,7 @@ READ8_MEMBER(radica_eu3a14_state::radicasi_pal_ntsc_r)
|
||||
// how best to handle this, we probably need to run the PAL machine at 50hz
|
||||
// the text under the radica logo differs between regions
|
||||
logerror("%s: radicasi_pal_ntsc_r (region + more?)\n", machine().describe_context());
|
||||
return 0xff; // NTSC
|
||||
//return 0x00; // PAL
|
||||
return m_tvtype->read();
|
||||
}
|
||||
|
||||
void radica_eu3a14_state::bank_map(address_map &map)
|
||||
@ -492,7 +511,7 @@ void radica_eu3a14_state::radica_eu3a14_map(address_map &map)
|
||||
// similar to eu3a05, at least for pal flags and rom banking
|
||||
map(0x5007, 0x5007).noprw();
|
||||
map(0x5008, 0x5008).nopw(); // startup
|
||||
map(0x5009, 0x5009).noprw();
|
||||
map(0x5009, 0x5009).r(FUNC(radica_eu3a14_state::radica_5009_unk_r)); // rad_hnt3 polls this on startup
|
||||
map(0x500a, 0x500a).nopw(); // startup
|
||||
map(0x500b, 0x500b).r(FUNC(radica_eu3a14_state::radicasi_pal_ntsc_r)).nopw(); // PAL / NTSC flag at least
|
||||
map(0x500c, 0x500c).w(FUNC(radica_eu3a14_state::radicasi_rombank_hi_w));
|
||||
@ -602,10 +621,13 @@ static INPUT_PORTS_START( rad_gtg )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
// hold enter and left during power on for test mode
|
||||
static INPUT_PORTS_START( radica_eu3a14 )
|
||||
static INPUT_PORTS_START( radica_foot )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
|
||||
@ -651,6 +673,111 @@ static INPUT_PORTS_START( radica_eu3a14 )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( radica_hnt3 )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Menu Previous")
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Menu Next")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Menu Select")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON4 ) // pause?
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN1" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( radica_hnt3p )
|
||||
PORT_INCLUDE(radica_hnt3)
|
||||
|
||||
PORT_MODIFY("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( radica_bb3 )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN1" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
PORT_START("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( radica_bb3p )
|
||||
PORT_INCLUDE(radica_bb3)
|
||||
|
||||
PORT_MODIFY("TV")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void radica_eu3a14_state::machine_start()
|
||||
@ -752,6 +879,17 @@ static const gfx_layout helper16x16x4_layout =
|
||||
16 * 16 * 4
|
||||
};
|
||||
|
||||
static const gfx_layout helper8x8x8_layout =
|
||||
{
|
||||
8,8,
|
||||
RGN_FRAC(1,1),
|
||||
8,
|
||||
{ STEP8(0,1) },
|
||||
{ STEP8(0,8) },
|
||||
{ STEP8(0,8*8) },
|
||||
8 * 8 * 8
|
||||
};
|
||||
|
||||
static const gfx_layout helper8x8x4_layout =
|
||||
{
|
||||
8,8,
|
||||
@ -768,8 +906,10 @@ static GFXDECODE_START( gfx_helper )
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper8x1x2_layout, 0x0, 128 )
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper8x1x4_layout, 0x0, 32 )
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper8x1x8_layout, 0x0, 2 )
|
||||
// standard decodes
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper16x16x8_layout, 0x0, 2 )
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper16x16x4_layout, 0x0, 32 )
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper8x8x8_layout, 0x0, 2 )
|
||||
GFXDECODE_ENTRY( "maincpu", 0, helper8x8x4_layout, 0x0, 32 )
|
||||
GFXDECODE_END
|
||||
|
||||
@ -811,11 +951,22 @@ MACHINE_CONFIG_START(radica_eu3a14_state::radica_eu3a14_adc)
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", radica_eu3a14_state, scanline_cb, "screen", 0, 1)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(radica_eu3a14_state::radica_eu3a14p) // TODO, clocks differ too, what are they on PAL?
|
||||
radica_eu3a14(config);
|
||||
|
||||
MCFG_SCREEN_MODIFY("screen")
|
||||
MCFG_SCREEN_REFRESH_RATE(50)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
void radica_eu3a14_state::init_rad_gtg()
|
||||
{
|
||||
// must be registers to control this
|
||||
m_tilerambase = 0x0a00 - 0x200;
|
||||
m_spriterambase = 0x0220 - 0x200;
|
||||
m_pagewidth = 16;
|
||||
m_pageheight = 14;
|
||||
}
|
||||
|
||||
void radica_eu3a14_state::init_rad_foot()
|
||||
@ -823,6 +974,20 @@ void radica_eu3a14_state::init_rad_foot()
|
||||
// must be registers to control this
|
||||
m_tilerambase = 0x0200 - 0x200;
|
||||
m_spriterambase = 0x2800 - 0x200;
|
||||
// this is ok for the game, but secret test mode also uses a weird 8x8 mode with different tile addressing
|
||||
m_pagewidth = 16;
|
||||
m_pageheight = 14;
|
||||
}
|
||||
|
||||
|
||||
void radica_eu3a14_state::init_rad_hnt3()
|
||||
{
|
||||
// must be registers to control this
|
||||
m_tilerambase = 0x0200 - 0x200;
|
||||
m_spriterambase = 0x1800 - 0x200;
|
||||
// uses an 8x8 mode, could depend on that, but other 8x8 use case above is different
|
||||
m_pagewidth = 32;
|
||||
m_pageheight = 28;
|
||||
}
|
||||
|
||||
|
||||
@ -836,7 +1001,33 @@ ROM_START( rad_foot )
|
||||
ROM_LOAD( "connectvfootball.bin", 0x000000, 0x400000, CRC(00ac4fc0) SHA1(2b60ae5c6bc7e9ef7cdbd3f6a0a0657ed3ab5afe) )
|
||||
ROM_END
|
||||
|
||||
CONS( 2006, rad_gtg, 0, 0, radica_eu3a14_adc, rad_gtg, radica_eu3a14_state, init_rad_gtg, "Radica (licensed from Incredible Technologies)", "Golden Tee Golf: Home Edition", MACHINE_NOT_WORKING )
|
||||
ROM_START( rad_bb3 )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "baseball3.bin", 0x000000, 0x400000, CRC(af86aab0) SHA1(5fed48a295f045ca839f87b0f9b78ecc51104cdc) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_bb3p )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "baseball3.bin", 0x000000, 0x400000, CRC(af86aab0) SHA1(5fed48a295f045ca839f87b0f9b78ecc51104cdc) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_hnt3 )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "huntin3.bin", 0x000000, 0x400000, CRC(c8e3e40b) SHA1(81eb16ac5ab6d93525fcfadbc6703b2811d7de7f) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_hnt3p )
|
||||
ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "huntin3.bin", 0x000000, 0x400000, CRC(c8e3e40b) SHA1(81eb16ac5ab6d93525fcfadbc6703b2811d7de7f) )
|
||||
ROM_END
|
||||
|
||||
CONS( 2006, rad_gtg, 0, 0, radica_eu3a14_adc, rad_gtg, radica_eu3a14_state, init_rad_gtg, "Radica (licensed from Incredible Technologies)", "Golden Tee Golf: Home Edition", MACHINE_NOT_WORKING )
|
||||
|
||||
// also has a Connectv Real Soccer logo in the roms, apparently unused, maybe that was to be the US title (without the logo being changed to Play TV) but Play TV Soccer ended up being a different game licensed from Epoch instead.
|
||||
CONS( 2006, rad_foot, 0, 0, radica_eu3a14, radica_eu3a14, radica_eu3a14_state, init_rad_foot, "Radica", "Connectv Football", MACHINE_NOT_WORKING )
|
||||
CONS( 2006, rad_foot, 0, 0, radica_eu3a14p, radica_foot, radica_eu3a14_state, init_rad_foot, "Radica", "Connectv Football", MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 200?, rad_bb3, 0, 0, radica_eu3a14, radica_bb3, radica_eu3a14_state, init_rad_gtg, "Radica", "Play TV Baseball 3", MACHINE_NOT_WORKING )
|
||||
CONS( 200?, rad_bb3p, rad_bb3, 0, radica_eu3a14p, radica_bb3p, radica_eu3a14_state, init_rad_gtg, "Radica", "Connectv Baseball 3", MACHINE_NOT_WORKING )
|
||||
|
||||
CONS( 2005, rad_hnt3, 0, 0, radica_eu3a14, radica_hnt3, radica_eu3a14_state, init_rad_hnt3, "Radica / V-Tac Technology Co Ltd.", "Play TV Huntin' 3", MACHINE_NOT_WORKING )
|
||||
CONS( 2005, rad_hnt3p,rad_hnt3, 0, radica_eu3a14p, radica_hnt3p, radica_eu3a14_state, init_rad_hnt3, "Radica / V-Tac Technology Co Ltd.", "Connectv Huntin' 3", MACHINE_NOT_WORKING )
|
||||
|
@ -23,15 +23,19 @@
|
||||
Game seems unhappy with NVRAM, clears contents on each boot.
|
||||
rad_skat:
|
||||
Palette issues on the High Score screen.
|
||||
rad_fb2:
|
||||
sometimes when selecting QB training camp the sprites don't appear
|
||||
controls are not properly mapped
|
||||
vii:
|
||||
When loading a cart from file manager, sometimes MAME will crash.
|
||||
The "MOTOR" option in the diagnostic menu does nothing when selected.
|
||||
The "SPEECH IC" option in the diagnostic menu does nothing when selected.
|
||||
On 'vii_vc1' & 'vii_vc2' cart, the left-right keys are transposed with the up-down keys.
|
||||
- This is not a bug per se, as the games are played with the controller physically rotated 90 degrees.
|
||||
When entering a game in Basketball, MAME fatalerrors when starting the game due to jumping to invalid code.
|
||||
zone60/wirels60:
|
||||
When entering a game in Basketball, MAME fatalerrors when starting the game due to jumping to invalid code.
|
||||
|
||||
Note:
|
||||
Cricket, Skateboarder, Skannerz and Football 2 list a 32-bit checksum at the start of ROM.
|
||||
This is the byte sum of the file, excluding the first 16 byte (where the checksum is stored)
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
@ -75,7 +79,7 @@ public:
|
||||
void rad_crik(machine_config &config);
|
||||
void non_spg_base(machine_config &config);
|
||||
|
||||
void init_rad_crik();
|
||||
void init_crc();
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
@ -114,9 +118,6 @@ protected:
|
||||
optional_ioport m_io_p3;
|
||||
optional_device<i2cmem_device> m_i2cmem;
|
||||
optional_device<nvram_device> m_nvram;
|
||||
|
||||
// temp hack
|
||||
DECLARE_READ16_MEMBER(rad_crik_hack_r);
|
||||
};
|
||||
|
||||
class vii_state : public spg2xx_game_state
|
||||
@ -477,6 +478,23 @@ static INPUT_PORTS_START( rad_crik )
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( rad_fb2 ) // controls must be multiplexed somehow, as there's no room for P2 controls otherwise (unless P2 controls were never finished and it was only sold in a single mat version, Radica left useless P2 menu options in the mini Genesis consoles)
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) // 'left'
|
||||
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) // 'up'
|
||||
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) // 'right'
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) // acts a 'motion ball' in menu (this is an analog input from the ball tho? at least in rad_fb in xavix.cpp so this might just be a debug input here)
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) // 'p2 right'
|
||||
// none of the remaining inputs seem to do anything
|
||||
PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P3")
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_CUSTOM ) // NTSC (1) / PAL (0) flag
|
||||
INPUT_PORTS_END
|
||||
|
||||
void vii_state::machine_start()
|
||||
{
|
||||
spg2xx_game_state::machine_start();
|
||||
@ -682,65 +700,50 @@ void spg2xx_game_state::rad_crik(machine_config &config)
|
||||
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
|
||||
}
|
||||
|
||||
READ16_MEMBER(spg2xx_game_state::rad_crik_hack_r)
|
||||
{
|
||||
int pc = m_maincpu->state_int(UNSP_PC);
|
||||
if (pc == 0xf851)
|
||||
return 0xf859;
|
||||
else
|
||||
return 0xf854;
|
||||
}
|
||||
|
||||
void spg2xx_game_state::init_rad_crik()
|
||||
{
|
||||
// not 100% sure what this is waiting on, could be eeprom as it seems to end up here frequently during the eeprom test, patch running code, not ROM, so that checksum can still pass
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xf851, 0xf851, read16_delegate(FUNC(spg2xx_game_state::rad_crik_hack_r),this));
|
||||
}
|
||||
|
||||
ROM_START( vii )
|
||||
ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "vii.bin", 0x0000, 0x2000000, CRC(04627639) SHA1(f883a92d31b53c9a5b0cdb112d07cd793c95fc43))
|
||||
ROM_END
|
||||
|
||||
ROM_START( batmantv )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "batman.bin", 0x000000, 0x400000, CRC(46f848e5) SHA1(5875d57bb3fe0cac5d20e626e4f82a0e5f9bb94c) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( walle )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "walle.bin", 0x000000, 0x400000, BAD_DUMP CRC(bd554cba) SHA1(6cd06a036ab12e7b0e1fd8003db873b0bb783868) )
|
||||
// Alternate dump, we need to decide which one is correct.
|
||||
//ROM_LOAD16_WORD_SWAP( "walle.bin", 0x000000, 0x400000, CRC(6bc90b16) SHA1(184d72de059057aae7800da510fcf05ed1da9ec9))
|
||||
ROM_END
|
||||
|
||||
ROM_START( zone40 )
|
||||
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "zone40.bin", 0x0000, 0x4000000, CRC(4ba1444f) SHA1(de83046ab93421486668a247972ad6d3cda19440) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( zone60 )
|
||||
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "zone60.bin", 0x0000, 0x4000000, CRC(4cb637d1) SHA1(1f97cbdb4299ac0fbafc2a3aa592066cb0727066))
|
||||
ROM_END
|
||||
|
||||
ROM_START( wirels60 )
|
||||
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x4000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "wirels60.bin", 0x0000, 0x4000000, CRC(b4df8b28) SHA1(00e3da542e4bc14baf4724ad436f66d4c0f65c84))
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_skat )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_skatp ) // rom was dumped from the NTSC version, but region comes from an io port, so ROM is probably the same
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "skateboarder.bin", 0x000000, 0x400000, CRC(08b9ab91) SHA1(6665edc4740804956136c68065890925a144626b) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_sktv )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "skannerztv.bin", 0x000000, 0x200000, CRC(e92278e3) SHA1(eb6bee5e661128d83784960dfff50379c36bfaeb) )
|
||||
|
||||
/* The external scanner MCU is a Winbond from 2000: SA5641
|
||||
@ -750,8 +753,13 @@ ROM_START( rad_sktv )
|
||||
TODO: find details on MCU so that we know capacity etc. */
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_fb2 )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "football2.bin", 0x000000, 0x400000, CRC(96b4f0d2) SHA1(e91f2ac679fb0c026ffe216eb4ab58802f361a17) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( rad_crik ) // only released in EU?
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "cricket.bin", 0x000000, 0x200000, CRC(6fa0aaa9) SHA1(210d2d4f542181f59127ce2f516d0408dc6de7a8) )
|
||||
ROM_END
|
||||
|
||||
@ -779,7 +787,7 @@ http://www.lcis.com.tw/paper_store/paper_store/GPL162004A-507A_162005A-707AV10_c
|
||||
*/
|
||||
|
||||
ROM_START( wlsair60 )
|
||||
ROM_REGION( 0x8400000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x8400000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "wlsair60.nand", 0x0000, 0x8400000, CRC(eec23b97) SHA1(1bb88290cf54579a5bb51c08a02d793cd4d79f7a) )
|
||||
ROM_END
|
||||
|
||||
@ -860,10 +868,29 @@ which is also found in the Wireless Air 60 ROM.
|
||||
*/
|
||||
|
||||
ROM_START( wrlshunt )
|
||||
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_REGION( 0x8000000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD16_WORD_SWAP( "wireless.bin", 0x0000, 0x8000000, CRC(a6ecc20e) SHA1(3645f23ba2bb218e92d4560a8ae29dddbaabf796) )
|
||||
ROM_END
|
||||
|
||||
|
||||
void spg2xx_game_state::init_crc()
|
||||
{
|
||||
// several games have a byte sum checksum listed at the start of ROM, this little helper function logs what it should match.
|
||||
const int length = memregion("maincpu")->bytes();
|
||||
const uint8_t* rom = memregion("maincpu")->base();
|
||||
|
||||
uint32_t checksum = 0x00000000;
|
||||
// the first 0x10 bytes are where the "chksum:xxxxxxxx " string is listed, so skip over them
|
||||
for (int i = 0x10; i < length; i++)
|
||||
{
|
||||
checksum += rom[i];
|
||||
}
|
||||
|
||||
logerror("Calculated Byte Sum of bytes from 0x10 to 0x%08x is %08x)\n", length - 1, checksum);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
|
||||
|
||||
// Jungle Soft TV games
|
||||
@ -876,10 +903,11 @@ CONS( 2004, batmantv, 0, 0, jakks, batman, spg2xx_game_state, empty_init, "JAKKS
|
||||
CONS( 2008, walle, 0, 0, walle, walle, spg2xx_game_state, empty_init, "JAKKS Pacific Inc", "Wall-E", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
// Radica TV games
|
||||
CONS( 2006, rad_skat, 0, 0, rad_skat, rad_skat, spg2xx_game_state, empty_init, "Radica", "Play TV Skateboarder (NTSC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
CONS( 2006, rad_skatp, rad_skat, 0, rad_skatp, rad_skatp, spg2xx_game_state, empty_init, "Radica", "Connectv Skateboarder (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
CONS( 2006, rad_crik, 0, 0, rad_crik, rad_crik, spg2xx_game_state, empty_init, "Radica", "Connectv Cricket (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // Version 3.00 20/03/06 is listed in INTERNAL TEST
|
||||
CONS( 2007, rad_sktv, 0, 0, rad_skat, rad_sktv, spg2xx_game_state, empty_init, "Radica", "Skannerz TV", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
|
||||
CONS( 2006, rad_skat, 0, 0, rad_skat, rad_skat, spg2xx_game_state, init_crc, "Radica", "Play TV Skateboarder (NTSC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
CONS( 2006, rad_skatp, rad_skat, 0, rad_skatp,rad_skatp, spg2xx_game_state, init_crc, "Radica", "Connectv Skateboarder (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||
CONS( 2006, rad_crik, 0, 0, rad_crik, rad_crik, spg2xx_game_state, init_crc, "Radica", "Connectv Cricket (PAL)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // Version 3.00 20/03/06 is listed in INTERNAL TEST
|
||||
CONS( 2007, rad_sktv, 0, 0, rad_skat, rad_sktv, spg2xx_game_state, init_crc, "Radica", "Skannerz TV", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
|
||||
CONS( 2007, rad_fb2, 0, 0, rad_skat, rad_fb2, spg2xx_game_state, init_crc, "Radica", "Play TV Football 2", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
|
||||
|
||||
// might not fit here. First 0x8000 bytes are blank (not too uncommon for these) then rest of rom looks like it's probably encrypted at least
|
||||
CONS( 2009, zone40, 0, 0, non_spg_base, wirels60, spg2xx_game_state, empty_init, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 40", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
|
||||
|
@ -33048,6 +33048,10 @@ rabbitjt // (c) 1996 Electronic Arts
|
||||
@source:rad_eu3a14.cpp
|
||||
rad_gtg
|
||||
rad_foot
|
||||
rad_bb3
|
||||
rad_bb3p
|
||||
rad_hnt3
|
||||
rad_hnt3p
|
||||
|
||||
@source:rad_eu3a05.cpp
|
||||
rad_sinv
|
||||
@ -38547,6 +38551,7 @@ rad_skat //
|
||||
rad_skatp //
|
||||
rad_sktv //
|
||||
rad_crik //
|
||||
rad_fb2 //
|
||||
|
||||
@source:vsmile.cpp
|
||||
vsmile //
|
||||
|
Loading…
Reference in New Issue
Block a user