diff --git a/src/mame/drivers/aleck64.c b/src/mame/drivers/aleck64.c index 92f917d3e32..40c983f3ae6 100644 --- a/src/mame/drivers/aleck64.c +++ b/src/mame/drivers/aleck64.c @@ -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 )