progress (nw)

This commit is contained in:
DavidHaywood 2019-01-23 02:13:43 +00:00
parent 205fc516ea
commit efc721357c
3 changed files with 90 additions and 5 deletions

View File

@ -399,6 +399,10 @@ void xavix_state::superxavix_lowbus_map(address_map &map)
map(0x6c00, 0x6cff).ram().w(FUNC(xavix_state::bmp_palram_sh_w)).share("bmp_palram_sh");
map(0x6d00, 0x6dff).ram().w(FUNC(xavix_state::bmp_palram_l_w)).share("bmp_palram_l");
map(0x7a10, 0x7a12).ram().rw(FUNC(xavix_state::pio_dir_r), FUNC(xavix_state::pio_dir_w));
map(0x7a20, 0x7a22).ram().rw(FUNC(xavix_state::pio_out_r), FUNC(xavix_state::pio_out_w));
map(0x7a30, 0x7a32).ram().r(FUNC(xavix_state::pio_in_r));
map(0x6fb0, 0x6fc7).ram().share("bmp_base");
}
@ -1076,6 +1080,14 @@ void xavix_state::xavix2000(machine_config &config)
m_palette->set_entries(512);
}
void xavix_i2c_jmat_state::xavix_i2c_jmat(machine_config &config)
{
xavix2000(config);
I2CMEM(config, "i2cmem", 0)/*.set_page_size(16)*/.set_data_size(0x200); // ?
}
void xavix_state::xavix2000_nv(machine_config &config)
{
xavix2000(config);
@ -1573,7 +1585,7 @@ CONS( 2004, xavtenni, 0, 0, xavix2000_i2c_24c04, xavix, xavix_i2c_state, init_xa
CONS( 2004, xavbaseb, 0, 0, xavix2000_i2c_24c04, xavix, xavix_i2c_state, init_xavix, "SSD Company LTD", "XaviX Baseball (XaviXPORT)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// TODO: check SEEPROM type and hookup, banking!
CONS( 2005, xavjmat, 0, 0, xavix2000_i2c_24c04, xavix, xavix_i2c_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, xavix_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
@ -1588,12 +1600,12 @@ CONS( 2005, xavjmat, 0, 0, xavix2000_i2c_24c04, xavix, xavix_i2c_state, init_xa
// Domyos Bike Concept (not listed on site above)
// Has SEEPROM and an RTC. Exercise has some leftover PC buffer stuff. (TODO, check SEEPROM type, RTC type, banking) (both Exercises and Challenge are identical PCBs)
CONS( 2008, domfitex, 0, 0, xavix2000_i2c_24c04, xavixp, xavix_i2c_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, xavix2000_i2c_24c04, xavixp, xavix_i2c_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Challenge (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 2008, domfitex, 0, 0, xavix_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, xavix_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)
// 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?
// Seems to have 32-bit looking stuff, possible vectors at start? possible ARM THUMB mode code
ROM_START( domfitad )
ROM_REGION( 0x1000000, "bios", ROMREGION_ERASE00 )
@ -1601,4 +1613,8 @@ ROM_START( domfitad )
ROM_END
// Has SEEPROM and an RTC. Adventure has the string DOMYSSDCOLTD a couple of times.
CONS( 2008, domfitad, 0, 0, xavix2000_i2c_24c04, xavixp, xavix_i2c_state, init_xavix, "Decathlon / SSD Company LTD", "Domyos Fitness Adventure (Domyos Interactive System)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 2008, domfitad, 0, 0, xavix_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 )

View File

@ -564,6 +564,18 @@ private:
required_device<xavix_sound_device> m_sound;
DECLARE_READ8_MEMBER(sound_regram_read_cb);
protected:
// additional SuperXaviX / XaviX2002 stuff
uint8_t m_sx_pio_dir[3];
uint8_t m_sx_pio_out[3];
DECLARE_WRITE8_MEMBER(pio_dir_w);
DECLARE_READ8_MEMBER(pio_dir_r);
virtual DECLARE_WRITE8_MEMBER(pio_out_w);
virtual DECLARE_READ8_MEMBER(pio_out_r);
virtual DECLARE_READ8_MEMBER(pio_in_r);
};
class xavix_i2c_state : public xavix_state
@ -601,6 +613,22 @@ private:
int hackaddress2;
};
class xavix_i2c_jmat_state : public xavix_state
{
public:
xavix_i2c_jmat_state(const machine_config &mconfig, device_type type, const char *tag)
: xavix_state(mconfig, type, tag),
m_i2cmem(*this, "i2cmem")
{ }
void xavix_i2c_jmat(machine_config &config);
private:
required_device<i2cmem_device> m_i2cmem;
};
class xavix_i2c_lotr_state : public xavix_i2c_state
{
public:

View File

@ -1077,6 +1077,9 @@ void xavix_state::machine_start()
save_item(NAME(m_timer_baseval));
save_item(NAME(m_spritereg));
save_item(NAME(m_barrel_params));
save_item(NAME(m_sx_pio_dir));
save_item(NAME(m_sx_pio_out));
}
void xavix_state::machine_reset()
@ -1155,6 +1158,13 @@ void xavix_state::machine_reset()
m_barrel_params[0] = 0x00;
m_barrel_params[1] = 0x00;
// SuperXaviX
for (int i = 0; i < 3; i++)
{
m_sx_pio_dir[i] = 0x00;
m_sx_pio_out[i] = 0x00;
}
}
typedef device_delegate<uint8_t(int which, int half)> xavix_interrupt_vector_delegate;
@ -1182,3 +1192,34 @@ int16_t xavix_state::get_vectors(int which, int half)
}
// additional SuperXaviX / XaviX2002 stuff
WRITE8_MEMBER(xavix_state::pio_dir_w)
{
LOG("%s: pio_dir_w (port %d) %02x\n", machine().describe_context(), offset, data);
m_sx_pio_dir[offset] = data;
}
READ8_MEMBER(xavix_state::pio_dir_r)
{
LOG("%s: pio_dir_r (port %d)\n", machine().describe_context(), offset);
return m_sx_pio_dir[offset];
}
WRITE8_MEMBER(xavix_state::pio_out_w)
{
LOG("%s: pio_out_w (port %d) %02x\n", machine().describe_context(), offset, data);
m_sx_pio_out[offset] = data;
}
READ8_MEMBER(xavix_state::pio_out_r)
{
LOG("%s: pio_out_r (port %d)\n", machine().describe_context(), offset);
return m_sx_pio_out[offset];
}
READ8_MEMBER(xavix_state::pio_in_r)
{
LOG("%s: pio_in_r (port %d)\n", machine().describe_context(), offset);
return 0x00;
}