From 54863e336c80482bbb9e57ceb642a57fdbb4ed43 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 7 Nov 2024 18:08:09 +0100 Subject: New working clones ------------------ Ukiyo Box (Japan, v1.3.7) [Hammy] New systems marked not working ------------------------------ Arthur's Knights [Ioannis Bampoulas, TeamEurope] Fruit Cat (v2.00) [Ioannis Bampoulas, TeamEurope] Hi Lice (V102FA) [Ioannis Bampoulas, TeamEurope] - igs/goldstar.cpp: verified PROMs for cmast99 [Ioannis Bampoulas, TeamEurope] --- src/emu/xtal.cpp | 1 + src/mame/excellent/lastbank.cpp | 41 +++++++-- src/mame/igs/goldstar.cpp | 14 ++- src/mame/mame.lst | 8 ++ src/mame/skeleton/lgtz80.cpp | 188 ++++++++++++++++++++++++++++++++++++++++ src/mame/skeleton/vgame.cpp | 174 +++++++++++++++++++++++++++++++++++++ 6 files changed, 411 insertions(+), 15 deletions(-) create mode 100644 src/mame/skeleton/lgtz80.cpp create mode 100644 src/mame/skeleton/vgame.cpp diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index d4ea77f184d..13ee3065098 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -455,6 +455,7 @@ const double XTAL::known_xtals[] = { 42'105'200, // 42.1052_MHz_XTAL NEC PC-88xx 42'954'545, // 42.954545_MHz_XTAL CPS3 (12x NTSC subcarrier) 43'320'000, // 43.32_MHz_XTAL DEC VT420 + 44'000'000, // 44_MHz_XTAL VGame slots 44'100'000, // 44.1_MHz_XTAL Subsino's Bishou Jan 44'236'800, // 44.2368_MHz_XTAL ReCo6502, Fortune 32:16 44'452'800, // 44.4528_MHz_XTAL TeleVideo 965 diff --git a/src/mame/excellent/lastbank.cpp b/src/mame/excellent/lastbank.cpp index adde94c77d9..074aa24b8c3 100644 --- a/src/mame/excellent/lastbank.cpp +++ b/src/mame/excellent/lastbank.cpp @@ -14,7 +14,6 @@ Undumped games on similar hardware (ES-9402 or ES-9410): * Miracle Seven - Heaven's Gate Turbo * Multi Spin * Royal Choice Poker -* Ukiyo Box TODO: - lastbank: sprites should be clip masked during gameplay (verify); @@ -571,6 +570,15 @@ static INPUT_PORTS_START( fever13 ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( ukiyobx ) + PORT_INCLUDE( fever13 ) + + PORT_MODIFY("DSW4") + PORT_DIPNAME( 0x40, 0x40, "Hopper Access" ) PORT_DIPLOCATION("DSW4:7") + PORT_DIPSETTING( 0x00, "Slow" ) + PORT_DIPSETTING( 0x40, "Fast" ) +INPUT_PORTS_END + static INPUT_PORTS_START( mir7hg ) PORT_INCLUDE( fever13 ) @@ -682,7 +690,7 @@ ROM_START( lastbank ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "8.u48", 0x00000, 0x10000, CRC(3a7bfe10) SHA1(7dc543e11d3c0b9872fcc622339ade25383a1eb3) ) - ROM_REGION( 0x120000, "maincpu:gfx", 0 ) + ROM_REGION( 0x200000, "maincpu:gfx", ROMREGION_ERASEFF ) ROM_LOAD( "u11", 0x000000, 0x100000, CRC(2588d82d) SHA1(426f6821862d54123e53410e2776586ddf6b21e7) ) ROM_LOAD( "5.u10", 0x100000, 0x020000, CRC(51f3c5a7) SHA1(73d4c8817fe96d75be32c43e816e93c52b5d2b27) ) @@ -702,7 +710,7 @@ ROM_START( fever13 ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "4.u48", 0x00000, 0x10000, CRC(33cba6b2) SHA1(cf7d1c7c6215b2f83c9266f92f46d3cfc0242afc) ) - ROM_REGION( 0x120000, "maincpu:gfx", 0 ) + ROM_REGION( 0x200000, "maincpu:gfx", ROMREGION_ERASEFF ) // unlabeled mask ROM, socket marked as 23C8000 CG ROM ROM_LOAD( "u11", 0x000000, 0x100000, CRC(da59b0d8) SHA1(86fd3cd77aae22e103d11e697b8b4f70ae8b8197) ) @@ -713,6 +721,24 @@ ROM_START( fever13 ) ROM_LOAD( "2.u60", 0x00000, 0x80000, CRC(4e0da568) SHA1(6cd4d3facf8f05747d6cff03617bdfc91b5e9d67) ) ROM_END +// ES-9410 PCB +ROM_START( ukiyobx ) + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD( "5-9d33.u9", 0x00000, 0x40000,CRC(6a567f55) SHA1(087579e420d581439788561abddfe42fdeaaaa88) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "4.u48", 0x00000, 0x10000, CRC(33cba6b2) SHA1(cf7d1c7c6215b2f83c9266f92f46d3cfc0242afc) ) + + ROM_REGION( 0x200000, "maincpu:gfx", ROMREGION_ERASEFF ) + ROM_LOAD( "u11", 0x00000, 0x100000, CRC(da59b0d8) SHA1(86fd3cd77aae22e103d11e697b8b4f70ae8b8197) ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "es-9410.u55", 0x00000, 0x40000, CRC(09b5e4d6) SHA1(cf0235e9cf0577bf932beda7e4fb1b84410a3e0c) ) // 1xxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x80000, "essnd", 0 ) // Samples + ROM_LOAD( "es-9410.u60", 0x00000, 0x80000, CRC(f277afa9) SHA1(1b5a8abad37b6f19730f99bf97334b4eb2da4399) ) +ROM_END + // ES-9410 PCB ROM_START( mir7hg ) // v1.0.2 Feb 19 1996 15:05:17 ROM_REGION( 0x40000, "maincpu", 0 ) @@ -721,7 +747,7 @@ ROM_START( mir7hg ) // v1.0.2 Feb 19 1996 15:05:17 ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "3.u48", 0x00000, 0x10000, CRC(895da366) SHA1(4e82e2ee9b6a91453b8dca9f313714ef846dec56) ) // 11111xxxxxxxxxxx = 0xFF - ROM_REGION( 0x80000, "maincpu:gfx", 0 ) + ROM_REGION( 0x200000, "maincpu:gfx", ROMREGION_ERASEFF ) ROM_LOAD( "2.u11", 0x00000, 0x80000, CRC(ddb65010) SHA1(f5af9f63f353023d2ce8e8787a13ec090158ac25) ) ROM_REGION( 0x40000, "oki", 0 ) @@ -734,6 +760,7 @@ ROM_END } // anonymous namespace -GAME( 1994, lastbank, 0, lastbank, lastbank, lastbank_state, empty_init, ROT0, "Excellent System", "Last Bank (v1.16)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, fever13, 0, lastbank, fever13, fever13_state, empty_init, ROT0, "Excellent System", "Fever 13 (Japan, v1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) -GAME( 1996, mir7hg, 0, lastbank, mir7hg, fever13_state, empty_init, ROT0, "Excellent System", "Miracle Seven - Heaven's Gate (Japan, v1.0.2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1994, lastbank, 0, lastbank, lastbank, lastbank_state, empty_init, ROT0, "Excellent System", "Last Bank (v1.16)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, fever13, 0, lastbank, fever13, fever13_state, empty_init, ROT0, "Excellent System", "Fever 13 (Japan, v1.3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1995, ukiyobx, fever13, lastbank, ukiyobx, fever13_state, empty_init, ROT0, "Excellent System", "Ukiyo Box (Japan, v1.3.7)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) +GAME( 1996, mir7hg, 0, lastbank, mir7hg, fever13_state, empty_init, ROT0, "Excellent System", "Miracle Seven - Heaven's Gate (Japan, v1.0.2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp index 01f4636ca79..3891bf1e4c3 100644 --- a/src/mame/igs/goldstar.cpp +++ b/src/mame/igs/goldstar.cpp @@ -13356,13 +13356,12 @@ ROM_START( cmast99 ) ROM_REGION( 0x10000, "user1", 0 ) ROM_FILL( 0x0000, 0x10000, 0xff ) // U53 (girl bitmaps) not populated - /* proms taken from cmv4, probably wrong; U79? and U84 known to be identical to Cherry Master 89 */ ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "82s129.u84", 0x0000, 0x0100, CRC(0489b760) SHA1(78f8632b17a76335183c5c204cdec856988368b0) BAD_DUMP ) - ROM_LOAD( "82s129.u79", 0x0100, 0x0100, CRC(21eb5b19) SHA1(9b8425bdb97f11f4855c998c7792c3291fd07470) BAD_DUMP ) + ROM_LOAD( "82s129.u84", 0x0000, 0x0100, CRC(0489b760) SHA1(78f8632b17a76335183c5c204cdec856988368b0) ) + ROM_LOAD( "82s129.u79", 0x0100, 0x0100, CRC(21eb5b19) SHA1(9b8425bdb97f11f4855c998c7792c3291fd07470) ) ROM_REGION( 0x100, "proms2", 0 ) - ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) BAD_DUMP ) + ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) ) ROM_END @@ -13392,13 +13391,12 @@ ROM_START( cmast99b ) ROM_REGION( 0x10000, "user1", 0 ) ROM_FILL( 0x0000, 0x10000, 0xff ) // U53 (girl bitmaps) not populated - /* proms taken from cmv4, probably wrong; U79? and U84 known to be identical to Cherry Master 89 */ ROM_REGION( 0x200, "proms", 0 ) - ROM_LOAD( "82s129.u84", 0x0000, 0x0100, CRC(0489b760) SHA1(78f8632b17a76335183c5c204cdec856988368b0) BAD_DUMP ) - ROM_LOAD( "82s129.u79", 0x0100, 0x0100, CRC(21eb5b19) SHA1(9b8425bdb97f11f4855c998c7792c3291fd07470) BAD_DUMP ) + ROM_LOAD( "82s129.u84", 0x0000, 0x0100, CRC(0489b760) SHA1(78f8632b17a76335183c5c204cdec856988368b0) ) + ROM_LOAD( "82s129.u79", 0x0100, 0x0100, CRC(21eb5b19) SHA1(9b8425bdb97f11f4855c998c7792c3291fd07470) ) ROM_REGION( 0x100, "proms2", 0 ) - ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) BAD_DUMP ) + ROM_LOAD( "82s129.u46", 0x0000, 0x0100, CRC(50ec383b) SHA1(ae95b92bd3946b40134bcdc22708d5c6b0f4c23e) ) ROM_END /* diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 453e4c910a7..5a61c988dbd 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17915,6 +17915,7 @@ pwrflip // (c) 1994 Excellent System fever13 // (c) 1995 Excellent System lastbank // (c) 1994 Excellent System mir7hg // (c) 1996 Excellent System +ukiyobx // (c) 1995 Excellent System @source:excellent/witch.cpp keirinou // (c) 1987 Excellent System @@ -42408,6 +42409,10 @@ lft1510 // @source:skeleton/lg-dvd.cpp lggp40 // +@source:skeleton/lgtz80.cpp +arthurkn // +fruitcat // + @source:skeleton/lilith.cpp lilith // @@ -42766,6 +42771,9 @@ vector3 // @source:skeleton/vectrix.cpp vectrix // (c) 19?? Olympia? +@source:skeleton/vgame.cpp +hilice // + @source:skeleton/vp415.cpp vp415 // (c) 1983 Philips diff --git a/src/mame/skeleton/lgtz80.cpp b/src/mame/skeleton/lgtz80.cpp new file mode 100644 index 00000000000..41da4fee694 --- /dev/null +++ b/src/mame/skeleton/lgtz80.cpp @@ -0,0 +1,188 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Video slots by Logic Game Tech Int. (LGT). + +The main components are: +scratched off rectangular 100-pin chip, stickered ASIC 1 +scratched off square 100-pin chip, stickered ASIC 2 +scratched off square 100-pin chip, stickered ASIC 3 +scratched off square 44-pin chip, stickered ASIC 4 +12 MHz XTAL (near ASCI 2) +7.3728 MHz XTAL (near ASIC 4) +U6295 sound chip +HM86171-80 RAM (near CPU ROM) +6x M5M5256DVP (1 near CPU ROM, 5 near GFX ROMs) + +The two dumped games use PCBs with different layout, however the components appear +to be the same or at least same from different manufacturers. + +TODO: everything. Exact CPU model isn't identified, but it's surely a Z80 derivative. +*/ + + +#include "emu.h" + +#include "cpu/z80/z80.h" +#include "sound/okim6295.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class lgtz80_state : public driver_device +{ +public: + lgtz80_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + void lgtz80(machine_config &config) ATTR_COLD; + + void init_arthurkn() ATTR_COLD; + void init_fruitcat() ATTR_COLD; + +protected: + virtual void video_start() override ATTR_COLD; + +private: + required_device m_maincpu; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map) ATTR_COLD; +}; + + +uint32_t lgtz80_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + + return 0; +} + +void lgtz80_state::video_start() +{ +} + + +void lgtz80_state::program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} + + +static INPUT_PORTS_START( fruitcat ) + 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_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_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 ) + +// no DSW on PCB +INPUT_PORTS_END + + +// TODO +static GFXDECODE_START( gfx_lgtz80 ) +GFXDECODE_END + + +void lgtz80_state::lgtz80(machine_config &config) +{ + Z80(config, m_maincpu, 12_MHz_XTAL / 4 ); // exact CPU model and divider not verified + m_maincpu->set_addrmap(AS_PROGRAM, &lgtz80_state::program_map); + // m_maincpu->set_vblank_int("screen", FUNC(lgtz80_state::irq0_line_hold)); + + 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_visarea(0, 64*8-1, 0, 32*8-1); + screen.set_screen_update(FUNC(lgtz80_state::screen_update)); + + GFXDECODE(config, "gfxdecode", "palette", gfx_lgtz80); + + PALETTE(config, "palette").set_entries(0x100); // TODO + + 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 +} + + +ROM_START( fruitcat ) + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "fruit_cat_v2.00.u8", 0x00000, 0x20000, CRC(83d71147) SHA1(4253f5d3273bce22262d34a08f492fa72f776aa5) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "fruit_cat_rom2.u22", 0x000000, 0x200000, CRC(c78150e8) SHA1(eb276b9b2c4e45b8caf81f17831f6201a6d7392c) ) // actual label has ROM2 between brackets + ROM_LOAD( "fruit_cat_rom3.u29", 0x200000, 0x200000, CRC(71afea49) SHA1(89c814302fb58705a479310edb433594d151dfb5) ) // actual label has ROM3 between brackets + + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "am29f040.u2", 0x00000, 0x80000, CRC(efd1209e) SHA1(5cd76c9d3073b2e689aa7903e2d65b8ce5b091ca) ) + + ROM_REGION( 0x200, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf16v8b-15pc.u21", 0x000, 0x117, NO_DUMP ) +ROM_END + +ROM_START( arthurkn ) // no stickers on ROMs + ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "w29ee011.u21", 0x00000, 0x20000, CRC(d8e2b9f4) SHA1(e8c55c42d7b57fde3168e07fa51f307b83803967) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "m27c160.u42", 0x000000, 0x200000, CRC(f03a9b0d) SHA1(1e8d9efe7d50871ffc6a0c4c7f08047dd5aac294) ) + ROM_LOAD( "m27c160.u43", 0x200000, 0x200000, CRC(31d2caab) SHA1(0ee7f35dadb1d5159a487701d059bfd2f54f8c02) ) + + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "m29f040b.u18", 0x00000, 0x80000, CRC(2b9ab706) SHA1(92154126c7db227acaa4966f71d28475c622e1e6) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x200, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "atf16v8b-15pc.u3", 0x000, 0x117, NO_DUMP ) +ROM_END + + +void lgtz80_state::init_fruitcat() +{ + // TODO: encryption involves at least a bitswap, maybe conditional on address lines (not verified yet) +} + +void lgtz80_state::init_arthurkn() +{ + // TODO: encryption involves at least a bitswap, maybe conditional on address lines (not verified yet) +} + +} // anonymous namespace + + +GAME( 2003?, fruitcat, 0, lgtz80, fruitcat, lgtz80_state, init_fruitcat, ROT0, "LGT", "Fruit Cat (v2.00)", MACHINE_IS_SKELETON ) +GAME( 200?, arthurkn, 0, lgtz80, fruitcat, lgtz80_state, init_arthurkn, ROT0, "LGT", "Arthur's Knights", MACHINE_IS_SKELETON ) diff --git a/src/mame/skeleton/vgame.cpp b/src/mame/skeleton/vgame.cpp new file mode 100644 index 00000000000..5cdfe7c7981 --- /dev/null +++ b/src/mame/skeleton/vgame.cpp @@ -0,0 +1,174 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Video slots by VGame. + +The main components are: +rectangular 128-pin chip, marked VGAME-007 (probably CPU) +square 208-pin chip, marked VGAME-008 (probably video chip) +44 MHz XTAL +LY62256SL SRAM (near VGAME-007) +2x LY61L256JL SRAM (near VGAME-008) +U6295 sound chip +2 banks of 8 DIP switches + +TODO: everything. CPU core isn't identified and code is encrypted. +*/ + + +#include "emu.h" + +#include "cpu/m68000/m68000.h" +#include "sound/okim6295.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class vgame_state : public driver_device +{ +public: + vgame_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu") + { } + + void vgame(machine_config &config) ATTR_COLD; + + void init_hilice() ATTR_COLD; + +protected: + virtual void video_start() override ATTR_COLD; + +private: + required_device m_maincpu; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map) ATTR_COLD; +}; + + +uint32_t vgame_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + + return 0; +} + +void vgame_state::video_start() +{ +} + + +void vgame_state::program_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); +} + + +static INPUT_PORTS_START( hilice ) + 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_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_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_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") +INPUT_PORTS_END + + +// TODO +static GFXDECODE_START( gfx_vgame ) +GFXDECODE_END + + +void vgame_state::vgame(machine_config &config) +{ + M68000(config, m_maincpu, 44_MHz_XTAL); // CPU core and divider unknown + m_maincpu->set_addrmap(AS_PROGRAM, &vgame_state::program_map); + // m_maincpu->set_vblank_int("screen", FUNC(vgame_state::irq0_line_hold)); + + 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_visarea(0, 64*8-1, 0, 32*8-1); + screen.set_screen_update(FUNC(vgame_state::screen_update)); + + GFXDECODE(config, "gfxdecode", "palette", gfx_vgame); + + PALETTE(config, "palette").set_entries(0x100); // TODO + + SPEAKER(config, "mono").front_center(); + + OKIM6295(config, "oki", 44_MHz_XTAL / 44, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // pin 7 and clock not verified +} + + +ROM_START( hilice ) + ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 ) + ROM_LOAD( "hi_lice_v102fa.u13", 0x000000, 0x200000, CRC(b2588f54) SHA1(0d046e56596611954a9d2a9a30746d8aa370431b) ) + + ROM_REGION( 0x400000, "gfx", 0 ) + ROM_LOAD( "hi_lice_cg_01fu3.u3", 0x000000, 0x200000, CRC(8ad6b233) SHA1(deaffd391265c885afb2f171089c1b33429470f1) ) + ROM_LOAD( "hi_lice_cg_01fu8.u8", 0x200000, 0x200000, BAD_DUMP CRC(b2588f54) SHA1(0d046e56596611954a9d2a9a30746d8aa370431b) ) // didn't give consistent reads + + ROM_REGION( 0x200000, "oki", 0 ) + ROM_LOAD( "hi_lice_sp_100f.u45", 0x000000, 0x200000, CRC(b2588f54) SHA1(0d046e56596611954a9d2a9a30746d8aa370431b) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00 +ROM_END + + +void vgame_state::init_hilice() +{ + // TODO: decryption +} + +} // anonymous namespace + + +GAME( 200?, hilice, 0, vgame, hilice, vgame_state, init_hilice, ROT0, "VGame", "Hi Lice (V102FA)", MACHINE_IS_SKELETON ) -- cgit v1.2.3