mirror of
https://github.com/holub/mame
synced 2025-04-29 03:20:50 +03:00
new NOT WORKING machines (Plug & Play - Sunplus) (#5788)
* new NOT WORKING machines ----- TV Virtual Tennis [David Haywood, Morten Kirkegaard, Peter Wilhelmsen] Rockstar Guitar / Guitar Rock (PAL) [David Haywood, Morten Kirkegaard, Peter Wilhelmsen] Who Wants to Be a Millionaire (Play Vision, Plug and Play, UK) [David Haywood, Morten Kirkegaard, Peter Wilhelmsen] Millionaire needs P4 inputs sorting out Rockstar Guitar timings are all over the place (music not in sync at all) TV Virtual Tennis is the spg110 type SunPlus and needs video fixes, as well as the motion controls. * (nw) * improve rendering for conyteni (nw) * improve character select screen in conyteni (nw)
This commit is contained in:
parent
0f062a17c7
commit
6596cca96a
@ -116,7 +116,8 @@ offs_t unsp_disassembler::disassemble_remaining(std::ostream& stream, offs_t pc,
|
|||||||
|
|
||||||
// alu, 16-bit immediate
|
// alu, 16-bit immediate
|
||||||
case 1:
|
case 1:
|
||||||
if ((op0 == 4 || op0 == 12 || op0 == 6 || op0 == 9) && opA != opB)
|
// TaiKee Guitar has this with op0 == 9
|
||||||
|
if ((op0 == 4 || op0 == 12 || op0 == 6 /*|| op0 == 9*/) && opA != opB)
|
||||||
{
|
{
|
||||||
util::stream_format(stream, "<BAD>");
|
util::stream_format(stream, "<BAD>");
|
||||||
return UNSP_DASM_OK;
|
return UNSP_DASM_OK;
|
||||||
@ -131,7 +132,8 @@ offs_t unsp_disassembler::disassemble_remaining(std::ostream& stream, offs_t pc,
|
|||||||
|
|
||||||
// alu, direct memory
|
// alu, direct memory
|
||||||
case 2:
|
case 2:
|
||||||
if ((op0 == 4 || op0 == 12 || op0 == 6 || op0 == 9) && opA != opB)
|
// TaiKee Guitar has this with op0 == 9
|
||||||
|
if ((op0 == 4 || op0 == 12 || op0 == 6 /*|| op0 == 9*/) && opA != opB)
|
||||||
{
|
{
|
||||||
util::stream_format(stream, "<BAD>");
|
util::stream_format(stream, "<BAD>");
|
||||||
return UNSP_DASM_OK;
|
return UNSP_DASM_OK;
|
||||||
|
@ -35,6 +35,14 @@ void spg110_video_device::draw(const rectangle &cliprect, uint32_t line, uint32_
|
|||||||
|
|
||||||
uint32_t nc = (bpp + 1) << 1;
|
uint32_t nc = (bpp + 1) << 1;
|
||||||
|
|
||||||
|
switch (bpp)
|
||||||
|
{
|
||||||
|
case 0x03: pal = 0; break; // 8 bpp
|
||||||
|
case 0x02: pal &=0x03; break; // 6 bpp
|
||||||
|
case 0x01: break; // 4 bpp
|
||||||
|
case 0x00: break; // 2 bpp
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t palette_offset = pal;
|
uint32_t palette_offset = pal;
|
||||||
|
|
||||||
palette_offset <<= nc;
|
palette_offset <<= nc;
|
||||||
@ -136,20 +144,27 @@ void spg110_video_device::draw_page(const rectangle &cliprect, uint32_t scanline
|
|||||||
uint32_t yy = ((tile_h * y0 - yscroll + 0x10) & 0xff) - 0x10;
|
uint32_t yy = ((tile_h * y0 - yscroll + 0x10) & 0xff) - 0x10;
|
||||||
uint32_t xx = (tile_w * x0 - xscroll) & 0x1ff;
|
uint32_t xx = (tile_w * x0 - xscroll) & 0x1ff;
|
||||||
uint16_t tile = (ctrl & PAGE_WALLPAPER_MASK) ? space2.read_word(tilemap*2) : space2.read_word((tilemap + tile_address)*2);
|
uint16_t tile = (ctrl & PAGE_WALLPAPER_MASK) ? space2.read_word(tilemap*2) : space2.read_word((tilemap + tile_address)*2);
|
||||||
uint16_t extra_attribute = 0;
|
|
||||||
|
|
||||||
if (!tile)
|
if (!tile)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
extra_attribute = space2.read_word((palette_map*2) + tile_address);
|
uint8_t pal = 0x000;
|
||||||
if (x0 & 1)
|
uint8_t pri = 0x00;
|
||||||
extra_attribute = (extra_attribute & 0x00ff);
|
bool flip_x = false;
|
||||||
else
|
|
||||||
extra_attribute = (extra_attribute & 0xff00) >> 8;
|
|
||||||
|
|
||||||
uint8_t pal = extra_attribute & 0x0f;
|
if (!(ctrl & 0x0002)) // 'regset'
|
||||||
uint8_t pri = (extra_attribute & 0x30) >> 4;
|
{
|
||||||
bool flip_x = extra_attribute & 0x40;
|
uint16_t extra_attribute = space2.read_word((palette_map * 2) + tile_address);
|
||||||
|
|
||||||
|
if (x0 & 1)
|
||||||
|
extra_attribute = (extra_attribute & 0x00ff);
|
||||||
|
else
|
||||||
|
extra_attribute = (extra_attribute & 0xff00) >> 8;
|
||||||
|
|
||||||
|
pal = extra_attribute & 0x0f;
|
||||||
|
pri = (extra_attribute & 0x30) >> 4;
|
||||||
|
flip_x = extra_attribute & 0x40;
|
||||||
|
}
|
||||||
|
|
||||||
if (pri == priority)
|
if (pri == priority)
|
||||||
{
|
{
|
||||||
@ -393,12 +408,14 @@ WRITE16_MEMBER(spg110_video_device::dma_len_trigger_w)
|
|||||||
int length = data & 0x1fff;
|
int length = data & 0x1fff;
|
||||||
|
|
||||||
// this is presumably a counter that underflows to 0x1fff, because that's what the wait loop waits for?
|
// this is presumably a counter that underflows to 0x1fff, because that's what the wait loop waits for?
|
||||||
logerror("%s: (trigger len) %04x with values (unk) %04x (dststep) %04x (unk) %04x (src step) %04x | (dst) %04x (src) %04x\n", machine().describe_context(), data, m_dma_unk_2061, m_dma_dst_step, m_dma_src_high, m_dma_src_step, m_dma_dst, m_dma_src);
|
logerror("%s: (trigger len) %04x with values (unk) %04x (dststep) %04x (srchigh) %04x (src step) %04x | (dst) %04x (src) %04x\n", machine().describe_context(), data, m_dma_unk_2061, m_dma_dst_step, m_dma_src_high, m_dma_src_step, m_dma_dst, m_dma_src);
|
||||||
|
|
||||||
if (m_dma_src_high != 0x0000)
|
/*
|
||||||
|
if (m_dma_unk_2061 != 0x0000)
|
||||||
{
|
{
|
||||||
logerror("unknown DMA params are not zero!\n");
|
logerror("unknown DMA params are not zero!\n");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
int source = m_dma_src | m_dma_src_high << 16;
|
int source = m_dma_src | m_dma_src_high << 16;
|
||||||
int dest = m_dma_dst;
|
int dest = m_dma_dst;
|
||||||
@ -416,9 +433,9 @@ WRITE16_MEMBER(spg110_video_device::dma_len_trigger_w)
|
|||||||
|
|
||||||
// not sure, spiderman would suggest that some of these need to reset (unless a missing IRQ clears them)
|
// not sure, spiderman would suggest that some of these need to reset (unless a missing IRQ clears them)
|
||||||
m_dma_unk_2061 = 0;
|
m_dma_unk_2061 = 0;
|
||||||
m_dma_dst_step = 0;
|
//m_dma_dst_step = 0; // conyteni says no
|
||||||
m_dma_src_high = 0;
|
m_dma_src_high = 0;
|
||||||
m_dma_src_step = 0;
|
//m_dma_src_step = 0; // conyteni says no
|
||||||
m_dma_dst = 0;
|
m_dma_dst = 0;
|
||||||
m_dma_src = 0;
|
m_dma_src = 0;
|
||||||
|
|
||||||
|
@ -7,9 +7,16 @@
|
|||||||
die markings show
|
die markings show
|
||||||
|
|
||||||
"SunPlus PA7801" ( known as Sunplus SPG110? )
|
"SunPlus PA7801" ( known as Sunplus SPG110? )
|
||||||
Classic Arcade Pinball
|
JAKKS Classic Arcade Pinball
|
||||||
EA Sports (NHL95 + Madden 95)
|
JAKKS Spiderman 5-in-1 (original release)
|
||||||
Spiderman 5-in-1 (original release)
|
Conny TV Virtual Tennis
|
||||||
|
|
||||||
|
assumed:
|
||||||
|
JAKKS EA Sports (NHL 95 + Madden 95) (US)
|
||||||
|
JAKKS EA Sports (NHL 95 + Fifa 96) (US)
|
||||||
|
JAKKS Bob the Builder
|
||||||
|
Conny Ping Pong
|
||||||
|
JAKKS Disney (original release)
|
||||||
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
@ -330,6 +337,153 @@ static INPUT_PORTS_START( jak_spdmo )
|
|||||||
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( conyteni )
|
||||||
|
PORT_START("PA")
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0000, "PA" )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_START("PB")
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0000, "PB" )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
|
||||||
|
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Console Back")
|
||||||
|
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Console Enter")
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
|
||||||
|
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("Console Right")
|
||||||
|
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("Console Down")
|
||||||
|
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_NAME("Console Left")
|
||||||
|
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("Console Up")
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_START("PC")
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0000, "PC" )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0002, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0004, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0004, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0040, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0040, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0080, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_START("JOYX")
|
||||||
|
|
||||||
|
PORT_START("JOYY")
|
||||||
|
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
void spg110_game_state::spg110_base(machine_config &config)
|
void spg110_game_state::spg110_base(machine_config &config)
|
||||||
{
|
{
|
||||||
SPG110(config, m_maincpu, XTAL(27'000'000), m_screen);
|
SPG110(config, m_maincpu, XTAL(27'000'000), m_screen);
|
||||||
@ -364,6 +518,19 @@ ROM_START( jak_spdmo )
|
|||||||
ROM_LOAD16_WORD_SWAP( "spidermaneyes.bin", 0x000000, 0x200000, CRC(d5eaa6ae) SHA1(df226d378b41cf6ef90b9f72e48ff5e66385dcba) )
|
ROM_LOAD16_WORD_SWAP( "spidermaneyes.bin", 0x000000, 0x200000, CRC(d5eaa6ae) SHA1(df226d378b41cf6ef90b9f72e48ff5e66385dcba) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( conyteni )
|
||||||
|
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||||
|
ROM_LOAD16_WORD_SWAP( "tennis_m29w160eb.bin", 0x000000, 0x200000, CRC(70050f17) SHA1(929f0d8599b7380b5994684424bb91063c4f6569) )
|
||||||
|
|
||||||
|
// MCU (I/O?) read protected TODO: add NO_DUMP
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
// JAKKS Pacific Inc TV games
|
// JAKKS Pacific Inc TV games
|
||||||
CONS( 2004, jak_capb, 0, 0, spg110_base, jak_capb, spg110_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Classic Arcade Pinball (JAKKS Pacific TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
CONS( 2004, jak_capb, 0, 0, spg110_base, jak_capb, spg110_game_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Classic Arcade Pinball (JAKKS Pacific TV Game)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
|
||||||
CONS( 2004, jak_spdmo, jak_spdm, 0, spg110_base, jak_spdmo, spg110_game_state, empty_init, "JAKKS Pacific Inc / Digital Eclipse", "Spider-Man (JAKKS Pacific TV Game) (older hardware)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // this is the smaller more 'square' style joystick that was originally released before the GameKey slot was added.
|
CONS( 2004, jak_spdmo, jak_spdm, 0, spg110_base, jak_spdmo, spg110_game_state, empty_init, "JAKKS Pacific Inc / Digital Eclipse", "Spider-Man (JAKKS Pacific TV Game) (older hardware)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // this is the smaller more 'square' style joystick that was originally released before the GameKey slot was added.
|
||||||
|
|
||||||
|
// Conny PDC (Pocket Dream Console) is probably SunPlus too
|
||||||
|
|
||||||
|
// this was sold by SDW Games for the US market, ROM not yet verified to be the same, also appears in some mutligames?
|
||||||
|
CONS( 2003, conyteni, 0, 0, spg110_base, conyteni, spg110_game_state, empty_init, "Conny", "TV Virtual Tennis", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // needs motion inputs, and video fixes, setting to PAL
|
||||||
|
@ -178,7 +178,6 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
void spg2xx_base(machine_config &config);
|
void spg2xx_base(machine_config &config);
|
||||||
void spg2xx_basep(machine_config &config);
|
|
||||||
void jakks(machine_config &config);
|
void jakks(machine_config &config);
|
||||||
void jakks_i2c(machine_config &config);
|
void jakks_i2c(machine_config &config);
|
||||||
void walle(machine_config &config);
|
void walle(machine_config &config);
|
||||||
@ -189,10 +188,13 @@ public:
|
|||||||
void rad_crik(machine_config &config);
|
void rad_crik(machine_config &config);
|
||||||
void non_spg_base(machine_config &config);
|
void non_spg_base(machine_config &config);
|
||||||
void lexizeus(machine_config &config);
|
void lexizeus(machine_config &config);
|
||||||
|
void pvmil(machine_config &config);
|
||||||
|
void taikeegr(machine_config &config);
|
||||||
|
|
||||||
void init_crc();
|
void init_crc();
|
||||||
void init_zeus();
|
void init_zeus();
|
||||||
void init_zone40();
|
void init_zone40();
|
||||||
|
void init_taikeegr();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
@ -215,6 +217,10 @@ protected:
|
|||||||
DECLARE_WRITE16_MEMBER(jakks_porta_w);
|
DECLARE_WRITE16_MEMBER(jakks_porta_w);
|
||||||
DECLARE_WRITE16_MEMBER(jakks_portb_w);
|
DECLARE_WRITE16_MEMBER(jakks_portb_w);
|
||||||
|
|
||||||
|
DECLARE_WRITE16_MEMBER(pvmil_porta_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(pvmil_portb_w);
|
||||||
|
DECLARE_WRITE16_MEMBER(pvmil_portc_w);
|
||||||
|
|
||||||
required_device<spg2xx_device> m_maincpu;
|
required_device<spg2xx_device> m_maincpu;
|
||||||
required_device<screen_device> m_screen;
|
required_device<screen_device> m_screen;
|
||||||
optional_memory_bank m_bank;
|
optional_memory_bank m_bank;
|
||||||
@ -604,6 +610,24 @@ READ16_MEMBER(spg2xx_game_state::rad_portc_r)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(spg2xx_game_state::pvmil_porta_w)
|
||||||
|
{
|
||||||
|
logerror("%s: pvmil_porta_w %04x\n", machine().describe_context(), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(spg2xx_game_state::pvmil_portb_w)
|
||||||
|
{
|
||||||
|
logerror("%s: pvmil_portb_w %04x\n", machine().describe_context(), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE16_MEMBER(spg2xx_game_state::pvmil_portc_w)
|
||||||
|
{
|
||||||
|
// related to P4 inputs?
|
||||||
|
logerror("%s: pvmil_portc_w %04x\n", machine().describe_context(), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void spg2xx_game_state::mem_map_4m(address_map &map)
|
void spg2xx_game_state::mem_map_4m(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x000000, 0x3fffff).bankr("cartbank");
|
map(0x000000, 0x3fffff).bankr("cartbank");
|
||||||
@ -1668,7 +1692,142 @@ static INPUT_PORTS_START( tvgogo )
|
|||||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( pvmil ) // hold "console start" + "console select" on boot for test mode
|
||||||
|
PORT_START("P1")
|
||||||
|
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Player 1 A")
|
||||||
|
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Player 1 B")
|
||||||
|
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Player 1 C")
|
||||||
|
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("Player 1 D")
|
||||||
|
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("Player 2 A")
|
||||||
|
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("Player 2 B")
|
||||||
|
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("Player 2 C")
|
||||||
|
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_NAME("Player 2 D")
|
||||||
|
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(3) PORT_NAME("Player 3 A")
|
||||||
|
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(3) PORT_NAME("Player 3 B")
|
||||||
|
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(3) PORT_NAME("Player 3 C")
|
||||||
|
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(3) PORT_NAME("Player 3 D")
|
||||||
|
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("Player 1 Lifeline")
|
||||||
|
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_START ) PORT_CODE(KEYCODE_1) PORT_NAME("Console Start")
|
||||||
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START ) PORT_CODE(KEYCODE_5) PORT_NAME("Console Select")
|
||||||
|
|
||||||
|
PORT_START("P2")
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0001, "P2" )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_START("P3") // Player 4 buttons are read with some kind of serial / multiplexing protocol?
|
||||||
|
PORT_DIPNAME( 0x0001, 0x0001, "P3" )
|
||||||
|
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) // this triggers all P4 buttons, must be some multiplexing (or a core bug)
|
||||||
|
PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2) PORT_NAME("Player 2 Lifeline")
|
||||||
|
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(3) PORT_NAME("Player 3 Lifeline")
|
||||||
|
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(4) PORT_NAME("Player 4 Lifeline")
|
||||||
|
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
|
||||||
|
PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( taikeegr )
|
||||||
|
PORT_START("P1")
|
||||||
|
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_NAME("Strum Bar Down")
|
||||||
|
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_NAME("Strum Bar Up")
|
||||||
|
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Whamming Bar")
|
||||||
|
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Yellow")
|
||||||
|
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Green")
|
||||||
|
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Red")
|
||||||
|
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Blue")
|
||||||
|
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Pink")
|
||||||
|
PORT_BIT( 0xff00, 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_UNKNOWN )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
READ16_MEMBER(dreamlif_state::portb_r)
|
READ16_MEMBER(dreamlif_state::portb_r)
|
||||||
{
|
{
|
||||||
@ -2012,14 +2171,6 @@ void spg2xx_game_state::non_spg_base(machine_config &config)
|
|||||||
spg2xx_base(config);
|
spg2xx_base(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spg2xx_game_state::spg2xx_basep(machine_config &config)
|
|
||||||
{
|
|
||||||
spg2xx_base(config);
|
|
||||||
|
|
||||||
m_screen->set_refresh_hz(50);
|
|
||||||
m_screen->set_size(320, 312);
|
|
||||||
}
|
|
||||||
|
|
||||||
void vii_state::vii(machine_config &config)
|
void vii_state::vii(machine_config &config)
|
||||||
{
|
{
|
||||||
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
||||||
@ -2339,6 +2490,8 @@ void spg2xx_game_state::rad_skatp(machine_config &config)
|
|||||||
{
|
{
|
||||||
rad_skat(config);
|
rad_skat(config);
|
||||||
m_maincpu->set_pal(true);
|
m_maincpu->set_pal(true);
|
||||||
|
m_screen->set_refresh_hz(50);
|
||||||
|
// m_screen->set_size(320, 312);
|
||||||
}
|
}
|
||||||
|
|
||||||
void spg2xx_game_state::rad_sktv(machine_config &config)
|
void spg2xx_game_state::rad_sktv(machine_config &config)
|
||||||
@ -2373,6 +2526,45 @@ void spg2xx_game_state::rad_crik(machine_config &config)
|
|||||||
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
|
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void spg2xx_game_state::pvmil(machine_config &config)
|
||||||
|
{
|
||||||
|
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_4m);
|
||||||
|
m_maincpu->set_pal(true);
|
||||||
|
|
||||||
|
spg2xx_base(config);
|
||||||
|
|
||||||
|
m_screen->set_refresh_hz(50);
|
||||||
|
//m_screen->set_size(320, 312);
|
||||||
|
|
||||||
|
m_maincpu->porta_in().set_ioport("P1");
|
||||||
|
m_maincpu->portb_in().set_ioport("P2");
|
||||||
|
m_maincpu->portc_in().set_ioport("P3");
|
||||||
|
m_maincpu->porta_out().set(FUNC(spg2xx_game_state::pvmil_porta_w));
|
||||||
|
m_maincpu->portb_out().set(FUNC(spg2xx_game_state::pvmil_portb_w));
|
||||||
|
m_maincpu->portc_out().set(FUNC(spg2xx_game_state::pvmil_portc_w));
|
||||||
|
|
||||||
|
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void spg2xx_game_state::taikeegr(machine_config &config)
|
||||||
|
{
|
||||||
|
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_4m);
|
||||||
|
m_maincpu->set_pal(true);
|
||||||
|
|
||||||
|
spg2xx_base(config);
|
||||||
|
|
||||||
|
m_screen->set_refresh_hz(50);
|
||||||
|
// m_screen->set_size(320, 312);
|
||||||
|
|
||||||
|
m_maincpu->porta_in().set_ioport("P1");
|
||||||
|
// m_maincpu->portb_in().set_ioport("P2");
|
||||||
|
// m_maincpu->portc_in().set_ioport("P3");
|
||||||
|
|
||||||
|
NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_1);
|
||||||
|
}
|
||||||
|
|
||||||
ROM_START( vii )
|
ROM_START( vii )
|
||||||
ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASE00 )
|
ROM_REGION( 0x2000000, "maincpu", ROMREGION_ERASE00 )
|
||||||
ROM_LOAD16_WORD_SWAP( "vii.bin", 0x0000, 0x2000000, CRC(04627639) SHA1(f883a92d31b53c9a5b0cdb112d07cd793c95fc43))
|
ROM_LOAD16_WORD_SWAP( "vii.bin", 0x0000, 0x2000000, CRC(04627639) SHA1(f883a92d31b53c9a5b0cdb112d07cd793c95fc43))
|
||||||
@ -2572,6 +2764,16 @@ ROM_START( tvgogo )
|
|||||||
// no internal ROM? (Camera might have an MCU tho)
|
// no internal ROM? (Camera might have an MCU tho)
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( pvmil )
|
||||||
|
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 ) // Fujistu 29Z0002TN, read as ST M29W320FB
|
||||||
|
ROM_LOAD16_WORD_SWAP( "millionare4.bin", 0x000000, 0x400000, CRC(9c43d0f2) SHA1(fb4ba0115000b10b7c0e0d44b9fa3234c900e694) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( taikeegr )
|
||||||
|
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
|
||||||
|
ROM_LOAD16_WORD_SWAP( "taikee_guitar.bin", 0x000000, 0x800000, CRC(8cbe2feb) SHA1(d72e816f259ba6a6260d6bbaf20c5e9b2cf7140b) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
void spg2xx_game_state::init_crc()
|
void spg2xx_game_state::init_crc()
|
||||||
{
|
{
|
||||||
@ -2629,6 +2831,42 @@ void spg2xx_game_state::init_zone40()
|
|||||||
//there is also bitswapping as above, and some kind of address scramble as the vectors are not exactly where expected
|
//there is also bitswapping as above, and some kind of address scramble as the vectors are not exactly where expected
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void spg2xx_game_state::init_taikeegr()
|
||||||
|
{
|
||||||
|
u16 *src = (u16*)memregion("maincpu")->base();
|
||||||
|
|
||||||
|
for (int i = 0x00000; i < 0x800000/2; i++)
|
||||||
|
{
|
||||||
|
u16 dat = src[i];
|
||||||
|
dat = bitswap<16>(dat, 15,14,13,12, 11,10,9,8, 7,6,5,4, 0,1,2,3 );
|
||||||
|
src[i] = dat;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<u16> buffer(0x800000/2);
|
||||||
|
|
||||||
|
for (int i = 0; i < 0x800000/2; i++)
|
||||||
|
{
|
||||||
|
int j = 0;
|
||||||
|
|
||||||
|
switch (i & 0x00e00)
|
||||||
|
{
|
||||||
|
case 0x00000: j = (i & 0xfff1ff) | 0x000; break;
|
||||||
|
case 0x00200: j = (i & 0xfff1ff) | 0x800; break;
|
||||||
|
case 0x00400: j = (i & 0xfff1ff) | 0x400; break;
|
||||||
|
case 0x00600: j = (i & 0xfff1ff) | 0xc00; break;
|
||||||
|
case 0x00800: j = (i & 0xfff1ff) | 0x200; break;
|
||||||
|
case 0x00a00: j = (i & 0xfff1ff) | 0xa00; break;
|
||||||
|
case 0x00c00: j = (i & 0xfff1ff) | 0x600; break;
|
||||||
|
case 0x00e00: j = (i & 0xfff1ff) | 0xe00; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer[j] = src[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::copy(buffer.begin(), buffer.end(), &src[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
|
// year, name, parent, compat, machine, input, class, init, company, fullname, flags
|
||||||
|
|
||||||
// Jungle Soft TV games
|
// Jungle Soft TV games
|
||||||
@ -2694,4 +2932,12 @@ CONS( 2005, tvgogo, 0, 0, tvgogo, tvgogo, tvgogo_state, empty_init, "T
|
|||||||
CONS( 2009, zone40, 0, 0, non_spg_base, wirels60, spg2xx_game_state, init_zone40, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 40", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
|
CONS( 2009, zone40, 0, 0, non_spg_base, wirels60, spg2xx_game_state, init_zone40, "Jungle Soft / Ultimate Products (HK) Ltd", "Zone 40", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
|
||||||
|
|
||||||
// Similar, SPG260?, scrambled
|
// Similar, SPG260?, scrambled
|
||||||
CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_game_state, init_zeus, "Lexibook", "Zeus IG900 20-in-1 (US?)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
|
CONS( 200?, lexizeus, 0, 0, lexizeus, lexizeus, spg2xx_game_state, init_zeus, "Lexibook", "Zeus IG900 20-in-1 (US?)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
|
||||||
|
|
||||||
|
// there are other regions of this, including a Finnish version "Haluatko miljonääriksi?" (see https://millionaire.fandom.com/wiki/Haluatko_miljon%C3%A4%C3%A4riksi%3F_(Play_Vision_game) )
|
||||||
|
CONS( 2006, pvmil, 0, 0, pvmil, pvmil, spg2xx_game_state, empty_init, "Play Vision", "Who Wants to Be a Millionaire (Play Vision, Plug and Play, UK)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // p4 inputs need mapping
|
||||||
|
|
||||||
|
// there are multiple versions of this with different songs, was also sold by dreamGEAR as 'Shredmaster Jr.' (different title screen)
|
||||||
|
// for the UK version the title screen always shows "Guitar Rock", however there are multiple boxes with different titles and song selections.
|
||||||
|
// ROM is glued on the underside and soldered to the PCB, very difficult to remove without damaging.
|
||||||
|
CONS( 2007, taikeegr, 0, 0, taikeegr, taikeegr, spg2xx_game_state, init_taikeegr, "TaiKee", "Rockstar Guitar / Guitar Rock (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad music timings (too slow)
|
||||||
|
@ -39444,6 +39444,7 @@ vigilanto // (c) 1988 (US)
|
|||||||
@source:spg110.cpp
|
@source:spg110.cpp
|
||||||
jak_capb //
|
jak_capb //
|
||||||
jak_spdmo //
|
jak_spdmo //
|
||||||
|
conyteni //
|
||||||
|
|
||||||
@source:vii.cpp
|
@source:vii.cpp
|
||||||
jak_batm // The Batman, 2004
|
jak_batm // The Batman, 2004
|
||||||
@ -39483,6 +39484,8 @@ dreamlif //
|
|||||||
icanguit //
|
icanguit //
|
||||||
icanpian //
|
icanpian //
|
||||||
tvgogo //
|
tvgogo //
|
||||||
|
pvmil //
|
||||||
|
taikeegr //
|
||||||
|
|
||||||
@source:vsmile.cpp
|
@source:vsmile.cpp
|
||||||
vsmile //
|
vsmile //
|
||||||
|
Loading…
Reference in New Issue
Block a user