mpu4vid temp protection workaround + lexibook Toy Story 3 (#6937)

mpu4vid updates:
* basic layout and input tweaks to v4addlad [James Wallace]
* Protection workarounds to get more games showing video [David Haywood]

new NOT WORKING machines
-----
Toy Story 3 (Lexibook) [Sean Riddle, Kamaal Brown, David Haywood]
This commit is contained in:
David Haywood 2020-07-10 20:38:32 +01:00 committed by GitHub
parent 7c28200793
commit c6c5678815
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 775 additions and 78 deletions

View File

@ -200,6 +200,7 @@ TODO:
#include "crmaze2p.lh"
#include "crmaze4p.lh"
#include "v4addlad.lh"
class mpu4vid_state : public mpu4_state
@ -261,6 +262,7 @@ public:
void init_skiltrek();
void init_crmaze3();
void init_cybcas();
void init_bwbhack();
private:
required_device<m68000_base_device> m_videocpu;
@ -319,6 +321,7 @@ private:
uint8_t vidcharacteriser_4k_lookup_r(offs_t offset);
uint8_t m_4krow;
uint8_t *m_4ktable;
void hack_bwb_startup_protection();
};
@ -428,8 +431,31 @@ SCN2674_DRAW_CHARACTER_MEMBER(mpu4vid_state::display_pixels)
uint16_t tile = m_vid_mainram[address & 0x7fff];
const uint8_t *line = m_gfxdecode->gfx(m_gfx_index+0)->get_data(tile & 0xfff);
int offset = m_gfxdecode->gfx(m_gfx_index+0)->rowbytes() * linecount;
for(int i = 0; i < 8; i++)
bitmap.pix32(y, x + i) = (tile >> 12) ? m_palette->pen(line[offset + i]) : m_palette->black_pen();
for (int i = 0; i < 8; i++)
{
uint8_t pen = line[offset + i];
int extra = tile >> 12;
// the test modes in many cases require the more complex logic here
// otherwise text is invisible, rgb patterns are not shown etc.
// this logic could still be incorrect
if (pen == 0)
{
bitmap.pix32(y, x + i) = m_palette->pen(pen);
}
else
{
int newpen = pen ^ (15 - extra);
if (newpen == 15)
{
bitmap.pix32(y, x + i) = m_palette->pen(extra);
}
else
{
bitmap.pix32(y, x + i) = m_palette->pen(newpen);
}
}
}
}
}
@ -586,6 +612,8 @@ uint8_t mpu4vid_state::pia_ic5_porta_track_r()
*
*************************************/
static INPUT_PORTS_START( crmaze )
PORT_START("ORANGE1")
PORT_BIT(0xFF, IP_ACTIVE_HIGH, IPT_UNUSED)
@ -1041,6 +1069,7 @@ static INPUT_PORTS_START( turnover )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")//PORT_IMPULSE(5)
INPUT_PORTS_END
static INPUT_PORTS_START( adders )
PORT_START("ORANGE1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
@ -1067,16 +1096,16 @@ static INPUT_PORTS_START( adders )
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("B")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("A")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Pass")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_NAME("Collect")
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Test Button") PORT_CODE(KEYCODE_W)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_SERVICE) PORT_NAME("Refill Key") PORT_CODE(KEYCODE_R) PORT_TOGGLE
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_INTERLOCK) PORT_NAME("Cashbox Door") PORT_CODE(KEYCODE_Q) PORT_TOGGLE
PORT_START("BLACK2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON5) PORT_NAME("C")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_NAME("B")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_NAME("A")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON6) PORT_NAME("C")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON7) PORT_NAME("B")
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON8) PORT_NAME("A")
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON9) PORT_NAME("Continue")
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_START1)
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
@ -1155,6 +1184,7 @@ static INPUT_PORTS_START( adders )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_COIN4) PORT_NAME("100p")//PORT_IMPULSE(5)
INPUT_PORTS_END
WRITE_LINE_MEMBER(mpu4vid_state::mpu_video_reset)
{
m_ptm->reset();
@ -1196,8 +1226,9 @@ void mpu4vid_state::mpu4_68k_map_base(address_map &map)
map(0x000000, 0x7fffff).rom();
map(0x800000, 0x80ffff).ram().share("vid_mainram");
// map(0x810000, 0x81ffff).ram(); /* ? */
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff).mirror(0x000004);
map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)).umask16(0x00ff);
map(0xa00002, 0xa00003).nopr(); // uses a clr instruction on address which generates a dummy read
map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)).umask16(0x00ff);
// map(0xa00004, 0xa0000f).rw(FUNC(mpu4vid_state::mpu4_vid_unmap_r), FUNC(mpu4vid_state::mpu4_vid_unmap_w));
map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff);
@ -1225,8 +1256,9 @@ void mpu4vid_state::mpu4oki_68k_map(address_map &map)
map(0x600000, 0x63ffff).ram(); /* The Mating Game has an extra 256kB RAM on the program card */
// map(0x640000, 0x7fffff).noprw(); /* Possible bug, reads and writes here */
map(0x800000, 0x80ffff).ram().share("vid_mainram");
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff).mirror(0x000004);
map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)).umask16(0x00ff);
map(0xa00002, 0xa00003).nopr(); // uses a clr instruction on address which generates a dummy read
map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)).umask16(0x00ff);
map(0xb00000, 0xb0000f).rw(m_scn2674, FUNC(scn2674_device::read), FUNC(scn2674_device::write)).umask16(0x00ff);
map(0xc00000, 0xc1ffff).rw(FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
@ -1244,8 +1276,9 @@ void mpu4vid_state::bwbvid_68k_map(address_map &map)
map(0x000000, 0x7fffff).rom();
map(0x800000, 0x80ffff).ram().share("vid_mainram");
map(0x810000, 0x81ffff).ram(); /* ? */
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff).mirror(0x000004);
map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)).umask16(0x00ff);
map(0xa00002, 0xa00003).nopr(); // uses a clr instruction on address which generates a dummy read
map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)).umask16(0x00ff);
// map(0xa00000, 0xa0000f).rw(FUNC(mpu4vid_state::bt471_r), FUNC(mpu4vid_state::bt471_w)); //Some games use this
// map(0xa00004, 0xa0000f).rw(FUNC(mpu4vid_state::mpu4_vid_unmap_r), FUNC(mpu4vid_state::mpu4_vid_unmap_w));
@ -1253,7 +1286,7 @@ void mpu4vid_state::bwbvid_68k_map(address_map &map)
map(0xc00000, 0xc1ffff).rw(FUNC(mpu4vid_state::mpu4_vid_vidram_r), FUNC(mpu4vid_state::mpu4_vid_vidram_w)).share("vid_vidram");
map(0xe00000, 0xe00003).rw(m_acia_1, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
map(0xe01000, 0xe0100f).rw(m_ptm, FUNC(ptm6840_device::read), FUNC(ptm6840_device::write)).umask16(0x00ff);
//map(0xa00004, 0xa0000f).rw(FUNC(mpu4vid_state::bwb_characteriser16_r), FUNC(mpu4vid_state::bwb_characteriser16_w)); //.rw(FUNC(mpu4vid_state::adpcm_r), FUNC(mpu4vid_state::adpcm_w)); CHR ?
//map(0xe05000, 0xe05001).rw(FUNC(mpu4vid_state::bwb_characteriser16_r), FUNC(mpu4vid_state::bwb_characteriser16_w)); // CHR
}
void mpu4vid_state::bwbvid5_68k_map(address_map &map)
@ -1261,8 +1294,9 @@ void mpu4vid_state::bwbvid5_68k_map(address_map &map)
map(0x000000, 0x7fffff).rom();
map(0x800000, 0x80ffff).ram().share("vid_mainram");
map(0x810000, 0x81ffff).ram(); /* ? */
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff);
map(0x900000, 0x900003).w("saa", FUNC(saa1099_device::write)).umask16(0x00ff).mirror(0x000004);
map(0xa00001, 0xa00001).rw("ef9369", FUNC(ef9369_device::data_r), FUNC(ef9369_device::data_w)).umask16(0x00ff); //BT RAMDAC?
map(0xa00002, 0xa00003).nopr(); // uses a clr instruction on address which generates a dummy read
map(0xa00003, 0xa00003).w("ef9369", FUNC(ef9369_device::address_w)).umask16(0x00ff);
// map(0xa00000, 0xa00003).rw(FUNC(mpu4vid_state::bt471_r), FUNC(mpu4vid_state::bt471_w)).umask16(0x00ff); Some games use this
// map(0xa00004, 0xa0000f).rw(FUNC(mpu4vid_state::mpu4_vid_unmap_r), FUNC(mpu4vid_state::mpu4_vid_unmap_w));
@ -1368,6 +1402,7 @@ void mpu4vid_state::mpu4_vid(machine_config &config)
SCN2674(config, m_scn2674, VIDEO_MASTER_CLOCK / 8);
m_scn2674->intr_callback().set_inputline("video", M68K_IRQ_3);
m_scn2674->set_character_width(8);
m_scn2674->set_display_callback(FUNC(mpu4vid_state::display_pixels));
m_scn2674->set_addrmap(0, &mpu4vid_state::mpu4_vram);
@ -1839,10 +1874,50 @@ void mpu4vid_state::init_quidgrid()
m_current_chr_table = quidgrid_data;
}
void mpu4vid_state::hack_bwb_startup_protection()
{
// there's no checksum that we need to fix after thi
// so we can't be sure there are no bad dumps?
uint16_t *rom = (uint16_t*)memregion("video")->base();
int len = memregion("video")->bytes()/2;
uint16_t sequence[8] = { 0x3428, 0x0002, 0xb428, 0x0002, 0x671a, 0x2cbc, 0x0002, 0x4001 };
for (int i = 0; i < len - 8; i++)
{
bool matched = true;
for (int j = 0; j < 8; j++)
{
if (sequence[j] != rom[i + j])
matched = false;
}
if (matched)
{
//printf("boot protection match found at %08x\n", i * 2);
rom[i + 5] = 0x6618;
rom[i + 6] = 0x4E71;
rom[i + 7] = 0x4E71;
}
}
}
void mpu4vid_state::init_prizeinv()
{
m_reels = 0;//currently no hybrid games
m_current_chr_table = prizeinv_data;
hack_bwb_startup_protection();
}
void mpu4vid_state::init_bwbhack()
{
hack_bwb_startup_protection();
}
static const bwb_chr_table cybcas_data1[5] = {
@ -1865,6 +1940,8 @@ void mpu4vid_state::init_cybcas()
//no idea what this should be, use blues boys table for now
m_bwb_chr_table1 = cybcas_data1;
m_current_chr_table = cybcas_data;
hack_bwb_startup_protection();
}
@ -1990,7 +2067,7 @@ ROM_START( v4blox )
ROM_LOAD16_BYTE( "blxv___2.0_2", 0x000001, 0x10000, CRC(6b1f8588) SHA1(e8a443f062555f1ed228e1bfed2031927bcd7015) )
ROM_LOAD16_BYTE( "blxv___2.0_3", 0x020000, 0x10000, CRC(c62d704b) SHA1(bea0c9519063f1601f70372ccb49fb892fbd6e76) )
ROM_LOAD16_BYTE( "blxv___2.0_4", 0x020001, 0x10000, CRC(e431471a) SHA1(cf90dc48be3bc5e3c5a8efea5818dbc15fa442e9) )
ROM_LOAD16_BYTE( "blxv___2.0_5", 0x040001, 0x10000, CRC(98ac6bc7) SHA1(9575014ba21fa4330138a34f53e13d30d312bc8b) )
ROM_LOAD16_BYTE( "blxv___2.0_5", 0x040000, 0x10000, CRC(98ac6bc7) SHA1(9575014ba21fa4330138a34f53e13d30d312bc8b) )
ROM_LOAD16_BYTE( "blxv___2.0_6", 0x040001, 0x10000, CRC(a3d92b5b) SHA1(1e7042d5eae4a19a01a3ef7d806c434886dc9f4d) )
ROM_END
@ -2003,7 +2080,7 @@ ROM_START( v4bloxd )
ROM_LOAD16_BYTE( "blxv___2.0_2", 0x000001, 0x10000, CRC(6b1f8588) SHA1(e8a443f062555f1ed228e1bfed2031927bcd7015) )
ROM_LOAD16_BYTE( "blxv___2.0_3", 0x020000, 0x10000, CRC(c62d704b) SHA1(bea0c9519063f1601f70372ccb49fb892fbd6e76) )
ROM_LOAD16_BYTE( "blxv___2.0_4", 0x020001, 0x10000, CRC(e431471a) SHA1(cf90dc48be3bc5e3c5a8efea5818dbc15fa442e9) )
ROM_LOAD16_BYTE( "blxv___2.0_5", 0x040001, 0x10000, CRC(98ac6bc7) SHA1(9575014ba21fa4330138a34f53e13d30d312bc8b) )
ROM_LOAD16_BYTE( "blxv___2.0_5", 0x040000, 0x10000, CRC(98ac6bc7) SHA1(9575014ba21fa4330138a34f53e13d30d312bc8b) )
ROM_LOAD16_BYTE( "blxv___2.0_6", 0x040001, 0x10000, CRC(a3d92b5b) SHA1(1e7042d5eae4a19a01a3ef7d806c434886dc9f4d) )
ROM_END
@ -2016,20 +2093,20 @@ ROM_START( v4tetrs )
ROM_LOAD16_BYTE( "tetris22.p2", 0x000001, 0x10000, CRC(68aa4f15) SHA1(4e4511a64391fc64e5f5b7ccb46a78fd2e1d94d6) )
ROM_LOAD16_BYTE( "tetris22.p3", 0x020000, 0x10000, CRC(b38b4763) SHA1(d28e77fdd6869cb5b5ec40ed1f300a2a947e0482) )
ROM_LOAD16_BYTE( "tetris22.p4", 0x020001, 0x10000, CRC(1649f604) SHA1(ca4ac303391a0969d41c8f988b8e81cfcee1a21c) )
ROM_LOAD16_BYTE( "tetris22.p5", 0x040001, 0x10000, CRC(02859676) SHA1(5293c767021a6b5253eecab0b0568aa082ea7084) )
ROM_LOAD16_BYTE( "tetris22.p5", 0x040000, 0x10000, CRC(02859676) SHA1(5293c767021a6b5253eecab0b0568aa082ea7084) )
ROM_LOAD16_BYTE( "tetris22.p6", 0x040001, 0x10000, CRC(40d24c82) SHA1(7ac3cf148af84ad93eaf11ce3420abbe45d986e2) )
ROM_END
ROM_START( v4tetrs1 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "tetv1int", 0x0000, 0x004000, CRC(98de975d) SHA1(5b4fc06aa8008d3967c68f364c47f8377a1ba9df) )
ROM_LOAD( "tetv1int", 0x0000, 0x004000, CRC(98de975d) SHA1(5b4fc06aa8008d3967c68f364c47f8377a1ba9df) ) // alt / earlier base ROM?
ROM_REGION( 0x800000, "video", 0 )
ROM_LOAD16_BYTE( "tetris22.p1", 0x000000, 0x10000, CRC(e81dd182) SHA1(28b460224abf6fe24b637542ccd1c84040674555) )
ROM_LOAD16_BYTE( "tetris22.p2", 0x000001, 0x10000, CRC(68aa4f15) SHA1(4e4511a64391fc64e5f5b7ccb46a78fd2e1d94d6) )
ROM_LOAD16_BYTE( "tetris22.p3", 0x020000, 0x10000, CRC(b38b4763) SHA1(d28e77fdd6869cb5b5ec40ed1f300a2a947e0482) )
ROM_LOAD16_BYTE( "tetris22.p4", 0x020001, 0x10000, CRC(1649f604) SHA1(ca4ac303391a0969d41c8f988b8e81cfcee1a21c) )
ROM_LOAD16_BYTE( "tetris22.p5", 0x040001, 0x10000, CRC(02859676) SHA1(5293c767021a6b5253eecab0b0568aa082ea7084) )
ROM_LOAD16_BYTE( "tetris22.p5", 0x040000, 0x10000, CRC(02859676) SHA1(5293c767021a6b5253eecab0b0568aa082ea7084) )
ROM_LOAD16_BYTE( "tetris22.p6", 0x040001, 0x10000, CRC(40d24c82) SHA1(7ac3cf148af84ad93eaf11ce3420abbe45d986e2) )
ROM_END
@ -3065,7 +3142,7 @@ FF_493D.P2 DDE5 27C040 30p/?15 data
ROM_START( v4frfact )
ROM_REGION( 0x10000, "maincpu", 0 )
VID_BIOS // should use FFMPU416.P1 A209 27C512 .. find out which that is, if it's dumped
ROM_LOAD("ffmpu416_a209.p1", 0x00000, 0x10000, NO_DUMP ) // should use "FFMPU416.P1 A209 27C512" according to text file, but ROM was not in archive
ROM_REGION( 0x800000, "video", 0 )
/* p1/p2 load the wrong way around? */
@ -3113,8 +3190,8 @@ ROM_START( v4bigfrt )
ROM_LOAD16_BYTE("bi______.2_4", 0x020001, 0x010000, CRC(58f0dcb4) SHA1(79039d489f5ce3a1865fa92a2b6e8b002b63efcf))
ROM_LOAD16_BYTE("bi______.2_5", 0x040000, 0x010000, CRC(512c6d1a) SHA1(1c9d04e7e59a95f6975e6d2d5e5def4c1a7777e0))
ROM_LOAD16_BYTE("bi______.2_6", 0x040001, 0x010000, CRC(5df850ec) SHA1(5b455f4cfb19c551723f7fd5f4f95e5420f8682f))
ROM_LOAD16_BYTE("bi______.2_7", 0x050000, 0x010000, CRC(9ea394a2) SHA1(3b9840627f7676aa7872d2bc022406a4ced7958f))
ROM_LOAD16_BYTE("bi______.2_8", 0x050001, 0x010000, CRC(4aa1d37d) SHA1(3c1a3ccacdc33cd4a54b7bbf06ea4c33868705f4))
ROM_LOAD16_BYTE("bi______.2_7", 0x060000, 0x010000, CRC(9ea394a2) SHA1(3b9840627f7676aa7872d2bc022406a4ced7958f))
ROM_LOAD16_BYTE("bi______.2_8", 0x060001, 0x010000, CRC(4aa1d37d) SHA1(3c1a3ccacdc33cd4a54b7bbf06ea4c33868705f4))
ROM_REGION( 0x100000, "altrevs", 0 ) /* Alternate revision BIOS ROMs, to be sorted into clones (could probably do so already, but let's not complicate things)*/
// protocol/20p/Rank Bingo
@ -3481,17 +3558,17 @@ ROM_START( v4mdice )
ROM_LOAD( "mdi25a__.8_0", 0x0000, 0x010000, CRC(c3b469d0) SHA1(00cd85bd9acd477f2ab4baf83e7bb10d763b1e93) )
ROM_REGION( 0x800000, "video", 0 )
ROM_LOAD16_BYTE( "md______.8_1", 0x000001, 0x080000, CRC(3f3fa0d2) SHA1(bb52111bcea5cd404d1e7adf0f3ebca596a251ac) )
ROM_LOAD16_BYTE( "md______.8_2", 0x000000, 0x080000, CRC(14bb6b48) SHA1(97025f0899c325d28ac75c54e81fd425b5002064) )
ROM_LOAD16_BYTE( "md______.8_3", 0x100001, 0x080000, CRC(cde34cd1) SHA1(7874fa070e52e6c34b770aee5bfec522eb3d72c9) )
ROM_LOAD16_BYTE( "md______.8_4", 0x100000, 0x080000, CRC(39bc1267) SHA1(853e047406fed3c12f55a2e032e8c3d8188da182) )
ROM_REGION( 0x800000, "altvideo", 0 ) // this doesn't work with the above base roms?
ROM_LOAD16_BYTE( "mdv58p1", 0x000001, 0x080000, CRC(3f3fa0d2) SHA1(bb52111bcea5cd404d1e7adf0f3ebca596a251ac) )
ROM_LOAD16_BYTE( "mdv58p2", 0x000000, 0x080000, CRC(14bb6b48) SHA1(97025f0899c325d28ac75c54e81fd425b5002064) )
ROM_LOAD16_BYTE( "mdv58p3", 0x100001, 0x080000, CRC(0d907e37) SHA1(b6ad78a4a7bc877d2152907df2317621f00bdc1c) )
ROM_LOAD16_BYTE( "mdv58p4", 0x100000, 0x080000, CRC(2e21c249) SHA1(d5192339313a8dd234cb164ca0094d9a7b64ccc2) )
ROM_REGION( 0x800000, "altvideo", 0 )
ROM_LOAD( "md______.8_1", 0x0000, 0x080000, CRC(3f3fa0d2) SHA1(bb52111bcea5cd404d1e7adf0f3ebca596a251ac) )
ROM_LOAD( "md______.8_2", 0x0000, 0x080000, CRC(14bb6b48) SHA1(97025f0899c325d28ac75c54e81fd425b5002064) )
ROM_LOAD( "md______.8_3", 0x0000, 0x080000, CRC(cde34cd1) SHA1(7874fa070e52e6c34b770aee5bfec522eb3d72c9) )
ROM_LOAD( "md______.8_4", 0x0000, 0x080000, CRC(39bc1267) SHA1(853e047406fed3c12f55a2e032e8c3d8188da182) )
ROM_REGION( 0x200000, "msm6376", ROMREGION_ERASE00 )
ROM_LOAD( "mdsnda", 0x000000, 0x080000, CRC(18651603) SHA1(c6f7557a82cb49f3f001b43250129d10f4f6ab5a) )
@ -3499,7 +3576,6 @@ ROM_START( v4mdice )
ROM_END
ROM_START( v4monte )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "montecarloorbustmpu4cardrom.bin", 0x0000, 0x010000, CRC(44967b33) SHA1(92d35d1b0edcc2eef1062468722c80ef8208b437) ) // Monte Carlo Or Bust Release D (c)1996
@ -3598,26 +3674,20 @@ ROM_START( v4monte )
ROM_LOAD( "mxi05___.2_1", 0x0000, 0x010000, CRC(de425b55) SHA1(2aa63bbd32c766e7e2d888345115c3185dc03bff) )
ROM_LOAD( "mxi10___.2_1", 0x0000, 0x010000, CRC(19077425) SHA1(e31da38a903345c65b083cac192555f1f4ba2e5a) )
ROM_REGION( 0x800000, "video", 0 )
ROM_LOAD16_BYTE( "mcobo4p1", 0x000001, 0x080000, CRC(aaa594f0) SHA1(2bcb13d8b93911a69c181d6f0be43397baf8cbc8) )
ROM_LOAD16_BYTE( "mcobo4p2", 0x000000, 0x080000, CRC(ab94c22a) SHA1(a8a0ed992c0b95fb763aea37f78c8d7a53732509) )
ROM_LOAD16_BYTE( "mcop3vd", 0x100001, 0x080000, CRC(721e9ad1) SHA1(fb926debd57301c9c0c3ecb9bb1ac36b0b60ee40) )
ROM_LOAD16_BYTE( "mcop4vd", 0x100000, 0x080000, CRC(6eba1107) SHA1(c696b620781782c3b4045fe3550ab8e7e905661d) )
ROM_REGION( 0x800000, "altvideo", 0 )
// these also pair with the same p1/p2 as above, but expect different MCU base ROM?
ROM_LOAD16_BYTE( "mcobo4p3", 0x100001, 0x080000, CRC(ebe851df) SHA1(61d37a7f91480592da6f5b6ee7ef4b6097ee5c65) )
ROM_LOAD16_BYTE( "mcobo4p4", 0x100000, 0x080000, CRC(49b0cfd7) SHA1(51fe74371bdac3c507a04aa9faeb522640d1cdf7) )
ROM_REGION( 0x800000, "altvideo", 0 )
// these are bad dumps I think, they're 0x40000-0x60000 of the main roms?
ROM_LOAD( "montecarloorbustvideoboardp1.bin", 0x0000, 0x020000, CRC(5fd2c5ee) SHA1(60194df160070754e1cce6558dedc87b7fc05044) )
ROM_LOAD( "montecarloorbustvideoboardp2.bin", 0x0000, 0x020000, CRC(7f6747cb) SHA1(0a85c0199583c5c48012f627ec3e4c3d12e39859) )
ROM_LOAD( "montecarloorbustvideoboardp3.bin", 0x0000, 0x020000, CRC(f3d4a37d) SHA1(e81df776bb220832b45a5f6d12e8831f17dbd10b) )
ROM_LOAD( "montecarloorbustvideoboardp4.bin", 0x0000, 0x020000, CRC(94be9981) SHA1(fe5803102e5e301ad6659ed83d319f55aa62c33e) )
// this seems to be an alt (incomplete? set)
ROM_REGION( 0x800000, "altvideo2", 0 )
// this seems to be a loose video ROM from an otherwise undumped set? investigate, might belong to something else entirely.
ROM_LOAD( "mn______.f_1", 0x0000, 0x080000, CRC(1a81b3fb) SHA1(bbf0fe7e48404962a2f2120734efe71dc1eed64c) ) // unmatched rom? (significant changes)
ROM_LOAD( "mcop3vd", 0x0000, 0x080000, CRC(721e9ad1) SHA1(fb926debd57301c9c0c3ecb9bb1ac36b0b60ee40) ) // alt p3 (significant changes)
ROM_LOAD( "mcop4vd", 0x0000, 0x080000, CRC(6eba1107) SHA1(c696b620781782c3b4045fe3550ab8e7e905661d) ) // alt p4 (significant changes
ROM_REGION( 0x10000, "unk", 0 ) // something else?
ROM_LOAD( "montvnd", 0x0000, 0x010000, CRC(9858bb1d) SHA1(a2d3de2cec7420cc6f7da2239bdc79d7c4b7394e) ) // this looks like a different MPU4 game? - check
@ -3910,9 +3980,9 @@ GAME( 1996?,v4mated, v4mate, mating, mating, mpu4vid_state, init_mat
/* Quiz games - Questions decoded */
GAME( 1989, v4addlad, v4bios, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1) (MPU4 Video)",GAME_FLAGS )
GAME( 1989, v4addladd, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1d) (MPU4 Video)",GAME_FLAGS )
GAME( 1989, v4addlad20, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.0) (MPU4 Video)",GAME_FLAGS )
GAMEL( 1989, v4addlad, v4bios, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1) (MPU4 Video)",GAME_FLAGS,layout_v4addlad )
GAMEL( 1989, v4addladd, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.1d) (MPU4 Video)",GAME_FLAGS,layout_v4addlad )
GAMEL( 1989, v4addlad20, v4addlad, mpu4_vid_strike, adders, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Adders and Ladders (v2.0) (MPU4 Video)",GAME_FLAGS,layout_v4addlad )
GAME( 199?, v4strike, v4bios, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4striked, v4strike, mpu4_vid_strike, mpu4, mpu4vid_state, init_strikeit, ROT0, "Barcrest","Strike it Lucky (v0.5, Datapak) (MPU4 Video)",GAME_FLAGS )
@ -3953,74 +4023,84 @@ GAME( 1991, v4opt3d, v4opt3, mpu4_vid, mpu4, mpu4vid_state, init_v4o
/* Games below are newer BwB games and use their own BIOS ROMs and hardware setups*/
GAME( 199?, v4vgpok, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Vegas Poker (prototype, release 2) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4psi, 0, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v1.1) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4psia, v4psi, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v1.2) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4psib, v4psi, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v2.0?) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4psib, v4psi, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v2.0?) (MPU4 Video)",GAME_FLAGS ) // bad dump
GAME( 199?, v4psi14d, v4psi, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v1.4D?) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4psi20d, v4psi, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v2.0D?) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4psi214, v4psi, bwbvid, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Prize Space Invaders (v2.14?) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4blox, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Blox (v2.0) (MPU4 Video)",GAME_FLAGS ) // bad dump
GAME( 199?, v4bloxd, v4blox, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Blox (v2.0, Datapak) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4tetrs, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Tetris Payout (BwB TET1 Version 2.2) (MPU4 Video) (set 1)",GAME_FLAGS )
GAME( 199?, v4tetrs1, v4tetrs, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Tetris Payout (BwB TET1 Version 2.2) (MPU4 Video) (set 2)",GAME_FLAGS )
GAME( 199?, v4bulblx, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Bullion Blox (Bwb) (MPU4 Video)",GAME_FLAGS ) // is this the same game as v4blox?
GAME( 199?, v4pztet, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Prize Tetris (BwB) (MPU4 Video, set 1)",GAME_FLAGS )
GAME( 199?, v4pzteta, v4pztet, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Prize Tetris (BwB) (MPU4 Video, set 2)",GAME_FLAGS ) // 'showcase' screen after title in attract
GAME( 1996, v4reno, 0, bwbvid5, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Reno Reels (20p/10GBP Cash, release A) (MPU4 Video)",GAME_FLAGS )
// blox is an early version of Tetris?
GAME( 199?, v4blox, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Blox (v2.0) (MPU4 Video)",GAME_FLAGS ) // bad dump?
GAME( 199?, v4bloxd, v4blox, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Blox (v2.0, Datapak) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4bigfrt, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Big Fruits (v2.0?) (MPU4 Video)",GAME_FLAGS )
// these will run in 'open door' mode otherwise they'll give payout shelf error
GAME( 199?, v4bubbnk, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Bubbly Bonk (v4.0?) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4vgpok, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Vegas Poker (prototype, release 2) (MPU4 Video)",GAME_FLAGS ) // doesn't have payout so no shelf error, runs with door closed
GAME( 199?, v4mazbel, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Mazooma Belle (v2.5) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4mazbla, v4mazbel, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Mazooma Belle (v1.5) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4redhtp, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Red Hot Poker (20p/10GBP Cash, release 3) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4rhmaz, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Red Hot Mazooma Belle (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4bubbnk, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Bubbly Bonk (v4.0?) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4shpwnd, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Shop Window (v2.0) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4ovrmn3, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Over Moon Pt3 (BwB) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4redhtp, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Red Hot Poker (20p/10GBP Cash, release 3) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4mazbel, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Mazooma Belle (v2.5) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4mazbla, v4mazbel, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Mazooma Belle (v1.5) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4tetrs, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","BwB Tetris v 2.2 (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4tetrs1, v4tetrs, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","BwB Tetris v 1.0? (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4rhmaz, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Red Hot Mazooma Belle (BwB) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4shpwnd, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Shop Window (v2.0) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4pztet, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Prize Tetris (Bwb) (MPU4 Video, set 1)",GAME_FLAGS ) // is this the same as v4tetrs?
GAME( 199?, v4pzteta, v4pztet, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Prize Tetris (Bwb) (MPU4 Video, set 2)",GAME_FLAGS )
GAME( 199?, v4sixx, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","6-X (BwB) (MPU4 Video)",GAME_FLAGS ) // runs if door open
GAME( 199?, v4big40, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Big 40 Poker (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4cshinf, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Cash Inferno (BwB) (MPU4 Video)",GAME_FLAGS ) // runs if door open
GAME( 199?, v4cshinf, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Cash Inferno (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4sunbst, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Sunburst (BwB) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4dbltak, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Double Take (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4bigfrt, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Big Fruits (v2.0?) (MPU4 Video)",GAME_FLAGS ) // runs if open door
GAME( 199?, v4gldrsh, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Gold Rush (Bwb) (MPU4 Video)",GAME_FLAGS )
// these don't play in open door mode as they'll drop you to test mode, so need 'payout shelf' emulating.
GAME( 199?, v4mdice, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Miami Dice (Bwb) (MPU4 Video)",GAME_FLAGS ) // is this the same as the Nova game below?
GAME( 1996, v4reno, 0, bwbvid5, mpu4, mpu4vid_state, init_prizeinv, ROT0, "BwB","Reno Reels (20p/10GBP Cash, release A) (MPU4 Video)",GAME_FLAGS ) // runs if open door but then drops to test menu
GAME( 199?, v4monte, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Monte Carlo Or Bust (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4big40, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Big 40 Poker (BwB) (MPU4 Video)",GAME_FLAGS ) // drops to test mode with door open
GAME( 199?, v4ovrmn3, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Over Moon Pt3 (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4dbltak, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Double Take (BwB) (MPU4 Video)",GAME_FLAGS ) // drops to test mode with door open
GAME( 199?, v4sunbst, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Sunburst (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4gldrsh, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Gold Rush (BwB) (MPU4 Video)",GAME_FLAGS ) // drops to test mode with door open
GAME( 199?, v4timebn, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Time Bandit (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4timebn, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Time Bandit (BwB) (MPU4 Video)",GAME_FLAGS ) // drops to test mode with door open
GAME( 199?, v4sixx, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","6-X (Bwb) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4monte, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Monte Carlo Or Bust (BwB) (MPU4 Video)",GAME_FLAGS ) // drops to test mode with door open
GAME( 199?, v4megbuk, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Megabucks Poker (Bwb) (MPU4 Video)",GAME_FLAGS ) // no video roms!
GAME( 199?, v4mdice, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Miami Dice (BwB) (MPU4 Video)",GAME_FLAGS ) // is this the same as the Nova game below? drops to test mode with door open
// other issues
GAME( 199?, v4bulblx, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Bullion Blox (BwB) (MPU4 Video)",GAME_FLAGS ) // is this the same game as v4blox? (doesn't boot, hangs on comms?)
GAME( 199?, v4megbuk, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Megabucks Poker (BwB) (MPU4 Video)",GAME_FLAGS ) // no video roms!
GAME( 199?, v4rencas, 0, bwbvid, mpu4, mpu4vid_state, init_bwbhack, ROT0, "BwB","Reno Casino (BwB) (MPU4 Video)",GAME_FLAGS ) // no video roms!
GAME( 199?, v4rencas, 0, bwbvid, mpu4, mpu4vid_state, empty_init, ROT0, "BwB","Reno Casino (Bwb) (MPU4 Video)",GAME_FLAGS ) // no video roms!
/* Uncertain BIOS */
GAME( 199?, v4frfact, v4bios, crmaze, crmaze, mpu4vid_state, init_crmaze, ROT0, "Bwb","Fruit Factory (Bwb) (MPU4 Video)", GAME_FLAGS )
GAME( 199?, v4frfact, v4bios, crmaze, crmaze, mpu4vid_state, init_bwbhack, ROT0, "BwB","Fruit Factory (BwB) (MPU4 Video)", GAME_FLAGS )
/* Nova - is this the same video board? One of the games displays 'Resetting' but the others do nothing interesting and access strange addresses */
/* All contain BwB video in the BIOS rom tho */
GAME( 199?, v4miami, 0, bwbvid5, mpu4, mpu4vid_state, init_bwbhack, ROT0, "Nova","Miami Dice (Nova) (MPU4 Video)",GAME_FLAGS ) // runs if door open
GAME( 199?, v4cybcas, 0, bwbvid5, mpu4, mpu4vid_state, init_cybcas, ROT0, "Nova","Cyber Casino (Nova) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4miami, 0, bwbvid5, mpu4, mpu4vid_state, empty_init, ROT0, "Nova","Miami Dice (Nova) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4missis, 0, bwbvid5, mpu4, mpu4vid_state, init_bwbhack, ROT0, "Nova","Mississippi Lady (Nova) (MPU4 Video)",GAME_FLAGS ) // wrong base rom? or some other issue?
GAME( 199?, v4missis, 0, bwbvid5, mpu4, mpu4vid_state, empty_init, ROT0, "Nova","Mississippi Lady (Nova) (MPU4 Video)",GAME_FLAGS )
GAME( 199?, v4picdil, 0, bwbvid5, mpu4, mpu4vid_state, init_bwbhack, ROT0, "Nova","Piccadilly Nights (Nova) (MPU4 Video)",GAME_FLAGS ) // wrong base rom? or some other issue?
GAME( 199?, v4picdil, 0, bwbvid5, mpu4, mpu4vid_state, empty_init, ROT0, "Nova","Piccadilly Nights (Nova) (MPU4 Video)",GAME_FLAGS )

View File

@ -676,6 +676,23 @@ private:
required_ioport m_io_p1;
};
class vt1682_lxts3_state : public vt_vt1682_state
{
public:
vt1682_lxts3_state(const machine_config& mconfig, device_type type, const char* tag) :
vt_vt1682_state(mconfig, type, tag),
m_io_p1(*this, "IN0")
{ }
void vt1682_lxts3(machine_config& config);
protected:
uint8_t uio_porta_r();
private:
required_ioport m_io_p1;
};
class vt1682_exsport_state : public vt_vt1682_state
{
public:
@ -5658,6 +5675,18 @@ static INPUT_PORTS_START( 110dance )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_NAME("Pad Right") PORT_16WAY
INPUT_PORTS_END
static INPUT_PORTS_START( lxts3 )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
INPUT_PORTS_END
static INPUT_PORTS_START( exsprt48 )
PORT_START("P1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
@ -5833,7 +5862,12 @@ void intec_interact_state::intech_interact(machine_config& config)
m_rightdac->add_route(0, "mono", 0.5);
}
uint8_t vt1682_lxts3_state::uio_porta_r()
{
uint8_t ret = m_io_p1->read();
logerror("%s: porta_r returning: %02x (INPUTS)\n", machine().describe_context(), ret);
return ret;
}
uint8_t vt1682_dance_state::uio_porta_r()
{
@ -5894,6 +5928,28 @@ void vt1682_dance_state::vt1682_dance(machine_config& config)
m_uio->porta_out().set(FUNC(vt1682_dance_state::uio_porta_w));
}
void vt1682_lxts3_state::vt1682_lxts3(machine_config& config)
{
vt_vt1682_ntscbase(config);
vt_vt1682_common(config);
M6502(config.replace(), m_maincpu, MAIN_CPU_CLOCK_PAL); // no opcode bitswap
m_maincpu->set_addrmap(AS_PROGRAM, &vt1682_lxts3_state::vt_vt1682_map);
m_leftdac->reset_routes();
m_rightdac->reset_routes();
config.device_remove(":lspeaker");
config.device_remove(":rspeaker");
SPEAKER(config, "mono").front_center();
m_leftdac->add_route(0, "mono", 0.5);
m_rightdac->add_route(0, "mono", 0.5);
m_uio->porta_in().set(FUNC(vt1682_lxts3_state::uio_porta_r));
}
void vt1682_wow_state::vt1682_wow(machine_config& config)
{
@ -5987,12 +6043,18 @@ ROM_START( 110dance )
ROM_LOAD( "110songdancemat.bin", 0x00000, 0x2000000, CRC(cd668e41) SHA1(975bfe05f4cce047860b05766bc8539218f6014f) )
ROM_END
ROM_START( lxts3 )
ROM_REGION( 0x800000, "mainrom", 0 )
ROM_LOAD( "lexibooktoystory_mx29lv640mt_00c2227e.bin", 0x00000, 0x800000, CRC(91344ae7) SHA1(597fc4a27dd1fb6e6f5fda1c4ea237c07e9dba71))
ROM_END
// TODO: this is a cartridge based system (actually, verify this, it seems some versions simply had built in games) move these to SL if verified as from cartridge config
// actually it appears that for the cart based systems these are 'fake systems' anyway, where the base unit is just a Famiclone but as soon as you plug in a cart none of
// the internal hardware gets used at all.
CONS( 200?, ii8in1, 0, 0, intech_interact, intec, intec_interact_state, regular_init, "Intec", "InterAct 8-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
CONS( 200?, ii32in1, 0, 0, intech_interact, intec, intec_interact_state, regular_init, "Intec", "InterAct 32-in-1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// a 40-in-1 also exists which combines the above
@ -6049,3 +6111,5 @@ CONS( 200?, wowwg, 0, 0, vt1682_wow, exsprt48, vt1682_wow_state, regular_init
CONS( 200?, 110dance, 0, 0, vt1682_dance, 110dance, vt1682_dance_state, regular_init, "<unknown>", "Retro Dance Mat (110 song Super StepMania + 9-in-1 games) (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
// NJ Pocket 60-in-1 (NJ-250) is meant to have similar games to the mini-games found in wowwg and 110dance, so almost certainly fits here
CONS( 2010, lxts3, 0, 0, vt1682_lxts3, lxts3, vt1682_lxts3_state, regular_init, "Lexibook", "Toy Story 3 (Lexibook)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // random number generation issues on 2 games, linescroll on racing games

View File

@ -0,0 +1,552 @@
<?xml version="1.0"?>
<!--
license:CC0
-->
<mamelayout version="2">
<element name="£" defstate="0">
<text string="JACKPOT £" state="0">
<color red="0.5" green="0.5" blue="0.5" />
<bounds x="0" y="0" width="4" height="4" />
</text>
</element>
<element name="SKILLSTOP" defstate="0">
<text string="SKILL STOP" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="BOOST" defstate="0">
<text string="BOOST" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="EXTRA" defstate="0">
<text string="EXTRA" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="10P" defstate="0">
<text string="10p" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="20P" defstate="0">
<text string="20p" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="50P" defstate="0">
<text string="50p" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="£1" defstate="0">
<text string="£1" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="SNAKE" defstate="0">
<text string="S" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="LADDER" defstate="0">
<text string="L" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="16" />
</text>
</element>
<element name="A" defstate="0">
<rect state ="0">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.5" green="0.0" blue="0.0" />
</rect>
<text string="A" state="0">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
<rect state ="1">
<bounds x="0" y="0" width="20" height="10" />
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<text string="A" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
</element>
<element name="B" defstate="0">
<rect state ="0">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.0" green="0.5" blue="0.0" />
</rect>
<text string="B" state="0">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
<rect state ="1">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.0" green="1.0" blue="0.0" />
</rect>
<text string="B" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
</element>
<element name="C" defstate="0">
<rect state ="0">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.0" green="0.0" blue="0.5" />
</rect>
<text string="C" state="0">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
<rect state ="1">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.0" green="0.0" blue="1.0" />
</rect>
<text string="C" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
</element>
<element name="CONTINUE" defstate="0">
<rect state ="0">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.5" green="0.5" blue="0.0" />
</rect>
<text string="CONTINUE" state="0">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
<rect state ="1">
<bounds x="0" y="0" width="20" height="10" />
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<text string="CONTINUE" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
</element>
<element name="PASS" defstate="0">
<rect state ="0">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.0" green="0.0" blue="0.2" />
</rect>
<text string="PASS" state="0">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
<rect state ="1">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.0" green="0.3" blue="1.0" />
</rect>
<text string="PASS" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
</element>
<element name="COLLECT" defstate="0">
<text string="COLLECT" state="0">
<color red="0.1" green="0.1" blue="0.1" />
<bounds x="0" y="0" width="16" height="8" />
</text>
</element>
<element name="START" defstate="0">
<rect state ="0">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.2" green="0.3" blue="0.0" />
</rect>
<text string="START" state="0">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
<rect state ="1">
<bounds x="0" y="0" width="20" height="10" />
<color red="0.2" green="1.0" blue="0.0" />
</rect>
<text string="START" state="1">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="2" y="2" width="16" height="8" />
</text>
</element>
<element name="digit" defstate="0">
<led7seg>
<color red="1.0" green="0.0" blue="0.0" />
</led7seg>
</element>
<element name="matrixlamp">
<rect state ="0">
<bounds x="0" y="0" width="20" height="20" />
<color red="0.3" green="0.3" blue="0.3" />
</rect>
<rect state ="1">
<bounds x="0" y="0" width="20" height="20" />
<color red="1.0" green="1.0" blue="1.0" />
</rect>
</element>
<view name="Monitor and Lamps">
<bezel name="£" element="£">
<bounds x="0" y="0" width="20" height="10" />
</bezel>
<bezel name="digit0" element="digit">
<bounds x="10" y="10" width="5" height="10" />
</bezel>
<bezel name="digit1" element="digit">
<bounds x="15" y="10" width="5" height="10" />
</bezel>
<bezel name="digit2" element="digit">
<bounds x="20" y="10" width="5" height="10" />
</bezel>
<bezel name="lamp64" element="matrixlamp" state="0">
<bounds x="25" y="0" width="20" height="20"/>
</bezel>
<bezel name="lamp65" element="matrixlamp" state="0">
<bounds x="45" y="0" width="20" height="20"/>
</bezel>
<bezel name="lamp66" element="matrixlamp" state="0">
<bounds x="65" y="0" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="67" y="2" width="16" height="16" />
</bezel>
<bezel name="lamp67" element="matrixlamp" state="0">
<bounds x="85" y="0" width="20" height="20"/>
</bezel>
<bezel name="lamp68" element="matrixlamp" state="0">
<bounds x="105" y="0" width="20" height="20"/>
</bezel>
<bezel name="lamp69" element="matrixlamp" state="0">
<bounds x="125" y="0" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="127" y="2" width="16" height="16" />
</bezel>
<bezel name="lamp70" element="matrixlamp" state="0">
<bounds x="145" y="0" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="147" y="2" width="16" height="16" />
</bezel>
<bezel name="lamp71" element="matrixlamp" state="0">
<bounds x="165" y="0" width="20" height="20"/>
</bezel>
<bezel name="lamp72" element="matrixlamp" state="0">
<bounds x="25" y="20" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="27" y="22" width="16" height="16" />
</bezel>
<bezel name="lamp73" element="matrixlamp" state="0">
<bounds x="45" y="20" width="20" height="20"/>
</bezel>
<bezel name="lamp74" element="matrixlamp" state="0">
<bounds x="65" y="20" width="20" height="20"/>
</bezel>
<bezel name="lamp75" element="matrixlamp" state="0">
<bounds x="85" y="20" width="20" height="20"/>
</bezel>
<bezel name="lamp76" element="matrixlamp" state="0">
<bounds x="105" y="20" width="20" height="20"/>
</bezel>
<bezel name="£1" element="£1">
<bounds x="107" y="22" width="16" height="16" />
</bezel>
<bezel name="lamp77" element="matrixlamp" state="0">
<bounds x="125" y="20" width="20" height="20"/>
</bezel>
<bezel name="lamp78" element="matrixlamp" state="0">
<bounds x="145" y="20" width="20" height="20"/>
</bezel>
<bezel name="lamp79" element="matrixlamp" state="0">
<bounds x="165" y="20" width="20" height="20"/>
</bezel>
<bezel name="lamp80" element="matrixlamp" state="0">
<bounds x="25" y="40" width="20" height="20"/>
</bezel>
<bezel name="£1" element="£1">
<bounds x="27" y="42" width="16" height="16" />
</bezel>
<bezel name="lamp81" element="matrixlamp" state="0">
<bounds x="45" y="40" width="20" height="20"/>
</bezel>
<bezel name="lamp82" element="matrixlamp" state="0">
<bounds x="65" y="40" width="20" height="20"/>
</bezel>
<bezel name="lamp83" element="matrixlamp" state="0">
<bounds x="85" y="40" width="20" height="20"/>
</bezel>
<bezel name="lamp84" element="matrixlamp" state="0">
<bounds x="105" y="40" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="107" y="42" width="16" height="16" />
</bezel>
<bezel name="lamp85" element="matrixlamp" state="0">
<bounds x="125" y="40" width="20" height="20"/>
</bezel>
<bezel name="EXTRA" element="EXTRA">
<bounds x="127" y="42" width="16" height="16" />
</bezel>
<bezel name="lamp86" element="matrixlamp" state="0">
<bounds x="145" y="40" width="20" height="20"/>
</bezel>
<bezel name="lamp87" element="matrixlamp" state="0">
<bounds x="165" y="40" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="167" y="42" width="16" height="16" />
</bezel>
<bezel name="lamp88" element="matrixlamp" state="0">
<bounds x="25" y="60" width="20" height="20"/>
</bezel>
<bezel name="lamp89" element="matrixlamp" state="0">
<bounds x="45" y="60" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="47" y="62" width="16" height="16" />
</bezel>
<bezel name="lamp90" element="matrixlamp" state="0">
<bounds x="65" y="60" width="20" height="20"/>
</bezel>
<bezel name="lamp91" element="matrixlamp" state="0">
<bounds x="85" y="60" width="20" height="20"/>
</bezel>
<bezel name="50P" element="50P">
<bounds x="87" y="62" width="16" height="16" />
</bezel>
<bezel name="lamp92" element="matrixlamp" state="0">
<bounds x="105" y="60" width="20" height="20"/>
</bezel>
<bezel name="lamp93" element="matrixlamp" state="0">
<bounds x="125" y="60" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="127" y="62" width="16" height="16" />
</bezel>
<bezel name="lamp94" element="matrixlamp" state="0">
<bounds x="145" y="60" width="20" height="20"/>
</bezel>
<bezel name="£1" element="£1">
<bounds x="147" y="62" width="16" height="16" />
</bezel>
<bezel name="lamp95" element="matrixlamp" state="0">
<bounds x="165" y="60" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="167" y="62" width="16" height="16" />
</bezel>
<bezel name="lamp96" element="matrixlamp" state="0">
<bounds x="25" y="80" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="27" y="82" width="16" height="16" />
</bezel>
<bezel name="lamp97" element="matrixlamp" state="0">
<bounds x="45" y="80" width="20" height="20"/>
</bezel>
<bezel name="lamp98" element="matrixlamp" state="0">
<bounds x="65" y="80" width="20" height="20"/>
</bezel>
<bezel name="50P" element="50P">
<bounds x="67" y="82" width="16" height="16" />
</bezel>
<bezel name="lamp99" element="matrixlamp" state="0">
<bounds x="85" y="80" width="20" height="20"/>
</bezel>
<bezel name="lamp100" element="matrixlamp" state="0">
<bounds x="105" y="80" width="20" height="20"/>
</bezel>
<bezel name="lamp101" element="matrixlamp" state="0">
<bounds x="125" y="80" width="20" height="20"/>
</bezel>
<bezel name="lamp102" element="matrixlamp" state="0">
<bounds x="145" y="80" width="20" height="20"/>
</bezel>
<bezel name="lamp103" element="matrixlamp" state="0">
<bounds x="165" y="80" width="20" height="20"/>
</bezel>
<bezel name="50P" element="50P">
<bounds x="167" y="82" width="16" height="16" />
</bezel>
<bezel name="lamp104" element="matrixlamp" state="0">
<bounds x="25" y="100" width="20" height="20"/>
</bezel>
<bezel name="lamp105" element="matrixlamp" state="0">
<bounds x="45" y="100" width="20" height="20"/>
</bezel>
<bezel name="lamp106" element="matrixlamp" state="0">
<bounds x="65" y="100" width="20" height="20"/>
</bezel>
<bezel name="lamp107" element="matrixlamp" state="0">
<bounds x="85" y="100" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="87" y="102" width="16" height="16" />
</bezel>
<bezel name="lamp108" element="matrixlamp" state="0">
<bounds x="105" y="100" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="107" y="102" width="16" height="16" />
</bezel>
<bezel name="lamp109" element="matrixlamp" state="0">
<bounds x="125" y="100" width="20" height="20"/>
</bezel>
<bezel name="20P" element="20P">
<bounds x="127" y="102" width="16" height="16" />
</bezel>
<bezel name="lamp110" element="matrixlamp" state="0">
<bounds x="145" y="100" width="20" height="20"/>
</bezel>
<bezel name="lamp111" element="matrixlamp" state="0">
<bounds x="165" y="100" width="20" height="20"/>
</bezel>
<bezel name="lamp112" element="matrixlamp" state="0">
<bounds x="25" y="120" width="20" height="20"/>
</bezel>
<bezel name="20P" element="20P">
<bounds x="27" y="122" width="8" height="8" />
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="27" y="132" width="8" height="8" />
</bezel>
<bezel name="lamp113" element="matrixlamp" state="0">
<bounds x="45" y="120" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="47" y="122" width="8" height="8" />
</bezel>
<bezel name="lamp114" element="matrixlamp" state="0">
<bounds x="65" y="120" width="20" height="20"/>
</bezel>
<bezel name="lamp115" element="matrixlamp" state="0">
<bounds x="85" y="120" width="20" height="20"/>
</bezel>
<bezel name="10P" element="10P">
<bounds x="87" y="122" width="16" height="16" />
</bezel>
<bezel name="lamp116" element="matrixlamp" state="0">
<bounds x="105" y="120" width="20" height="20"/>
</bezel>
<bezel name="lamp117" element="matrixlamp" state="0">
<bounds x="125" y="120" width="20" height="20"/>
</bezel>
<bezel name="lamp118" element="matrixlamp" state="0">
<bounds x="145" y="120" width="20" height="20"/>
</bezel>
<bezel name="EXTRA" element="EXTRA">
<bounds x="147" y="122" width="16" height="16" />
</bezel>
<bezel name="lamp119" element="matrixlamp" state="0">
<bounds x="165" y="120" width="20" height="20"/>
</bezel>
<bezel name="SNAKE" element="SNAKE">
<bounds x="167" y="122" width="16" height="16" />
</bezel>
<bezel name="lamp120" element="matrixlamp" state="0">
<bounds x="25" y="140" width="20" height="20"/>
</bezel>
<bezel name="lamp121" element="matrixlamp" state="0">
<bounds x="45" y="140" width="20" height="20"/>
</bezel>
<bezel name="lamp122" element="matrixlamp" state="0">
<bounds x="65" y="140" width="20" height="20"/>
</bezel>
<bezel name="BOOST" element="BOOST">
<bounds x="67" y="142" width="16" height="16" />
</bezel>
<bezel name="lamp123" element="matrixlamp" state="0">
<bounds x="85" y="140" width="20" height="20"/>
</bezel>
<bezel name="lamp124" element="matrixlamp" state="0">
<bounds x="105" y="140" width="20" height="20"/>
</bezel>
<bezel name="lamp125" element="matrixlamp" state="0">
<bounds x="125" y="140" width="20" height="20"/>
</bezel>
<bezel name="LADDER" element="LADDER">
<bounds x="127" y="142" width="16" height="16" />
</bezel>
<bezel name="lamp126" element="matrixlamp" state="0">
<bounds x="145" y="140" width="20" height="20"/>
</bezel>
<bezel name="lamp127" element="matrixlamp" state="0">
<bounds x="165" y="140" width="20" height="20"/>
</bezel>
<bezel name="lamp55" element="matrixlamp" state="0">
<bounds x="200" y="140" width="20" height="20"/>
</bezel>
<bezel name="SKILLSTOP" element="SKILLSTOP">
<bounds x="202" y="142" width="16" height="16" />
</bezel>
<bezel name="COLLECTLAMP" element="CONTINUE">
<bounds x="0" y="200" width="16" height="16" />
</bezel>
<bezel name="COLLECT" element="COLLECT" inputtag="BLACK1" inputmask="0x10">
<bounds x="0" y="220" width="16" height="16" />
</bezel>
<bezel name="lamp34" element="PASS" inputtag="BLACK1" inputmask="0x08">
<bounds x="0" y="240" width="16" height="16" />
</bezel>
<bezel name="lamp40" element="A" inputtag="BLACK1" inputmask="0x04">
<bounds x="0" y="260" width="16" height="16" />
</bezel>
<bezel name="lamp42" element="B" inputtag="BLACK1" inputmask="0x02">
<bounds x="0" y="280" width="16" height="16" />
</bezel>
<bezel name="lamp49" element="C" inputtag="BLACK1" inputmask="0x01">
<bounds x="0" y="300" width="16" height="16" />
</bezel>
<bezel name="lamp26" element="START" inputtag="BLACK2" inputmask="0x10">
<bounds x="564" y="200" width="16" height="16" />
</bezel>
<bezel name="lamp33" element="CONTINUE" inputtag="BLACK2" inputmask="0x08">
<bounds x="564" y="220" width="16" height="16" />
</bezel>
<bezel name="lamp41" element="A" inputtag="BLACK2" inputmask="0x04">
<bounds x="564" y="240" width="16" height="16" />
</bezel>
<bezel name="lamp48" element="B" inputtag="BLACK2" inputmask="0x02">
<bounds x="564" y="260" width="16" height="16" />
</bezel>
<bezel name="lamp50" element="C" inputtag="BLACK2" inputmask="0x01">
<bounds x="564" y="280" width="16" height="16" />
</bezel>
<screen index="0">
<bounds x="50" y="200" width="504" height="296" />
</screen>
</view>
</mamelayout>

View File

@ -31788,6 +31788,7 @@ exsprt48
itvg48
wowwg
110dance
lxts3
@source:newbrain.cpp
newbrain //