new NOT WORKING --- Play TV Buckmasters Huntin' 2 (NTSC) [Sean Riddle, Peter Wilhelmsen] + extra Jakks gamekeys (#4511)

* new NOT WORKING
---
Play TV Buckmasters Huntin' 2 (NTSC) [Sean Riddle, Peter Wilhelmsen]

* rad_eu3a14.cpp : start moving away from drawgfx use so that we can move towards support of unaligned ram based drawing etc. needed by rad_hnt3 (nw)

* new not working SOFTWARE LIST entries
jakks_gamekey_dy.xml: Sports Bowling & Goofy's Underwater Adventure [Sean Riddle]
jakks_gamekey_dy.xml: Sports Tennis & Face Chase [Sean Riddle]

(a Disney base unit is on the way)

* notes on how to bypass the startup check for now (nw)
This commit is contained in:
David Haywood 2019-01-15 01:38:50 +00:00 committed by ajrhacker
parent c929d074dc
commit 8dbab379a5
5 changed files with 132 additions and 18 deletions

36
hash/jakks_gamekey_dy.xml Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<softwarelist name="jakks_gamekey_dy" description="JAKKS Pacific 'DY' Game Keys">
<!-- This list is for the 'DY' coded Game Keys, for Disney base systems (not Disney Princess) -->
<!-- One of them doesn't use the /OE signal from the game, and has 16 10K resistors tying the data lines high.
Silkscreened onto both PCBs is the text A1 A2 A3 A4 with 2 boxes next to each with H and L. Both PCBs are marked A1 H A3 L. -->
<!-- in debugger do "go 14ca4" then "do r1 = ffff" (it checks for compatible base board using magic value / response on port a) -->
<software name="sbwlgoof" supported="no"> <!-- AT24C04 SEEPROM -->
<description>Sports Bowling &amp; Goofy's Underwater Adventure</description>
<year>2005</year>
<publisher>JAKKS Pacific</publisher>
<part name="cart" interface="jakks_gamekey">
<dataarea name="rom" size="0x200000">
<rom name="dy_disneygkbowlinggoofy.bin" size="0x200000" crc="d2147aa4" sha1="0db986aac68868a2ff4936e93178da8c592ac81d" offset="0" />
</dataarea>
</part>
</software>
<!-- in debugger do "go fbdb" then "do r1 = ffff" (it checks for compatible base board using magic value / response on port a) -->
<software name="stenfchs" supported="no"> <!-- AT24C04 SEEPROM -->
<description>Sports Tennis &amp; Face Chase</description>
<year>2005</year>
<publisher>JAKKS Pacific</publisher>
<part name="cart" interface="jakks_gamekey">
<dataarea name="rom" size="0x200000">
<rom name="dy_disneygktennisfacechase.bin" size="0x200000" crc="ba37ccf2" sha1="c7204a0499b6949f3f70f0f5c042d353435406fb" offset="0" />
</dataarea>
</part>
</software>
<!-- There is another key with "Sports Tennis" "Face Chase" and "The Riches of Agrabah" which was sold as part of a 2-key + unit bundle -->
</softwarelist>

View File

@ -11,15 +11,15 @@
Known to be on this hardware
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
Golden Tee Golf Home Edition ? x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
Connectv Football ? x16 48 4MB no ELAN EU3A14 (developed by Medialink)
Baseball 3 ? x16 48 4MB no ELAN EU3A14 (developed by FarSight Studios)
Huntin3 ? x16 48 4MB no Elan ?
--------------
Also on this hardware
--------------
Real Swing Golf 74037 x16 48 not dumped no ELAN EU3A14
Play TV Basketball 75029 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
@ -71,6 +71,7 @@ public:
radica_eu3a14_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_mainregion(*this, "maincpu"),
m_palram(*this, "palram"),
m_scrollregs(*this, "scrollregs"),
m_tilecfg(*this, "tilecfg"),
@ -134,6 +135,7 @@ private:
double hue2rgb(double p, double q, double t);
required_device<cpu_device> m_maincpu;
required_region_ptr<uint8_t> m_mainregion;
required_shared_ptr<uint8_t> m_palram;
required_shared_ptr<uint8_t> m_scrollregs;
required_shared_ptr<uint8_t> m_tilecfg;
@ -153,6 +155,7 @@ private:
int m_pagewidth;
int m_pageheight;
void draw_tile(bitmap_ind16 &bitmap, const rectangle &cliprect, int gfxno, int tileno, int base, int palette, int flipx, int flipy, int xpos, int ypos, int transpen, int size);
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);
void draw_background(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
@ -213,51 +216,109 @@ void radica_eu3a14_state::handle_palette(screen_device &screen, bitmap_ind16 &bi
}
}
void radica_eu3a14_state::draw_tile(bitmap_ind16 &bitmap, const rectangle &cliprect, int gfxno, int tileno, int base, int palette, int flipx, int flipy, int xpos, int ypos, int transpen, int size)
{
int bppdiv = 1;
int baseaddr = base * 256;
switch (gfxno)
{
case 0x03: bppdiv = 1; baseaddr += tileno * 256; break; // 16x16 8bpp
case 0x04: bppdiv = 2; baseaddr += tileno * 128; break; // 16x16 4bpp
case 0x05: bppdiv = 1; baseaddr += tileno * 64; break; // 8x8 8bpp
case 0x06: bppdiv = 2; baseaddr += tileno * 64; break; // 8x8 4bpp
default: break;
}
const uint8_t *gfxdata = &m_mainregion[baseaddr & 0x3fffff];
int xstride = size / bppdiv;
int count = 0;
for (int y = 0; y < size; y++)
{
int realy = ypos + y;
uint16_t* dst = &bitmap.pix16(ypos + y);
for (int x = 0; x < xstride; x++)
{
int pix = gfxdata[count];
if (realy >= cliprect.min_y && realy <= cliprect.max_y)
{
if (bppdiv == 1) // 8bpp
{
int realx = x + xpos;
if (realx >= cliprect.min_x && realx <= cliprect.max_x)
{
if (pix)
dst[realx] = pix;
}
}
else if (bppdiv == 2) // 4bpp
{
int realx = (x * 2) + xpos;
if (realx >= cliprect.min_x && realx <= cliprect.max_x)
{
if (pix & 0xf0)
dst[realx] = (pix & 0xf0) >> 4;
}
realx++;
if (realx >= cliprect.min_x && realx <= cliprect.max_x)
{
if (pix & 0x0f)
dst[realx] = pix & 0x0f;
}
}
}
count++;
}
}
}
void radica_eu3a14_state::draw_page(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int which, int xbase, int ybase, int size)
{
gfx_element *gfx;
int gfxno = 0;
int pagesize = m_pagewidth * m_pageheight * 2;
int base = (m_tilebase[1] << 8) | m_tilebase[0];
if (m_tilecfg[2] & 0x04) // 4bpp selection
{
gfx = m_gfxdecode->gfx(4); // 16x16 4bpp
base <<= 1;
gfxno = 4; // 16x16 4bpp
if (size == 8)
{
gfx = m_gfxdecode->gfx(6); // 8x8 4bpp
base <<= 2;
gfxno = 6; // 8x8 4bpp
}
}
else // 8bpp selection
{
gfx = m_gfxdecode->gfx(3); // 16x16 8bpp
gfxno = 3; // 16x16 8bpp
if (size == 8)
{
gfx = m_gfxdecode->gfx(5); // 8x8 8bpp
base <<= 2;
gfxno = 5; // 8x8 8bpp
}
}
int xdraw = xbase;
int ydraw = ybase;
int count = 0;
for (int i = m_tilerambase+pagesize*which; i < m_tilerambase+pagesize*(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);
int tile = m_mainram[i + 0] | (m_mainram[i + 1] << 8);
gfx->transpen(bitmap, cliprect, tile+base, 0, 0, 0, xdraw, ydraw, 0);
xdraw+=size;
draw_tile(bitmap, cliprect, gfxno, tile, base, 0, 0, 0, xdraw, ydraw, 0, size);
xdraw += size;
count++;
if (((count % m_pagewidth) == 0))
{
xdraw -= size*m_pagewidth;
xdraw -= size * m_pagewidth;
ydraw += size;
}
}

View File

@ -842,6 +842,8 @@ void jakks_gkr_state::jakks_gkr_nk(machine_config &config)
jakks_gkr(config);
SOFTWARE_LIST(config, "jakks_gamekey_nk").set_original("jakks_gamekey_nk");
SOFTWARE_LIST(config, "jakks_gamekey_dy").set_original("jakks_gamekey_dy"); // doesn't belong here, but there are no DY base games dumped yet so just ensure it isn't orphaned
}

View File

@ -201,6 +201,12 @@
Fitness Dance has an Atmel H93864C (maybe SEEPROM?) a Microchip DSPIC 33FJ12GP202 and two JRC 2740 dual op amps.
Music and Circuit has a 24CS64, two UTC324 quad op amps, a 74HC14, a 74HCT04, and an 8-pin SOIC labeled 61545, which is likely an M61545 dual electronic volume control.
NOTES:
Play TV Monster Truck runs off an entirely different codebase to everything else, presumably coded by the developer from scratch rather than using code supplied by SSD Company LTD
Play TV Rescue Heroes fails to display any kind of XaviX logo or SSD Copyright, it is the only XaviX based game so far to not show these details anywhere in the game.
***************************************************************************/
#include "emu.h"
@ -1233,6 +1239,12 @@ ROM_START( rad_hnt )
ROM_LOAD("huntin1.bin", 0x000000, 0x100000, CRC(e51e250f) SHA1(d72199096d466cd344bb243ef1228e0df9501d00) )
ROM_END
ROM_START( rad_hnt2 )
ROM_REGION(0x200000, "bios", ROMREGION_ERASE00)
ROM_LOAD("huntin2.bin", 0x000000, 0x200000, CRC(fb6846df) SHA1(267632790ed42eba7ef1517b86b024799a78839d) )
ROM_END
ROM_START( rad_snow )
ROM_REGION(0x100000, "bios", ROMREGION_ERASE00)
ROM_LOAD("snoblu.bin", 0x000000, 0x100000, CRC(593e40b3) SHA1(03483ac39eddd7746470fb60018e704382b0da59) )
@ -1380,6 +1392,8 @@ CONS( 2000, rad_opus, 0, 0, xavix_nv, rad_opus, xavix_state,
CONS( 2000, rad_hnt, 0, 0, xavix_nv, rad_hnt, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Buckmasters Huntin' (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // need to map gun (box shows 'Play TV' ingame just shows 'Plug & Play')
CONS( 2003, rad_hnt2, 0, 0, xavix_nv, rad_hnt, xavix_state, init_xavix, "Radica / SSD Company LTD", "Play TV Buckmasters Huntin' 2 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // need to map gun, crashes on pause
CONS( 2003, rad_mtrk, 0, 0, xavix_mtrk, rad_mtrk, xavix_mtrk_state, init_xavix, "Radica / SSD Company LTD", "Play TV Monster Truck (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 2003, rad_mtrkp, rad_mtrk, 0, xavix_mtrkp, rad_mtrkp,xavix_mtrk_state, init_xavix, "Radica / SSD Company LTD", "ConnecTV Monster Truck (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
@ -1402,7 +1416,7 @@ CONS( 2003, rad_madf, 0, 0, xavix_madfb, rad_fb, xavix_madfb_s
CONS( 200?, rad_fb, 0, 0, xavix_madfb, rad_fb, xavix_madfb_state, init_xavix, "Radica / SSD Company LTD", "Play TV Football (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // USA only release? doesn't change logo for PAL.
CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radioa / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 200?, rad_rh, 0, 0, xavix, rad_rh, xavix_state, init_xavix, "Radica / Fisher-Price / SSD Company LTD", "Play TV Rescue Heroes (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
CONS( 200?, epo_efdx, 0, 0, xavix_i2c_24c08, epo_efdx, xavix_i2c_state, init_epo_efdx, "Epoch / SSD Company LTD", "Excite Fishing DX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )

View File

@ -39712,6 +39712,7 @@ rad_crdn //
rad_crdnp //
rad_opus //
rad_hnt //
rad_hnt2 //
rad_bass //
rad_bassp //
rad_snow //