mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
-vp101: Fleshed out inputs, fixed sound POST hanging, found framebuffer base address register. [Ryan Holtz]
This commit is contained in:
parent
0b625de8c1
commit
92925532c3
@ -106,6 +106,9 @@ Small outline design for easy kit retrofitting of existing cabinets.
|
||||
#include "imagedev/harddriv.h"
|
||||
#include "screen.h"
|
||||
|
||||
#define VERBOSE (0)
|
||||
#include "logmacro.h"
|
||||
|
||||
class vp10x_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -113,8 +116,7 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mainram(*this, "mainram"),
|
||||
m_ata(*this, "ata"),
|
||||
m_in0(*this, "IN0")
|
||||
m_ata(*this, "ata")
|
||||
{ }
|
||||
|
||||
void vp50(machine_config &config);
|
||||
@ -126,7 +128,14 @@ private:
|
||||
|
||||
uint32_t tty_ready_r();
|
||||
void tty_w(uint32_t data);
|
||||
uint32_t test_r() { return 0xffffffff; }
|
||||
uint32_t test_r();
|
||||
uint32_t sound_r(offs_t offset);
|
||||
void sound_w(offs_t offset, uint32_t data);
|
||||
void fb_base_w(uint32_t data);
|
||||
uint32_t video_r(offs_t offset);
|
||||
void video_w(offs_t offset, uint32_t data);
|
||||
uint32_t video2_r(offs_t offset);
|
||||
void video2_w(offs_t offset, uint32_t data);
|
||||
|
||||
uint32_t pic_r();
|
||||
void pic_w(uint32_t data);
|
||||
@ -152,7 +161,6 @@ private:
|
||||
required_device<mips3_device> m_maincpu;
|
||||
required_shared_ptr<uint32_t> m_mainram;
|
||||
required_device<ata_interface_device> m_ata;
|
||||
required_ioport m_in0;
|
||||
|
||||
// driver_device overrides
|
||||
virtual void video_start() override;
|
||||
@ -161,6 +169,9 @@ private:
|
||||
int m_dmarq_state;
|
||||
uint32_t m_dma_ptr;
|
||||
uint32_t m_spi_select;
|
||||
uint32_t m_unk_sound_toggle;
|
||||
uint32_t m_sound_cmd;
|
||||
uint32_t m_fb_base;
|
||||
};
|
||||
|
||||
void vp10x_state::machine_reset()
|
||||
@ -171,12 +182,19 @@ void vp10x_state::machine_reset()
|
||||
|
||||
void vp10x_state::machine_start()
|
||||
{
|
||||
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS);
|
||||
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS | MIPS3DRC_DISABLE_INTRABLOCK);
|
||||
// m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram);
|
||||
}
|
||||
|
||||
uint32_t vp10x_state::test_r()
|
||||
{
|
||||
LOG("%s: test_r\n", machine().describe_context());
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
||||
void vp10x_state::dmaaddr_w(uint32_t data)
|
||||
{
|
||||
LOG("%s: dmaaddr_w: %08x\n", machine().describe_context(), data);
|
||||
m_dma_ptr = (data & 0x07ffffff);
|
||||
}
|
||||
|
||||
@ -228,7 +246,7 @@ uint32_t vp10x_state::pic_r()
|
||||
|
||||
void vp10x_state::pic_w(uint32_t data)
|
||||
{
|
||||
//printf("%02x to pic_cmd\n", data&0xff);
|
||||
LOG("%s: pic_w: %08x\n", machine().describe_context(), data);
|
||||
if ((data & 0xff) == 0)
|
||||
{
|
||||
return;
|
||||
@ -239,12 +257,13 @@ void vp10x_state::pic_w(uint32_t data)
|
||||
|
||||
uint32_t vp10x_state::spi_r()
|
||||
{
|
||||
LOG("%s: spi_r\n", machine().describe_context());
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
||||
void vp10x_state::spi_w(uint32_t data)
|
||||
{
|
||||
// printf("%d to SPI select\n", data);
|
||||
LOG("%s: spi_w: %08x\n", machine().describe_context(), data);
|
||||
m_spi_select = data;
|
||||
}
|
||||
|
||||
@ -257,7 +276,7 @@ uint32_t vp10x_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
for (int y = 0; y < 240; y++)
|
||||
{
|
||||
uint32_t *line = &bitmap.pix32(y);
|
||||
const uint32_t *video_ram = (const uint32_t *) &m_mainram[(0x7400000/4) + (y * (0x1000/4)) + 4];
|
||||
const uint32_t *video_ram = (const uint32_t *) &m_mainram[(m_fb_base/4) + (y * (0x1000/4)) + 4];
|
||||
|
||||
for (int x = 0; x < 320; x++)
|
||||
{
|
||||
@ -266,6 +285,17 @@ uint32_t vp10x_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap,
|
||||
*line++ = word;
|
||||
}
|
||||
}
|
||||
|
||||
if (machine().input().code_pressed_once(KEYCODE_R))
|
||||
m_maincpu->set_input_line(MIPS3_IRQ0, ASSERT_LINE);
|
||||
if (machine().input().code_pressed_once(KEYCODE_T))
|
||||
m_maincpu->set_input_line(MIPS3_IRQ1, ASSERT_LINE);
|
||||
if (machine().input().code_pressed_once(KEYCODE_Y))
|
||||
m_maincpu->set_input_line(MIPS3_IRQ2, ASSERT_LINE);
|
||||
if (machine().input().code_pressed_once(KEYCODE_U))
|
||||
m_maincpu->set_input_line(MIPS3_IRQ3, ASSERT_LINE);
|
||||
if (machine().input().code_pressed_once(KEYCODE_I))
|
||||
m_maincpu->set_input_line(MIPS3_IRQ4, ASSERT_LINE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -294,6 +324,7 @@ uint32_t vp10x_state::vp50_screen_update(screen_device &screen, bitmap_rgb32 &bi
|
||||
|
||||
uint32_t vp10x_state::tty_ready_r()
|
||||
{
|
||||
LOG("%s: tty_ready_r\n", machine().describe_context());
|
||||
return 0x60; // must return &0x20 for output at tty_w to continue
|
||||
}
|
||||
|
||||
@ -301,23 +332,124 @@ void vp10x_state::tty_w(uint32_t data) // set breakpoint at bfc01430 to catch w
|
||||
{
|
||||
// uncomment to see startup messages - it says "RAM OK" and "EPI RSS Ver 4.5.1" followed by "<RSS active>" and then lots of dots
|
||||
// Special Forces also says "<inited tv_cap> = 00000032"
|
||||
// printf("%c", data);
|
||||
if (data >= 0x20 || data == 0x09)
|
||||
printf("%c", data);
|
||||
else if (data == 0x0d)
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
uint32_t vp10x_state::video_r(offs_t offset)
|
||||
{
|
||||
uint32_t data = 0;
|
||||
if (offset == (0x10 >> 2))
|
||||
{
|
||||
data = 0xffffffff;
|
||||
}
|
||||
LOG("%s: video_r %08x: %08x\n", machine().describe_context(), 0x1a000000 + (offset << 2), data);
|
||||
return data;
|
||||
}
|
||||
|
||||
void vp10x_state::video_w(offs_t offset, uint32_t data)
|
||||
{
|
||||
LOG("%s: video_w %08x = %08x\n", machine().describe_context(), 0x1a000000 + (offset << 2), data);
|
||||
}
|
||||
|
||||
uint32_t vp10x_state::video2_r(offs_t offset)
|
||||
{
|
||||
uint32_t data = machine().rand();
|
||||
//LOG("%s: video2_r %08x: %08x\n", machine().describe_context(), 0x1a800000 + (offset << 2), data);
|
||||
return data;
|
||||
}
|
||||
|
||||
void vp10x_state::video2_w(offs_t offset, uint32_t data)
|
||||
{
|
||||
//LOG("%s: video2_w %08x = %08x\n", machine().describe_context(), 0x1a800000 + (offset << 2), data);
|
||||
}
|
||||
|
||||
void vp10x_state::fb_base_w(uint32_t data)
|
||||
{
|
||||
m_fb_base = data & 0x07ffffff;
|
||||
}
|
||||
|
||||
uint32_t vp10x_state::sound_r(offs_t offset)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 0:
|
||||
LOG("%s: sound_r: hardware flags(?): 11000000 = %08x\n", machine().describe_context(), 1 << 4);
|
||||
return (1 << 4); // Flag that sound hardware is initialized
|
||||
case 3:
|
||||
{
|
||||
uint32_t cmd_return = 0;
|
||||
bool known = true;
|
||||
switch (m_sound_cmd)
|
||||
{
|
||||
case 0xa6:
|
||||
cmd_return = 0x0000000e;
|
||||
break;
|
||||
case 0xfc:
|
||||
cmd_return = 0x00004352; // Some sort of info request? Looks like ASCII, 'CR' - codec is from Crystal Semi?
|
||||
break;
|
||||
default:
|
||||
known = false;
|
||||
break;
|
||||
}
|
||||
if (known)
|
||||
{
|
||||
LOG("%s: sound_r: sound command return value(?): 11000004 = %08x for cmd %02x\n", machine().describe_context(), cmd_return, m_sound_cmd);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG("%s: sound_r: sound command return value(?): 11000004 = %08x for unknown cmd %02x\n", machine().describe_context(), cmd_return, m_sound_cmd);
|
||||
}
|
||||
return cmd_return;
|
||||
}
|
||||
case 4:
|
||||
m_unk_sound_toggle ^= 1;
|
||||
LOG("%s: sound_r: unknown: 11000010 = %08x\n", machine().describe_context(), m_unk_sound_toggle);
|
||||
return m_unk_sound_toggle; // Unknown
|
||||
default:
|
||||
LOG("%s: sound_r: %08x\n", machine().describe_context(), 0x11000000 | (offset << 2));
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void vp10x_state::sound_w(offs_t offset, uint32_t data)
|
||||
{
|
||||
switch (offset)
|
||||
{
|
||||
case 1:
|
||||
LOG("%s: sound_w: command(?): 11000004 = %08x\n", machine().describe_context(), data);
|
||||
m_sound_cmd = data;
|
||||
return;
|
||||
default:
|
||||
LOG("%s: sound_w: %08x = %08x\n", machine().describe_context(), 0x11000000 | (offset << 2), data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void vp10x_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x00000000, 0x07ffffff).ram().share("mainram");
|
||||
map(0x11000000, 0x11000013).rw(FUNC(vp10x_state::sound_r), FUNC(vp10x_state::sound_w));
|
||||
map(0x14000000, 0x14000003).r(FUNC(vp10x_state::test_r));
|
||||
map(0x18000010, 0x18000013).w(FUNC(vp10x_state::fb_base_w));
|
||||
map(0x1a000000, 0x1a000013).rw(FUNC(vp10x_state::video_r), FUNC(vp10x_state::video_w));
|
||||
map(0x1a800000, 0x1a800003).rw(FUNC(vp10x_state::video2_r), FUNC(vp10x_state::video2_w));
|
||||
map(0x1c000000, 0x1c000003).w(FUNC(vp10x_state::tty_w)); // RSS OS code uses this one
|
||||
map(0x1c000014, 0x1c000017).r(FUNC(vp10x_state::tty_ready_r));
|
||||
map(0x1c400000, 0x1c400003).w(FUNC(vp10x_state::tty_w)); // boot ROM code uses this one
|
||||
map(0x1c400014, 0x1c400017).r(FUNC(vp10x_state::tty_ready_r));
|
||||
map(0x1ca0000c, 0x1ca0000f).portr("IN0");
|
||||
map(0x1ca00010, 0x1ca00013).r(FUNC(vp10x_state::test_r)); // bits here cause various test mode stuff
|
||||
map(0x1ca00000, 0x1ca00003).portr("GUNX");
|
||||
map(0x1ca00004, 0x1ca00007).portr("GUNY");
|
||||
map(0x1ca00008, 0x1ca0000b).portr("GUNBUTTONS");
|
||||
map(0x1ca0000c, 0x1ca0000f).portr("BUTTONS");
|
||||
map(0x1ca00010, 0x1ca00013).portr("DIPS");
|
||||
map(0x1cf00000, 0x1cf00003).noprw().nopr();
|
||||
map(0x1d000030, 0x1d000033).w(FUNC(vp10x_state::dmaaddr_w)); // ATA DMA destination address
|
||||
map(0x1d000040, 0x1d00005f).rw(m_ata, FUNC(ata_interface_device::cs0_r), FUNC(ata_interface_device::cs0_w)).umask32(0x0000ffff);
|
||||
map(0x1d000060, 0x1d00007f).rw(m_ata, FUNC(ata_interface_device::cs1_r), FUNC(ata_interface_device::cs1_w)).umask32(0x0000ffff);
|
||||
|
||||
map(0x1f200000, 0x1f200003).rw(FUNC(vp10x_state::pic_r), FUNC(vp10x_state::pic_w));
|
||||
map(0x1f807000, 0x1f807fff).ram().share("nvram");
|
||||
map(0x1fc00000, 0x1fffffff).rom().region("maincpu", 0);
|
||||
@ -340,14 +472,70 @@ void vp10x_state::vp50_map(address_map &map)
|
||||
map(0xff1ff818, 0xff1ff81b).rw(FUNC(vp10x_state::spi_r), FUNC(vp10x_state::spi_w));
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START( vp101 )
|
||||
PORT_START("IN0")
|
||||
static INPUT_PORTS_START( jnero )
|
||||
PORT_START("GUNX")
|
||||
PORT_BIT( 0x1ff, 0x000, IPT_LIGHTGUN_X ) PORT_MINMAX(0x000, 0x1ff) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
|
||||
|
||||
PORT_START("GUNY")
|
||||
PORT_BIT( 0xff, 0x00, IPT_LIGHTGUN_Y ) PORT_MINMAX(0x00, 0xff) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
|
||||
|
||||
PORT_START("GUNBUTTONS")
|
||||
PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Trigger")
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Sense")
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Pump")
|
||||
PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("Trigger")
|
||||
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("Sense")
|
||||
PORT_BIT( 0x00000040, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("Pump")
|
||||
PORT_BIT( 0xffffff88, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("BUTTONS")
|
||||
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT (0x00000040, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_BIT (0x00000080, IP_ACTIVE_LOW, IPT_SERVICE2 )
|
||||
PORT_BIT (0x00001000, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
|
||||
PORT_BIT (0x00002000, IP_ACTIVE_LOW, IPT_VOLUME_UP )
|
||||
PORT_BIT( 0xffffcf30, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_START("DIPS")
|
||||
PORT_DIPNAME( 0x00000010, 0x00000010, DEF_STR( Test ) )
|
||||
PORT_DIPSETTING( 0x00000010, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_BIT( 0xffffefaf, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x00001040, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( specfrce )
|
||||
PORT_START("GUNX")
|
||||
PORT_BIT( 0x1ff, 0x000, IPT_LIGHTGUN_X ) PORT_MINMAX(0x000, 0x1ff) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
|
||||
|
||||
PORT_START("GUNY")
|
||||
PORT_BIT( 0xff, 0x00, IPT_LIGHTGUN_Y ) PORT_MINMAX(0x00, 0xff) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(10)
|
||||
|
||||
PORT_START("GUNBUTTONS")
|
||||
PORT_BIT( 0x00000001, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("Trigger")
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Sense")
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Pump")
|
||||
PORT_BIT( 0xfffffff8, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("BUTTONS")
|
||||
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT (0x00000040, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_BIT (0x00000080, IP_ACTIVE_LOW, IPT_SERVICE2 )
|
||||
PORT_BIT (0x00001000, IP_ACTIVE_LOW, IPT_VOLUME_DOWN )
|
||||
PORT_BIT (0x00002000, IP_ACTIVE_LOW, IPT_VOLUME_UP )
|
||||
PORT_BIT( 0xffffcf38, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
|
||||
PORT_START("DIPS")
|
||||
PORT_DIPNAME( 0x00000010, 0x00000010, DEF_STR( Test ) )
|
||||
PORT_DIPSETTING( 0x00000010, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
|
||||
PORT_BIT( 0xffffefaf, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x00001040, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( vp50 )
|
||||
@ -356,8 +544,10 @@ static INPUT_PORTS_START( vp50 )
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
|
||||
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0xffffffff, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
void vp10x_state::vp101(machine_config &config)
|
||||
@ -465,8 +655,8 @@ ROM_START(rhnation)
|
||||
DISK_IMAGE_READONLY("rhn010104", 0, SHA1(5bc2e5817b29bf42ec483414242795fd76d749d9) )
|
||||
ROM_END
|
||||
|
||||
GAME( 2002, specfrce, 0, vp101, vp101, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training (v01.02.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
GAME( 2002, specfrceo, specfrce, vp101, vp101, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training (v01.01.01)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
GAME( 2003, rhnation, 0, vp50, vp50, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Rhythm Nation (v01.00.04, boot v3.1.5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 2004, jnero, 0, vp101, vp101, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Johnny Nero Action Hero (v01.01.08)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
GAME( 2006, zoofari, 0, vp50, vp50, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Zoofari", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 2002, specfrce, 0, vp101, specfrce, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training (v01.02.00)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
GAME( 2002, specfrceo, specfrce, vp101, specfrce, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Special Forces Elite Training (v01.01.01)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
GAME( 2003, rhnation, 0, vp50, vp50, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Rhythm Nation (v01.00.04, boot v3.1.5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
GAME( 2004, jnero, 0, vp101, jnero, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Johnny Nero Action Hero (v01.01.08)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
||||
GAME( 2006, zoofari, 0, vp50, vp50, vp10x_state, empty_init, ROT0, "ICE/Play Mechanix", "Zoofari", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
||||
|
Loading…
Reference in New Issue
Block a user