New games added or promoted from NOT_WORKING status

---------------------------------------------------

Pye-nage Taikai [Luca Elia, Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
Taihou de Doboon [Luca Elia, Gnoppi, john666, Gerald (COY), Smitdogg, The Dumping Union]
This commit is contained in:
Luca Elia 2011-02-13 21:55:12 +00:00
parent 5140c0e6a0
commit 8799e8e38f
2 changed files with 318 additions and 116 deletions

View File

@ -107,7 +107,7 @@ Notes:
-6-- ---- 256 Color Sprite
--5- ----
---4 ---- Flip X
---- 3---
---- 3--- Flip Y
---- -2-- Draw Sprite
---- --10 Priority (0 = Front .. 3 = Back)
2 Tile Code (High)
@ -190,7 +190,7 @@ static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const recta
if (scale & 0xffff) scale += (1<<16) / 0x10;
flipx = s[ 0x01 ] & 0x10;
flipy = 0; // ?
flipy = s[ 0x01 ] & 0x08;
if ( flipx ) { x0 = nx - 1; x1 = -1; dx = -1; }
else { x0 = 0; x1 = nx; dx = +1; }
@ -345,7 +345,7 @@ static UINT8 c0,c4,c6,c8;
static void show_outputs()
{
#ifdef MAME_DEBUG
popmessage("0: %02X 4: %02X 6: %02X 8: %02X",c0,c4,c6,c8);
// popmessage("0: %02X 4: %02X 6: %02X 8: %02X",c0,c4,c6,c8);
#endif
}
@ -598,7 +598,7 @@ static UINT8 out[3];
static void show_3_outputs()
{
#ifdef MAME_DEBUG
popmessage("COIN: %02X LED: %02X HOP: %02X", out[0], out[1], out[2]);
// popmessage("COIN: %02X LED: %02X HOP: %02X", out[0], out[1], out[2]);
#endif
}
// Port 31
@ -608,9 +608,9 @@ static WRITE8_HANDLER( sammymdl_coin_w )
coin_counter_w(space->machine, 1, data & 0x02 ); // coin2 in
coin_counter_w(space->machine, 2, data & 0x04 ); // medal in
coin_lockout_w(space->machine, 1, (~data) & 0x08 ); // coin2 lockout?
coin_lockout_w(space->machine, 0, (~data) & 0x10 ); // coin1 lockout
coin_lockout_w(space->machine, 2, (~data) & 0x20 ); // medal lockout?
// coin_lockout_w(space->machine, 1, (~data) & 0x08 ); // coin2 lockout?
// coin_lockout_w(space->machine, 0, (~data) & 0x10 ); // coin1 lockout
// coin_lockout_w(space->machine, 2, (~data) & 0x20 ); // medal lockout?
out[0] = data;
show_3_outputs();
@ -716,12 +716,22 @@ static WRITE8_HANDLER( haekaka_rombank_w )
switch (data)
{
case 0x10: // ROM
case 0x11: // ROM
case 0x13: // ROM
case 0x15: // ROM
case 0x17: // ROM
case 0x19: // ROM
case 0x1b: // ROM
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
case 0x65: // SPRITERAM
case 0x67: // PALETTE RAM + TABLE + REGS
break;
@ -804,22 +814,22 @@ static READ8_HANDLER( haekaka_b000_r )
switch (rombank)
{
case 0x10: // ROM
return space->machine->region("maincpu")->base()[offset + 0xb400];
case 0x11: // ROM
return space->machine->region("maincpu")->base()[offset + 0xc400];
case 0x15: // ROM
return space->machine->region("maincpu")->base()[offset + 0x10400];
case 0x17: // ROM
return space->machine->region("maincpu")->base()[offset + 0x12400];
case 0x19: // ROM
return space->machine->region("maincpu")->base()[offset + 0x14400];
case 0x1b: // ROM
return space->machine->region("maincpu")->base()[offset + 0x16400];
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
return space->machine->region("maincpu")->base()[offset + 0xb400 + 0x1000 * (rombank-0x10)];
case 0x65: // SPRITERAM
if (offset < 0x1000)
@ -885,7 +895,7 @@ static WRITE8_HANDLER( haekaka_leds_w )
static WRITE8_HANDLER( haekaka_coin_w )
{
set_led_status(space->machine, 8, data & 0x01);
coin_counter_w(space->machine, 0, data & 0x01 ); // medal out
// data & 0x02 ?
// data & 0x04 ?
// data & 0x10 ?
@ -1154,6 +1164,220 @@ static ADDRESS_MAP_START( itazuram_io, ADDRESS_SPACE_IO, 8 )
AM_RANGE( 0xc0, 0xc0 ) AM_WRITE( watchdog_reset_w ) // 1
ADDRESS_MAP_END
/***************************************************************************
Pye-nage Taikai
***************************************************************************/
static ADDRESS_MAP_START( pyenaget_io, ADDRESS_SPACE_IO, 8 )
AM_RANGE( 0x31, 0x31 ) AM_WRITE( sammymdl_coin_w )
AM_IMPORT_FROM( haekaka_io )
ADDRESS_MAP_END
/***************************************************************************
Taihou de Doboon
***************************************************************************/
// rombank
static WRITE8_HANDLER( tdoboon_rombank_w )
{
if (offset == 0)
{
reg = data;
return;
}
switch ( reg )
{
case 0x2f:
rombank = data;
switch (data)
{
case 0x10: // ROM
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
case 0x64: // SPRITERAM
case 0x66: // PALETTE RAM + TABLE
case 0x67: // REGS
break;
default:
logerror("%s: unknown rom bank = %02x, reg = %02x\n", space->machine->describe_context(), data, reg);
}
break;
default:
logerror("%s: unknown reg written: %02x = %02x\n", space->machine->describe_context(), reg, data);
}
}
static READ8_HANDLER( tdoboon_rombank_r )
{
if (offset == 0)
return reg;
switch ( reg )
{
case 0x2f:
return rombank;
default:
logerror("%s: unknown reg read: %02x\n", space->machine->describe_context(), reg);
return 0x00;
}
}
// rambank
static WRITE8_HANDLER( tdoboon_rambank_w )
{
if (offset == 0)
{
reg2 = data;
return;
}
switch ( reg2 )
{
case 0x33:
rambank = data;
switch (data)
{
case 0x53:
break;
default:
logerror("%s: unknown ram bank = %02x, reg2 = %02x\n", space->machine->describe_context(), data, reg2);
}
break;
default:
logerror("%s: unknown reg2 written: %02x = %02x\n", space->machine->describe_context(), reg2, data);
}
}
static READ8_HANDLER( tdoboon_rambank_r )
{
if (offset == 0)
return reg2;
switch ( reg2 )
{
case 0x33:
return rambank;
default:
logerror("%s: unknown reg2 read: %02x\n", space->machine->describe_context(), reg2);
return 0x00;
}
}
static READ8_HANDLER( tdoboon_c000_r )
{
switch (rombank)
{
case 0x10: // ROM
case 0x11:
case 0x12:
case 0x13:
case 0x14:
case 0x15:
case 0x16:
case 0x17:
case 0x18:
case 0x19:
case 0x1a:
case 0x1b:
case 0x1c:
case 0x1d:
case 0x1e:
case 0x1f:
return space->machine->region("maincpu")->base()[offset + 0xc400 + 0x1000 * (rombank-0x10)];
case 0x64: // SPRITERAM
if (offset < 0x1000)
return space->machine->generic.spriteram.u8[offset];
break;
case 0x66: // PALETTERAM + TABLE?
if (offset < 0x200)
return space->machine->generic.paletteram.u8[offset];
break;
case 0x67: // REGS
if (offset == (0xc013-0xc000))
return haekaka_vblank_r(space, offset);
break;
}
logerror("%s: unknown read from %02x with rombank = %02x\n", space->machine->describe_context(), offset+0xc000, rombank);
return 0x00;
}
static WRITE8_HANDLER( tdoboon_c000_w )
{
switch (rombank)
{
case 0x64: // SPRITERAM
if (offset < 0x1000)
{
space->machine->generic.spriteram.u8[offset] = data;
return;
}
break;
case 0x66: // PALETTERAM + TABLE?
if (offset < 0x200)
{
paletteram_xRRRRRGGGGGBBBBB_be_w(space, offset, data);
// space->machine->generic.paletteram.u8[offset] = data;
return;
}
else if ((offset >= 0x800) && (offset < 0x880))
{
// table?
return;
}
break;
}
logerror("%s: unknown write to %02x = %02x with rombank = %02x\n", space->machine->describe_context(), offset+0xc000, data, rombank);
}
static ADDRESS_MAP_START( tdoboon_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE( 0x0000, 0xbfff ) AM_ROM
AM_RANGE( 0xc000, 0xcfff ) AM_READWRITE( tdoboon_c000_r, tdoboon_c000_w )
AM_RANGE( 0xd000, 0xefff ) AM_RAM AM_SHARE( "nvram" ) AM_BASE( &nvram )
AM_RANGE( 0xfe00, 0xffff ) AM_RAM
ADDRESS_MAP_END
static ADDRESS_MAP_START( tdoboon_io, ADDRESS_SPACE_IO, 8 )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0x02, 0x03 ) AM_READWRITE( tdoboon_rombank_r, tdoboon_rombank_w )
AM_RANGE( 0x04, 0x05 ) AM_READWRITE( tdoboon_rambank_r, tdoboon_rambank_w )
AM_RANGE( 0x2c, 0x2c ) AM_DEVREADWRITE( "eeprom", sammymdl_eeprom_r, sammymdl_eeprom_w )
AM_RANGE( 0x2e, 0x2e ) AM_READ( sammymdl_coin_hopper_r )
AM_RANGE( 0x30, 0x30 ) AM_READ_PORT( "BUTTON" )
AM_RANGE( 0x31, 0x31 ) AM_WRITE( sammymdl_coin_w )
AM_RANGE( 0x32, 0x32 ) AM_WRITE( sammymdl_leds_w )
AM_RANGE( 0x90, 0x91 ) AM_DEVWRITE("oki", sammymdl_sound_w )
AM_RANGE( 0x92, 0x92 ) AM_DEVWRITE("oki", sammymdl_sound_r )
AM_RANGE( 0xb0, 0xb0 ) AM_WRITE( sammymdl_hopper_w )
AM_RANGE( 0xc0, 0xc0 ) AM_WRITE( watchdog_reset_w ) // 1
ADDRESS_MAP_END
/***************************************************************************
Graphics Layout
@ -1212,7 +1436,7 @@ static INPUT_PORTS_START( gegege )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // ? (coin error, pulses mask 4 of port c6)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin/medal in (coin error)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) PORT_NAME("Medal") // coin/medal in (coin error)
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("hopper", ticket_dispenser_line_r)
PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Bet") // bet / select in test menu
@ -1250,7 +1474,7 @@ static INPUT_PORTS_START( sammymdl )
PORT_START("COIN")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // coin1 in
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5) // coin2 in
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(5) // medal in
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(5) PORT_NAME("Medal") // medal in
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) // test sw
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE("hopper", ticket_dispenser_line_r)
@ -1260,7 +1484,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( haekaka )
PORT_START("BUTTON")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) // medal in
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5) PORT_NAME( "Medal" ) // medal in ("chacker")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -1341,7 +1565,7 @@ static MACHINE_CONFIG_START( gegege, driver_device )
MACHINE_CONFIG_END
/***************************************************************************
Animal Catch
Sammy Medal Games
***************************************************************************/
static const eeprom_interface eeprom_interface_93C46_8bit =
@ -1364,30 +1588,9 @@ static MACHINE_RESET( sammymdl )
cpu_set_reg(machine->device("maincpu"), Z80_PC, 0x400); // code starts at 400 ??? (000 = cart header)
}
static INTERRUPT_GEN( animalc )
{
switch (cpu_getiloops(device))
{
case 0:
cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x00); // increment counter
break;
case 1:
cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x1c); // read hopper state
break;
case 2:
cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x1e); // drive hopper motor
break;
}
}
// Everything here is a guess:
static MACHINE_CONFIG_START( animalc, driver_device )
static MACHINE_CONFIG_START( sammymdl, driver_device )
MCFG_CPU_ADD("maincpu", Z80, 8000000) // ???
MCFG_CPU_PROGRAM_MAP( animalc_map )
MCFG_CPU_IO_MAP( animalc_io )
MCFG_CPU_VBLANK_INT_HACK(animalc, 3) // IM 2 needs a vector on the data bus
MCFG_MACHINE_RESET( sammymdl )
@ -1417,6 +1620,36 @@ static MACHINE_CONFIG_START( animalc, driver_device )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
/***************************************************************************
Animal Catch
***************************************************************************/
static INTERRUPT_GEN( animalc )
{
switch (cpu_getiloops(device))
{
case 0:
cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x00); // increment counter
break;
case 1:
cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x1c); // read hopper state
break;
case 2:
cpu_set_input_line_and_vector(device, 0, HOLD_LINE, 0x1e); // drive hopper motor
break;
}
}
static MACHINE_CONFIG_DERIVED( animalc, sammymdl )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP( animalc_map )
MCFG_CPU_IO_MAP( animalc_io )
MCFG_CPU_VBLANK_INT_HACK(animalc, 3) // IM 2 needs a vector on the data bus
MACHINE_CONFIG_END
/***************************************************************************
Hae Hae Ka Ka Ka
***************************************************************************/
@ -1439,40 +1672,11 @@ static INTERRUPT_GEN( haekaka )
}
}
// Everything here is a guess:
static MACHINE_CONFIG_START( haekaka, driver_device )
MCFG_CPU_ADD("maincpu", Z80, 8000000) // ???
static MACHINE_CONFIG_DERIVED( haekaka, sammymdl )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP( haekaka_map )
MCFG_CPU_IO_MAP( haekaka_io )
MCFG_CPU_VBLANK_INT_HACK(haekaka, 3) // IM 2 needs a vector on the data bus
MCFG_MACHINE_RESET( sammymdl )
MCFG_NVRAM_ADD_0FILL("nvram") // battery
MCFG_EEPROM_ADD("eeprom", eeprom_interface_93C46_8bit)
MCFG_TICKET_DISPENSER_ADD("hopper", 200, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) // game reads vblank state
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
MCFG_GFXDECODE(sigmab98)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_UPDATE(sigmab98)
// MCFG_VIDEO_EOF(sammymdl)
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_OKIM9810_ADD("oki", 16000/2) // OKI MSM981x? Clock?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MACHINE_CONFIG_END
/***************************************************************************
@ -1497,39 +1701,36 @@ static INTERRUPT_GEN( itazuram )
}
}
// Everything here is a guess:
static MACHINE_CONFIG_START( itazuram, driver_device )
MCFG_CPU_ADD("maincpu", Z80, 8000000) // ???
static MACHINE_CONFIG_DERIVED( itazuram, sammymdl )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP( itazuram_map )
MCFG_CPU_IO_MAP( itazuram_io )
MCFG_CPU_VBLANK_INT_HACK(itazuram, 3) // IM 2 needs a vector on the data bus
MACHINE_CONFIG_END
MCFG_MACHINE_RESET( sammymdl )
/***************************************************************************
Pye-nage Taikai
***************************************************************************/
MCFG_NVRAM_ADD_0FILL("nvram") // battery
MCFG_EEPROM_ADD("eeprom", eeprom_interface_93C46_8bit)
static MACHINE_CONFIG_DERIVED( pyenaget, sammymdl )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP( haekaka_map )
MCFG_CPU_IO_MAP( pyenaget_io )
MCFG_CPU_VBLANK_INT_HACK(haekaka, 3) // IM 2 needs a vector on the data bus
MACHINE_CONFIG_END
MCFG_TICKET_DISPENSER_ADD("hopper", 200, TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW )
/***************************************************************************
Taihou de Doboon
***************************************************************************/
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(0x140, 0x100)
MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0, 0xf0-1)
static MACHINE_CONFIG_DERIVED( tdoboon, sammymdl )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP( tdoboon_map )
MCFG_CPU_IO_MAP( tdoboon_io )
MCFG_CPU_VBLANK_INT_HACK(haekaka, 3) // IM 2 needs a vector on the data bus
MCFG_GFXDECODE(sigmab98)
MCFG_PALETTE_LENGTH(0x100)
MCFG_VIDEO_UPDATE(sigmab98)
// MCFG_VIDEO_EOF(sammymdl)
// sound hardware
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_OKIM9810_ADD("oki", 16000) // OKI MSM981x? Clock?
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.80)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.80)
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_VISIBLE_AREA(0,0x140-1, 0+4,0xf0+4-1)
MACHINE_CONFIG_END
@ -1792,6 +1993,7 @@ static DRIVER_INIT( haekaka )
rambank = 0x53;
}
/***************************************************************************
Game Drivers
@ -1802,6 +2004,6 @@ GAME( 1997, gegege, 0, gegege, gegege, gegege, ROT0, "Banpresto / Sigma"
// Sammy Medal Games:
GAME( 2000, animalc, 0, animalc, sammymdl, animalc, ROT0, "Sammy", "Animal Catch", GAME_IMPERFECT_SOUND )
GAME( 2000, itazuram, 0, itazuram, sammymdl, itazuram, ROT0, "Sammy", "Itazura Monkey", GAME_IMPERFECT_SOUND )
GAME( 2000, pyenaget, 0, animalc, sammymdl, 0, ROT0, "Sammy", "Pye-nage Taikai", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
GAME( 2000, pyenaget, 0, pyenaget, sammymdl, haekaka, ROT0, "Sammy", "Pye-nage Taikai", GAME_IMPERFECT_SOUND )
GAME( 2000, tdoboon, 0, tdoboon, haekaka, haekaka, ROT0, "Sammy", "Taihou de Doboon", GAME_IMPERFECT_SOUND )
GAME( 2001, haekaka, 0, haekaka, haekaka, haekaka, ROT0, "Sammy", "Hae Hae Ka Ka Ka", GAME_IMPERFECT_SOUND )
GAME( 2002, tdoboon, 0, animalc, sammymdl, 0, ROT0, "Sammy", "Taihou de Doboon", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )

View File

@ -8527,13 +8527,13 @@ Other Sun games
DRIVER( jwildb52a ) /* (c) 199? Sigma */
DRIVER( jwildb52h ) /* (c) 199? Sigma */
/* Sigma B98 */
/* Sigma B98 / Sammy Medal Games */
DRIVER( gegege ) /* (c) 1997 Banpresto / Sigma */
DRIVER( animalc ) /* (c) 2000 Sammy */
DRIVER( itazuram ) /* (c) 2000 Sammy */
DRIVER( pyenaget ) /* (c) 2000 Sammy */
DRIVER( tdoboon ) /* (c) 2000 Sammy */
DRIVER( haekaka ) /* (c) 2001 Sammy */
DRIVER( tdoboon ) /* (c) 2002 Sammy */
/* IGS games ( www.igs.com.tw ) */
DRIVER( goldstar ) /* (c) 198? IGS */