From 3e002be11607dfe81ae7d939f34b83e2c9a9c862 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Fri, 25 Jan 2019 04:00:32 +0000 Subject: signs of life from the domyos games (nw) (#4555) * signs of life from the domyos games (nw) * new NOT WORKING Domyos Bike Concept (Domyos Interactive System) [Sean Riddle, Peter Wilhelmsen] * rad_hnt3 improvements (nw) --- src/mame/drivers/rad_eu3a14.cpp | 66 +++++++++++++++++++++++++-------------- src/mame/drivers/xavix.cpp | 12 +++++-- src/mame/machine/xavix.cpp | 15 ++++++++- src/mame/machine/xavix2002_io.cpp | 12 +++---- src/mame/mame.lst | 2 +- 5 files changed, 72 insertions(+), 35 deletions(-) diff --git a/src/mame/drivers/rad_eu3a14.cpp b/src/mame/drivers/rad_eu3a14.cpp index 8a2903f78fe..30ad260a497 100644 --- a/src/mame/drivers/rad_eu3a14.cpp +++ b/src/mame/drivers/rad_eu3a14.cpp @@ -354,7 +354,7 @@ void radica_eu3a14_state::draw_background(screen_device &screen, bitmap_ind16 &b int size; - // m_tilecfg[0] b-as h-?? b = bytes per tile s = tilesize / page size? a = always set when tilemaps are in use - check? h = related to page positions, when set uses 2x2 pages? ? = used (3/0 in various places in football and some others) + // m_tilecfg[0] b-as ?-hh b = bytes per tile s = tilesize / page size? a = always set when tilemaps are in use - check? h = related to page positions, when set uses 2x2 pages? ? = used // m_tilecfg[1] ---- ---? ? = used foot // m_tilecfg[2] ---- -B-- B = 4bpp tiles @@ -381,29 +381,47 @@ void radica_eu3a14_state::draw_background(screen_device &screen, bitmap_ind16 &b } - // 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); - - // 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); - - // 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); + if ((m_tilecfg[0] & 0x03) == 0x00) // tilemaps arranged as 2x2 pages? + { + // 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); + + // 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); + + // 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); + } + else if ((m_tilecfg[0] & 0x03) == 0x03) // individual tilemaps? multiple layers? + { + // normal + draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, 0 - yscroll, size); + // wrap x + draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth) + 0 - xscroll, 0 - yscroll, size); + // wrap y + draw_page(screen, bitmap, cliprect, 0, 0 - xscroll, (size * m_pageheight) + 0 - yscroll, size); + // wrap x+y + draw_page(screen, bitmap, cliprect, 0, (size * m_pagewidth) + 0 - xscroll, (size * m_pageheight) + 0 - yscroll, size); + } + else + { + popmessage("m_tilecfg[0] & 0x03 unknown config"); + } } diff --git a/src/mame/drivers/xavix.cpp b/src/mame/drivers/xavix.cpp index a32d2038607..3a92153f003 100644 --- a/src/mame/drivers/xavix.cpp +++ b/src/mame/drivers/xavix.cpp @@ -1691,12 +1691,12 @@ CONS( 2005, tmy_thom, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, in CONS( 2004, xavtenni, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Tennis (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2004, xavbaseb, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Baseball (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2004, xavbowl, 0, 0, xavix2002_i2c_24c04, xavix_bowl, xavix_i2c_bowl_state, init_xavix, "SSD Company LTD", "XaviX Bowling (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has IR 'Camera' -CONS( 2004, xavbox, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Boxing (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has IR 'Camera' +CONS( 2004, xavbox, 0, 0, xavix2002_i2c_jmat, xavix, xavix_i2c_jmat_state, init_xavix, "SSD Company LTD", "XaviX Boxing (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has IR 'Camera' // Bass Fishing PCB is just like Tennis except with an RF daughterboard. CONS( 2004, xavbassf, 0, 0, xavix2002_i2c_24c04, xavix_i2c, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Bass Fishing (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // TODO: check SEEPROM type and hookup, banking! -CONS( 2005, xavjmat, 0, 0, xavix2002_i2c_jmat, xavix_i2c, xavix_i2c_jmat_state, init_xavix, "SSD Company LTD", "Jackie Chan J-Mat Fitness (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2005, xavjmat, 0, 0, xavix2002_i2c_jmat, xavix, xavix_i2c_jmat_state, init_xavix, "SSD Company LTD", "Jackie Chan J-Mat Fitness (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // https://arnaudmeyer.wordpress.com/domyos-interactive-system/ // Domyos Fitness Adventure @@ -1714,7 +1714,7 @@ CONS( 2005, xavjmat, 0, 0, xavix2002_i2c_jmat, xavix_i2c, xavix_i2c_jmat_ CONS( 2008, domfitex, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Exercises (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2008, domfitch, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Challenge (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -// Domyos DiS (unknown hardware, or bad dumps) +// Domyos DiS (unknown hardware, probably XaviX 2) // This DOES NOT look like a 6502 based Xavix / Super Xavix! maybe XaviX 2, the cartridges contain the entire system (CPU,Video,Sound,ROM) so that is possible. // Seems to have 32-bit looking stuff, possible vectors at start? @@ -1723,8 +1723,14 @@ ROM_START( domfitad ) ROM_LOAD( "xpfitnessadventure.bin", 0x000000, 0x1000000, CRC(a7917081) SHA1(95ae5dc6e64a78ae060cb0e61d8b0af34a93c4ce) ) ROM_END +ROM_START( dombikec ) + ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 ) + ROM_LOAD( "xpbikeconcept.bin", 0x000000, 0x1000000, CRC(3447fce5) SHA1(c7e9e9cd789a17ac886ecf253f67753213cf8d21) ) +ROM_END + // Has SEEPROM and an RTC. Adventure has the string DOMYSSDCOLTD a couple of times. CONS( 2008, domfitad, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Adventure (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +CONS( 2008, dombikec, 0, 0, xavix2002_i2c_jmat, xavixp, xavix_i2c_jmat_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Bike Concept (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/machine/xavix.cpp b/src/mame/machine/xavix.cpp index bcf68c280b1..011715bd441 100644 --- a/src/mame/machine/xavix.cpp +++ b/src/mame/machine/xavix.cpp @@ -610,29 +610,42 @@ void xavix_ekara_state::write_io1(uint8_t data, uint8_t direction) READ8_MEMBER(xavix_i2c_jmat_state::read_extended_io0) { + LOG("%s: read_extended_io0\n", machine().describe_context()); return 0x00; } READ8_MEMBER(xavix_i2c_jmat_state::read_extended_io1) { - return 0x00; + LOG("%s: read_extended_io1\n", machine().describe_context()); + + // reads this by reading the byte, then shifting right 4 times to place value into carry flag + return m_i2cmem->read_sda() << 3; + //return 0x00; } READ8_MEMBER(xavix_i2c_jmat_state::read_extended_io2) { + LOG("%s: read_extended_io2\n", machine().describe_context()); return 0x00; } WRITE8_MEMBER(xavix_i2c_jmat_state::write_extended_io0) { + LOG("%s: io0_data_w %02x\n", machine().describe_context(), data); } WRITE8_MEMBER(xavix_i2c_jmat_state::write_extended_io1) { + LOG("%s: io1_data_w %02x\n", machine().describe_context(), data); + + m_i2cmem->write_sda((data & 0x08) >> 3); + m_i2cmem->write_scl((data & 0x10) >> 4); + } WRITE8_MEMBER(xavix_i2c_jmat_state::write_extended_io2) { + LOG("%s: io2_data_w %02x\n", machine().describe_context(), data); } diff --git a/src/mame/machine/xavix2002_io.cpp b/src/mame/machine/xavix2002_io.cpp index dba15cd36e0..e5ecc03b73a 100644 --- a/src/mame/machine/xavix2002_io.cpp +++ b/src/mame/machine/xavix2002_io.cpp @@ -52,6 +52,7 @@ WRITE8_MEMBER(xavix2002_io_device::pio_dir_w) if (offset < 3) { m_sx_pio_dir[offset] = data; + pio_out_w(space,offset, m_sx_pio_out[offset]); // update port? } } @@ -79,7 +80,7 @@ WRITE8_MEMBER(xavix2002_io_device::pio_out_w) // TODO: look at direction register - uint8_t outdata = m_sx_pio_out[offset]; + uint8_t outdata = m_sx_pio_out[offset] & m_sx_pio_dir[offset]; switch (offset) { @@ -96,14 +97,13 @@ READ8_MEMBER(xavix2002_io_device::pio_out_r) // what does this actually read? LOG("%s: superxavix pio_out_r (port %d)\n", machine().describe_context(), offset); - return 0x00; -// uint8_t ret = 0x00; + uint8_t ret = 0x00; -// if (offset<3) -// ret = m_sx_pio_out[offset]; + if (offset<3) + ret = m_sx_pio_out[offset]; -// return ret; + return ret; } diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9b87da3fb10..aa3bced9e11 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -39793,7 +39793,7 @@ tmy_thom // domfitex // domfitch // domfitad // - +dombikec // @source:xbox.cpp xbox // -- cgit v1.2.3