diff --git a/src/mame/drivers/highvdeo.cpp b/src/mame/drivers/highvdeo.cpp index 8b9bcd1e8b3..494f84c0bfe 100644 --- a/src/mame/drivers/highvdeo.cpp +++ b/src/mame/drivers/highvdeo.cpp @@ -114,23 +114,28 @@ class highvdeo_state : public driver_device { public: highvdeo_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_blit_ram(*this, "blit_ram"), - m_maincpu(*this, "maincpu"), - m_okim6376(*this, "oki"), - m_palette(*this, "palette") { } + : driver_device(mconfig, type, tag) + , m_blit_ram(*this, "blit_ram") + , m_mainbank(*this, "mainbank") + , m_lamps(*this, "lamp%u", 1U) + , m_maincpu(*this, "maincpu") + , m_okim6376(*this, "oki") + , m_palette(*this, "palette") + { } required_shared_ptr m_blit_ram; + optional_memory_bank m_mainbank; + + output_finder<6> m_lamps; uint16_t m_vblank_bit; uint16_t m_brasil_prot_latch; uint16_t m_grancapi_prot_latch; DECLARE_READ16_MEMBER(read0_r); DECLARE_READ16_MEMBER(read1_r); DECLARE_READ16_MEMBER(read2_r); - DECLARE_WRITE16_MEMBER(tv_vcf_bankselect_w); + template DECLARE_WRITE16_MEMBER(bankselect_w); DECLARE_WRITE16_MEMBER(write1_w); DECLARE_READ16_MEMBER(tv_ncf_read1_r); - DECLARE_WRITE16_MEMBER(tv_tcf_bankselect_w); DECLARE_READ16_MEMBER(newmcard_status_r); DECLARE_READ16_MEMBER(newmcard_vblank_r); DECLARE_WRITE16_MEMBER(newmcard_vblank_w); @@ -148,10 +153,7 @@ public: DECLARE_READ16_MEMBER(tv_oki6376_r); DECLARE_WRITE16_MEMBER(tv_ncf_oki6376_w); DECLARE_WRITE16_MEMBER(tv_ncf_oki6376_st_w); - DECLARE_DRIVER_INIT(fashion); - DECLARE_DRIVER_INIT(ciclone); - DECLARE_DRIVER_INIT(record); - DECLARE_VIDEO_START(tourvisn); + virtual void machine_start() override; uint32_t screen_update_tourvisn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_brasil(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); INTERRUPT_GEN_MEMBER(vblank_irq); @@ -165,18 +167,24 @@ public: void nyjoker(machine_config &config); void magicbom(machine_config &config); void brasil(machine_config &config); + void fashion(machine_config &config); void newmcard(machine_config &config); + void record(machine_config &config); void tv_tcf(machine_config &config); void tv_vcf(machine_config &config); void brasil_io(address_map &map); void brasil_map(address_map &map); + void ciclone_io(address_map &map); + void fashion_io(address_map &map); void grancapi_io(address_map &map); void magicbom_io(address_map &map); + void newmcard_io_base(address_map &map); void newmcard_io(address_map &map); void newmcard_map(address_map &map); void nyjoker_io(address_map &map); void nyjoker_map(address_map &map); void ramdac_map(address_map &map); + void record_io(address_map &map); void tv_ncf_io(address_map &map); void tv_ncf_map(address_map &map); void tv_tcf_io(address_map &map); @@ -185,22 +193,26 @@ public: void tv_vcf_map(address_map &map); }; - - - -VIDEO_START_MEMBER(highvdeo_state,tourvisn) +void highvdeo_state::machine_start() { + m_lamps.resolve(); + + if (m_mainbank.found()) /*bankaddress might be incorrect at brasil/fasion/grancapi/magicbom*/ + { + uint32_t max = memregion("maincpu")->bytes() / 0x40000; + m_mainbank->configure_entries(0, max, memregion("maincpu")->base(), 0x40000); + } } + uint32_t highvdeo_state::screen_update_tourvisn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { int x,y,count; - count = (0/2); - - for(y=0;y<(screen.visible_area().max_y+1);y++) + for(y=cliprect.min_y;y<=cliprect.max_y;y++) { - for(x=0;x<(screen.visible_area().max_x+1)/2;x++) + count = ((y * (screen.visible_area().max_x+1)) + cliprect.min_x) >> 1; + for(x=(cliprect.min_x>>1);x<=(cliprect.max_x>>1);x++) { uint32_t color; @@ -226,26 +238,14 @@ uint32_t highvdeo_state::screen_update_brasil(screen_device &screen, bitmap_rgb3 { int x,y,count; - count = (0/2); + const pen_t *rgb = m_palette->pens(); // 16 bit RGB - for(y=0;y<300;y++) + for(y=cliprect.min_y;y<=cliprect.max_y;y++) { - for(x=0;x<400;x++) + count = (y * 400) + cliprect.min_x; + for(x=cliprect.min_x;x<=cliprect.max_x;x++) { - uint32_t color; - uint32_t b; - uint32_t g; - uint32_t r; - - color = (m_blit_ram[count]) & 0xffff; - - b = (color & 0x001f) << 3; - g = (color & 0x07e0) >> 3; - r = (color & 0xf800) >> 8; - if(cliprect.contains(x, y)) - bitmap.pix32(y, x) = b | (g<<8) | (r<<16); - - count++; + bitmap.pix32(y, x) = rgb[m_blit_ram[count++]]; } } @@ -269,16 +269,10 @@ READ16_MEMBER(highvdeo_state::read2_r) return ioport("IN2")->read(); } - -WRITE16_MEMBER(highvdeo_state::tv_vcf_bankselect_w) +template +WRITE16_MEMBER(highvdeo_state::bankselect_w) { - uint32_t bankaddress; - uint8_t *ROM = memregion("user1")->base(); - - /* bits 0, 1 select the ROM bank */ - bankaddress = (data & 0x03) * 0x40000; - - membank("bank1")->set_base(&ROM[bankaddress]); + m_mainbank->set_entry(data & Mask); } @@ -315,12 +309,10 @@ WRITE16_MEMBER(highvdeo_state::write1_w) ---x ---- Hold5 lamp. --x- ---- Start lamp. */ - output().set_lamp_value(1, (data & 1)); /* Lamp 1 - HOLD 1 */ - output().set_lamp_value(2, (data >> 1) & 1); /* Lamp 2 - HOLD 2 */ - output().set_lamp_value(3, (data >> 2) & 1); /* Lamp 3 - HOLD 3 */ - output().set_lamp_value(4, (data >> 3) & 1); /* Lamp 4 - HOLD 4 */ - output().set_lamp_value(5, (data >> 4) & 1); /* Lamp 5 - HOLD 5 */ - output().set_lamp_value(6, (data >> 5) & 1); /* Lamp 6 - START */ + for (int i = 0; i < 6; i++) + { + m_lamps[i] = BIT(data, i); + } // popmessage("%04x %04x",t1,t3); } @@ -330,8 +322,8 @@ void highvdeo_state::tv_vcf_map(address_map &map) map(0x00000, 0x003ff).ram(); /*irq vector area*/ map(0x00400, 0x03fff).ram().share("nvram"); map(0x40000, 0x4ffff).ram().share("blit_ram"); /*blitter ram*/ - map(0x80000, 0xbffff).bankr("bank1"); - map(0xc0000, 0xfffff).rom().region("boot_prg", 0); + map(0x80000, 0xbffff).bankr("mainbank"); + map(0xc0000, 0xfffff).rom().region("maincpu", 0xc0000) } void highvdeo_state::tv_vcf_io(address_map &map) @@ -344,7 +336,7 @@ void highvdeo_state::tv_vcf_io(address_map &map) map(0x0010, 0x0010).w("ramdac", FUNC(ramdac_device::index_w)); map(0x0012, 0x0012).w("ramdac", FUNC(ramdac_device::mask_w)); map(0x0014, 0x0014).w("ramdac", FUNC(ramdac_device::pal_w)); - map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::tv_vcf_bankselect_w)).r(this, FUNC(highvdeo_state::tv_oki6376_r)); + map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::bankselect_w<0x03>)).r(this, FUNC(highvdeo_state::tv_oki6376_r)); } @@ -381,8 +373,7 @@ void highvdeo_state::tv_ncf_map(address_map &map) map(0x00000, 0x003ff).ram(); /*irq vector area*/ map(0x00400, 0x03fff).ram().share("nvram"); map(0x20000, 0x2ffff).ram().share("blit_ram"); /*blitter ram*/ - map(0x40000, 0xbffff).rom().region("user1", 0x40000); - map(0xc0000, 0xfffff).rom().region("boot_prg", 0); + map(0x40000, 0xfffff).rom().region("maincpu", 0x40000) } void highvdeo_state::tv_ncf_io(address_map &map) @@ -404,8 +395,7 @@ void highvdeo_state::nyjoker_map(address_map &map) map(0x00000, 0x003ff).ram(); /*irq vector area*/ map(0x00400, 0x03fff).ram().share("nvram"); map(0x10000, 0x1ffff).ram().share("blit_ram"); /*blitter ram*/ - map(0x40000, 0xbffff).rom().region("user1", 0x40000); - map(0xc0000, 0xfffff).rom().region("boot_prg", 0); + map(0x40000, 0xfffff).rom().region("maincpu", 0x40000) } void highvdeo_state::nyjoker_io(address_map &map) @@ -442,25 +432,14 @@ WRITE16_MEMBER(highvdeo_state::nyj_write2_w) machine().bookkeeping().coin_counter_w(1, ~data & 0x10); // Notes (all) } -WRITE16_MEMBER(highvdeo_state::tv_tcf_bankselect_w) -{ - uint32_t bankaddress; - uint8_t *ROM = memregion("user1")->base(); - - /* bits 0, 1, 2 select the ROM bank */ - bankaddress = (data & 0x07) * 0x40000; - - membank("bank1")->set_base(&ROM[bankaddress]); -} - void highvdeo_state::tv_tcf_map(address_map &map) { map(0x00000, 0x003ff).ram(); /*irq vector area*/ map(0x00400, 0x03fff).ram().share("nvram"); map(0x40000, 0x5d4bf).ram().share("blit_ram"); /*blitter ram*/ map(0x7fe00, 0x7ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - map(0x80000, 0xbffff).bankr("bank1"); - map(0xc0000, 0xfffff).rom().region("boot_prg", 0); + map(0x80000, 0xbffff).bankr("mainbank"); + map(0xc0000, 0xfffff).rom().region("maincpu", 0x1c0000); } void highvdeo_state::tv_tcf_io(address_map &map) @@ -469,7 +448,33 @@ void highvdeo_state::tv_tcf_io(address_map &map) map(0x0006, 0x0007).w(this, FUNC(highvdeo_state::tv_oki6376_w)); map(0x0008, 0x0009).r(this, FUNC(highvdeo_state::read0_r)); map(0x000a, 0x000b).r(this, FUNC(highvdeo_state::read1_r)); - map(0x0030, 0x0031).r(this, FUNC(highvdeo_state::read2_r)).w(this, FUNC(highvdeo_state::tv_tcf_bankselect_w)); + map(0x0030, 0x0031).r(this, FUNC(highvdeo_state::read2_r)).w(this, FUNC(highvdeo_state::bankselect_w<0x07>)); +} + +/**************************** +* +* Ciclone +* +****************************/ + +READ16_MEMBER(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 + } + + return 0; +} + +void highvdeo_state::ciclone_io(address_map &map) +{ + tv_tcf_io(map); + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::ciclone_status_r)); } /**************************** @@ -488,6 +493,20 @@ READ16_MEMBER(highvdeo_state::newmcard_status_r) return 0; } +READ16_MEMBER(highvdeo_state::record_status_r) +{ + static uint16_t resetpulse; + switch(offset*2) + { + case 0: + resetpulse^=0x15; // and 0x07, cmp with 0x05 + return 0 | resetpulse; + case 2: return 0x15; // unknown + } + + return 0; +} + READ16_MEMBER(highvdeo_state::newmcard_vblank_r) { @@ -517,14 +536,13 @@ void highvdeo_state::newmcard_map(address_map &map) map(0x00000, 0x003ff).ram(); /*irq vector area*/ map(0x00400, 0x0ffff).ram().share("nvram"); map(0x40000, 0x7ffff).ram().share("blit_ram"); /*blitter ram*/ - map(0x80000, 0xbffff).bankr("bank1"); - map(0xc0000, 0xfffff).rom().region("boot_prg", 0); + map(0x80000, 0xbffff).bankr("mainbank"); + map(0xc0000, 0xfffff).rom().region("maincpu", 0xc0000) } -void highvdeo_state::newmcard_io(address_map &map) +void highvdeo_state::newmcard_io_base(address_map &map) { - map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::newmcard_status_r)); - map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::tv_tcf_bankselect_w)); + map(0x0030, 0x0031).w(this, FUNC(highvdeo_state::bankselect_w<0x07>)); map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::write2_w)); // coin counter & coin lockout map(0x0004, 0x0005).w(this, FUNC(highvdeo_state::newmcard_vblank_w)); @@ -538,6 +556,18 @@ void highvdeo_state::newmcard_io(address_map &map) map(0x0014, 0x0014).w("ramdac", FUNC(ramdac_device::pal_w)); } +void highvdeo_state::newmcard_io(address_map &map) +{ + newmcard_io_base(map); + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::newmcard_status_r)); +} + +void highvdeo_state::record_io(address_map &map) +{ + newmcard_io_base(map); + map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::record_status_r)); +} + /**************************** * * Bra$il @@ -564,9 +594,6 @@ READ16_MEMBER(highvdeo_state::brasil_status_r) /*bankaddress might be incorrect.*/ WRITE16_MEMBER(highvdeo_state::brasil_status_w) { - uint32_t bankaddress; - uint8_t *ROM = memregion("user1")->base(); - switch(data & 3) //data & 7? { case 0: m_brasil_prot_latch = 1; break; @@ -574,9 +601,7 @@ WRITE16_MEMBER(highvdeo_state::brasil_status_w) case 2: m_brasil_prot_latch = 2; break; } - bankaddress = (data & 0x07) * 0x40000; - - membank("bank1")->set_base(&ROM[bankaddress]); + m_mainbank->set_entry(data & 0x07); // popmessage("%04x",data); } @@ -600,9 +625,6 @@ READ16_MEMBER(highvdeo_state::grancapi_status_r) /*bankaddress might be incorrect.*/ WRITE16_MEMBER(highvdeo_state::grancapi_status_w) { - uint32_t bankaddress; - uint8_t *ROM = memregion("user1")->base(); - switch(data & 3) //data & 7? { case 0: m_grancapi_prot_latch = 1; break; @@ -610,9 +632,7 @@ WRITE16_MEMBER(highvdeo_state::grancapi_status_w) case 2: m_grancapi_prot_latch = 2; break; } - bankaddress = (data & 0x07) * 0x40000; - - membank("bank1")->set_base(&ROM[bankaddress]); + m_mainbank->set_entry(data & 0x07); // popmessage("%04x",data); } @@ -639,8 +659,8 @@ void highvdeo_state::brasil_map(address_map &map) map(0x00000, 0x003ff).ram(); /*irq vector area*/ map(0x00400, 0x0ffff).ram().share("nvram"); map(0x40000, 0x7ffff).ram().share("blit_ram"); /*blitter ram*/ - map(0x80000, 0xbffff).bankr("bank1"); - map(0xc0000, 0xfffff).rom().region("boot_prg", 0); + map(0x80000, 0xbffff).bankr("mainbank"); + map(0xc0000, 0xfffff).rom().region("maincpu", 0x1c0000); } void highvdeo_state::brasil_io(address_map &map) @@ -657,6 +677,25 @@ void highvdeo_state::brasil_io(address_map &map) // AM_RANGE(0xffa2, 0xffa3) AM_WRITE } +WRITE16_MEMBER(highvdeo_state::fashion_output_w) +{ + int i; + +// popmessage("%04x",data); + + for(i=0;i<4;i++) + { + machine().bookkeeping().coin_counter_w(i,data & 0x20); + machine().bookkeeping().coin_lockout_w(i,~data & 0x01); + } +} + +void highvdeo_state::fashion_io(address_map &map) +{ + brasil_io(map); + map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::fashion_output_w)); +} + void highvdeo_state::grancapi_io(address_map &map) { map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::grancapi_status_r)); @@ -673,6 +712,7 @@ void highvdeo_state::grancapi_io(address_map &map) void highvdeo_state::magicbom_io(address_map &map) { + map(0x0002, 0x0003).w(this, FUNC(highvdeo_state::fashion_output_w)); map(0x0030, 0x0033).r(this, FUNC(highvdeo_state::magicbom_status_r)); map(0x000e, 0x000f).w(this, FUNC(highvdeo_state::grancapi_status_w)); map(0x0000, 0x0001).w(this, FUNC(highvdeo_state::write1_w)); // lamps @@ -1181,15 +1221,12 @@ MACHINE_CONFIG_START(highvdeo_state::tv_vcf) MCFG_PALETTE_ADD("palette", 0x100) MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette") - MCFG_VIDEO_START_OVERRIDE(highvdeo_state,tourvisn) - /* sound hardware */ SPEAKER(config, "mono").front_center(); //OkiM6376 MCFG_DEVICE_ADD("oki", OKIM6376, XTAL(12'000'000)/2/2/20)//Guess, gives approx. same sample rate as previous emulation MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MACHINE_CONFIG_END MACHINE_CONFIG_START(highvdeo_state::tv_ncf) @@ -1198,7 +1235,6 @@ MACHINE_CONFIG_START(highvdeo_state::tv_ncf) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_PROGRAM_MAP(tv_ncf_map) MCFG_DEVICE_IO_MAP(tv_ncf_io) - MACHINE_CONFIG_END MACHINE_CONFIG_START(highvdeo_state::nyjoker) @@ -1207,7 +1243,6 @@ MACHINE_CONFIG_START(highvdeo_state::nyjoker) MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_PROGRAM_MAP(nyjoker_map) MCFG_DEVICE_IO_MAP(nyjoker_io) - MACHINE_CONFIG_END MACHINE_CONFIG_START(highvdeo_state::tv_tcf) @@ -1235,6 +1270,13 @@ MACHINE_CONFIG_START(highvdeo_state::newmcard) MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1) MACHINE_CONFIG_END +MACHINE_CONFIG_START(highvdeo_state::record) + newmcard(config); + + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_IO_MAP(record_io) +MACHINE_CONFIG_END + MACHINE_CONFIG_START(highvdeo_state::ciclone) tv_tcf(config); @@ -1242,7 +1284,7 @@ MACHINE_CONFIG_START(highvdeo_state::ciclone) MCFG_DEVICE_ADD("maincpu", I80186, 20000000 ) // ? MCFG_DEVICE_PROGRAM_MAP(tv_tcf_map) - MCFG_DEVICE_IO_MAP(tv_tcf_io) + MCFG_DEVICE_IO_MAP(ciclone_io) MCFG_DEVICE_VBLANK_INT_DRIVER("screen", highvdeo_state, vblank_irq_80186) MACHINE_CONFIG_END @@ -1261,9 +1303,7 @@ MACHINE_CONFIG_START(highvdeo_state::brasil) MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1) MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil) - MCFG_PALETTE_ADD("palette", 0x100) - - MCFG_VIDEO_START_OVERRIDE(highvdeo_state,tourvisn) + MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette") /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1272,6 +1312,12 @@ MACHINE_CONFIG_START(highvdeo_state::brasil) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END +MACHINE_CONFIG_START(highvdeo_state::fashion) + brasil(config); + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_IO_MAP(fashion_io) +MACHINE_CONFIG_END + MACHINE_CONFIG_START(highvdeo_state::grancapi) MCFG_DEVICE_ADD("maincpu", I80186, 20000000 ) MCFG_DEVICE_PROGRAM_MAP(brasil_map) @@ -1287,9 +1333,7 @@ MACHINE_CONFIG_START(highvdeo_state::grancapi) MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1) MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil) - MCFG_PALETTE_ADD("palette", 0x100) - - MCFG_VIDEO_START_OVERRIDE(highvdeo_state,tourvisn) + MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette") /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1313,9 +1357,7 @@ MACHINE_CONFIG_START(highvdeo_state::magicbom) MCFG_SCREEN_VISIBLE_AREA(0, 400-1, 0, 300-1) MCFG_SCREEN_UPDATE_DRIVER(highvdeo_state, screen_update_brasil) - MCFG_PALETTE_ADD("palette", 0x100) - - MCFG_VIDEO_START_OVERRIDE(highvdeo_state,tourvisn) + MCFG_PALETTE_ADD_RRRRRGGGGGGBBBBB("palette") /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1326,73 +1368,55 @@ MACHINE_CONFIG_END ROM_START( tour4000 ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "vcfi18.bin", 0x00001, 0x80000, CRC(8c83cd34) SHA1(a94bdfdb74d047ac3851f2aef295a37c93b091f2) ) ROM_LOAD16_BYTE( "vcfi17.bin", 0x00000, 0x80000, CRC(bcae57ed) SHA1(13c02cae59ed5cc0847a7827a315902066b03190) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( cfever40 ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "vcfi48.bin", 0x00001, 0x80000, CRC(5a86a642) SHA1(fd927bc393242ff0aca87a0e3c2127f6f1df09cd) ) ROM_LOAD16_BYTE( "vcfi47.bin", 0x00000, 0x80000, CRC(e7adc4d8) SHA1(862041c2c5d260727e525ab85fde18994484db16) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( cfever50 ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "vcfi58.bin", 0x00001, 0x80000, CRC(c3464934) SHA1(1672c34d9ca250769973f7bc739137f153552eb9) ) ROM_LOAD16_BYTE( "vcfi57.bin", 0x00000, 0x80000, CRC(2b789acb) SHA1(782ad3a6e0eacbf9adec4afd20a309215913e505) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( tour4010 ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "ncfi18.bin", 0x00001, 0x80000, CRC(294929d9) SHA1(712926cf1f78197fce838a4e76d70082182214eb) ) ROM_LOAD16_BYTE( "ncfi17.bin", 0x00000, 0x80000, CRC(4a8ac279) SHA1(41b0de4444466700ef2de2e926c8fa6f0bda280d) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( cfever51 ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "ncfi58.bin", 0x00001, 0x80000, CRC(cdf9c2f0) SHA1(94f9cf6b1856becd74971022ded6db5ae927fb54) ) ROM_LOAD16_BYTE( "ncfi57.bin", 0x00000, 0x80000, CRC(5005cf2b) SHA1(468ccd27fcb8bdb7d6ccf423542e1d4773930b88) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( cfever61 ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "ncfi68.bin", 0x00001, 0x80000, CRC(51fe839f) SHA1(e4d9bce4a995cb407faaf36b2c1e10409a2e94da) ) ROM_LOAD16_BYTE( "ncfi67.bin", 0x00000, 0x80000, CRC(d889d6b6) SHA1(791d9b9fc2d0a128ab07a9ae18a32f2838a5ea3f) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END @@ -1418,13 +1442,10 @@ ROM_END */ ROM_START( nyjoker ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "ni8-2-1.ic8", 0x00001, 0x80000, CRC(81416871) SHA1(c5519b1fcf0131710a8972d9016b8af5f8ac75a1) ) ROM_LOAD16_BYTE( "ni7-2-1.ic7", 0x00000, 0x80000, CRC(835b8606) SHA1(a036f8568f0e41eb1f4db7fa41a9cd4b92d41514) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /* copy for program code */ - ROM_COPY( "user1", 0x0C0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ny2.ic25", 0x00000, 0x80000, CRC(eeea7f4d) SHA1(2afc498792f848fd45be4d3eb3e6607edb5dd9df) ) @@ -1433,41 +1454,32 @@ ROM_START( nyjoker ) ROM_END ROM_START( cfever1k ) - ROM_REGION( 0x200000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "tcfi28.bin", 0x00001, 0x100000, CRC(e38d115a) SHA1(7fec94ddcdb07e483ed2f0d7d667c35ceb7a1f44) ) ROM_LOAD16_BYTE( "tcfi27.bin", 0x00000, 0x100000, CRC(32f884e6) SHA1(cc74a4c6313654bbd363a89fe7757a05c74de45b) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1C0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "ic25.bin", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( girotutt ) - ROM_REGION( 0x200000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "tcfi18.bin", 0x00001, 0x100000, CRC(822ab6a1) SHA1(04f4254da46cf67ea17587fde4a0fdd39c658b3b) ) ROM_LOAD16_BYTE( "tcfi17.bin", 0x00000, 0x100000, CRC(b326a0ee) SHA1(c96b7578c112a97ba1d8de4d3d0ae68fef846cad) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1C0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "t41.bin", 0x00000, 0x80000, CRC(6f694406) SHA1(ec8b8baba0ee1bfe8986ce978412ee4de06f1906) ) ROM_END ROM_START( galeone ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x100000, "maincpu", 0 ) /* V30 Code */ ROM_LOAD16_BYTE( "model.a8-vers.1.0.ic8", 0x00001, 0x40000, CRC(b9e1e7ce) SHA1(4e036285b26dc0a313e76259b7e67c8d55322c84) ) ROM_RELOAD(0x80001,0x40000) ROM_LOAD16_BYTE( "model.a7-vers.1.0.ic7", 0x00000, 0x40000, CRC(1940b738) SHA1(81e40de8df4dc838342bf966658110989a233731) ) ROM_RELOAD(0x80000,0x40000) - ROM_REGION( 0x040000, "boot_prg", 0 ) /* copy for program code */ - ROM_COPY( "user1", 0x040000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "model.ga-vers.1.ic25", 0x00000, 0x80000, CRC(4c2c2cc1) SHA1(20da29b2f1dd1f86ec23d9dbdaa9470878e900e2) ) ROM_END @@ -1501,13 +1513,10 @@ PCB n. E178247 */ ROM_START( newmcard ) - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF ) /* V30 Code; Fix for extra bank bit */ ROM_LOAD16_BYTE( "mc32.ic4", 0x00000, 0x80000, CRC(d9817f48) SHA1(c523a8248b487081ea2e0e326dcc660b051c23c1) ) ROM_LOAD16_BYTE( "mc33.ic5", 0x00001, 0x80000, CRC(83a855ab) SHA1(7f9384c875b951d17caa91f8a7365edaf7f9afe1) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "mc31.ic15", 0x00000, 0x40000, CRC(8b72ffec) SHA1(fca5cf2594325e0c9fe446ddf2330c669f7f37a9) ) ROM_END @@ -1531,37 +1540,14 @@ ROM_END */ ROM_START( ciclone ) - ROM_REGION( 0x200000, "user1", 0 ) /* N80C186XL25 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* N80C186XL25 Code */ ROM_LOAD16_BYTE( "hclv1.u7", 0x000000, 0x100000, CRC(071c64f2) SHA1(5125c3caf77258260bfa4c24dd612cedf61fe7f2) ) ROM_LOAD16_BYTE( "hclv1.u8", 0x000001, 0x100000, CRC(c2ed99b4) SHA1(a1a3bfa9a6ea53979c20d60ccd7eb1773c805fc8) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "hclv1.u16", 0x00000, 0x80000, CRC(45b2b53a) SHA1(983bcc5869d84938ba278f26339dd72c17ed1d00) ) ROM_END -/*Ciclone*/ -READ16_MEMBER(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 - } - - return 0; -} - -DRIVER_INIT_MEMBER(highvdeo_state,ciclone) -{ - m_maincpu->space(AS_IO).install_read_handler(0x0030, 0x0033, read16_delegate(FUNC(highvdeo_state::ciclone_status_r), this)); -} - /* CPUs N80C186XL25 (main)(u1) @@ -1591,104 +1577,52 @@ http://media.digikey.com/pdf/Data%20Sheets/Intel%20PDFs/80C186XL,%2080C188XL.pdf ROM_START( brasil ) - ROM_REGION( 0x200000, "user1", 0 ) /* N80C186XL25 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* N80C186XL25 Code */ ROM_LOAD16_BYTE( "record_brasil_hrc7_vers.3.u7", 0x000000, 0x100000, CRC(627e0d58) SHA1(6ff8ba7b21e1ea5c88de3f02a057906c9a7cd808) ) ROM_LOAD16_BYTE( "record_brasil_hrc8_vers.3.u8", 0x000001, 0x100000, CRC(47f7ba2a) SHA1(0add7bbf771fd0bf205a05e910cb388cf052b09f) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "sound_brasil_hbr_vers.1.u16", 0x00000, 0x80000, CRC(d71a5566) SHA1(2f7aefc06e39ce211e31b15aadf6338b679e7a31) ) ROM_END ROM_START( fashion ) - ROM_REGION( 0x200000, "user1", 0 ) /* N80C186XL25 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* N80C186XL25 Code */ ROM_LOAD16_BYTE( "fashion1-hfs7v2.14.high-video8m.u7", 0x000000, 0x100000, CRC(20411b89) SHA1(3ed6336978e5046eeef26115614cb74e3ffe134a) ) ROM_LOAD16_BYTE( "fashion1-hfs8v2.14.high-video8m.u8", 0x000001, 0x100000, CRC(521f34f3) SHA1(91edc90fcd895a096955ac031a42da04510df1e6) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "sound-fashion-v-1-memory4m.u16", 0x00000, 0x80000, CRC(2927c799) SHA1(f11cad096a23fee10bfdff5bf944c96e30f4a8b8) ) ROM_END -WRITE16_MEMBER(highvdeo_state::fashion_output_w) -{ - int i; - -// popmessage("%04x",data); - - for(i=0;i<4;i++) - { - machine().bookkeeping().coin_counter_w(i,data & 0x20); - machine().bookkeeping().coin_lockout_w(i,~data & 0x01); - } -} - -DRIVER_INIT_MEMBER(highvdeo_state,fashion) -{ - m_maincpu->space(AS_IO).install_write_handler(0x0002, 0x0003, write16_delegate(FUNC(highvdeo_state::fashion_output_w), this)); -} - ROM_START( grancapi ) - ROM_REGION( 0x200000, "user1", 0 ) /* N80C186XL25 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* N80C186XL25 Code */ ROM_LOAD16_BYTE( "gran-capitan-hgcp-i38-vers3-high-video.ic7", 0x000000, 0x100000, CRC(8bb75c50) SHA1(3a54daaf57ff4ffd1ebea6bfa33d40dbfcfe8d8f) ) ROM_LOAD16_BYTE( "gran-capitan-hgcp-i38-vers3-high-video.ic8", 0x000001, 0x100000, CRC(28ad57f1) SHA1(093b117ab315fca1c0905363e8f637dbf96c48ec) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x040000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "sound-gran-capitan-hgcp-vers1-memory-2m.ic16", 0x00000, 0x40000, CRC(3d19146e) SHA1(a0e45df231fa7513e294633cbdbe46bf9bd77c1b) ) ROM_END ROM_START( magicbom ) - ROM_REGION( 0x200000, "user1", 0 ) /* N80C186XL25 Code */ + ROM_REGION( 0x200000, "maincpu", 0 ) /* N80C186XL25 Code */ ROM_LOAD16_BYTE( "magic-bomb-hmb-i17-vers1-high-video.ic7", 0x000000, 0x100000, CRC(d217ae33) SHA1(ca3a13d9d23809583733e7b1bdba096a50fe7488) ) ROM_LOAD16_BYTE( "magic-bomb-hmb-i17-vers1-high-video.ic8", 0x000001, 0x100000, CRC(53a9c3d5) SHA1(72a2a07c0bd7b00566795042bcff1f6f324b964f) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x1c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "sound-magic-bomb-hmb-vers1-memory-4m.ic16", 0x00000, 0x80000, CRC(45b2b53a) SHA1(983bcc5869d84938ba278f26339dd72c17ed1d00) ) ROM_END ROM_START( record ) // do checks and expect something... pc=e8044 - ROM_REGION( 0x100000, "user1", 0 ) /* V30 Code */ + ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASEFF ) /* V30 Code; Fix for extra bank bit */ ROM_LOAD16_BYTE( "record-vrc-i17-vers1-video-map.ic7", 0x00000, 0x80000, CRC(d0e59a64) SHA1(5f51448a4cdefd335e19affa4b47df7b428b0e7c) ) ROM_LOAD16_BYTE( "record-vrc-i17-vers1-video-map.ic8", 0x00001, 0x80000, CRC(823d1c25) SHA1(3104567b2b05708d1b5218f9f0e64bfa3d0df46b) ) - ROM_REGION( 0x040000, "boot_prg", 0 ) /*copy for program code*/ - ROM_COPY( "user1", 0x0c0000, 0x000000, 0x40000 ) - ROM_REGION( 0x080000, "oki", 0 ) /* M6376 Samples */ ROM_LOAD( "sound-record-hrc-vers1-memory-2m.ic16", 0x00000, 0x40000, CRC(8b72ffec) SHA1(fca5cf2594325e0c9fe446ddf2330c669f7f37a9) ) ROM_END -READ16_MEMBER(highvdeo_state::record_status_r) -{ - static uint16_t resetpulse; - switch(offset*2) - { - case 0: - resetpulse^=0x15; // and 0x07, cmp with 0x05 - return 0 | resetpulse; - case 2: return 0x15; // unknown - } - - return 0; -} - -DRIVER_INIT_MEMBER(highvdeo_state, record) -{ - m_maincpu->space(AS_IO).install_read_handler(0x0030, 0x0033, read16_delegate(FUNC(highvdeo_state::record_status_r), this)); -} - GAMEL( 2000, tour4000, 0, tv_vcf, tv_vcf, highvdeo_state, 0, ROT0, "High Video", "Tour 4000", 0, layout_fashion ) GAMEL( 2000, cfever40, 0, tv_vcf, tv_vcf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 4.0", 0, layout_fashion ) @@ -1700,10 +1634,10 @@ GAMEL( 2000, nyjoker, 0, nyjoker, nyjoker, highvdeo_state, 0, ROT GAMEL( 2000, cfever1k, 0, tv_tcf, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "Casino Fever 1k", 0, layout_fashion ) GAMEL( 2000, girotutt, 0, tv_tcf, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "GiroTutto", 0, layout_fashion ) GAMEL( 2000, galeone, 0, nyjoker, nyjoker, highvdeo_state, 0, ROT0, "San Remo Games", "Il Galeone", 0, layout_fashion ) -GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, ciclone, ROT0, "High Video", "Ciclone", 0, layout_fashion ) +GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "Ciclone", 0, layout_fashion ) GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "New Magic Card", 0, layout_fashion ) GAMEL( 2000, brasil, 0, brasil, brasil, highvdeo_state, 0, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion ) -GAMEL( 2000, fashion, brasil, brasil, fashion, highvdeo_state, fashion, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion ) +GAMEL( 2000, fashion, brasil, fashion, fashion, highvdeo_state, 0, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion ) GAMEL( 2000, grancapi, 0, grancapi, brasil, highvdeo_state, 0, ROT0, "High Video", "Gran Capitan (Version 3)", MACHINE_NOT_WORKING, layout_fashion ) -GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, fashion, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion ) -GAMEL( 2000, record, 0, newmcard, tv_tcf, highvdeo_state, record, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion ) +GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, 0, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion ) +GAMEL( 2000, record, 0, record, tv_tcf, highvdeo_state, 0, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion )