diff --git a/src/mame/dynax/ddenlovr.cpp b/src/mame/dynax/ddenlovr.cpp index 349fdd3a7e6..84cff22f15f 100644 --- a/src/mame/dynax/ddenlovr.cpp +++ b/src/mame/dynax/ddenlovr.cpp @@ -198,7 +198,7 @@ public: void ddenlovrk(machine_config &config) ATTR_COLD; void quizchq(machine_config &config) ATTR_COLD; void mjmyuniv(machine_config &config) ATTR_COLD; - void mjmyunivbl2(machine_config &config) ATTR_COLD; + void mjmywrldt(machine_config &config) ATTR_COLD; void dtoyoken(machine_config &config) ATTR_COLD; void hgokou(machine_config &config) ATTR_COLD; void seljan2(machine_config &config) ATTR_COLD; @@ -396,7 +396,7 @@ private: void mjflove_portmap(address_map &map) ATTR_COLD; void mjmyorntr_portmap(address_map &map) ATTR_COLD; void mjmyster_map(address_map &map) ATTR_COLD; - void mjmyunivbl2_map(address_map &map) ATTR_COLD; + void mjmywrldt_map(address_map &map) ATTR_COLD; void mjmyster_portmap(address_map &map) ATTR_COLD; void mjmywrld_portmap(address_map &map) ATTR_COLD; void mjschuka_portmap(address_map &map) ATTR_COLD; @@ -3211,7 +3211,7 @@ void ddenlovr_state::mjmyster_map(address_map &map) map(0xf200, 0xffff).nopw(); // "" } -void ddenlovr_state::mjmyunivbl2_map(address_map &map) +void ddenlovr_state::mjmywrldt_map(address_map &map) { map(0x0000, 0x5fff).rom(); // ROM map(0x6000, 0x6fff).ram(); // RAM @@ -7120,7 +7120,7 @@ static INPUT_PORTS_START( mjmyster ) PORT_DIPSETTING( 0x00, DEF_STR(2C_3C) ) PORT_CONDITION("FAKE", 0x01, EQUALS, 0x00) INPUT_PORTS_END -static INPUT_PORTS_START( mjmyunivbl ) +static INPUT_PORTS_START( mjmyunivh ) // default to Hong Kong/Taiwan PORT_INCLUDE(mjmyster) @@ -9748,11 +9748,11 @@ void ddenlovr_state::mjmyuniv(machine_config &config) aysnd.add_route(ALL_OUTPUTS, "mono", 0.30); } -void ddenlovr_state::mjmyunivbl2(machine_config &config) +void ddenlovr_state::mjmywrldt(machine_config &config) { mjmyuniv(config); - subdevice("maincpu")->set_addrmap(AS_PROGRAM, &ddenlovr_state::mjmyunivbl2_map); + subdevice("maincpu")->set_addrmap(AS_PROGRAM, &ddenlovr_state::mjmywrldt_map); } void ddenlovr_state::mjmyornt(machine_config &config) @@ -11794,7 +11794,7 @@ ROM_END // 麻雀 龍兄虎弟 // CS166P001 PCB (very similar to mjmyuniv's one). Dump was presented as a bootleg but the PCB has all Dynax / Nakanihon original customs. -ROM_START( mjmyunivbl ) +ROM_START( mjmyunivh ) ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) // Z80 Code + space for banked RAM ROM_LOAD( "rom.u42", 0x00000, 0x40000, CRC(8000eec3) SHA1(e2a4a46ebb8e152956f469382bde73b983090c01) ) ROM_RELOAD( 0x10000, 0x40000 ) @@ -11812,7 +11812,7 @@ ROM_END // 麻雀 財会贏 // also CS166P001 PCB -ROM_START( mjmyunivbl2 ) +ROM_START( mjmywrldt ) ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) // Z80 Code + space for banked RAM ROM_LOAD( "romb.u47", 0x00000, 0x40000, CRC(eb447ce4) SHA1(8b38cedd83dbc3dd1dff7f4a60658c1a9ef50428) ) ROM_RELOAD( 0x10000, 0x40000 ) @@ -12709,8 +12709,8 @@ GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, ddenlovr_state, empty_ GAME( 1994, hginga, 0, hginga, hginga, ddenlovr_state, empty_init, ROT0, "Dynax", "Hanafuda Hana Ginga (Japan)", MACHINE_NO_COCKTAIL ) GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, ddenlovr_state, empty_init, ROT0, "Dynax", "Mahjong The Mysterious Universe (Japan, D85)", MACHINE_NO_COCKTAIL ) -GAME( 1995, mjmyunivbl, mjmyuniv, mjmyuniv, mjmyunivbl, ddenlovr_state, empty_init, ROT0, "bootleg", "Maa Zoek Lung Hing Fu Dai (Hong Kong, D106T)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) // One GFX ROM isn't dumped -GAME( 1996, mjmyunivbl2, mjmyuniv, mjmyunivbl2,mjmyunivbl,ddenlovr_state, empty_init, ROT0, "bootleg", "Maque Caihui Ying (Taiwan, ver 2.20)", MACHINE_NO_COCKTAIL ) +GAME( 1995, mjmyunivh, mjmyuniv, mjmyuniv, mjmyunivh, ddenlovr_state, empty_init, ROT0, "Dynax", "Maa Zoek Lung Hing Fu Dai (Hong Kong, D106T)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL ) // One GFX ROM isn't dumped +GAME( 1996, mjmywrldt, mjmyster, mjmywrldt, mjmyunivh, ddenlovr_state, empty_init, ROT0, "Dynax", "Maque Caihui Ying (Taiwan, ver 2.20)", MACHINE_NO_COCKTAIL ) GAME( 1994, quiz365, 0, quiz365, quiz365, ddenlovr_state, empty_init, ROT0, "Nakanihon", "Quiz 365 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) GAME( 1994, quiz365t, quiz365, quiz365, quiz365, ddenlovr_state, empty_init, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/igs/igs011.cpp b/src/mame/igs/igs011.cpp index 2ea19194b8c..fb673f2af6e 100644 --- a/src/mame/igs/igs011.cpp +++ b/src/mame/igs/igs011.cpp @@ -62,6 +62,8 @@ To do: - lhb3: DIP definitions +- xymga: stop during attract mode with 'RECORD ERROR 3' + Notes: - In most games, keep test button pressed during boot for another test mode @@ -5108,7 +5110,7 @@ GAME( 1996, lhb2, 0, lhb2, lhb2, igs011_state, i GAME( 1996, tygn, lhb2, tygn, tygn, igs011_state, init_tygn, ROT0, "IGS", "Te Yi Gong Neng (China, V632C)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // ROM patches GAME( 1996, lhb3, lhb2, nkishusp, nkishusp, igs011_state, init_lhb3, ROT0, "IGS", "Long Hu Bang III Cuo Pai Gao Shou (China, V242C)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // ROM patches GAME( 1996, xymg, 0, xymg, xymg, igs011_state, init_xymg, ROT0, "IGS", "Xingyun Manguan (China, V651C, set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xymga, xymg, xymga, xymg, igs011_state, init_xymga, ROT0, "IGS", "Xingyun Manguan (China, V651C, set 2)", MACHINE_SUPPORTS_SAVE ) // different encryption and without IGS003 +GAME( 1996, xymga, xymg, xymga, xymg, igs011_state, init_xymga, ROT0, "IGS", "Xingyun Manguan (China, V651C, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // different encryption and without IGS003 GAME( 1996, wlcc, xymg, wlcc, wlcc, igs011_state, init_wlcc, ROT0, "IGS", "Wanli Changcheng (China, V638C)", MACHINE_SUPPORTS_SAVE ) GAME( 1996, vbowl, 0, vbowl, vbowl, vbowl_state, init_vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, vbowl_state, init_vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9179ea363a9..c620aaf82bc 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17642,9 +17642,9 @@ mjmyornt mjmyorntr mjmyster mjmyuniv -mjmyunivbl -mjmyunivbl2 +mjmyunivh mjmywrld +mjmywrldt mjreach1 mjschuka mjtenho diff --git a/src/mame/misc/norautp.cpp b/src/mame/misc/norautp.cpp index d092ca34543..44b66bdcc5e 100644 --- a/src/mame/misc/norautp.cpp +++ b/src/mame/misc/norautp.cpp @@ -65,7 +65,7 @@ -- unknown CPU based -- - * unknown LJF Corportaion poker game 1989, LJF Corporation + * unknown LJF Corporation poker game 1989, LJF Corporation ******************************************************************************* diff --git a/src/mame/skeleton/cle68k.cpp b/src/mame/skeleton/cle68k.cpp index ec87e0c8ec7..a757106d873 100644 --- a/src/mame/skeleton/cle68k.cpp +++ b/src/mame/skeleton/cle68k.cpp @@ -22,7 +22,11 @@ U6295 sound chip 6x 8-DIP banks -TODO: everything. Needs GFX decode to proceed further. +TODO: +* correct GFX decode; +* colors / attribute RAM; +* complete inputs; +* what role does the AT90S4414 play? */ @@ -30,6 +34,7 @@ TODO: everything. Needs GFX decode to proceed further. #include "cpu/m68000/m68000.h" #include "sound/okim6295.h" +#include "video/ramdac.h" #include "emupal.h" #include "screen.h" @@ -44,163 +49,499 @@ class cle68k_state : public driver_device public: cle68k_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_videoram(*this, "videoram%u", 0U), + m_attrram(*this, "attrram%u", 0U) { } - void cle68k(machine_config &config); + void cle68k(machine_config &config) ATTR_COLD; protected: virtual void video_start() override ATTR_COLD; private: required_device m_maincpu; + required_device m_gfxdecode; + required_shared_ptr_array m_videoram; + required_shared_ptr_array m_attrram; + tilemap_t *m_tilemap[2]{}; + + template void videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + template void attrram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + template TILE_GET_INFO_MEMBER(get_tile_info); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); void program_map(address_map &map) ATTR_COLD; + void ramdac_map(address_map &map) ATTR_COLD; }; +template +TILE_GET_INFO_MEMBER(cle68k_state::get_tile_info) +{ + int const tile = m_videoram[Which][tile_index]; + int const color = m_attrram[Which][tile_index] & 0xff; + + tileinfo.set(0, tile, color, 0); +} + +template +void cle68k_state::videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_videoram[Which][offset]); + m_tilemap[Which]->mark_tile_dirty(offset); +} + +template +void cle68k_state::attrram_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_attrram[Which][offset]); + m_tilemap[Which]->mark_tile_dirty(offset); +} + uint32_t cle68k_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { + m_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); + m_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0); return 0; } void cle68k_state::video_start() { + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cle68k_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(cle68k_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + + m_tilemap[1]->set_transparent_pen(0); } void cle68k_state::program_map(address_map &map) { map(0x000000, 0x07ffff).rom(); - map(0x180000, 0x180fff).ram(); - map(0x181000, 0x181fff).ram(); - map(0x182000, 0x182fff).ram(); - map(0x183000, 0x183fff).ram(); - // map(0x1e0004, 0x1e0005).portr("IN0"); + map(0x180000, 0x180fff).ram().w(FUNC(cle68k_state::attrram_w<0>)).share(m_attrram[0]); + map(0x181000, 0x181fff).ram().w(FUNC(cle68k_state::attrram_w<1>)).share(m_attrram[1]); + map(0x182000, 0x182fff).ram().w(FUNC(cle68k_state::videoram_w<0>)).share(m_videoram[0]); + map(0x183000, 0x183fff).ram().w(FUNC(cle68k_state::videoram_w<1>)).share(m_videoram[1]); + map(0x1e0004, 0x1e0005).portr("IN0"); map(0x1e0009, 0x1e0009).w("oki", FUNC(okim6295_device::write)); - // map(0x1e0032, 0x1e0033).portr("DSW1"); - // map(0x1e0034, 0x1e0035).portr("DSW2"); - // map(0x1e0036, 0x1e0037).portr("DSW3"); + map(0x1e0011, 0x1e0011).w("ramdac", FUNC(ramdac_device::index_w)); + map(0x1e0013, 0x1e0013).w("ramdac", FUNC(ramdac_device::pal_w)); + map(0x1e0015, 0x1e0015).w("ramdac", FUNC(ramdac_device::mask_w)); + map(0x1e0030, 0x1e0031).portr("IN1").nopw(); // TODO: video reg? outputs? + map(0x1e0032, 0x1e0033).portr("DSW1"); + map(0x1e0034, 0x1e0035).portr("DSW2"); + map(0x1e0036, 0x1e0037).portr("DSW3"); map(0x1f0000, 0x1fffff).ram(); } +void cle68k_state::ramdac_map(address_map &map) +{ + map(0x000, 0x2ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w)); +} -static INPUT_PORTS_START( dmndhrt ) + +static INPUT_PORTS_START( dmndhrt ) // TODO: complete inputs PORT_START("IN0") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK ) + PORT_SERVICE_NO_TOGGLE( 0x0002, IP_ACTIVE_LOW ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN1") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Show Odds") + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + // DIP definitions taken from test mode PORT_START("DSW1") - PORT_DIPUNKNOWN_DIPLOC(0x0001, 0x0001, "SW1:1") - PORT_DIPUNKNOWN_DIPLOC(0x0002, 0x0002, "SW1:2") - PORT_DIPUNKNOWN_DIPLOC(0x0004, 0x0004, "SW1:3") - PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0008, "SW1:4") - PORT_DIPUNKNOWN_DIPLOC(0x0010, 0x0010, "SW1:5") - PORT_DIPUNKNOWN_DIPLOC(0x0020, 0x0020, "SW1:6") - PORT_DIPUNKNOWN_DIPLOC(0x0040, 0x0040, "SW1:7") - PORT_DIPUNKNOWN_DIPLOC(0x0080, 0x0080, "SW1:8") - PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0100, "SW2:1") - PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0200, "SW2:2") - PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0400, "SW2:3") - PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0800, "SW2:4") - PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x1000, "SW2:5") - PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x2000, "SW2:6") - PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x4000, "SW2:7") - PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x8000, "SW2:8") + PORT_DIPNAME( 0x0007, 0x0007, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:1,2,3") + PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0005, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0004, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x0003, DEF_STR( 1C_8C ) ) + PORT_DIPSETTING( 0x0002, "1 Coin/10 Credits" ) + PORT_DIPSETTING( 0x0001, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x0000, "1 Coin/25 Credits" ) + PORT_DIPNAME( 0x0018, 0x0018, "Key In Ratio" ) PORT_DIPLOCATION("SW1:4,5") + PORT_DIPSETTING( 0x0018, "Coin x1" ) + PORT_DIPSETTING( 0x0010, "Coin x5" ) + PORT_DIPSETTING( 0x0008, "Coin x10" ) + PORT_DIPSETTING( 0x0000, "Coin x50" ) + PORT_DIPNAME( 0x0060, 0x0060, "Coin In Limit" ) PORT_DIPLOCATION("SW1:6,7") + PORT_DIPSETTING( 0x0060, "1000" ) + PORT_DIPSETTING( 0x0040, "5000" ) + PORT_DIPSETTING( 0x0020, "10000" ) + PORT_DIPSETTING( 0x0000, "20000" ) + PORT_DIPNAME( 0x0080, 0x0080, "Key Out" ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x0080, DEF_STR ( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR ( On ) ) + PORT_DIPNAME( 0x0700, 0x0700, "Bet Max" ) PORT_DIPLOCATION("SW2:1,2,3") + PORT_DIPSETTING( 0x0700, "10" ) + PORT_DIPSETTING( 0x0600, "16" ) + PORT_DIPSETTING( 0x0500, "32" ) + PORT_DIPSETTING( 0x0400, "40" ) + PORT_DIPSETTING( 0x0300, "64" ) + PORT_DIPSETTING( 0x0200, "64 (duplicate)" ) + PORT_DIPSETTING( 0x0100, "64 (duplicate)" ) + PORT_DIPSETTING( 0x0000, "64 (duplicate)" ) + PORT_DIPNAME( 0x3800, 0x3800, "Bet Min" ) PORT_DIPLOCATION("SW2:4,5,6") + PORT_DIPSETTING( 0x3800, "1" ) + PORT_DIPSETTING( 0x3000, "8" ) + PORT_DIPSETTING( 0x2800, "10" ) + PORT_DIPSETTING( 0x2000, "16" ) + PORT_DIPSETTING( 0x1800, "32" ) + PORT_DIPSETTING( 0x1000, "40" ) + PORT_DIPSETTING( 0x0800, "64" ) + PORT_DIPSETTING( 0x0000, "64 (duplicate)" ) + PORT_DIPNAME( 0x4000, 0x4000, "Card Kind" ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x4000, "Normal Card" ) + PORT_DIPSETTING( 0x0000, "Symbol Card" ) + PORT_DIPNAME( 0x8000, 0x8000, "Card 7" ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x8000, "Lost" ) + PORT_DIPSETTING( 0x0000, "Even" ) PORT_START("DSW2") - PORT_DIPUNKNOWN_DIPLOC(0x0001, 0x0001, "SW3:1") - PORT_DIPUNKNOWN_DIPLOC(0x0002, 0x0002, "SW3:2") - PORT_DIPUNKNOWN_DIPLOC(0x0004, 0x0004, "SW3:3") - PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0008, "SW3:4") - PORT_DIPUNKNOWN_DIPLOC(0x0010, 0x0010, "SW3:5") - PORT_DIPUNKNOWN_DIPLOC(0x0020, 0x0020, "SW3:6") - PORT_DIPUNKNOWN_DIPLOC(0x0040, 0x0040, "SW3:7") - PORT_DIPUNKNOWN_DIPLOC(0x0080, 0x0080, "SW3:8") - PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0100, "SW4:1") - PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0200, "SW4:2") - PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0400, "SW4:3") - PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0800, "SW4:4") - PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x1000, "SW4:5") - PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x2000, "SW4:6") - PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x4000, "SW4:7") - PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x8000, "SW4:8") + PORT_DIPNAME( 0x0001, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW3:1") + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:2") // effect not shown in test mode + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW3:3") // effect not shown in test mode + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0038, 0x0038, "Credit Limit" ) PORT_DIPLOCATION("SW3:4,5,6") + PORT_DIPSETTING( 0x0030, "5000" ) + PORT_DIPSETTING( 0x0028, "10000" ) + PORT_DIPSETTING( 0x0020, "20000" ) + PORT_DIPSETTING( 0x0018, "30000" ) + PORT_DIPSETTING( 0x0010, "40000" ) + PORT_DIPSETTING( 0x0008, "50000" ) + PORT_DIPSETTING( 0x0000, "100000" ) + PORT_DIPSETTING( 0x0038, "Unlimited" ) + PORT_DIPNAME( 0x0040, 0x0040, "Ex Bonus" ) PORT_DIPLOCATION("SW3:7") + PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0080, 0x0080, "Pay Out Device Kind" ) PORT_DIPLOCATION("SW3:8") + PORT_DIPSETTING( 0x0080, "Hopper" ) + PORT_DIPSETTING( 0x0000, "Ticket" ) + PORT_DIPNAME( 0x0700, 0x0700, "Payout Ratio" ) PORT_DIPLOCATION("SW4:1,2,3") + PORT_DIPSETTING( 0x0700, "55%" ) + PORT_DIPSETTING( 0x0600, "60%" ) + PORT_DIPSETTING( 0x0500, "65%" ) + PORT_DIPSETTING( 0x0400, "70%" ) + PORT_DIPSETTING( 0x0300, "75%" ) + PORT_DIPSETTING( 0x0200, "80%" ) + PORT_DIPSETTING( 0x0100, "85%" ) + PORT_DIPSETTING( 0x0000, "90%" ) + PORT_DIPNAME( 0x1800, 0x1800, "Double Probability" ) PORT_DIPLOCATION("SW4:4,5") + PORT_DIPSETTING( 0x1800, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( Difficult ) ) + PORT_DIPSETTING( 0x0000, "Difficult (duplicate)" ) + PORT_DIPNAME( 0x2000, 0x2000, "CB" ) PORT_DIPLOCATION("SW4:6") // what is this? + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0xc000, 0xc000, "CB Ratio" ) PORT_DIPLOCATION("SW4:7,8") + PORT_DIPSETTING( 0xc000, "50" ) + PORT_DIPSETTING( 0x8000, "100" ) + PORT_DIPSETTING( 0x4000, "200" ) + PORT_DIPSETTING( 0x0000, "500" ) PORT_START("DSW3") - PORT_DIPUNKNOWN_DIPLOC(0x0001, 0x0001, "SW5:1") - PORT_DIPUNKNOWN_DIPLOC(0x0002, 0x0002, "SW5:2") - PORT_DIPUNKNOWN_DIPLOC(0x0004, 0x0004, "SW5:3") - PORT_DIPUNKNOWN_DIPLOC(0x0008, 0x0008, "SW5:4") - PORT_DIPUNKNOWN_DIPLOC(0x0010, 0x0010, "SW5:5") - PORT_DIPUNKNOWN_DIPLOC(0x0020, 0x0020, "SW5:6") - PORT_DIPUNKNOWN_DIPLOC(0x0040, 0x0040, "SW5:7") - PORT_DIPUNKNOWN_DIPLOC(0x0080, 0x0080, "SW5:8") - PORT_DIPUNKNOWN_DIPLOC(0x0100, 0x0100, "SW6:1") - PORT_DIPUNKNOWN_DIPLOC(0x0200, 0x0200, "SW6:2") - PORT_DIPUNKNOWN_DIPLOC(0x0400, 0x0400, "SW6:3") - PORT_DIPUNKNOWN_DIPLOC(0x0800, 0x0800, "SW6:4") - PORT_DIPUNKNOWN_DIPLOC(0x1000, 0x1000, "SW6:5") - PORT_DIPUNKNOWN_DIPLOC(0x2000, 0x2000, "SW6:6") - PORT_DIPUNKNOWN_DIPLOC(0x4000, 0x4000, "SW6:7") - PORT_DIPUNKNOWN_DIPLOC(0x8000, 0x8000, "SW6:8") + PORT_DIPNAME( 0x0001, 0x0001, "Double Up Game" ) PORT_DIPLOCATION("SW5:1") + PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0002, 0x0002, "Hands Mode" ) PORT_DIPLOCATION("SW5:2") + PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0004, 0x0004, "Auto Stop" ) PORT_DIPLOCATION("SW5:3") + PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0008, 0x0008, "Reel Speed" ) PORT_DIPLOCATION("SW5:4") + PORT_DIPSETTING( 0x0008, "Slow" ) + PORT_DIPSETTING( 0x0000, DEF_STR( High ) ) + PORT_DIPNAME( 0x0010, 0x0010, "Game Count" ) PORT_DIPLOCATION("SW5:5") + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0020, "Score" ) PORT_DIPLOCATION("SW5:6") + PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0040, 0x0040, "Bonus Mode" ) PORT_DIPLOCATION("SW5:7") + PORT_DIPSETTING( 0x0040, "6 3 1" ) + PORT_DIPSETTING( 0x0000, "9 6 1" ) + PORT_DIPNAME( 0x0080, 0x0080, "Amusement" ) PORT_DIPLOCATION("SW5:8") + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0f00, 0x0f00, "Key Out Value" ) PORT_DIPLOCATION("SW6:1,2,3,4") + PORT_DIPSETTING( 0x0f00, "Coin" ) + PORT_DIPSETTING( 0x0e00, "1" ) + PORT_DIPSETTING( 0x0d00, "2" ) + PORT_DIPSETTING( 0x0c00, "4" ) + PORT_DIPSETTING( 0x0b00, "5" ) + PORT_DIPSETTING( 0x0a00, "10" ) + PORT_DIPSETTING( 0x0900, "15" ) + PORT_DIPSETTING( 0x0800, "20" ) + PORT_DIPSETTING( 0x0700, "25" ) + PORT_DIPSETTING( 0x0600, "40" ) + PORT_DIPSETTING( 0x0500, "50" ) + PORT_DIPSETTING( 0x0400, "60" ) + PORT_DIPSETTING( 0x0300, "75" ) + PORT_DIPSETTING( 0x0200, "80" ) + PORT_DIPSETTING( 0x0100, "100" ) + PORT_DIPSETTING( 0x0000, "500" ) + PORT_DIPNAME( 0xf000, 0xf000, "Device Value" ) PORT_DIPLOCATION("SW6:5,6,7,8") + PORT_DIPSETTING( 0xf000, "Coin" ) + PORT_DIPSETTING( 0xe000, "1" ) + PORT_DIPSETTING( 0xd000, "2" ) + PORT_DIPSETTING( 0xc000, "4" ) + PORT_DIPSETTING( 0xb000, "5" ) + PORT_DIPSETTING( 0xa000, "10" ) + PORT_DIPSETTING( 0x9000, "15" ) + PORT_DIPSETTING( 0x8000, "20" ) + PORT_DIPSETTING( 0x7000, "25" ) + PORT_DIPSETTING( 0x6000, "40" ) + PORT_DIPSETTING( 0x5000, "50" ) + PORT_DIPSETTING( 0x4000, "60" ) + PORT_DIPSETTING( 0x3000, "75" ) + PORT_DIPSETTING( 0x2000, "80" ) + PORT_DIPSETTING( 0x1000, "100" ) + PORT_DIPSETTING( 0x0000, "500" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( dmndhrtn ) // TODO: inputs + PORT_INCLUDE( dmndhrt ) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x0018, 0x0018, "Key In Ratio" ) PORT_DIPLOCATION("SW1:4,5") + PORT_DIPSETTING( 0x0018, "Coin x5" ) + PORT_DIPSETTING( 0x0010, "Coin x10" ) + PORT_DIPSETTING( 0x0008, "Coin x25" ) + PORT_DIPSETTING( 0x0000, "Coin x50" ) + + PORT_MODIFY("DSW2") + PORT_DIPNAME( 0x0040, 0x0040, "Pool Min." ) PORT_DIPLOCATION("SW3:7") + PORT_DIPSETTING( 0x0040, "5000" ) + PORT_DIPSETTING( 0x0000, "10000" ) + PORT_DIPNAME( 0x0700, 0x0700, "Payout Ratio" ) PORT_DIPLOCATION("SW4:1,2,3") + PORT_DIPSETTING( 0x0700, "82%" ) + PORT_DIPSETTING( 0x0600, "84%" ) + PORT_DIPSETTING( 0x0500, "86%" ) + PORT_DIPSETTING( 0x0400, "88%" ) + PORT_DIPSETTING( 0x0300, "90%" ) + PORT_DIPSETTING( 0x0200, "92%" ) + PORT_DIPSETTING( 0x0100, "94%" ) + PORT_DIPSETTING( 0x0000, "96%" ) + + PORT_MODIFY("DSW3") + PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW6:1") // effect not shown in test mode + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW6:2") // effect not shown in test mode + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1c00, 0x1c00, "Key Out Value" ) PORT_DIPLOCATION("SW6:3,4,5") + PORT_DIPSETTING( 0x1c00, "Coin" ) + PORT_DIPSETTING( 0x1800, "1" ) + PORT_DIPSETTING( 0x1400, "5" ) + PORT_DIPSETTING( 0x1000, "20" ) + PORT_DIPSETTING( 0x0c00, "50" ) + PORT_DIPSETTING( 0x0800, "100" ) + PORT_DIPSETTING( 0x0400, "200" ) + PORT_DIPSETTING( 0x0000, "500" ) + PORT_DIPNAME( 0xe000, 0xe000, "Device Value" ) PORT_DIPLOCATION("SW6:6,7,8") + PORT_DIPSETTING( 0xe000, "Coin" ) + PORT_DIPSETTING( 0xc000, "1" ) + PORT_DIPSETTING( 0xa000, "5" ) + PORT_DIPSETTING( 0x8000, "20" ) + PORT_DIPSETTING( 0x6000, "50" ) + PORT_DIPSETTING( 0x4000, "100" ) + PORT_DIPSETTING( 0x2000, "200" ) + PORT_DIPSETTING( 0x0000, "500" ) +INPUT_PORTS_END + +INPUT_PORTS_START( honeybee ) + PORT_INCLUDE( dmndhrt ) + + // DIP definitions taken from test mode + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x0007, 0x0007, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:1,2,3") + PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0006, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x0005, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x0004, "1 Coin/15 Credits" ) + PORT_DIPSETTING( 0x0003, "1 Coin/20 Credits" ) + PORT_DIPSETTING( 0x0002, "1 Coin/75 Credits" ) + PORT_DIPSETTING( 0x0001, "1 Coin/100 Credits" ) + PORT_DIPSETTING( 0x0000, "1 Coin/500 Credits" ) + PORT_DIPNAME( 0x0038, 0x0038, "Key In Ratio" ) PORT_DIPLOCATION("SW1:4,5,6") + PORT_DIPSETTING( 0x0038, "1" ) + PORT_DIPSETTING( 0x0030, "4" ) + PORT_DIPSETTING( 0x0028, "5" ) + PORT_DIPSETTING( 0x0020, "15" ) + PORT_DIPSETTING( 0x0018, "20" ) + PORT_DIPSETTING( 0x0010, "75" ) + PORT_DIPSETTING( 0x0008, "100" ) + PORT_DIPSETTING( 0x0000, "500" ) + PORT_DIPNAME( 0x00c0, 0x00c0, "Coin In Limit" ) PORT_DIPLOCATION("SW1:7,8") + PORT_DIPSETTING( 0x00c0, "1000" ) + PORT_DIPSETTING( 0x0080, "5000" ) + PORT_DIPSETTING( 0x0040, "10000" ) + PORT_DIPSETTING( 0x0000, "20000" ) + PORT_DIPNAME( 0x0700, 0x0700, "Pay Out Ratio" ) PORT_DIPLOCATION("SW2:1,2,3") + PORT_DIPSETTING( 0x0700, "67%" ) + PORT_DIPSETTING( 0x0600, "70%" ) + PORT_DIPSETTING( 0x0500, "73%" ) + PORT_DIPSETTING( 0x0400, "76%" ) + PORT_DIPSETTING( 0x0300, "79%" ) + PORT_DIPSETTING( 0x0200, "82%" ) + PORT_DIPSETTING( 0x0100, "85%" ) + PORT_DIPSETTING( 0x0000, "88%" ) + PORT_DIPNAME( 0x0800, 0x0800, "Double Up Game" ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x3000, 0x3000, "Double Up Ratio" ) PORT_DIPLOCATION("SW2:5,6") + PORT_DIPSETTING( 0x3000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Medium ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Difficult ) ) + PORT_DIPSETTING( 0x0000, "Difficult (duplicate)" ) + PORT_DIPNAME( 0x4000, 0x4000, "Odd Table Show" ) PORT_DIPLOCATION("SW2:7") + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_MODIFY("DSW2") + PORT_DIPNAME( 0x0007, 0x0007, "Play Max." ) PORT_DIPLOCATION("SW3:1,2,3") + PORT_DIPSETTING( 0x0007, "8" ) + PORT_DIPSETTING( 0x0006, "10" ) + PORT_DIPSETTING( 0x0005, "16" ) + PORT_DIPSETTING( 0x0004, "32" ) + PORT_DIPSETTING( 0x0003, "48" ) + PORT_DIPSETTING( 0x0002, "64" ) + PORT_DIPSETTING( 0x0001, "64 (duplicate)" ) + PORT_DIPSETTING( 0x0000, "64 (duplicate)" ) + PORT_DIPNAME( 0x0038, 0x0038, "Play Min." ) PORT_DIPLOCATION("SW3:4,5,6") + PORT_DIPSETTING( 0x0038, "1" ) + PORT_DIPSETTING( 0x0030, "8" ) + PORT_DIPSETTING( 0x0028, "10" ) + PORT_DIPSETTING( 0x0020, "16" ) + PORT_DIPSETTING( 0x0018, "32" ) + PORT_DIPSETTING( 0x0010, "40" ) + PORT_DIPSETTING( 0x0008, "64" ) + PORT_DIPSETTING( 0x0000, "64 (duplicate)" ) + PORT_DIPNAME( 0x00c0, 0x00c0, "Credit Limit" ) PORT_DIPLOCATION("SW3:7,8") + PORT_DIPSETTING( 0x00c0, "10000" ) + PORT_DIPSETTING( 0x0080, "50000" ) + PORT_DIPSETTING( 0x0040, "100000" ) + PORT_DIPSETTING( 0x0000, "500000" ) + PORT_DIPNAME( 0x0700, 0x0700, "Key Out Value" ) PORT_DIPLOCATION("SW4:1,2,3") + PORT_DIPSETTING( 0x0700, "1" ) + PORT_DIPSETTING( 0x0600, "4" ) + PORT_DIPSETTING( 0x0500, "5" ) + PORT_DIPSETTING( 0x0400, "15" ) + PORT_DIPSETTING( 0x0300, "20" ) + PORT_DIPSETTING( 0x0200, "75" ) + PORT_DIPSETTING( 0x0100, "100" ) + PORT_DIPSETTING( 0x0000, "500" ) + PORT_DIPNAME( 0x0800, 0x0800, "Pay Out Device Kind" ) PORT_DIPLOCATION("SW4:4") + PORT_DIPSETTING( 0x0800, "Hopper" ) + PORT_DIPSETTING( 0x0000, "Ticket" ) + PORT_DIPNAME( 0x7000, 0x7000, "Ticket / Hopper Out" ) PORT_DIPLOCATION("SW4:5,6,7") + PORT_DIPSETTING( 0x7000, "1" ) + PORT_DIPSETTING( 0x6000, "4" ) + PORT_DIPSETTING( 0x5000, "5" ) + PORT_DIPSETTING( 0x4000, "15" ) + PORT_DIPSETTING( 0x3000, "20" ) + PORT_DIPSETTING( 0x2000, "75" ) + PORT_DIPSETTING( 0x1000, "100" ) + PORT_DIPSETTING( 0x0000, "500" ) + PORT_DIPNAME( 0x8000, 0x8000, "Auto Play" ) PORT_DIPLOCATION("SW4:8") + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + + PORT_MODIFY("DSW3") + PORT_DIPNAME( 0x0001, 0x0001, "Non Stop Spin" ) PORT_DIPLOCATION("SW5:1") + PORT_DIPSETTING( 0x0001, DEF_STR( No ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x0002, 0x0002, "Reel Speed" ) PORT_DIPLOCATION("SW5:2") + PORT_DIPSETTING( 0x0002, DEF_STR( Low ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( High ) ) + PORT_DIPNAME( 0x0004, 0x0004, "Bonus Mode" ) PORT_DIPLOCATION("SW5:3") + PORT_DIPSETTING( 0x0004, "6 3 1" ) + PORT_DIPSETTING( 0x0000, "9 6 1" ) + PORT_DIPNAME( 0x0008, 0x0008, "All Bee Bonus Min." ) PORT_DIPLOCATION("SW5:4") + PORT_DIPSETTING( 0x0008, "5000" ) + PORT_DIPSETTING( 0x0000, "10000" ) + PORT_DIPNAME( 0x0010, 0x0010, "All Seven" ) PORT_DIPLOCATION("SW5:5") + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0060, 0x0060, "All Bee Play Min." ) PORT_DIPLOCATION("SW5:6,7") + PORT_DIPSETTING( 0x0060, "8" ) + PORT_DIPSETTING( 0x0040, "16" ) + PORT_DIPSETTING( 0x0020, "32" ) + PORT_DIPSETTING( 0x0000, "64" ) + PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW5:8") // effect not shown in test mode + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0100, 0x0100, "Score" ) PORT_DIPLOCATION("SW6:1") + PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0200, 0x0200, "Game Count" ) PORT_DIPLOCATION("SW6:2") + PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0400, 0x0400, "10 Time Feature" ) PORT_DIPLOCATION("SW6:3") + PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x1800, 0x1800, "Win Mode" ) PORT_DIPLOCATION("SW6:4,5") + PORT_DIPSETTING( 0x1800, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x1000, "L Win Mode" ) + PORT_DIPSETTING( 0x0800, "W Win Mode" ) + PORT_DIPSETTING( 0x0000, "W Win Mode (duplicate)" ) + PORT_DIPNAME( 0x2000, 0x2000, "Play Score Credit" ) PORT_DIPLOCATION("SW6:6") + PORT_DIPSETTING( 0x2000, DEF_STR( No ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW6:7") // effect not shown in test mode + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW6:8") // effect not shown in test mode + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END -// TODO -static GFXDECODE_START( gfx_cle68k ) +static GFXDECODE_START( gfx_cle68k ) // TODO: correct decoding + GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x4_packed_msb, 0, 16 ) GFXDECODE_END @@ -210,12 +551,12 @@ void cle68k_state::cle68k(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &cle68k_state::program_map); m_maincpu->set_vblank_int("screen", FUNC(cle68k_state::irq1_line_hold)); - // AT90S4414 (needs core) + // AT90S4414 (needs core and dumps) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO screen.set_refresh_hz(60); screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(64*8, 64*8); + screen.set_size(64*8, 32*8); screen.set_visarea(0, 64*8-1, 0, 32*8-1); screen.set_screen_update(FUNC(cle68k_state::screen_update)); @@ -223,6 +564,8 @@ void cle68k_state::cle68k(machine_config &config) PALETTE(config, "palette").set_entries(0x100); // TODO + RAMDAC(config, "ramdac", 0, "palette").set_addrmap(0, &cle68k_state::ramdac_map); + SPEAKER(config, "mono").front_center(); OKIM6295(config, "oki", 12_MHz_XTAL / 12, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // pin 7 and clock not verified @@ -238,8 +581,8 @@ ROM_START( dmndhrt ) ROM_LOAD( "at90s4414.u51", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "diamond_heart_u.s.a_u10.u10", 0x00000, 0x80000, CRC(00b691a7) SHA1(8cc530ad204cf9168d59419a01abf338c46a49e1) ) - ROM_LOAD( "diamond_heart_u.s.a_u11.u11", 0x80000, 0x80000, CRC(2c666c44) SHA1(15c8e97900444046adb9455bfa827735c226a727) ) + ROM_LOAD16_BYTE( "diamond_heart_u.s.a_u10.u10", 0x00000, 0x80000, CRC(00b691a7) SHA1(8cc530ad204cf9168d59419a01abf338c46a49e1) ) + ROM_LOAD16_BYTE( "diamond_heart_u.s.a_u11.u11", 0x00001, 0x80000, CRC(2c666c44) SHA1(15c8e97900444046adb9455bfa827735c226a727) ) ROM_REGION( 0x40000, "oki", 0 ) ROM_LOAD( "diamond_heart_u.s.a_u33.u33", 0x00000, 0x40000, CRC(63b0bc97) SHA1(12adb70a8283c6fec10e2221f1216a7fbfc99355) ) @@ -261,8 +604,8 @@ ROM_START( dmndhrtn ) // u51 was scratched for this set but believed to be AT90S ROM_LOAD( "at90s4414.u51", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "diamond_heart_new_mon_v20.0_u10.u10", 0x00000, 0x80000, CRC(7525bd95) SHA1(b34ab59bde9ecdfe03489a6eceda2c95afdee6c8) ) - ROM_LOAD( "diamond_heart_new_mon_v20.0_u11.u11", 0x80000, 0x80000, CRC(1ffc66a6) SHA1(fd5bfa9ec01ad7aa3060929dbce417babe241700) ) + ROM_LOAD16_BYTE( "diamond_heart_new_mon_v20.0_u10.u10", 0x00000, 0x80000, CRC(7525bd95) SHA1(b34ab59bde9ecdfe03489a6eceda2c95afdee6c8) ) + ROM_LOAD16_BYTE( "diamond_heart_new_mon_v20.0_u11.u11", 0x00001, 0x80000, CRC(1ffc66a6) SHA1(fd5bfa9ec01ad7aa3060929dbce417babe241700) ) ROM_REGION( 0x40000, "oki", 0 ) ROM_LOAD( "f29c51002t.u33", 0x00000, 0x40000, CRC(97f774cd) SHA1(7c5a1c4a0e7cfb71e24d174c43a83735abfc59c8) ) // no sticker @@ -284,8 +627,8 @@ ROM_START( honeybee ) // u51 was scratched for this set but believed to be AT90S ROM_LOAD( "at90s4414.u51", 0x0000, 0x1000, NO_DUMP ) ROM_REGION( 0x100000, "tiles", 0 ) - ROM_LOAD( "honey_bee_hb_tw_u10.u10", 0x00000, 0x80000, CRC(40526fe1) SHA1(58a3a16c4dc0fa6527571b924f43377657f0cc76) ) - ROM_LOAD( "honey_bee_hb_tw_u11.u11", 0x80000, 0x80000, CRC(3036a082) SHA1(16393fac3ccd5c2fc6ab9fd11f8530aace94e4fc) ) + ROM_LOAD16_BYTE( "honey_bee_hb_tw_u10.u10", 0x00000, 0x80000, CRC(40526fe1) SHA1(58a3a16c4dc0fa6527571b924f43377657f0cc76) ) + ROM_LOAD16_BYTE( "honey_bee_hb_tw_u11.u11", 0x00001, 0x80000, CRC(3036a082) SHA1(16393fac3ccd5c2fc6ab9fd11f8530aace94e4fc) ) ROM_REGION( 0x40000, "oki", 0 ) ROM_LOAD( "honey_bee_hb_tw_u33.u33", 0x00000, 0x40000, CRC(a85f1bfc) SHA1(c2b83a2570280a43241b89fdb21e87c8cf033409) ) @@ -301,7 +644,6 @@ ROM_END } // anonymous namespace -// TODO: possibly licensed to LSE, verify once it works -GAME( 2001, dmndhrt, 0, cle68k, dmndhrt, cle68k_state, empty_init, ROT0, "LSE", "Diamond Heart (v1.06)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // 2001/02/15 -GAME( 2003, dmndhrtn, 0, cle68k, dmndhrt, cle68k_state, empty_init, ROT0, "CLE", "Diamond Heart New (v20.0)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // 2003/04/25 -GAME( 2004, honeybee, 0, cle68k, dmndhrt, cle68k_state, empty_init, ROT0, "LSE", "Honey-Bee (v3.0)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // 2004/07/01 +GAME( 2001, dmndhrt, 0, cle68k, dmndhrt, cle68k_state, empty_init, ROT0, "LSE", "Diamond Heart (v1.06)", MACHINE_NOT_WORKING ) // 2001/02/15 +GAME( 2003, dmndhrtn, 0, cle68k, dmndhrtn, cle68k_state, empty_init, ROT0, "CLE", "Diamond Heart New (v20.0)", MACHINE_NOT_WORKING ) // 2003/04/25 +GAME( 2004, honeybee, 0, cle68k, honeybee, cle68k_state, empty_init, ROT0, "LSE", "Honey-Bee (v3.0)", MACHINE_NOT_WORKING ) // 2004/07/01