Improved inputs and added some TLB notes in the Aleck64 driver [Peter Sealy]

This commit is contained in:
Angelo Salese 2011-09-26 16:09:23 +00:00
parent fc7bb8bec5
commit 78cc73ded3

View File

@ -171,18 +171,112 @@ Notes:
#include "sound/dmadac.h"
#include "includes/n64.h"
static READ32_HANDLER( aleck_dips_r )
static UINT32 dip_read_offset = 0;
static WRITE32_HANDLER( aleck_dips_w )
{
if (offset == 0)
return (input_port_read(space->machine(), "IN0")); /* mtetrisc has regular inputs here */
else if (offset == 1)
return (input_port_read(space->machine(), "IN1"));
/*
mtetrisc uses offset 0x1c and 0x03 a good bit in conjunction with reading INMJ.
(See Test menu GAME DATA and MEMORY CHECK/S2D Ram test, also CONFIGURATION/save & exit. eeprom? Serial2DRAM?)
return 0;
srmvs uses 0x40, communications?
*/
switch( offset )
{
case 2:
dip_read_offset = data;
break;
default:
logerror("Unknown aleck_dips_w(0x%08x, 0x%08x, %08x) @ 0x%08x PC=%08x\n", offset, data, mem_mask, 0xc0800000 + offset*4, cpu_get_pc(&space->device()));
}
}
static READ32_HANDLER( aleck_dips_r )
{
// srmvs uses 0x40, communications?
switch( offset )
{
case 0:
return (input_port_read(space->machine(), "IN0")); /* mtetrisc has regular inputs here */
case 1:
return (input_port_read(space->machine(), "IN1"));
case 2:
{
UINT32 val = input_port_read(space->machine(), "INMJ");
switch( dip_read_offset >> 8 & 0xff )
{
case 1:
return val;
case 2:
return val << 8;
case 4:
return val << 16;
case 8:
return val >> 8;
default:
logerror("Unexpected read from INMJ with no dip_read_offset set.\n");
return 0;
}
}
default:
{
logerror("Unknown aleck_dips_r(0x%08x, 0x%08x) @ 0x%08x PC=%08x\n", offset, 0xc0800000 + offset*4, mem_mask, cpu_get_pc(&space->device()));
return 0;
}
}
}
/*
The TLB entries made by all games show that the programmers put in extra mappings.
Some of these are big, every game adds a mapping for 4MB at 0xc0000000 physical.
Some add more than one 4MB mapping. As some of the boards are only 4MB RAM,
it seems likely that the programmers expected main RAM to be mirrored at 0xc0000000.
Some of the games have a further 4MB mapping to a pgysical segment contiguous with
the first at 0xc0000000, so if these games are on the E92 8MB boards, this would
add a bit of support to the mirror idea.
Adding the mirror makes everything go pretty well,
it makes doncdoon, hipai, kurufev, srmvs, twrshaft boot.
There's still a couple of problems though:
- srmvs and vivdolls system test screen actually check "SDRAM" at 0xc0000000.
This all goes well until they overwrite the RAM test code which is running from
virtual memory backed by the same physical memory as it's testing.
(maybe this is related to the fact that the check code is executing from a cacheable kseg0 range,
and the TLB entry for 0xc0000000 is in kuseg and flagged as non-cache?)
- srmvs reads a jump vector from memory mapped to physical segment at 0xc0000000 that's been overwritten
by a boot up memory test of that segment, so it crashes with a bad access during the intro.
Both these problems go away by adding new RAM at 0xc0000000 physical, but maybe they are related to
caching?
Here's a full list of the physical addresses mapped by tlb entries, along with the names of the games
that make the mappings and which games actually use them.
4MB @ 0xc0000000 - 0xc03fffff ALL : used by doncdoon, hipai, kurufev, srmvs, twrshaft
4MB @ 0xc0400000 - 0xc07fffff mayjin3, vivdolls, 11beat, starsldr, mtetrisc : unused
4MB @ 0xc0401000 - 0xc0800fff 11beat, starsldr (odd-page entry, overlaps inputs) : unused
4KB @ 0xc0800000 - 0xc0800fff ALL (inputs)
4KB @ 0xc0801000 - 0xc0801fff mayjin3, vivdolls, 11beat, starsldr, mtetrisc : unused
4KB @ 0xc0810000 - 0xc0810fff 11beat, starsldr, mtetrisc : unused
4KB @ 0xc0811000 - 0xc0811fff 11beat, starsldr, mtetrisc : unused
4KB @ 0xc0c00000 - 0xc0c00fff doncdoon, hipai, kurufev, twrshaft, srmvs, mayjin3, vivdolls : unused
4KB @ 0xc0c01000 - 0xc0c01fff mayjin3, vivdolls : unused
1MB @ 0xd0000000 - 0xd00fffff mtetrisc : used but write only
1MB @ 0xd0100000 - 0xd01fffff mtetrisc : unused
4MB @ 0xd0800000 - 0xd0bfffff doncdoon, hipai, kurufev, twrshaft, srmvs : unused
*/
static ADDRESS_MAP_START( n64_map, AS_PROGRAM, 32 )
AM_RANGE(0x00000000, 0x007fffff) AM_RAM AM_BASE(&rdram) // RDRAM
AM_RANGE(0x00000000, 0x007fffff) AM_RAM /*AM_MIRROR(0xc0000000)*/ AM_BASE(&rdram) // RDRAM
AM_RANGE(0x04000000, 0x04000fff) AM_RAM AM_SHARE("dmem") // RSP DMEM
AM_RANGE(0x04001000, 0x04001fff) AM_RAM AM_SHARE("imem") // RSP IMEM
AM_RANGE(0x04040000, 0x040fffff) AM_DEVREADWRITE("rsp", n64_sp_reg_r, n64_sp_reg_w) // RSP
@ -197,9 +291,15 @@ static ADDRESS_MAP_START( n64_map, AS_PROGRAM, 32 )
AM_RANGE(0x1fc00000, 0x1fc007bf) AM_ROM AM_REGION("user1", 0) // PIF ROM
AM_RANGE(0x1fc007c0, 0x1fc007ff) AM_READWRITE(n64_pif_ram_r, n64_pif_ram_w)
AM_RANGE(0xc0800000, 0xc08fffff) AM_READ(aleck_dips_r) AM_WRITENOP
AM_RANGE(0xd0000000, 0xd0000fff) AM_RAM
AM_RANGE(0xd0010000, 0xd00109ff) AM_RAM
/*
Surely this should mirror main ram? srmvs crashes, and
vivdolls overwrites it's memory test code if it does mirror
*/
AM_RANGE(0xc0000000, 0xc07fffff) AM_RAM
AM_RANGE(0xc0800000, 0xc0800fff) AM_READWRITE(aleck_dips_r,aleck_dips_w)
AM_RANGE(0xd0000000, 0xd00fffff) AM_RAM // mtetrisc, write only, mirror?
ADDRESS_MAP_END
static ADDRESS_MAP_START( rsp_map, AS_PROGRAM, 32 )
@ -257,52 +357,52 @@ static INPUT_PORTS_START( aleck64 )
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_MINMAX(0xff,0x00) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_PLAYER(2)
PORT_START("IN0")
PORT_DIPNAME( 0x80000000, 0x80000000, "DIPSW1 #8" )
PORT_DIPNAME( 0x80000000, 0x80000000, "DIPSW1 #8" ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x40000000, 0x40000000, "DIPSW1 #7" )
PORT_DIPNAME( 0x40000000, 0x40000000, "DIPSW1 #7" ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x20000000, 0x20000000, "DIPSW1 #6" )
PORT_DIPNAME( 0x20000000, 0x20000000, "DIPSW1 #6" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x10000000, 0x10000000, "DIPSW1 #5" )
PORT_DIPNAME( 0x10000000, 0x10000000, "DIPSW1 #5" ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x08000000, 0x08000000, "DIPSW1 #4" )
PORT_DIPNAME( 0x08000000, 0x08000000, "DIPSW1 #4" ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x04000000, 0x04000000, "DIPSW1 #3" )
PORT_DIPNAME( 0x04000000, 0x04000000, "DIPSW1 #3" ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x02000000, 0x02000000, "DIPSW1 #2" )
PORT_DIPNAME( 0x02000000, 0x02000000, "DIPSW1 #2" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x01000000, 0x01000000, "DIPSW1 #1" )
PORT_DIPNAME( 0x01000000, 0x01000000, "DIPSW1 #1" ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00800000, 0x00800000, "Test Mode" )
PORT_DIPNAME( 0x00800000, 0x00800000, "Test Mode" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00400000, 0x00400000, "DIPSW2 #7" )
PORT_DIPNAME( 0x00400000, 0x00400000, "DIPSW2 #7" ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00200000, 0x00200000, "DIPSW2 #6" )
PORT_DIPNAME( 0x00200000, 0x00200000, "DIPSW2 #6" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00100000, 0x00100000, "DIPSW2 #5" )
PORT_DIPNAME( 0x00100000, 0x00100000, "DIPSW2 #5" ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00080000, 0x00080000, "DIPSW2 #4" )
PORT_DIPNAME( 0x00080000, 0x00080000, "DIPSW2 #4" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00040000, 0x00040000, "DIPSW2 #3" )
PORT_DIPNAME( 0x00040000, 0x00040000, "DIPSW2 #3" ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00020000, 0x00020000, "DIPSW2 #2" )
PORT_DIPNAME( 0x00020000, 0x00020000, "DIPSW2 #2" ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00010000, 0x00010000, "DIPSW2 #1" )
PORT_DIPNAME( 0x00010000, 0x00010000, "DIPSW2 #1" ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_BIT(0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
@ -316,102 +416,35 @@ static INPUT_PORTS_START( aleck64 )
INPUT_PORTS_END
static INPUT_PORTS_START( 11beat )
PORT_START("P1_ANALOG_X")
PORT_START("P1_ANALOG_Y")
PORT_START("P2_ANALOG_X")
PORT_START("P2_ANALOG_Y")
PORT_INCLUDE( aleck64 )
PORT_START("P1")
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) // Button A
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) // Button B
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED ) // Button Z
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_START1 ) // Start
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) // Joypad Up
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) // Joypad Down
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) // Joypad Left
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) // Joypad Right
PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) // Pan Left
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1) // Pan Right
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) // C Button Up
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) // C Button Down
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED ) // C Button Left
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1) // C Button Right
PORT_MODIFY("P1_ANALOG_Y")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("P2_ANALOG_X")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("P2_ANALOG_Y")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_MODIFY("P1_ANALOG_X")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_START("P2")
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) // Button A
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) // Button B
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED ) // Button Z
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_START2 ) // Start
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) // Joypad Up
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) // Joypad Down
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) // Joypad Left
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) // Joypad Right
PORT_BIT( 0x00c0, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED ) // Pan Left
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2) // Pan Right (Button C here)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED ) // C Button Up
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED ) // C Button Down
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED ) // C Button Left
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2) // C Button Right (Button D here)
PORT_MODIFY("P1")
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(1)
PORT_START("IN0")
PORT_DIPNAME( 0x80000000, 0x80000000, "DIPSW1 #8" )
PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x40000000, 0x40000000, "DIPSW1 #7" )
PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x20000000, 0x20000000, "DIPSW1 #6" )
PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x10000000, 0x10000000, "DIPSW1 #5" )
PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x08000000, 0x08000000, "DIPSW1 #4" )
PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x04000000, 0x04000000, "DIPSW1 #3" )
PORT_DIPSETTING( 0x04000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x02000000, 0x02000000, "DIPSW1 #2" )
PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x01000000, 0x01000000, "DIPSW1 #1" )
PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00800000, 0x00800000, "Test Mode" )
PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00400000, 0x00400000, "DIPSW2 #7" )
PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00200000, 0x00200000, "DIPSW2 #6" )
PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00100000, 0x00100000, "DIPSW2 #5" )
PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00080000, 0x00080000, "DIPSW2 #4" )
PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00040000, 0x00040000, "DIPSW2 #3" )
PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00020000, 0x00020000, "DIPSW2 #2" )
PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00010000, 0x00010000, "DIPSW2 #1" )
PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_BIT(0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_MODIFY("P2")
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2)
PORT_START("IN1")
PORT_BIT( 0xff00ffff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_SERVICE_NO_TOGGLE( 0x00200000, IP_ACTIVE_LOW )
PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7)
PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 )
INPUT_PORTS_END
static INPUT_PORTS_START( mtetrisc )
@ -422,6 +455,7 @@ static INPUT_PORTS_START( mtetrisc )
PORT_START("P2")
PORT_START("P2_ANALOG_X")
PORT_START("P2_ANALOG_Y")
PORT_START("INMJ")
PORT_START("IN0")
PORT_BIT( 0xffff0000, IP_ACTIVE_LOW, IPT_UNUSED )
@ -499,20 +533,20 @@ static INPUT_PORTS_START( starsldr )
PORT_START("IN0")
PORT_DIPNAME( 0x80000000, 0x00000000, DEF_STR(Joystick) ) // DIPSW1 #8
PORT_DIPNAME( 0x80000000, 0x00000000, DEF_STR(Joystick) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x00000000, DEF_STR(Joystick) )
PORT_DIPSETTING( 0x80000000, "3D" )
PORT_DIPNAME( 0x60000000, 0x60000000, "Auto Level" ) // DIPSW1 #6, #7
PORT_DIPNAME( 0x60000000, 0x60000000, "Auto Level" ) PORT_DIPLOCATION("SW1:6,7")
PORT_DIPSETTING( 0x60000000, DEF_STR(Normal) )
PORT_DIPSETTING( 0x40000000, "Slow" )
PORT_DIPSETTING( 0x20000000, "Fast1" )
PORT_DIPSETTING( 0x00000000, "Fast2" )
PORT_DIPNAME( 0x18000000, 0x18000000, "Player" ) // DIPSW1 #4, #5
PORT_DIPNAME( 0x18000000, 0x18000000, "Player" ) PORT_DIPLOCATION("SW1:4,5")
PORT_DIPSETTING( 0x18000000, "3" )
PORT_DIPSETTING( 0x10000000, "4" )
PORT_DIPSETTING( 0x08000000, "2" )
PORT_DIPSETTING( 0x00000000, "1" )
PORT_DIPNAME( 0x07000000, 0x07000000, DEF_STR(Coinage) ) // DIPSW1 #1, #2, #3
PORT_DIPNAME( 0x07000000, 0x07000000, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:1,2,3")
PORT_DIPSETTING( 0x00000000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x01000000, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x02000000, DEF_STR( 3C_1C ) )
@ -521,24 +555,24 @@ static INPUT_PORTS_START( starsldr )
PORT_DIPSETTING( 0x06000000, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x05000000, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x04000000, DEF_STR( 1C_4C ) )
PORT_DIPNAME( 0x00800000, 0x00800000, "DIPSW2 #8" )
PORT_DIPNAME( 0x00800000, 0x00800000, "DIPSW2 #8" ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR(Language) ) // DIPSW2 #7
PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR(Language) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00400000, DEF_STR(English) )
PORT_DIPSETTING( 0x00000000, DEF_STR(Japanese) )
PORT_DIPNAME( 0x00200000, 0x00000000, "Demosound" ) // DIPSW2 #6
PORT_DIPNAME( 0x00200000, 0x00000000, "Demosound" ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00100000, 0x00100000, "Rapid" ) // DIPSW2 #5
PORT_DIPNAME( 0x00100000, 0x00100000, "Rapid" ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00100000, DEF_STR( On ) )
PORT_DIPNAME( 0x000c0000, 0x000c0000, "Extend" ) // DIPSW2 #3, #4
PORT_DIPNAME( 0x000c0000, 0x000c0000, "Extend" ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x000c0000, "Every 30000000" )
PORT_DIPSETTING( 0x00080000, "Every 50000000" )
PORT_DIPSETTING( 0x00040000, "Every 70000000" )
PORT_DIPSETTING( 0x00000000, "Non" )
PORT_DIPNAME( 0x00030000, 0x00030000, DEF_STR(Difficulty) ) // DIPSW2 #1, #2
PORT_DIPNAME( 0x00030000, 0x00030000, DEF_STR(Difficulty) ) PORT_DIPLOCATION("SW2:1,2")
PORT_DIPSETTING( 0x00030000, DEF_STR(Normal) )
PORT_DIPSETTING( 0x00020000, DEF_STR(Easy) )
PORT_DIPSETTING( 0x00010000, "Hard1" )
@ -553,6 +587,209 @@ static INPUT_PORTS_START( starsldr )
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 )
INPUT_PORTS_END
static INPUT_PORTS_START( kurufev )
PORT_START("P1")
PORT_START("P1_ANALOG_X")
PORT_START("P1_ANALOG_Y")
PORT_START("P2")
PORT_START("P2_ANALOG_X")
PORT_START("P2_ANALOG_Y")
PORT_START("IN0")
PORT_BIT(0xfcff8080, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x02000000, 0x02000000, "DIP SW2" )
PORT_DIPSETTING( 0x02000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x01000000, 0x01000000, "Test Mode" )
PORT_DIPSETTING( 0x01000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_START("IN1")
PORT_BIT(0xffc0ffff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button")
PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7)
PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_START1 )
INPUT_PORTS_END
static INPUT_PORTS_START( doncdoon )
PORT_INCLUDE( kurufev )
PORT_MODIFY("IN0")
PORT_BIT(0x00004040, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
static INPUT_PORTS_START( twrshaft )
PORT_START("P1")
PORT_START("P1_ANALOG_X")
PORT_START("P1_ANALOG_Y")
PORT_START("P2")
PORT_START("P2_ANALOG_X")
PORT_START("P2_ANALOG_Y")
PORT_START("INMJ")
PORT_START("IN0")
PORT_BIT(0xff7fffe0, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_DIPNAME( 0x00800000, 0x00800000, "Test Mode" )
PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_START("IN1")
PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Test Button")
PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7)
PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_START1 )
INPUT_PORTS_END
static INPUT_PORTS_START( hipai )
PORT_START("P1")
PORT_START("P1_ANALOG_X")
PORT_START("P1_ANALOG_Y")
PORT_START("P2")
PORT_START("P2_ANALOG_X")
PORT_START("P2_ANALOG_Y")
PORT_START("INMJ")
PORT_BIT( 0xe1c1c0c1, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x00000100, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x00000200, IP_ACTIVE_LOW, IPT_MAHJONG_A )
PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_MAHJONG_B )
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_MAHJONG_C )
PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_MAHJONG_D )
PORT_BIT( 0x00000400, IP_ACTIVE_LOW, IPT_MAHJONG_E )
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_MAHJONG_F )
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_MAHJONG_G )
PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_MAHJONG_H )
PORT_BIT( 0x00000800, IP_ACTIVE_LOW, IPT_MAHJONG_I )
PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_MAHJONG_J )
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_MAHJONG_K )
PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_MAHJONG_L )
PORT_BIT( 0x00001000, IP_ACTIVE_LOW, IPT_MAHJONG_M )
PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_MAHJONG_N )
PORT_BIT( 0x00002000, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
PORT_START("IN0")
PORT_BIT( 0x0000ffff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x07000000, 0x07000000, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3")
PORT_DIPSETTING( 0x00000000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x01000000, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x02000000, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x03000000, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x07000000, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x06000000, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x05000000, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x04000000, DEF_STR( 1C_4C ) )
PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Test ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00200000, 0x00000000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:6")
PORT_DIPSETTING( 0x00200000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00100000, DEF_STR( On ) )
PORT_DIPNAME( 0x00080000, 0x00080000, "Kuitan" ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00080000, DEF_STR( On ) )
PORT_DIPNAME( 0x00070000, 0x00070000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2,3")
PORT_DIPSETTING( 0x00000000, DEF_STR( Hardest ) )
PORT_DIPSETTING( 0x00010000, DEF_STR( Very_Hard ) )
PORT_DIPSETTING( 0x00020000, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x00030000, "Normal+" )
PORT_DIPSETTING( 0x00040000, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x00050000, DEF_STR( Very_Easy ) )
PORT_DIPSETTING( 0x00060000, DEF_STR( Easiest ) )
PORT_DIPSETTING( 0x00070000, DEF_STR( Normal ) )
PORT_START("IN1")
PORT_BIT( 0xffebffff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("Service Button") PORT_CODE(KEYCODE_7)
PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_COIN1 )
INPUT_PORTS_END
static INPUT_PORTS_START( srmvs )
PORT_INCLUDE( hipai )
PORT_MODIFY("IN0")
PORT_DIPNAME( 0x80000000, 0x80000000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x40000000, 0x40000000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x40000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x20000000, 0x20000000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x20000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x10000000, 0x10000000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5")
PORT_DIPSETTING( 0x10000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x08000000, 0x08000000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x08000000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00400000, 0x00400000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00400000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00100000, 0x00100000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:5")
PORT_DIPSETTING( 0x00100000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00080000, 0x00080000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4")
PORT_DIPSETTING( 0x00080000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00040000, 0x00040000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3")
PORT_DIPSETTING( 0x00040000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00020000, 0x00020000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:2")
PORT_DIPSETTING( 0x00020000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_DIPNAME( 0x00010000, 0x00010000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x00010000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
INPUT_PORTS_END
/* ?? */
static const mips3_config vr4300_config =
{
@ -838,10 +1075,10 @@ GAME( 1998, 11beat, aleck64, aleck64, 11beat, aleck64, ROT0, "Hudson", "Ele
GAME( 1998, mtetrisc, aleck64, aleck64, mtetrisc, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 1998, starsldr, aleck64, aleck64, starsldr, aleck64, ROT0, "Hudson / Seta", "Star Soldier: Vanishing Earth", GAME_IMPERFECT_GRAPHICS )
GAME( 1998, vivdolls, aleck64, aleck64, aleck64, aleck64, ROT0, "Visco", "Vivid Dolls", GAME_IMPERFECT_GRAPHICS )
GAME( 1999, srmvs, aleck64, aleck64, aleck64, aleck64, ROT0, "Seta", "Super Real Mahjong VS", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 2003, twrshaft, aleck64, aleck64, aleck64, aleck64, ROT0, "Aruze", "Tower & Shaft", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 2003, hipai, aleck64, aleck64, aleck64, aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 2003, doncdoon, aleck64, aleck64, aleck64, aleck64, ROT0, "Aruze / Takumi", "Donchan no Hanabi de Doon", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 2003, kurufev, aleck64, aleck64, aleck64, aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", GAME_NOT_WORKING|GAME_NO_SOUND )
GAME( 1999, srmvs, aleck64, aleck64, srmvs, aleck64, ROT0, "Seta", "Super Real Mahjong VS", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 2003, twrshaft, aleck64, aleck64, twrshaft, aleck64, ROT0, "Aruze", "Tower & Shaft", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 2003, hipai, aleck64, aleck64, hipai, aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 2003, doncdoon, aleck64, aleck64, doncdoon, aleck64, ROT0, "Aruze / Takumi", "Donchan no Hanabi de Doon", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 2003, kurufev, aleck64, aleck64, kurufev, aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
GAME( 2000, mayjin3, aleck64, aleck64, aleck64, aleck64, ROT0, "Seta / Able Corporation", "Mayjinsen 3", GAME_NOT_WORKING|GAME_NO_SOUND )