From e4d3e12e25efa7cff945db53990c88628292b512 Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Fri, 29 Mar 2019 22:13:20 +0100 Subject: [PATCH] ltcasino: Rewrite the rest of the driver All games are now fully playable with correct graphics. - ltcasino: This is the monochrome version. Added a layout with color overlays based on a flyer - ltcasinn: Fixed reset on coin-up - Corrected RAM size - Hooked up CRT5037 - Adjusted clocks - Resolved a few more dipswitch functions --- src/mame/drivers/ltcasino.cpp | 396 ++++++++++++++++++++-------------- src/mame/layout/ltcasinn.lay | 43 ++++ src/mame/layout/ltcasino.lay | 37 +++- 3 files changed, 310 insertions(+), 166 deletions(-) create mode 100644 src/mame/layout/ltcasinn.lay diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp index 86d9949d0b5..f1e9d12bfb2 100644 --- a/src/mame/drivers/ltcasino.cpp +++ b/src/mame/drivers/ltcasino.cpp @@ -1,18 +1,17 @@ -// license:BSD-3-Clause -// copyright-holders:Pierpaolo Prazzoli, David Haywood -/* +// license: BSD-3-Clause +// copyright-holders: Pierpaolo Prazzoli, David Haywood, Dirk Best +/*************************************************************************** -Little Casino -Mini Vegas 4in1 + Little Casino + Mini Vegas 4in1 -Non-Payout 'Gambling' style games. + Non-Payout 'Gambling' style games. -TODO: + TODO: + - color version of the first version is undumped? + - figure out the rest of the dipswitches + - keyboard -* colours (there are 2 flyers which show different colours?) -* hook up TMS9937 -* figure out the rest of the dipswitches -* keyboard Mini Vegas CC-089 (c) Entertainment Enterprises Ltd. 1983 @@ -53,155 +52,95 @@ Other: Hitachi HD46821P 1MHz NMOS Peripheral Interface Adapter (PIA) x 2 D1 - Power On Diode 44 pin edge connector -*/ + +***************************************************************************/ #include "emu.h" #include "cpu/m6502/m6502.h" #include "machine/6821pia.h" #include "sound/ay8910.h" +#include "video/tms9927.h" #include "emupal.h" #include "screen.h" #include "speaker.h" #include "ltcasino.lh" +#include "ltcasinn.lh" +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + class ltcasino_state : public driver_device { public: ltcasino_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_pia{ { *this, "pia0" }, { *this, "pia1" } }, - m_tile_num_ram(*this, "tile_nuram"), - m_tile_atr_ram(*this, "tile_atr_ram"), m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode") + m_pia{ { *this, "pia0" }, { *this, "pia1" } }, + m_vtc(*this, "vtc"), + m_video_ram(*this, "video_ram"), + m_attribute_ram(*this, "attribute_ram"), + m_gfxdecode(*this, "gfxdecode"), + m_lamps(*this, "button_%u", 0U), + m_tilemap(nullptr) { } void init_mv4in1(); - void ltcasino(machine_config &config); -protected: - virtual void video_start() override; + void ltcasino(machine_config &config); + void ltcasinn(machine_config &config); private: - required_device m_pia[2]; - required_shared_ptr m_tile_num_ram; - required_shared_ptr m_tile_atr_ram; required_device m_maincpu; + required_device m_pia[2]; + required_device m_vtc; + required_shared_ptr m_video_ram; + required_shared_ptr m_attribute_ram; required_device m_gfxdecode; + output_finder<5> m_lamps; tilemap_t *m_tilemap; - DECLARE_WRITE8_MEMBER(tile_num_w); - DECLARE_WRITE8_MEMBER(tile_atr_w); + void main_map(address_map &map); + + void ltcasinn_palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TILE_GET_INFO_MEMBER(ltcasino_tile_info); + TILE_GET_INFO_MEMBER(ltcasinn_tile_info); + + void machine_start_ltcasino(); + void machine_start_ltcasinn(); DECLARE_WRITE8_MEMBER(output_r_w); DECLARE_WRITE8_MEMBER(output_t_w); - - TILE_GET_INFO_MEMBER(get_tile_info); - void ltcasino_palette(palette_device &palette) const; - uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - - void main_map(address_map &map); }; -/* Video */ - -void ltcasino_state::ltcasino_palette(palette_device &palette) const -{ - for (int i = 0; i < 64; i++) - { - palette.set_pen_color(2*i+0, pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1)); - palette.set_pen_color(2*i+1, pal1bit(i >> 3), pal1bit(i >> 5), pal1bit(i >> 4)); - } -} - -/* - x--- ---- tile bank - -xxx ---- foreground color - ---- x--- unknown (used by ltcasino) - ---- -xxx background color - */ -TILE_GET_INFO_MEMBER(ltcasino_state::get_tile_info) -{ - int tileno = m_tile_num_ram[tile_index]; - // TODO: wtf +1 on attribute offset otherwise glitches occurs on left side of objects? - int colour = m_tile_atr_ram[(tile_index+1) & 0x7ff]; - - tileno += (colour & 0x80) << 1; - - SET_TILE_INFO_MEMBER(0,tileno,((colour & 0x70) >> 1) | (colour & 7),0); -} - -void ltcasino_state::video_start() -{ - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ltcasino_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8, 8,64,32); -} - -uint32_t ltcasino_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - // not sure what's connected here, game wants IRQ2 to be active - m_pia[0]->cb2_w(0); - m_pia[0]->cb2_w(1); - - m_tilemap->draw(screen, bitmap, cliprect, 0,0); - return 0; -} - -WRITE8_MEMBER(ltcasino_state::tile_num_w) -{ - m_tile_num_ram[offset] = data; - m_tilemap->mark_tile_dirty(offset); -} - -WRITE8_MEMBER(ltcasino_state::tile_atr_w) -{ - m_tile_atr_ram[offset] = data; - m_tilemap->mark_tile_dirty((offset + 1) & 0x7ff); -} - -WRITE8_MEMBER(ltcasino_state::output_r_w) -{ - // 7------- unknown (toggles rapidly) - // -6------ unknown (toggles rapidly) - // --5----- coin counter - // ---43210 button lamps 5 to 1 - - output().set_value("button_0", BIT(data, 0)); // button 1 - output().set_value("button_1", BIT(data, 1)); // button 2 - output().set_value("button_2", BIT(data, 2)); // button 3 - output().set_value("button_3", BIT(data, 3)); // button 4 - output().set_value("button_4", BIT(data, 4)); // button 5 - - machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); -} - -WRITE8_MEMBER(ltcasino_state::output_t_w) -{ - // 76543210 unknown - - logerror("output_t_w: %02x\n", data); -} +//************************************************************************** +// ADDRESS MAPS +//************************************************************************** void ltcasino_state::main_map(address_map &map) { - map(0x0000, 0x7fff).ram(); + map.unmap_value_high(); + map(0x0000, 0x07ff).ram(); map(0x8000, 0xcfff).rom(); - map(0xd000, 0xd7ff).ram().w(FUNC(ltcasino_state::tile_num_w)).share(m_tile_num_ram); - map(0xd800, 0xdfff).ram(); - map(0xe000, 0xe7ff).ram().w(FUNC(ltcasino_state::tile_atr_w)).share(m_tile_atr_ram); - map(0xe800, 0xebff).ram(); + map(0xd000, 0xd7ff).ram().share(m_video_ram); + map(0xe000, 0xe7ff).ram().share(m_attribute_ram); map(0xec00, 0xec03).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xec10, 0xec13).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write)); map(0xec20, 0xec21).r("aysnd", FUNC(ay8910_device::data_r)); map(0xec20, 0xec21).w("aysnd", FUNC(ay8910_device::data_address_w)); - map(0xec30, 0xec3f).ram(); // TMS9937 - map(0xec3e, 0xec3e).nopr(); //not used + map(0xec30, 0xec3f).rw("vtc", FUNC(crt5037_device::read), FUNC(crt5037_device::write)); map(0xf000, 0xffff).rom(); } +//************************************************************************** +// INPUT PORT DEFINITIONS +//************************************************************************** + static INPUT_PORTS_START( ltcasino ) PORT_START("COIN") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1) PORT_WRITE_LINE_DEVICE_MEMBER("pia0", pia6821_device, ca1_w) @@ -249,10 +188,19 @@ static INPUT_PORTS_START( ltcasino ) PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C )) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C )) PORT_DIPLOCATION("A:3,4") - PORT_DIPUNKNOWN_DIPLOC(0x10, IP_ACTIVE_LOW, "A:5") - PORT_DIPUNKNOWN_DIPLOC(0x20, IP_ACTIVE_LOW, "A:6") + PORT_DIPNAME(0x10, 0x10, "Coin Limit") + PORT_DIPSETTING( 0x00, DEF_STR( Off )) + PORT_DIPSETTING( 0x10, DEF_STR( On )) // limits to 15 coins + PORT_DIPLOCATION("A:5") + PORT_DIPNAME(0x20, 0x00, DEF_STR( Unknown )) + PORT_DIPSETTING( 0x00, DEF_STR( On )) // needs to be 0 or ltcasinn can reset on coin-up + PORT_DIPSETTING( 0x20, DEF_STR( Off )) + PORT_DIPLOCATION("A:6") PORT_DIPUNKNOWN_DIPLOC(0x40, IP_ACTIVE_LOW, "A:7") - PORT_DIPUNKNOWN_DIPLOC(0x80, IP_ACTIVE_LOW, "A:8") + PORT_DIPNAME(0x80, 0x80, "Screen Mode") + PORT_DIPSETTING( 0x80, "60 Hz") + PORT_DIPSETTING( 0x00, "50 Hz") + PORT_DIPLOCATION("A:8") PORT_START("B") PORT_DIPUNKNOWN_DIPLOC(0x01, IP_ACTIVE_LOW, "B:1") @@ -274,10 +222,17 @@ static INPUT_PORTS_START( ltcasinn ) PORT_MODIFY("COIN") PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED) + PORT_MODIFY("B") + PORT_DIPNAME(0x02, 0x02, "Memory Test") // tests d000 to d7ff + PORT_DIPSETTING( 0x00, DEF_STR( Off )) + PORT_DIPSETTING( 0x02, DEF_STR( On )) + PORT_DIPLOCATION("B:2") + PORT_MODIFY("S") PORT_DIPNAME(0x01, 0x01, "Keyboard") PORT_DIPSETTING( 0x01, DEF_STR( Off )) PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPLOCATION("DSW3:1") INPUT_PORTS_END static INPUT_PORTS_START( mv4in1 ) @@ -298,9 +253,66 @@ static INPUT_PORTS_START( mv4in1 ) PORT_DIPNAME(0x01, 0x01, "Keyboard") PORT_DIPSETTING( 0x01, DEF_STR( Off )) PORT_DIPSETTING( 0x00, DEF_STR( On )) + PORT_DIPLOCATION("DSW3:1") INPUT_PORTS_END +//************************************************************************** +// VIDEO EMULATION +//************************************************************************** + +void ltcasino_state::ltcasinn_palette(palette_device &palette) const +{ + for (int i = 0; i < 8; i++) + { + // basic 3 bit palette + palette.set_indirect_color(i, rgb_t(pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1))); + + // setup pen colors for the drawgfx system + for (int j = 0; j < 8; j++) + { + palette.set_pen_indirect((j << 4) | (i << 1) | 0, i); + palette.set_pen_indirect((j << 4) | (i << 1) | 1, j); + } + } +} + +/* + x--- ---- tile bank + -xxx ---- foreground color + ---- x--- unknown (used by ltcasino) + ---- -xxx background color + */ +TILE_GET_INFO_MEMBER(ltcasino_state::ltcasino_tile_info) +{ + uint16_t code = m_video_ram[tile_index]; + // +1 on attribute offset otherwise glitches occurs on left side of objects? + uint8_t attr = m_attribute_ram[(tile_index + 1) & 0x7ff]; + + code |= BIT(attr, 7) << 8; + + SET_TILE_INFO_MEMBER(0, code, 0, 0); +} + +TILE_GET_INFO_MEMBER(ltcasino_state::ltcasinn_tile_info) +{ + uint16_t code = m_video_ram[tile_index]; + // +1 on attribute offset otherwise glitches occurs on left side of objects? + uint8_t attr = m_attribute_ram[(tile_index + 1) & 0x7ff]; + + code |= BIT(attr, 7) << 8; + + SET_TILE_INFO_MEMBER(0, code, ((attr & 0x70) >> 1) | (attr & 7), 0); +} + +uint32_t ltcasino_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_tilemap->mark_all_dirty(); + m_tilemap->draw(screen, bitmap, cliprect, 0, 0); + + return 0; +} + static const gfx_layout tiles8x8_layout = { 8,8, @@ -308,22 +320,74 @@ static const gfx_layout tiles8x8_layout = 1, { 0 }, { 7, 6, 5, 4, 3, 2, 1, 0 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + { STEP8(0,8) }, 8*8 }; - static GFXDECODE_START( gfx_ltcasino ) - GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 64 ) + GFXDECODE_ENTRY("gfx1", 0, tiles8x8_layout, 0, 1) +GFXDECODE_END + +static GFXDECODE_START( gfx_ltcasinn ) + GFXDECODE_ENTRY("gfx1", 0, tiles8x8_layout, 0, 64) GFXDECODE_END +//************************************************************************** +// MACHINE EMULATION +//************************************************************************** + +void ltcasino_state::init_mv4in1() +{ + uint8_t *rom = memregion("maincpu")->base(); + for (int i = 0; i < 0x10000; i++) + rom[i] = bitswap<8>(rom[i], 7, 6, 5, 4, 3, 1, 2, 0); +} + +void ltcasino_state::machine_start_ltcasino() +{ + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ltcasino_state::ltcasino_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_lamps.resolve(); +} + +void ltcasino_state::machine_start_ltcasinn() +{ + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ltcasino_state::ltcasinn_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_lamps.resolve(); +} + +WRITE8_MEMBER(ltcasino_state::output_r_w) +{ + // 7------- unknown (toggles rapidly) + // -6------ unknown (toggles rapidly) + // --5----- coin counter + // ---43210 button lamps 5 to 1 + + m_lamps[0] = BIT(data, 0); // button 1 + m_lamps[1] = BIT(data, 1); // button 2 + m_lamps[2] = BIT(data, 2); // button 3 + m_lamps[3] = BIT(data, 3); // button 4 + m_lamps[4] = BIT(data, 4); // button 5 + + machine().bookkeeping().coin_counter_w(0, BIT(data, 5)); +} + +WRITE8_MEMBER(ltcasino_state::output_t_w) +{ + // 76543210 unknown + + logerror("output_t_w: %02x\n", data); +} + + +//************************************************************************** +// MACHINE DEFINTIONS +//************************************************************************** + void ltcasino_state::ltcasino(machine_config &config) { - /* basic machine hardware */ - M6502(config, m_maincpu, XTAL(18'432'000)/9); /* 2.048MHz ?? (or 18.432MHz/8 = 2.304MHz) - not verified */ + M6502(config, m_maincpu, 18.432_MHz_XTAL/16); // clock unknown m_maincpu->set_addrmap(AS_PROGRAM, <casino_state::main_map); - m_maincpu->set_vblank_int("screen", FUNC(ltcasino_state::irq0_line_hold)); PIA6821(config, m_pia[0], 0); m_pia[0]->readpa_handler().set_ioport("Q"); @@ -333,45 +397,64 @@ void ltcasino_state::ltcasino(machine_config &config) m_pia[1]->readpa_handler().set_ioport("S"); m_pia[1]->writepb_handler().set(FUNC(ltcasino_state::output_t_w)); - /* video hardware */ + MCFG_MACHINE_START_OVERRIDE(ltcasino_state, ltcasino) + + // video hardware + CRT5037(config, m_vtc, 18.432_MHz_XTAL/16); // this clock gives about 61/51 hz + m_vtc->set_char_width(8); + m_vtc->set_screen("screen"); + m_vtc->set_visarea(48, 463, 0, 255); + m_vtc->vsyn_callback().set_inputline("maincpu", 0); // ? + m_vtc->vsyn_callback().append(m_pia[0], FUNC(pia6821_device::cb2_w)); // ? + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(64*8, 32*8); - screen.set_visarea(6*8, 58*8-1, 0, 32*8-1); + screen.set_raw(18.432_MHz_XTAL/2, 560, 48, 464, 268, 0, 256); screen.set_screen_update(FUNC(ltcasino_state::screen_update)); screen.set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_ltcasino); - PALETTE(config, "palette", FUNC(ltcasino_state::ltcasino_palette), 2*64); - config.set_default_layout(layout_ltcasino); + PALETTE(config, "palette", palette_device::MONOCHROME); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); - ay8910_device &aysnd(AY8910(config, "aysnd", XTAL(18'432'000)/18)); /* 1.024MHz ?? (or 18.432MHz/16 = 1.152MHz) - not verified */ + ay8910_device &aysnd(AY8910(config, "aysnd", 18.432_MHz_XTAL/16)); // clock unknown aysnd.port_a_read_callback().set_ioport("A"); aysnd.port_b_read_callback().set_ioport("B"); - //ltcasino -> pc: F3F3 (A in service) and F3FD (B in service) aysnd.add_route(ALL_OUTPUTS, "mono", 0.4); } +void ltcasino_state::ltcasinn(machine_config &config) +{ + ltcasino(config); + + MCFG_MACHINE_START_OVERRIDE(ltcasino_state, ltcasinn) + + config.device_remove("palette"); + PALETTE(config, "palette", FUNC(ltcasino_state::ltcasinn_palette), 128, 8); + + m_gfxdecode->set_info(gfx_ltcasinn); +} + + +//************************************************************************** +// ROM DEFINITIONS +//************************************************************************** ROM_START( ltcasino ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "a", 0x8000, 0x1000, CRC(14909fee) SHA1(bf53fa65da7f013ea1ac6b4942cdfdb34ef16252) ) - ROM_LOAD( "b", 0x9800, 0x0800, CRC(1473f854) SHA1(eadaec1f6d653e61458bc262945c20140f4530eb) ) - ROM_LOAD( "c", 0xa800, 0x0800, CRC(7a07004b) SHA1(62bd0f3d12b7eada6fc271abea60569aca7262b0) ) - ROM_LOAD( "d", 0xb800, 0x0800, CRC(5148cafc) SHA1(124039f48784bf032f612714db73fb67a216a1e7) ) - ROM_LOAD( "e", 0xc800, 0x0800, CRC(5f9e103a) SHA1(b0e9ace4c3962c06e5250fac16a245dca711350f) ) - ROM_LOAD( "f", 0xf000, 0x1000, CRC(7345aada) SHA1(6640f5eb1130c8f1cb197eb12b8e6403c7f8d34d) ) + ROM_LOAD( "a", 0x8000, 0x1000, CRC(14909fee) SHA1(bf53fa65da7f013ea1ac6b4942cdfdb34ef16252) ) + ROM_LOAD( "b", 0x9800, 0x0800, CRC(1473f854) SHA1(eadaec1f6d653e61458bc262945c20140f4530eb) ) + ROM_LOAD( "c", 0xa800, 0x0800, CRC(7a07004b) SHA1(62bd0f3d12b7eada6fc271abea60569aca7262b0) ) + ROM_LOAD( "d", 0xb800, 0x0800, CRC(5148cafc) SHA1(124039f48784bf032f612714db73fb67a216a1e7) ) + ROM_LOAD( "e", 0xc800, 0x0800, CRC(5f9e103a) SHA1(b0e9ace4c3962c06e5250fac16a245dca711350f) ) + ROM_LOAD( "f", 0xf000, 0x1000, CRC(7345aada) SHA1(6640f5eb1130c8f1cb197eb12b8e6403c7f8d34d) ) ROM_REGION( 0x0800, "gfx1", 0 ) - ROM_LOAD( "v", 0x0000, 0x0800, CRC(f1f75675) SHA1(8f3777e6b2a3f824f94b28669cac501ec02bbf36) ) + ROM_LOAD( "v", 0x0000, 0x0800, CRC(f1f75675) SHA1(8f3777e6b2a3f824f94b28669cac501ec02bbf36) ) ROM_END - ROM_START( ltcasinn ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "lc2_ra.bin", 0x8000, 0x1000, CRC(1a595442) SHA1(b8fe3e5ed2024a57187c0ce547c1bbef2429ed63) ) @@ -387,26 +470,23 @@ ROM_END ROM_START( mv4in1 ) ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "g.ic13", 0x8000, 0x1000, CRC(ac33bd85) SHA1(fd555f70d0a7040473d35ec38e19185671a471ea) ) - ROM_LOAD( "f.ic14", 0x9000, 0x1000, CRC(f95c87d1) SHA1(df5ed53722ec55a97eabe10b0ed3f1ba32cbe55f) ) - ROM_LOAD( "e.ic15", 0xa000, 0x1000, CRC(e525fcf2) SHA1(f1ec0c514e25ec4a1caf737ff8a962c81fb2706a) ) - ROM_LOAD( "d.ic16", 0xb000, 0x1000, CRC(ab34673f) SHA1(520a173a342a27b5f9d995e6f53c3a2f0f359f9e) ) - ROM_LOAD( "c.ic17", 0xc000, 0x1000, CRC(e384edf4) SHA1(99042528ce2b35191248d90162ca06a1a585667c) ) - ROM_LOAD( "b.ic18", 0xf000, 0x1000, CRC(3450b862) SHA1(816d13fd8d03c299c1dbecf971ee5fae2f1d64bc) ) + ROM_LOAD( "g.ic13", 0x8000, 0x1000, CRC(ac33bd85) SHA1(fd555f70d0a7040473d35ec38e19185671a471ea) ) + ROM_LOAD( "f.ic14", 0x9000, 0x1000, CRC(f95c87d1) SHA1(df5ed53722ec55a97eabe10b0ed3f1ba32cbe55f) ) + ROM_LOAD( "e.ic15", 0xa000, 0x1000, CRC(e525fcf2) SHA1(f1ec0c514e25ec4a1caf737ff8a962c81fb2706a) ) + ROM_LOAD( "d.ic16", 0xb000, 0x1000, CRC(ab34673f) SHA1(520a173a342a27b5f9d995e6f53c3a2f0f359f9e) ) + ROM_LOAD( "c.ic17", 0xc000, 0x1000, CRC(e384edf4) SHA1(99042528ce2b35191248d90162ca06a1a585667c) ) + ROM_LOAD( "b.ic18", 0xf000, 0x1000, CRC(3450b862) SHA1(816d13fd8d03c299c1dbecf971ee5fae2f1d64bc) ) ROM_REGION( 0x1000, "gfx1", 0 ) - ROM_LOAD( "a.ic19", 0x0000, 0x1000, CRC(a25c125e) SHA1(e0ba83ccddbd82a2bf52585ae0accb9192cbb00e) ) + ROM_LOAD( "a.ic19", 0x0000, 0x1000, CRC(a25c125e) SHA1(e0ba83ccddbd82a2bf52585ae0accb9192cbb00e) ) ROM_END -void ltcasino_state::init_mv4in1() -{ - uint8_t *rom = memregion("maincpu")->base(); - for (int i = 0; i < 0x10000; i++) - rom[i]=bitswap<8>(rom[i],7,6,5,4,3,1,2,0); -} +//************************************************************************** +// SYSTEM DRIVERS +//************************************************************************** - -GAME( 1982, ltcasino, 0, ltcasino, ltcasino, ltcasino_state, empty_init, ROT0, "Digital Controls Inc.", "Little Casino (older)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1983, mv4in1, ltcasino, ltcasino, mv4in1, ltcasino_state, init_mv4in1, ROT0, "Entertainment Enterprises, Ltd.", "Mini Vegas 4in1", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1984, ltcasinn, 0, ltcasino, ltcasinn, ltcasino_state, empty_init, ROT0, "Digital Controls Inc.", "Little Casino (newer)", MACHINE_NOT_WORKING ) +// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROTATION COMPANY FULLNAME FLAGS +GAMEL( 1982, ltcasino, 0, ltcasino, ltcasino, ltcasino_state, empty_init, ROT0, "Digital Controls Inc.", "Little Casino (older)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_ltcasino ) +GAMEL( 1983, mv4in1, ltcasino, ltcasinn, mv4in1, ltcasino_state, init_mv4in1, ROT0, "Entertainment Enterprises, Ltd.", "Mini Vegas 4in1", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_ltcasinn ) +GAMEL( 1984, ltcasinn, 0, ltcasinn, ltcasinn, ltcasino_state, empty_init, ROT0, "Digital Controls Inc.", "Little Casino (newer)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_ltcasinn ) diff --git a/src/mame/layout/ltcasinn.lay b/src/mame/layout/ltcasinn.lay new file mode 100644 index 00000000000..1312ce35425 --- /dev/null +++ b/src/mame/layout/ltcasinn.lay @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/ltcasino.lay b/src/mame/layout/ltcasino.lay index 2d3c8a1df9c..6e0c12e72c8 100644 --- a/src/mame/layout/ltcasino.lay +++ b/src/mame/layout/ltcasino.lay @@ -3,12 +3,30 @@ + + + + + + + + + + + + + + + + + + @@ -19,25 +37,28 @@ Simple layout for Little Casino and clones - + - + + + + - + - + - + - + - +