From 8dbab379a50201d8159e58adffb979a722a1613d Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 15 Jan 2019 01:38:50 +0000 Subject: [PATCH] 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) --- hash/jakks_gamekey_dy.xml | 36 +++++++++++++ src/mame/drivers/rad_eu3a14.cpp | 95 +++++++++++++++++++++++++++------ src/mame/drivers/vii.cpp | 2 + src/mame/drivers/xavix.cpp | 16 +++++- src/mame/mame.lst | 1 + 5 files changed, 132 insertions(+), 18 deletions(-) create mode 100644 hash/jakks_gamekey_dy.xml diff --git a/hash/jakks_gamekey_dy.xml b/hash/jakks_gamekey_dy.xml new file mode 100644 index 00000000000..990180fbea7 --- /dev/null +++ b/hash/jakks_gamekey_dy.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + Sports Bowling & Goofy's Underwater Adventure + 2005 + JAKKS Pacific + + + + + + + + + + Sports Tennis & Face Chase + 2005 + JAKKS Pacific + + + + + + + + + + diff --git a/src/mame/drivers/rad_eu3a14.cpp b/src/mame/drivers/rad_eu3a14.cpp index badd83c39f4..bd711429794 100644 --- a/src/mame/drivers/rad_eu3a14.cpp +++ b/src/mame/drivers/rad_eu3a14.cpp @@ -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) Huntin’3 ? 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 m_maincpu; + required_region_ptr m_mainregion; required_shared_ptr m_palram; required_shared_ptr m_scrollregs; required_shared_ptr 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; } } diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 874bff3dcb5..cc7c2a1f0f0 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -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 } diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index f6017feac52..24b4cd6caf6 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -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 ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f3d35344c80..30856c03d7f 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -39712,6 +39712,7 @@ rad_crdn // rad_crdnp // rad_opus // rad_hnt // +rad_hnt2 // rad_bass // rad_bassp // rad_snow //