mirror of
https://github.com/holub/mame
synced 2025-05-29 00:53:09 +03:00
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
This commit is contained in:
parent
17d5b41987
commit
e4d3e12e25
@ -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<pia6821_device> m_pia[2];
|
||||
required_shared_ptr<uint8_t> m_tile_num_ram;
|
||||
required_shared_ptr<uint8_t> m_tile_atr_ram;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia[2];
|
||||
required_device<crt5037_device> m_vtc;
|
||||
required_shared_ptr<uint8_t> m_video_ram;
|
||||
required_shared_ptr<uint8_t> m_attribute_ram;
|
||||
required_device<gfxdecode_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 )
|
||||
|
43
src/mame/layout/ltcasinn.lay
Normal file
43
src/mame/layout/ltcasinn.lay
Normal file
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<!--
|
||||
license: CC0
|
||||
copyright-holders: Dirk Best
|
||||
Simple layout for Little Casino (color) and clones
|
||||
-->
|
||||
|
||||
<mamelayout version="2">
|
||||
<element name="background">
|
||||
</element>
|
||||
<element name="button" defstate="0">
|
||||
<rect state="0">
|
||||
<color red="0.2" green="0.2" blue="0.2" />
|
||||
</rect>
|
||||
<rect state="1">
|
||||
<color red="0.8" green="0.8" blue="0.8" />
|
||||
</rect>
|
||||
</element>
|
||||
<view name="Buttons">
|
||||
<backdrop element="background">
|
||||
<bounds x="0" y="0" width="640" height="580" />
|
||||
</backdrop>
|
||||
<screen index="0">
|
||||
<bounds left="0" top="0" right="640" bottom="480" />
|
||||
</screen>
|
||||
<cpanel name="button_0" element="button" inputtag="Q" inputmask="0x01">
|
||||
<bounds x="80" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_1" element="button" inputtag="Q" inputmask="0x02">
|
||||
<bounds x="180" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_2" element="button" inputtag="Q" inputmask="0x04">
|
||||
<bounds x="280" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_3" element="button" inputtag="Q" inputmask="0x08">
|
||||
<bounds x="380" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_4" element="button" inputtag="Q" inputmask="0x10">
|
||||
<bounds x="480" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
</view>
|
||||
</mamelayout>
|
@ -3,12 +3,30 @@
|
||||
<!--
|
||||
license: CC0
|
||||
copyright-holders: Dirk Best
|
||||
Simple layout for Little Casino and clones
|
||||
Simple layout for Little Casino (monochrome)
|
||||
-->
|
||||
|
||||
<mamelayout version="2">
|
||||
<element name="background">
|
||||
</element>
|
||||
<element name="overlay">
|
||||
<rect>
|
||||
<bounds left="0" top="0" right="640" bottom="70" />
|
||||
<color red="0.18" green="0.85" blue="0.33" />
|
||||
</rect>
|
||||
<rect>
|
||||
<bounds left="0" top="75" right="640" bottom="240" />
|
||||
<color red="0.10" green="0.44" blue="0.72" />
|
||||
</rect>
|
||||
<rect>
|
||||
<bounds left="0" top="240" right="640" bottom="410" />
|
||||
<color red="0.77" green="0.14" blue="0.14" />
|
||||
</rect>
|
||||
<rect>
|
||||
<bounds left="0" top="415" right="640" bottom="480" />
|
||||
<color red="0.18" green="0.85" blue="0.33" />
|
||||
</rect>
|
||||
</element>
|
||||
<element name="button" defstate="0">
|
||||
<rect state="0">
|
||||
<color red="0.2" green="0.2" blue="0.2" />
|
||||
@ -19,25 +37,28 @@ Simple layout for Little Casino and clones
|
||||
</element>
|
||||
<view name="Buttons">
|
||||
<backdrop element="background">
|
||||
<bounds x="0" y="0" width="416" height="300" />
|
||||
<bounds x="0" y="0" width="640" height="580" />
|
||||
</backdrop>
|
||||
<screen index="0">
|
||||
<bounds left="0" top="0" right="416" bottom="256" />
|
||||
<bounds left="0" top="0" right="640" bottom="480" />
|
||||
</screen>
|
||||
<overlay name="overlay" element="overlay">
|
||||
<bounds x="0" y="0" width="640" height="480" />
|
||||
</overlay>
|
||||
<cpanel name="button_0" element="button" inputtag="Q" inputmask="0x01">
|
||||
<bounds x="25" y="280" width="50" height="25" />
|
||||
<bounds x="80" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_1" element="button" inputtag="Q" inputmask="0x02">
|
||||
<bounds x="100" y="280" width="50" height="25" />
|
||||
<bounds x="180" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_2" element="button" inputtag="Q" inputmask="0x04">
|
||||
<bounds x="175" y="280" width="50" height="25" />
|
||||
<bounds x="280" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_3" element="button" inputtag="Q" inputmask="0x08">
|
||||
<bounds x="250" y="280" width="50" height="25" />
|
||||
<bounds x="380" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
<cpanel name="button_4" element="button" inputtag="Q" inputmask="0x10">
|
||||
<bounds x="325" y="280" width="50" height="25" />
|
||||
<bounds x="480" y="505" width="70" height="35" />
|
||||
</cpanel>
|
||||
</view>
|
||||
</mamelayout>
|
||||
|
Loading…
Reference in New Issue
Block a user