diff --git a/src/mame/dynax/dynax.cpp b/src/mame/dynax/dynax.cpp index 8d780abb93f..a4f351cad91 100644 --- a/src/mame/dynax/dynax.cpp +++ b/src/mame/dynax/dynax.cpp @@ -5963,6 +5963,19 @@ ROM_START( mjelct3a ) ROM_LOAD( "eb-02.rom", 0x100000, 0x080000, CRC(e1f1b431) SHA1(04a612aff4c30cb8ea741f228bfa7e4289acfee8) ) ROM_END +ROM_START( mjelct3b ) // code almost identical to mjelct3 + ROM_REGION( 0x50000, "maincpu", 0 ) // Z80 Code + ROM_LOAD( "se-3010", 0x00000, 0x20000, CRC(bcdb5827) SHA1(f27987a0ef2146ba18f0243cb4409f48da772140) ) + ROM_RELOAD( 0x10000, 0x08000 ) + ROM_CONTINUE( 0x28000, 0x08000 ) + ROM_CONTINUE( 0x20000, 0x08000 ) + ROM_CONTINUE( 0x18000, 0x08000 ) + + ROM_REGION( 0x200000, "blitter", 0 ) // blitter data + ROM_LOAD( "eb-01.rom", 0x000000, 0x100000, CRC(e5c41448) SHA1(b8322e32b0cb3d771316c9c4f7be91de6e422a24) ) + ROM_LOAD( "eb-02.rom", 0x100000, 0x080000, CRC(f5b354d1) SHA1(d3f35d090de9af3f50aae9ff11de731950256212) ) // different GFX ROM +ROM_END + /*************************************************************************** Mahjong Electron Base (bootleg) @@ -7252,6 +7265,7 @@ GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, dynax_adpcm_state, init_ GAME( 1989, mjembase, mjelctrn, mjembase, mjembase, dynax_adpcm_state, init_mjelct3, ROT180, "Dynax", "Mahjong Electromagnetic Base (Japan)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, dynax_adpcm_state, init_mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, dynax_adpcm_state, init_mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, mjelct3b, mjelctrn, mjelctrn, mjelct3, dynax_adpcm_state, init_mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan set 3)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, dynax_adpcm_state, init_mjelct3, ROT180, "bootleg", "Mahjong Electron Base (parts 2 & 4, Japan bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, mjelct3bl, mjelctrn, mjelctrn, mjelct3, dynax_adpcm_state, init_mjelct3, ROT180, "bootleg", "Mahjong Electron Base (parts 2 & 3, Japan bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) GAME( 1990, majxtal7, 7jigen, neruton, majxtal7, dynax_adpcm_state, init_mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // reuses a subset of 7jigen assets diff --git a/src/mame/excellent/dblcrown.cpp b/src/mame/excellent/dblcrown.cpp index 319a8e921b1..8858009660f 100644 --- a/src/mame/excellent/dblcrown.cpp +++ b/src/mame/excellent/dblcrown.cpp @@ -501,20 +501,9 @@ static INPUT_PORTS_START( dblcrown ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END -static const gfx_layout char_16x16_layout = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { 0,1,2,3 }, - { 4,0, 12,8, 20,16, 28,24, 36,32, 44,40, 52,48, 60,56 }, - { STEP16(0,8*8) }, - 8*8*16 -}; - static GFXDECODE_START( gfx_dblcrown ) - GFXDECODE_ENTRY( "gfx1", 0, char_16x16_layout, 0, 0x10 ) + GFXDECODE_ENTRY( "gfx1", 0, gfx_16x16x4_packed_lsb, 0, 0x10 ) GFXDECODE_RAM( nullptr, 0, gfx_8x8x4_packed_lsb, 0, 0x10 ) GFXDECODE_END diff --git a/src/mame/excellent/es8906.cpp b/src/mame/excellent/es8906.cpp index 7b72a00cc82..d0aed0253ec 100644 --- a/src/mame/excellent/es8906.cpp +++ b/src/mame/excellent/es8906.cpp @@ -15,7 +15,14 @@ Excellent ES-8712 custom reset button (SW1) NE555P (near SW1) -TODO: everything +TODO: +* colors +* complete inputs +* outputs +* use CRTC device for drawing routines +* sound? PCB pics show an unmarked 22 (?) pin chip with a 104K yellow resonator +* first half of the program ROM? +* why doesn't the game draw the title? pics show it should */ #include "emu.h" @@ -39,10 +46,12 @@ public: : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_screen(*this, "screen"), - m_gfxdecode(*this, "gfxdecode") + m_gfxdecode(*this, "gfxdecode"), + m_tileram(*this, "tileram%u", 0U), + m_attrram(*this, "attrram%u", 0U) { } - void es8906(machine_config &config); + void es8906(machine_config &config) ATTR_COLD; protected: virtual void video_start() override ATTR_COLD; @@ -52,6 +61,14 @@ private: required_device m_screen; required_device m_gfxdecode; + required_shared_ptr_array m_tileram; + required_shared_ptr_array m_attrram; + + tilemap_t *m_tilemap[2]{}; + + template void tileram_w(offs_t offset, uint8_t data); + template void attrram_w(offs_t offset, uint8_t data); + template TILE_GET_INFO_MEMBER(get_tile_info); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void program_map(address_map &map) ATTR_COLD; @@ -60,10 +77,40 @@ private: void es8906_state::video_start() { + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(es8906_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(es8906_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + + m_tilemap[1]->set_transparent_pen(0); +} + +template +TILE_GET_INFO_MEMBER(es8906_state::get_tile_info) +{ + int const tile = m_tileram[Which][tile_index] | ((m_attrram[Which][tile_index] & 0x0f) << 8); + int const color = (m_attrram[Which][tile_index] & 0xf0) >> 4; + + tileinfo.set(Which, tile, color, 0); +} + +template +void es8906_state::tileram_w(offs_t offset, uint8_t data) +{ + m_tileram[Which][offset] = data; + m_tilemap[Which]->mark_tile_dirty(offset); +} + +template +void es8906_state::attrram_w(offs_t offset, uint8_t data) +{ + m_attrram[Which][offset] = data; + m_tilemap[Which]->mark_tile_dirty(offset); } uint32_t es8906_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { + m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); + m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0); + return 0; } @@ -75,23 +122,45 @@ void es8906_state::program_map(address_map &map) map(0x0000, 0x07ff).ram(); map(0x0800, 0x0800).w("crtc", FUNC(hd6845s_device::address_w)); map(0x0801, 0x0801).rw("crtc", FUNC(hd6845s_device::register_r), FUNC(hd6845s_device::register_w)); - map(0x1000, 0x2fff).ram(); + map(0x1000, 0x17ff).ram().w(FUNC(es8906_state::tileram_w<0>)).share(m_tileram[0]); + map(0x1800, 0x1fff).ram().w(FUNC(es8906_state::attrram_w<0>)).share(m_attrram[0]); + map(0x2000, 0x27ff).ram().w(FUNC(es8906_state::tileram_w<0>)).share(m_tileram[1]); // only 0-ed at start up? + map(0x2800, 0x2fff).ram().w(FUNC(es8906_state::attrram_w<0>)).share(m_attrram[1]); // only 0-ed at start up? + map(0x3000, 0x3000).portr("IN1"); + map(0x3010, 0x3010).portr("IN2"); + map(0x3020, 0x3020).portr("IN3"); + map(0x3030, 0x3030).portr("IN4"); + map(0x3040, 0x3040).portr("IN5"); + map(0x3800, 0x3800).portr("SW2"); + map(0x3801, 0x3801).portr("SW3"); + map(0x3802, 0x3802).portr("SW4"); + map(0x3803, 0x3803).portr("SW5"); map(0x8000, 0xffff).rom(); } -static INPUT_PORTS_START( dream9 ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) - +static INPUT_PORTS_START( dream9 ) // TODO: inputs are very incomplete PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Show Rules") // press Start to return to game + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Bet 2") // ?? + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN3") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -101,45 +170,133 @@ static INPUT_PORTS_START( dream9 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_START("IN4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + + PORT_START("IN5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MEMORY_RESET ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) + PORT_SERVICE_NO_TOGGLE(0x40, IP_ACTIVE_LOW) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) + + // DIP definitions from test mode, not verified if the actually work in game (coinage seems not) + // defaults unknown, set to all off for now PORT_START("SW2") - PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1") - PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") - PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") - PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") - PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6") - PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7") - PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, "Hopper Switch" ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x02, "Active Low" ) + PORT_DIPSETTING( 0x00, "Active High" ) + PORT_DIPNAME( 0x0c, 0x0c, "Credit Limit" ) PORT_DIPLOCATION("SW2:6,5") + PORT_DIPSETTING( 0x0c, "1000" ) + PORT_DIPSETTING( 0x08, "5000" ) + PORT_DIPSETTING( 0x04, "10000" ) + PORT_DIPSETTING( 0x00, "50000" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4") // effect not shown in test mode + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3") // effect not shown in test mode + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:2") // effect not shown in test mode + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1") // effect not shown in test mode + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("SW3") - PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW3:1") - PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW3:2") - PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW3:3") - PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW3:4") - PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW3:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW3:6") - PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW3:7") - PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW3:8") + PORT_DIPNAME( 0x01, 0x01, "W-Up Type" ) PORT_DIPLOCATION("SW3:8") + PORT_DIPSETTING( 0x01, "1" ) + PORT_DIPSETTING( 0x00, "2" ) + PORT_DIPNAME( 0x06, 0x06, "W-Up" ) PORT_DIPLOCATION("SW3:7,6") + PORT_DIPSETTING( 0x06, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) ) + PORT_DIPNAME( 0x18, 0x18, "Maximum Bet" ) PORT_DIPLOCATION("SW3:5,4") + PORT_DIPSETTING( 0x18, "8" ) + PORT_DIPSETTING( 0x10, "16" ) + PORT_DIPSETTING( 0x08, "32" ) + PORT_DIPSETTING( 0x00, "64" ) + PORT_DIPNAME( 0xe0, 0xe0, "Rate Of Win" ) PORT_DIPLOCATION("SW3:3,2,1") + PORT_DIPSETTING( 0x00, "60%" ) + PORT_DIPSETTING( 0x20, "65%" ) + PORT_DIPSETTING( 0x40, "70%" ) + PORT_DIPSETTING( 0x60, "75%" ) + PORT_DIPSETTING( 0x80, "80%" ) + PORT_DIPSETTING( 0xa0, "85%" ) + PORT_DIPSETTING( 0xc0, "90%" ) + PORT_DIPSETTING( 0xe0, "95%" ) PORT_START("SW4") - PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW4:1") - PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW4:2") - PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW4:3") - PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW4:4") - PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW4:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW4:6") - PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW4:7") - PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW4:8") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW4:8") // effect not shown in test mode + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW4:7,6,5") + PORT_DIPSETTING( 0x00, "10 Coins/1 Credit" ) + PORT_DIPSETTING( 0x02, DEF_STR( 9C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 6C_1C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0a, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0e, "1 Coin/50 Credits" ) + PORT_DIPNAME( 0xf0, 0xf0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW4:4,3,2,1") + PORT_DIPSETTING( 0x00, "10 Coins/1 Credit" ) + PORT_DIPSETTING( 0x10, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 5C_2C ) ) + PORT_DIPSETTING( 0x30, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x50, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x70, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x90, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0xa0, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0xb0, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0xc0, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0xd0, "1 Coin/25 Credits" ) + PORT_DIPSETTING( 0xe0, "1 Coin/50 Credits" ) + PORT_DIPSETTING( 0xf0, "1 Coin/100 Credits" ) PORT_START("SW5") - PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW5:1") - PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW5:2") - PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW5:3") - PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW5:4") - PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW5:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW5:6") - PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW5:7") - PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW5:8") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW5:8") // effect not shown in test mode + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW5:7") // effect not shown in test mode + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x1c, 0x1c, "Key In" ) PORT_DIPLOCATION("SW5:6,5,4") + PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x04, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x08, "1 Coin/40 Credits" ) + PORT_DIPSETTING( 0x0c, "1 Coin/50 Credits" ) + PORT_DIPSETTING( 0x10, "1 Coin/100 Credits" ) + PORT_DIPSETTING( 0x14, "1 Coin/200 Credits" ) + PORT_DIPSETTING( 0x18, "1 Coin/250 Credits" ) + PORT_DIPSETTING( 0x1c, "1 Coin/500 Credits" ) + PORT_DIPNAME( 0xe0, 0xe0, "Coin C" ) PORT_DIPLOCATION("SW5:3,2,1") + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x40, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x60, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x80, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0xa0, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0xc0, "1 Coin/25 Credits" ) + PORT_DIPSETTING( 0xe0, "1 Coin/50 Credits" ) INPUT_PORTS_END diff --git a/src/mame/excellent/es9501.cpp b/src/mame/excellent/es9501.cpp index e5ea5d7020b..782e4688ab8 100644 --- a/src/mame/excellent/es9501.cpp +++ b/src/mame/excellent/es9501.cpp @@ -141,19 +141,8 @@ static INPUT_PORTS_START( specd9 ) INPUT_PORTS_END -static const gfx_layout char_16x16_layout = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { 0,1,2,3 }, - { 4,0, 12,8, 20,16, 28,24, 36,32, 44,40, 52,48, 60,56 }, - { STEP16(0,8*8) }, - 8*8*16 -}; - static GFXDECODE_START( gfx_es9501 ) - GFXDECODE_ENTRY( "gfx", 0, char_16x16_layout, 0, 0x10 ) + GFXDECODE_ENTRY( "gfx", 0, gfx_16x16x4_packed_lsb, 0, 0x10 ) GFXDECODE_END diff --git a/src/mame/igs/spoker.cpp b/src/mame/igs/spoker.cpp index 5ce23aaa5ac..ef2e6059b80 100644 --- a/src/mame/igs/spoker.cpp +++ b/src/mame/igs/spoker.cpp @@ -184,7 +184,7 @@ public: void init_jinhulu2120gi() ATTR_COLD; void init_jinhulu2101is() ATTR_COLD; void init_jinhulu2100gi() ATTR_COLD; - void init_sleyuan() ATTR_COLD; + void init_sleyuan2() ATTR_COLD; protected: virtual void machine_start() override ATTR_COLD; @@ -2251,7 +2251,7 @@ ROM_START( jinhuang ) ROM_LOAD( "rom.u12", 0x00000, 0x20000, CRC(27caf888) SHA1(be57ce7f6b32a51656f8f16b894f58278544201a) ) // 1ST AND 2ND HALF IDENTICAL ROM_END -ROM_START( sleyuan ) +ROM_START( sleyuan2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rom.u40", 0x00000, 0x10000, CRC(869a2ff7) SHA1(beb110eecf6c8c2f5d5272e0669391f73766d463) ) @@ -2383,7 +2383,7 @@ void jinhulu2_state::init_dafuwng3() if ((a & 0x0060) == 0x0060) rom[a] ^= 0x40; } -void jinhulu2_state::init_sleyuan() +void jinhulu2_state::init_sleyuan2() { init_jinhulu2(); @@ -2523,10 +2523,10 @@ GAME( 1995, jinhulu2120gi, jinhulu2, jinhulu2, jinhulu2, jinhulu2_state, init_j GAME( 1996, jinhulu2101is, jinhulu2, jinhulu2, jinhulu2, jinhulu2_state, init_jinhulu2101is, ROT0, "IGS", "Jin Hu Lu II (v101IS)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // tries to link to something? GAME( 1995, jinhulu2100gi, jinhulu2, jinhulu2, jinhulu2, jinhulu2_state, init_jinhulu2100gi, ROT0, "IGS", "Jin Hu Lu II (v100GI)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper, ROM patch GAME( 1995, huahuas2, 0, jinhulu2, huahuas2, jinhulu2_state, init_huahuas2, ROT0, "IGS", "Huahua Shijie II (v100FI, set 1)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper -GAME( 1995, huahuas2a, huahuas2, jinhulu2, jinhulu2, jinhulu2_state, init_jinhulu2120gi, ROT0, "IGS", "Huahua Shijie II (v100FI, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // no GFX ROM dump, hopper +GAME( 1995, huahuas2a, huahuas2, jinhulu2, huahuas2, jinhulu2_state, init_jinhulu2120gi, ROT0, "IGS", "Huahua Shijie II (v100FI, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // no GFX ROM dump, hopper GAME( 1995, huluw2, 0, jinhulu2, huluw2, jinhulu2_state, init_huluw2, ROT0, "IGS", "Hu Lu Wang II (v100KI)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper GAME( 1995, hsheng2, 0, jinhulu2, jinhulu2, jinhulu2_state, init_hsheng2, ROT0, "IGS", "Hua Shen II (v120DI)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper GAME( 1995, dafuwng3, 0, jinhulu2, jinhulu2, jinhulu2_state, init_dafuwng3, ROT0, "IGS", "Da Fu Weng III (V130LI)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper GAME( 1996, zuanshiw, 0, jinhulu2, zuanshiw, jinhulu2_state, init_jinhulu2120gi, ROT0, "IGS", "Zuanshi Wutai (V110II)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper GAME( 2002, jinhuang, 0, jinhuang, jinhuang, jinhulu2_state, init_jinhuang, ROT0, "IGS", "Jin Huang Guan", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // different memory map -GAME( 1998, sleyuan, 0, jinhulu2, jinhulu2, jinhulu2_state, init_sleyuan, ROT0, "IGS", "Shuiguo Leyuan (V150UI)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper +GAME( 1998, sleyuan2, 0, jinhulu2, jinhulu2, jinhulu2_state, init_sleyuan2, ROT0, "IGS", "Shuiguo Leyuan II (V150UI)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // hopper diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 415b73993b9..d6d40be4593 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17696,6 +17696,7 @@ mjdialq2 mjdialq2a mjelct3 mjelct3a +mjelct3b mjelct3bl mjelctrb mjelctrn @@ -20887,7 +20888,7 @@ jinhulu2 jinhulu2100gi jinhulu2101is jinhulu2120gi -sleyuan +sleyuan2 spk100 spk102u spk102ua @@ -33946,6 +33947,9 @@ tactcian2 @source:namco/rbowlorama.cpp rbowlorama +@source:namco/sg_vga.cpp +hplanet + @source:namco/shootaway2.cpp shootaw2 diff --git a/src/mame/namco/sg_vga.cpp b/src/mame/namco/sg_vga.cpp new file mode 100644 index 00000000000..a1fbfde835f --- /dev/null +++ b/src/mame/namco/sg_vga.cpp @@ -0,0 +1,290 @@ +// license:BSD-3-Clause +// copyright-holders: + +/*********************************************************************************** + +Namco SH2-based Medal Series, Namco 2000-2001 +Hardware info by Guru +--------------------- + +Games on this system include.... + Game +Game Year Code Series# +------------------------------------------------ +Shooting Paradise 2000 Z029 1st +Galaxian Fever 2000 Z030 2nd +*Pac'n Party 2000 ? 3rd +Happy Planet 2001 Z037 ? + +*=confirmed but not dumped. +These games above are all medal shooting games. +There should be several more games, likely some coin pushers and +other redemption games but no others are known or secured yet. +The sound and graphics chips are the same as used on SETA2 hardware. + + +PCB Layout +---------- + +SG_VGA MAIN PCB +1828960501 (1828970501) +B0-0018B +(Note later revision 1828960502 (8128970502) B0-0018C just removes some +patch wires but appears identical) + +|------------------------------------------------------------| +| CN12 CN11 CN10 L |-----| |---| | +| LT1381 L |X1-010 | | | +| L SW01 CN09 |-----| | | | +|CN08 |--------| L |U42| | +| |SH2 | L 7.3728MHz | | | +| |HD64F7045 L | | | +| |F28 | L |---| | | | +| 2003 |--U01---| L |1016 |---| | +| |---| 3404 CN07| +| 2003 CN01 62C256 | +| | SG_VGA ROM PCB +| PC410 |-----| |---| | 1828961100 (1828971100) B1-002A +| PS2801 |NEC | | | | |-------------| +|CN06 PS2801 |DX-102 | | |-----| TC551001 | | | +| |-----| |U02| DSW01 |NEC | 70MHz | | U01 | +| | | |DX-102 TC551001 | | | Notes: +| TD62083 | | |-----| CN05| | | U01-U04 32Mbit SOP44 mask ROM +| | | |-------------| | | U03 | CN01 connects to CN05 on main board +| |---| 62C256 62C256 | NEC | | | CN01| +|CN04 3403 62C256 62C256 | DX-101 | | | | +| SW03 60MHz | | | | U02 | +| M1027 |-----| | | | | | +|CN03 |NEC | | | | | | +| LA4705 BATT |DX102| |-------------| | | U04 | +|CN02 |-----| 62C256 62C256 | | | +|------------------------------------------------------------| |-------------| +Notes: + SH2 - Hitachi SH2 HD64F7045F28 QFP144 microcontroller with 256kB internal flash ROM, + 4kB on-chip RAM and on-chip peripherals. Clock input 7.3728MHz. + This CPU holds the main program. Dumping it is not trivial. + ROMs: + Shooting Paradise - Z029_VER.1.10_SH2_HD64F7045F28.U01 + Galaxian Fever - Z030_VER.1.28_SH2_HD64F7045F28.U01 + Happy Planet - Z037_VER.1.00_SH2_HD64F7045F28.U01 + U42 - DIP42 32Mbit mask ROM used for audio data. Chip is programmed in BYTE mode. + ROMs: + Shooting Paradise - SPD1_SND-0A.U42 + Galaxian Fever - GXF1_SND-0A.U42 + Happy Planet - HP1_SND-0A.U42 + U02 - DIP40 MX27C4100 EPROM + ROMs: + Shooting Paradise - SPD1_MPR-0A.U02 + Galaxian Fever - GXF1_MPR-0A.U02 + Happy Planet - HP1_MPR-0A.U02 + 1016 - Lattice iSP1016E QFP44 CPLD, stamped with game code... + - Shooting Paradise : Z029A + - Galaxian Fever : Z030A + - Happy Planet : Z037A + 62C256 - ISSI IS62C256 SOJ32 32kBx8-bit Static RAM + TC551001 - Toshiba TC551001 SOP32 128kBx8-bit Static RAM + L - LED + CN01 - Multi-pin expansion connector for a plug-in board (not populated / not used) + CN02 - 6 pin Namco connector for RGB & Sync Video Output + CN03 - 4 pin Namco connector, purpose unknown + CN04 - 9 pin Namco connector for power input + CN05 - Multi-pin connector for ROM board connection. + ROM board contains 4x 74HC373 and 4x 64Mbit SOP44 mask ROMs stamped with game code. + ROMs: + Shooting Paradise - SPD1_OBJ-1A.U01 SPD1_OBJ-0A.U02 SPD1_OBJ-3A.U03 SPD1_OBJ-2A.U04 + Galaxian Fever - GXF1_OBJ-1A.U01 GXF1_OBJ-0A.U02 GXF1_OBJ-3A.U03 GXF1_OBJ-2A.U04 + Happy Planet - HP1_OBJ-1A.U01 HP1_OBJ-0A.U02 HP1_OBJ-3A.U03 HP1_OBJ-2A.U04 + CN06 - 50 pin flat cable connector. Probably used for controls. + CN07 - Multi-pin connector (not populated / not used) + CN08 - 20 pin flat cable connector. Probably connected to a drive board for motors and mechanical items in the cabinet. + CN09 - 8 pin connector joined to Lattice iSP1016 CPLD for JTAG programming. + CN10 - 25 pin flat cable connector (not populated / not used) + CN11 - 3 pin connector. This is a serial port TX, RX, GND, most likely for debugging purposes. + This connector is tied to the LT1381 on pins 7 and 8. Logic-level pins on the LT1381 are tied to the SH2 on pins 130, 131, 133 & 134 + CN12 - 6 pin connector, purpose unknown. + SW01 - 1 DIP switch with on position tied to SH2 pin 106 (PLLVSS). DIP is off so pin 106 is not tied to GND. + SW03 - Reset Push Button + DSW01 - 8 position DIP Switch. Default all off. + LT1381 - Linear Technology (now Analog Devices) LT1381 Dual RS232 Driver/Receiver Pair + X1-010 - Allumer/Seta X1-010 Sound Chip + LA4705 - Sanyo LA4705 15W Stereo Power Amplifier + 3403 - New Japan Radio Co. NJM3403 Quad Operational Amplifier + 3404 - New Japan Radio Co. NJM3404 Dual Operational Amplifier + M1027 - Mitsumi MM1027 System Reset IC with Battery-Backup Circuit for Static RAM Power Switching + BATT - 3V Coin Battery + 2003 - ULN2003 Darlington Array + TD62083 - Toshiba TD62083 8-Channel Darlington Sink Driver + PC410 - Sharp PC410 Photocoupler + PS2801 - NEC PS2801-4 Photocoupler + DX-102 - NEC DX-102 custom chip used for graphics generation + DX-101 - NEC DX-101 custom chip used for graphics generation + +TODO: +- everything, driver-wise +- device-fy DX-101 / DX-102 emulation found in seta/seta2_v.cpp +***********************************************************************************/ + + +#include "emu.h" + +#include "cpu/sh/sh7042.h" +#include "sound/x1_010.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class sg_vga_state : public driver_device +{ +public: + sg_vga_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + void sg_vga(machine_config &config) ATTR_COLD; + +private: + required_device m_maincpu; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map) ATTR_COLD; +}; + + +uint32_t sg_vga_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + + +void sg_vga_state::program_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x200000, 0x27ffff).rom().region("external_prg", 0); + map(0x4e0000, 0x4effff).ram(); + map(0x800000, 0x83ffff).ram().share("spriteram"); // ? + map(0x840000, 0x84ffff).ram().share("palette"); // ? + map(0x860000, 0x86003f).ram().share("vregs"); // ? +} + + +static INPUT_PORTS_START( hplanet ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:1") + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:2") + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:3") + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:4") + PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:5") + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:6") + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:7") + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW01:8") + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + + +static const gfx_layout tile_layout = +{ + 8,8, + RGN_FRAC(1,1), + 8, + { STEP8(7*8, -8) }, + { STEP8(0, 1) }, + { STEP8(0, 8*8) }, + 8*8*8 +}; + + +/* Tiles are 8bpp, but the hardware is additionally able to discard + some bitplanes and use the low 4 bits only, or the high 4 bits only */ +static GFXDECODE_START( gfx_dx_10x ) + GFXDECODE_ENTRY( "sprites", 0, tile_layout, 0, 0x8000 / 16 ) // 8bpp, but 4bpp color granularity +GFXDECODE_END + + +void sg_vga_state::sg_vga(machine_config &config) +{ + // basic machine hardware + SH7043A(config, m_maincpu, 7.3728_MHz_XTAL * 4); // actually SH7045 + m_maincpu->set_addrmap(AS_PROGRAM, &sg_vga_state::program_map); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + screen.set_size(0x200, 0x100); + screen.set_visarea(0x00, 0x140-1, 0x00, 0xe0-1); + screen.set_screen_update(FUNC(sg_vga_state::screen_update)); + screen.set_palette("palette"); + + GFXDECODE(config, "gfxdecode", "palette", gfx_dx_10x); + PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x8000 + 0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity + + // sound hardware + SPEAKER(config, "mono").front_center(); + + x1_010_device &x1snd(X1_010(config, "x1snd", 16'000'000)); // clock unknown + x1snd.add_route(ALL_OUTPUTS, "mono", 1.0); +} + + +ROM_START( hplanet ) + ROM_REGION( 0x40000, "maincpu", 0 ) // internal ROM + ROM_LOAD( "z037_ver.1.00_sh2_hd64f7045f28.u01", 0x00000, 0x40000, CRC(5b2e5b30) SHA1(b69b9a0cc70816449c8894fd6a46ce852b9883ab) ) + + ROM_REGION32_BE( 0x80000, "external_prg", 0 ) + ROM_LOAD16_WORD_SWAP( "hp1_mpr-0a.u02", 0x00000, 0x80000, CRC(83dd903f) SHA1(37ca41f8423bcf6e7ae422a5a6e1aef0e52a38cc) ) + + ROM_REGION( 0x2000000, "sprites", 0 ) + ROM_LOAD64_WORD( "hp1_obj-1a.u01", 0x000000, 0x800000, CRC(124f99b9) SHA1(41970a06a95875688f8bc21465a5bbd80b8cf8ce) ) + ROM_LOAD64_WORD( "hp1_obj-0a.u02", 0x000002, 0x800000, CRC(597e179c) SHA1(5130c5f4f7f8b3c730363ff843440fa5f059663c) ) + ROM_LOAD64_WORD( "hp1_obj-3a.u03", 0x000004, 0x800000, CRC(17eeb4fd) SHA1(3bc30cd8f6a43d4aee9cd2da119dbab66c99565e) ) + ROM_LOAD64_WORD( "hp1_obj-2a.u04", 0x000006, 0x800000, CRC(31f71432) SHA1(b572045af0c0ad54df72d9396168be004c07f7f7) ) + + ROM_REGION( 0x400000, "x1snd", 0 ) + ROM_LOAD( "hp1_snd-0a.u42", 0x000000, 0x400000, CRC(a78b01e5) SHA1(20e904a2e01a7e40c037a7c4ab9bd1b4e9054c4d) ) +ROM_END + +} // anonymous namespace + + +GAME( 2001, hplanet, 0, sg_vga, hplanet, sg_vga_state, empty_init, ROT0, "Namco", "Happy Planet", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/seta/namcoeva.cpp b/src/mame/seta/namcoeva.cpp index 894ba5b2286..86aedea0aff 100644 --- a/src/mame/seta/namcoeva.cpp +++ b/src/mame/seta/namcoeva.cpp @@ -33,7 +33,7 @@ TODO: - currently starts with 9 credits inserted. After entering and exiting test mode, the game shows 0 coins and can be coined up normally; - implement proper controls. The game has a peculiar input setup (see video link above); -- sound system is the same as namco/namcond1.cpp (puts "Quattro Ver.1.2.H8" in H8 RAM). Ir interacts +- sound system is the same as namco/namcond1.cpp (puts "Quattro Ver.1.2.H8" in H8 RAM). It interacts with the keycus. Handling is copied over from said driver, but could probably be improved; - after coining up there's a GFX bug that maybe points to some unimplemented feature in seta2_v.cpp; - once the video emulation in seta/seta2_v.cpp has been devicified, remove derivation from