highvideo.cpp: new NOT WORKING machines (Brazilian gambling games) (#10307)

Also got rid of function statics, made some of the other sets in here
that didn't boot, boot, and set some to the correct machine type so the
video renders as it should.

new NOT WORKING machines
------------
Zoomania (Version 10.04, set 1) [Cristiano-MDQ]
Sala Due (Version 3.04) [Cristiano-MDQ]
Paradise (Industrias Brasilerias, Version 1.04) [Cristiano-MDQ]

new NOT WORKING clones
------------
Sala Due (Version 1.04)
Zoomania (Version 10.04, set 2) [Cristiano-MDQ]
This commit is contained in:
David Haywood 2022-09-06 20:23:43 +01:00 committed by GitHub
parent b68cfd1a28
commit 0430234a36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 227 additions and 131 deletions

View File

@ -16934,6 +16934,7 @@ hideseek //
higemaru // 9/1984 (c) 1984
@source:misc/highvdeo.cpp
bingopd
brasil // (c) 2000 unknown
cfever1k // (c) 2000 High Video
cfever40 // (c) 2000 High Video
@ -16951,9 +16952,13 @@ newmcard // (c) 19?? unknown
newtiger // (c) 200? unknown
nyjoker //
record // (c) 2000 High Video
saladue
saladuea
tour4000 // (c) 2000 High Video
tour4010 // (c) 2000 High Video
unksmk //
zoomania
zoomaniaa
@source:sega/hikaru.cpp
airtrix // 2001.02? Air Trix (Rev A)

View File

@ -128,6 +128,8 @@ public:
{ }
void grancapi(machine_config &config);
void newtiger(machine_config &config);
void zoomania(machine_config &config);
void tv_ncf(machine_config &config);
void ciclone(machine_config &config);
void nyjoker(machine_config &config);
@ -141,6 +143,7 @@ public:
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
required_shared_ptr<uint16_t> m_blit_ram;
@ -157,18 +160,25 @@ private:
template<int Mask> void bankselect_w(uint8_t data);
void write1_w(uint16_t data);
uint16_t tv_ncf_read1_r();
uint16_t newmcard_status_r(offs_t offset);
uint16_t newmcard_status_r();
uint16_t newmcard_prot_r();
uint16_t newmcard_vblank_r();
void newmcard_vblank_w(uint16_t data);
void write2_w(uint16_t data);
void write2_no_lock_w(uint16_t data);
void nyj_write2_w(uint16_t data);
uint16_t brasil_status_r(offs_t offset);
uint16_t brasil_status_r();
uint16_t brasil_prot_r();
void brasil_status_w(uint16_t data);
uint16_t ciclone_status_r(offs_t offset);
uint16_t grancapi_status_r(offs_t offset);
void grancapi_status_w(uint16_t data);
uint16_t magicbom_status_r(offs_t offset);
uint16_t record_status_r(offs_t offset);
uint16_t ciclone_status_r();
uint16_t ciclone_prot_r();
uint16_t grancapi_status_r();
uint16_t grancapi_prot_r();
uint16_t newtiger_prot_r();
uint16_t magicbom_status_r();
uint16_t magicbom_prot_r();
uint16_t record_status_r();
uint16_t record_prot_r();
void fashion_output_w(uint16_t data);
void tv_oki6376_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
uint8_t tv_oki6376_r();
@ -188,6 +198,8 @@ private:
void ciclone_io(address_map &map);
void fashion_io(address_map &map);
void grancapi_io(address_map &map);
void newtiger_io(address_map &map);
void zoomania_io(address_map &map);
void magicbom_io(address_map &map);
void newmcard_io_base(address_map &map);
void newmcard_io(address_map &map);
@ -202,6 +214,8 @@ private:
void tv_tcf_map(address_map &map);
void tv_vcf_io(address_map &map);
void tv_vcf_map(address_map &map);
uint8_t m_resetpulse;
};
void highvdeo_state::machine_start()
@ -213,6 +227,13 @@ void highvdeo_state::machine_start()
uint32_t max = memregion("maincpu")->bytes() / 0x40000;
m_mainbank->configure_entries(0, max, memregion("maincpu")->base(), 0x40000);
}
save_item(NAME(m_resetpulse));
}
void highvdeo_state::machine_reset()
{
m_resetpulse = 0;
}
@ -368,13 +389,11 @@ void highvdeo_state::tv_vcf_io(address_map &map)
uint16_t highvdeo_state::tv_ncf_read1_r()
{
static int resetpulse = 0;
// Bit 6 of port 1 is connected to clock impulse, as heartbeat. If impulse cease
// machine resets itself.
resetpulse ^= 0x40;
m_resetpulse ^= 0x40;
return (m_inputs[1]->read() & 0xbf) | resetpulse;
return (m_inputs[1]->read() & 0xbf) | m_resetpulse;
}
void highvdeo_state::tv_ncf_oki6376_st_w(offs_t offset, uint16_t data, uint16_t mem_mask)
@ -477,24 +496,22 @@ void highvdeo_state::tv_tcf_io(address_map &map)
*
****************************/
uint16_t highvdeo_state::ciclone_status_r(offs_t offset)
uint16_t highvdeo_state::ciclone_status_r()
{
static uint16_t resetpulse;
switch(offset*2)
{
case 0:
resetpulse^=0x10;
return 0 | resetpulse;
case 2: return 0x15; //and 0x3f
}
m_resetpulse^=0x10;
return 0 | m_resetpulse;
}
return 0;
uint16_t highvdeo_state::ciclone_prot_r()
{
return 0x15; // & 0x3f
}
void highvdeo_state::ciclone_io(address_map &map)
{
tv_tcf_io(map);
map(0x0030, 0x0033).r(FUNC(highvdeo_state::ciclone_status_r));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::ciclone_status_r));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::ciclone_prot_r));
}
/****************************
@ -503,38 +520,34 @@ void highvdeo_state::ciclone_io(address_map &map)
*
****************************/
uint16_t highvdeo_state::newmcard_status_r(offs_t offset)
uint16_t highvdeo_state::newmcard_status_r()
{
switch(offset*2)
{
case 0:
if (!machine().side_effects_disabled())
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return 2; //and $7
case 2:
return 2; //and $7
}
return 0;
if (!machine().side_effects_disabled())
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
return 2; //and $7
}
uint16_t highvdeo_state::record_status_r(offs_t offset)
uint16_t highvdeo_state::newmcard_prot_r()
{
static uint16_t resetpulse;
switch(offset*2)
{
case 0:
if (!machine().side_effects_disabled())
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
resetpulse^=0x15; // and 0x07, cmp with 0x05
return 0 | resetpulse;
case 2:
return 0x15; // unknown
}
return 0;
return 2; //and $7
}
uint16_t highvdeo_state::record_status_r()
{
if (!machine().side_effects_disabled())
m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
m_resetpulse^=0x15; // and 0x07, cmp with 0x05
return 0 | m_resetpulse;
}
uint16_t highvdeo_state::record_prot_r()
{
return 0x15; // unknown
}
uint16_t highvdeo_state::newmcard_vblank_r()
{
return m_vblank_bit; //0x80
@ -558,6 +571,12 @@ void highvdeo_state::write2_w(uint16_t data)
}
}
void highvdeo_state::write2_no_lock_w(uint16_t data)
{
// does coinlock not map here on these, or is it inverted?
//popmessage("%04x", data);
}
void highvdeo_state::newmcard_map(address_map &map)
{
map(0x00000, 0x003ff).ram(); /*irq vector area*/
@ -586,13 +605,15 @@ void highvdeo_state::newmcard_io_base(address_map &map)
void highvdeo_state::newmcard_io(address_map &map)
{
newmcard_io_base(map);
map(0x0030, 0x0033).r(FUNC(highvdeo_state::newmcard_status_r));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::newmcard_status_r));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::newmcard_prot_r));
}
void highvdeo_state::record_io(address_map &map)
{
newmcard_io_base(map);
map(0x0030, 0x0033).r(FUNC(highvdeo_state::record_status_r));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::record_status_r));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::record_prot_r));
}
/****************************
@ -602,20 +623,15 @@ void highvdeo_state::record_io(address_map &map)
****************************/
uint16_t highvdeo_state::brasil_status_r(offs_t offset)
uint16_t highvdeo_state::brasil_status_r()
{
static uint16_t resetpulse;
m_resetpulse^=0x10;
return 3 | m_resetpulse;
}
switch(offset*2)
{
case 0:
resetpulse^=0x10;
return 3 | resetpulse;
case 2: return (m_brasil_prot_latch & 3); //and 0x3f
}
return 0;
uint16_t highvdeo_state::brasil_prot_r()
{
return (m_brasil_prot_latch & 3); //and 0x3f
}
/*bankaddress might be incorrect.*/
@ -633,51 +649,32 @@ void highvdeo_state::brasil_status_w(uint16_t data)
// popmessage("%04x",data);
}
uint16_t highvdeo_state::grancapi_status_r(offs_t offset)
uint16_t highvdeo_state::grancapi_status_r()
{
static uint16_t resetpulse;
switch(offset*2)
{
case 0:
resetpulse^=0x20;
return 3 | resetpulse;
case 2: return (m_grancapi_prot_latch & 3)|0x17; //and 0x3f // This will always return 0x17: Coverity 316053
}
return 0;
m_resetpulse ^= 0x20;
return 0xd3 | m_resetpulse;
}
/*bankaddress might be incorrect.*/
void highvdeo_state::grancapi_status_w(uint16_t data)
uint16_t highvdeo_state::grancapi_prot_r()
{
switch(data & 3) //data & 7?
{
case 0: m_grancapi_prot_latch = 1; break;
case 1: m_grancapi_prot_latch = 0; break;
case 2: m_grancapi_prot_latch = 2; break;
}
m_mainbank->set_entry(data & 0x07);
// popmessage("%04x",data);
return 0x17;
}
uint16_t highvdeo_state::magicbom_status_r(offs_t offset)
uint16_t highvdeo_state::newtiger_prot_r()
{
static uint16_t resetpulse;
return 0x08;
}
switch(offset*2)
{
case 0:
resetpulse^=0x20;
return resetpulse;
case 2: return (m_grancapi_prot_latch & 3)|0x0b; //and 0x3f
}
uint16_t highvdeo_state::magicbom_status_r()
{
m_resetpulse^=0x20;
return m_resetpulse;
}
return 0;
uint16_t highvdeo_state::magicbom_prot_r()
{
return (m_grancapi_prot_latch & 3)|0x0b;
}
@ -692,7 +689,8 @@ void highvdeo_state::brasil_map(address_map &map)
void highvdeo_state::brasil_io(address_map &map)
{
map(0x0030, 0x0033).r(FUNC(highvdeo_state::brasil_status_r));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::brasil_status_r));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::brasil_prot_r));
map(0x0030, 0x0031).w(FUNC(highvdeo_state::brasil_status_w));
map(0x0000, 0x0001).w(FUNC(highvdeo_state::write1_w)); // lamps
map(0x0002, 0x0003).w(FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
@ -724,29 +722,43 @@ void highvdeo_state::fashion_io(address_map &map)
void highvdeo_state::grancapi_io(address_map &map)
{
map(0x0030, 0x0033).r(FUNC(highvdeo_state::grancapi_status_r));
map(0x000e, 0x000f).w(FUNC(highvdeo_state::grancapi_status_w));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::grancapi_status_r));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::grancapi_prot_r));
map(0x0030, 0x0030).w(FUNC(highvdeo_state::bankselect_w<0x07>));
map(0x0000, 0x0001).w(FUNC(highvdeo_state::write1_w)); // lamps
map(0x0002, 0x0003).w(FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
map(0x0006, 0x0007).w(FUNC(highvdeo_state::tv_oki6376_w));
map(0x0008, 0x0009).r(FUNC(highvdeo_state::read0_r));
map(0x000a, 0x000b).r(FUNC(highvdeo_state::read1_r));
map(0x000e, 0x000e).rw(FUNC(highvdeo_state::read2_nmi_clear_r), FUNC(highvdeo_state::nmi_clear_w));
// map(0xffa2, 0xffa3).w(FUNC(highvdeo_state::));
}
void highvdeo_state::newtiger_io(address_map &map)
{
grancapi_io(map);
map(0x0002, 0x0003).w(FUNC(highvdeo_state::write2_no_lock_w));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::newtiger_prot_r));
}
void highvdeo_state::zoomania_io(address_map &map)
{
brasil_io(map);
map(0x0002, 0x0003).w(FUNC(highvdeo_state::write2_no_lock_w));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::grancapi_status_r));
}
void highvdeo_state::magicbom_io(address_map &map)
{
map(0x0002, 0x0003).w(FUNC(highvdeo_state::fashion_output_w));
map(0x0030, 0x0033).r(FUNC(highvdeo_state::magicbom_status_r));
map(0x000e, 0x000f).w(FUNC(highvdeo_state::grancapi_status_w));
map(0x0030, 0x0031).r(FUNC(highvdeo_state::magicbom_status_r));
map(0x0032, 0x0033).r(FUNC(highvdeo_state::magicbom_prot_r));
map(0x0030, 0x0030).w(FUNC(highvdeo_state::bankselect_w<0x07>));
map(0x0000, 0x0001).w(FUNC(highvdeo_state::write1_w)); // lamps
map(0x0002, 0x0003).w(FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout
map(0x0006, 0x0007).w(FUNC(highvdeo_state::tv_oki6376_w));
map(0x0008, 0x0009).r(FUNC(highvdeo_state::read0_r));
map(0x000a, 0x000b).r(FUNC(highvdeo_state::read1_r));
map(0x000e, 0x000e).rw(FUNC(highvdeo_state::read2_nmi_clear_r), FUNC(highvdeo_state::nmi_clear_w));
// map(0xffa2, 0xffa3).w(FUNC(highvdeo_state::));
}
@ -1353,10 +1365,25 @@ void highvdeo_state::grancapi(machine_config &config)
OKIM6376(config, m_okim6376, XTAL(12'000'000)/2/2/20).add_route(ALL_OUTPUTS, "mono", 1.0); //Guess, gives same sample rate as previous emulation
}
void highvdeo_state::newtiger(machine_config &config)
{
grancapi(config);
m_maincpu->set_addrmap(AS_IO, &highvdeo_state::newtiger_io);
}
void highvdeo_state::zoomania(machine_config &config)
{
grancapi(config);
I80186(config.replace(), m_maincpu, 32.0000_MHz_XTAL/2); // 32Mhz XTAL near 20Mhz rated CPU
m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::brasil_map);
m_maincpu->set_addrmap(AS_IO, &highvdeo_state::zoomania_io);
}
void highvdeo_state::magicbom(machine_config &config)
{
I80186(config, m_maincpu, 20000000);
m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::brasil_map);
m_maincpu->set_addrmap(AS_PROGRAM, &highvdeo_state::tv_tcf_map);
m_maincpu->set_addrmap(AS_IO, &highvdeo_state::magicbom_io);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@ -1366,10 +1393,14 @@ void highvdeo_state::magicbom(machine_config &config)
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(400, 300);
screen.set_visarea(0, 400-1, 0, 300-1);
screen.set_screen_update(FUNC(highvdeo_state::screen_update_brasil));
screen.set_screen_update(FUNC(highvdeo_state::screen_update_tourvisn));
screen.screen_vblank().set_inputline(m_maincpu, INPUT_LINE_NMI, ASSERT_LINE);
PALETTE(config, m_palette, palette_device::RGB_565);
PALETTE(config, m_palette).set_entries(0x100);
m_palette->set_format(palette_device::RGB_565, 0x100);
ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette));
ramdac.set_addrmap(0, &highvdeo_state::ramdac_map);
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -1645,10 +1676,8 @@ ROM_END
ROM_START( unksmk ) // VIDEO/SMK-1 C PCB. V30 + OKI M6376. Feigns to be a NeoGeo multigame to cover gambling game? Needs investigation.
ROM_REGION( 0x100000, "maincpu", 0 ) // no labels
ROM_LOAD16_BYTE( "ic7", 0x00000, 0x40000, CRC(ce1f303c) SHA1(8563ba217357857d0bc49cc64426406fa12a2f9b) )
ROM_RELOAD( 0x80000, 0x40000 )
ROM_LOAD16_BYTE( "ic8", 0x00001, 0x40000, CRC(b85575e5) SHA1(4fcda845c8e1b6c843cfe0a1f9b06df806325a7d) )
ROM_RELOAD( 0x80001, 0x40000 )
ROM_LOAD16_BYTE( "ic7", 0x80000, 0x40000, CRC(ce1f303c) SHA1(8563ba217357857d0bc49cc64426406fa12a2f9b) )
ROM_LOAD16_BYTE( "ic8", 0x80001, 0x40000, CRC(b85575e5) SHA1(4fcda845c8e1b6c843cfe0a1f9b06df806325a7d) )
ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "ng 1.ic25", 0x00000, 0x80000, CRC(89291fe6) SHA1(f729e6b90a98151ff64baa1d852137a86bd0ef93) ) // handwritten label
@ -1663,26 +1692,88 @@ ROM_START( newtiger ) // New High Video TYPE 001/V0 PCB. N80C186XL25 + OKIM6376
ROM_LOAD( "new tiger sound v.-1 memory 2m.u16", 0x00000, 0x40000, CRC(aa8444ec) SHA1(3663c01a7cf2fe334eb6ea974d6a0c0b6bb88354) )
ROM_END
ROM_START( zoomania )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "zoo10.04-u7.bin", 0x000000, 0x100000, CRC(f5c14df4) SHA1(49ff2fc504f9d612d74ad6bf98f914cedaf5f8f0) )
ROM_LOAD16_BYTE( "zoo10.04-u8.bin", 0x000001, 0x100000, CRC(6b99d566) SHA1(462c783eaa4e05174fe6db5ae37fc6327305dfad) )
ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "zoosom10.04.bin", 0x00000, 0x80000, CRC(49caa85b) SHA1(8ee3b72d082c7818f3937445ddbee8d14154b8a4) )
ROM_END
ROM_START( zoomaniaa )
ROM_REGION( 0x200000, "maincpu", 0 )
// u8 and u7 are swapped here?
ROM_LOAD16_BYTE( "u 08 zoo c soq", 0x000000, 0x100000, CRC(7761beac) SHA1(a4e69631159036b1c6f6a310d18302bdf0fff610) )
ROM_LOAD16_BYTE( "u 07 zoo c soq", 0x000001, 0x100000, CRC(6b99d566) SHA1(462c783eaa4e05174fe6db5ae37fc6327305dfad) ) // same as zoomania
ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */
ROM_LOAD( "u somzoo c soq", 0x00000, 0x80000, CRC(2f5a954c) SHA1(7a88423349cd66fbdd66b6387c8c223944680797) )
ROM_END
ROM_START( saladue )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "07 sala 10,8", 0x000000, 0x100000, CRC(dbb4650b) SHA1(e2e6080dd100bdf621420050769af2ea5775ea5b) )
ROM_LOAD16_BYTE( "08 sala 10,8", 0x000001, 0x100000, CRC(207e0382) SHA1(6cb5f3bb82976bbbe20a1b97ad28412250fe228c) )
ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "4828 som sala", 0x00000, 0x80000, CRC(64ec8642) SHA1(7200b05b3bc107e2f360fa48c9c98ebd0cf593c5) )
ROM_END
ROM_START( saladuea )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "bingov1.2u7.bin", 0x000000, 0x100000, CRC(feca3217) SHA1(144f7b7ded565398c11b3f61756b0bbc34423073) )
ROM_LOAD16_BYTE( "bingov1.2u8.bin", 0x000001, 0x100000, CRC(bb708ef1) SHA1(e5b6265bbe365ce93ec5e1459e7242a4b43bcc04) )
ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "bingosomv1.2bin", 0x00000, 0x80000, CRC(2f5a954c) SHA1(7a88423349cd66fbdd66b6387c8c223944680797) ) // same as zoomaniaa, is this correct?
ROM_END
ROM_START( bingopd )
ROM_REGION( 0x200000, "maincpu", 0 )
ROM_LOAD16_BYTE( "e730 bingo p", 0x000000, 0x100000, CRC(c801fae5) SHA1(2793e65bcfef3dd3c83b02ee51b5acdb98a382c4) )
ROM_LOAD16_BYTE( "3db8 08", 0x000001, 0x100000, CRC(a238e008) SHA1(313ebd62c333f335aa871d8998bef006adb653fa) )
ROM_REGION( 0x080000, "oki", 0 )
ROM_LOAD( "samples", 0x00000, 0x80000, NO_DUMP )
ROM_END
} // Anonymous namespace
// should some of these be set up as clones? they seem very similar at least
GAMEL( 2000, tour4000, 0, tv_vcf, tv_vcf, highvdeo_state, empty_init, ROT0, "High Video", "Tour 4000", 0, layout_fashion )
GAMEL( 2000, cfever40, 0, tv_vcf, tv_vcf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 4.0", 0, layout_fashion )
GAMEL( 2000, cfever50, 0, tv_vcf, tv_vcf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 5.0", 0, layout_fashion )
GAMEL( 2000, tour4010, 0, tv_ncf, tv_ncf, highvdeo_state, empty_init, ROT0, "High Video", "Tour 4010", 0, layout_fashion )
GAMEL( 2000, cfever51, 0, tv_ncf, tv_ncf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 5.1", 0, layout_fashion )
GAMEL( 2000, cfever61, 0, tv_ncf, tv_ncf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 6.1", 0, layout_fashion )
GAMEL( 2000, nyjoker, 0, nyjoker, nyjoker, highvdeo_state, empty_init, ROT0, "High Video", "New York Joker", 0, layout_fashion )
GAMEL( 2000, cfever1k, 0, tv_tcf, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 1k", 0, layout_fashion )
GAMEL( 2000, girotutt, 0, tv_tcf, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "GiroTutto", 0, layout_fashion )
GAMEL( 2000, galeone, 0, nyjoker, nyjoker, highvdeo_state, empty_init, ROT0, "San Remo Games", "Il Galeone", 0, layout_fashion )
GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Ciclone", 0, layout_fashion )
GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "New Magic Card", 0, layout_fashion )
GAMEL( 2000, brasil, 0, brasil, brasil, highvdeo_state, empty_init, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion )
GAMEL( 2000, fashion, brasil, fashion, fashion, highvdeo_state, empty_init, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion )
GAMEL( 2000, grancapi, 0, grancapi, brasil, highvdeo_state, empty_init, ROT0, "High Video", "Gran Capitan (Version 3)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, empty_init, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 2000, record, 0, record, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion )
GAMEL( 2000, cuncino, 0, grancapi, brasil, highvdeo_state, empty_init, ROT0, "High Video", "Capitan Uncino (High Video, version 2)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 200?, unksmk, 0, nyjoker, nyjoker, highvdeo_state, empty_init, ROT0, "High Video", "unknown SMK game", MACHINE_NOT_WORKING, layout_fashion ) // needs correct inputs
GAMEL( 200?, newtiger, 0, magicbom, fashion, highvdeo_state, empty_init, ROT0, "High Video", "New Tiger", MACHINE_NOT_WORKING, layout_fashion ) // slightly differently protected
// 320x240, palette (RAMDAC at 0x10/12/14)
GAMEL( 2000, tour4000, 0, tv_vcf, tv_vcf, highvdeo_state, empty_init, ROT0, "High Video", "Tour 4000", 0, layout_fashion )
GAMEL( 2000, cfever40, 0, tv_vcf, tv_vcf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 4.0", 0, layout_fashion )
GAMEL( 2000, cfever50, 0, tv_vcf, tv_vcf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 5.0", 0, layout_fashion )
GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "New Magic Card", 0, layout_fashion )
GAMEL( 2000, record, 0, record, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion )
// 320x240, palette (RAMDAC at 0x30/32/34) no ROM banking
GAMEL( 2000, tour4010, 0, tv_ncf, tv_ncf, highvdeo_state, empty_init, ROT0, "High Video", "Tour 4010", 0, layout_fashion )
GAMEL( 2000, cfever51, 0, tv_ncf, tv_ncf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 5.1", 0, layout_fashion )
GAMEL( 2000, cfever61, 0, tv_ncf, tv_ncf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 6.1", 0, layout_fashion )
// 320x240, palette (RAMDAC at 0x30/32/34) no ROM banking, alt VRAM base
GAMEL( 2000, nyjoker, 0, nyjoker, nyjoker, highvdeo_state, empty_init, ROT0, "High Video", "New York Joker", 0, layout_fashion )
GAMEL( 2000, galeone, 0, nyjoker, nyjoker, highvdeo_state, empty_init, ROT0, "San Remo Games", "Il Galeone", 0, layout_fashion )
GAMEL( 200?, unksmk, 0, nyjoker, nyjoker, highvdeo_state, empty_init, ROT0, "High Video", "unknown SMK game", MACHINE_NOT_WORKING, layout_fashion ) // needs correct inputs (is this a good dump?)
// 400x300, palette (in RAM)
GAMEL( 2000, magicbom, 0, magicbom, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 2000, cfever1k, 0, tv_tcf, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Casino Fever 1k", 0, layout_fashion )
GAMEL( 2000, girotutt, 0, tv_tcf, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "GiroTutto", 0, layout_fashion )
GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, empty_init, ROT0, "High Video", "Ciclone", 0, layout_fashion )
// 400x300, RGB color
GAMEL( 2000, brasil, 0, brasil, brasil, highvdeo_state, empty_init, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion )
GAMEL( 2000, fashion, brasil, fashion, fashion, highvdeo_state, empty_init, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion )
GAMEL( 2000, grancapi, 0, grancapi, brasil, highvdeo_state, empty_init, ROT0, "High Video", "Gran Capitan (Version 3)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 2000, cuncino, 0, grancapi, brasil, highvdeo_state, empty_init, ROT0, "High Video", "Capitan Uncino (High Video, version 2)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 200?, newtiger, 0, newtiger, brasil, highvdeo_state, empty_init, ROT0, "High Video", "New Tiger", MACHINE_NOT_WORKING, layout_fashion ) // slightly differently protected
GAMEL( 200?, zoomania, 0, zoomania, brasil, highvdeo_state, empty_init, ROT0, "Industrias Brasilerias", "Zoomania (Version 10.04, set 1)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 200?, zoomaniaa, zoomania, zoomania, brasil, highvdeo_state, empty_init, ROT0, "Industrias Brasilerias", "Zoomania (Version 10.04, set 2)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 200?, saladue, 0, zoomania, brasil, highvdeo_state, empty_init, ROT0, "Industrias Brasilerias", "Sala Due (Version 3.04)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 200?, saladuea, saladue, zoomania, brasil, highvdeo_state, empty_init, ROT0, "Industrias Brasilerias", "Sala Due (Version 1.04)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 200?, bingopd, 0, zoomania, brasil, highvdeo_state, empty_init, ROT0, "Industrias Brasilerias", "Paradise (Industrias Brasilerias, Version 1.04)", MACHINE_NOT_WORKING, layout_fashion )