diff options
Diffstat (limited to 'src/mame/drivers/seta2.cpp')
-rw-r--r-- | src/mame/drivers/seta2.cpp | 407 |
1 files changed, 200 insertions, 207 deletions
diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index a1e7523efb5..147a4ecb235 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -26,7 +26,7 @@ OSC : 50.00000MHz ------------------------------------------------------------------------------------------- Ordered by Board Year Game By ------------------------------------------------------------------------------------------- -P-FG01-1 1995 Guardians / Denjin Makai II Banpresto +P-FG01-1 (also P0-113A) 1995 Guardians / Denjin Makai II Banpresto P0-113A 1994 Mobile Suit Gundam EX Revue Banpresto P0-121A ; 2MP1-E00 (Ss) 1996 TelePachi Fever Lion Sunsoft P0-123A 1996 Wakakusamonogatari Mahjong Yonshimai Maboroshi Ware @@ -196,7 +196,6 @@ void seta2_state::grdians_map(address_map &map) map(0xc50000, 0xc5ffff).ram(); // cleared map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } /*************************************************************************** @@ -235,7 +234,6 @@ void seta2_state::gundamex_map(address_map &map) map(0xc50000, 0xc5ffff).ram(); // cleared map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -292,7 +290,6 @@ void seta2_state::mj4simai_map(address_map &map) map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -316,7 +313,6 @@ void seta2_state::myangel_map(address_map &map) map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -340,7 +336,6 @@ void seta2_state::myangel2_map(address_map &map) map(0xd00000, 0xd3ffff).ram().share("spriteram"); // Sprites map(0xd40000, 0xd4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette map(0xd60000, 0xd6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -383,7 +378,6 @@ void seta2_state::pzlbowl_map(address_map &map) map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -416,7 +410,6 @@ void seta2_state::penbros_map(address_map &map) map(0x500302, 0x500303).portr("DSW2"); map(0x500300, 0x50030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); map(0xb60000, 0xb6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); } void seta2_state::ablastb_map(address_map &map) @@ -482,7 +475,6 @@ void seta2_state::reelquak_map(address_map &map) map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -497,7 +489,6 @@ void seta2_state::namcostr_map(address_map &map) map(0x200000, 0x20ffff).ram(); // RAM map(0xc00000, 0xc3ffff).ram().share("spriteram"); // Sprites map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -540,8 +531,6 @@ void seta2_state::samshoot_map(address_map &map) map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -635,7 +624,6 @@ void staraudi_state::staraudi_map(address_map &map) map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // Palette map(0xc50000, 0xc5ffff).ram(); // cleared map(0xc60000, 0xc6003f).ram().w(FUNC(staraudi_state::vregs_w)).share("vregs"); // Video Registers - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -694,7 +682,6 @@ void seta2_state::telpacfl_map(address_map &map) map(0xd00006, 0xd00007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // AM_RANGE(0xe00000, 0xe00001) AM_WRITE map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff); // Samples Banks - map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); // TMP68301 Registers } @@ -2301,35 +2288,32 @@ GFXDECODE_END INTERRUPT_GEN_MEMBER(seta2_state::seta2_interrupt) { /* VBlank is connected to INT0 (external interrupts pin 0) */ - m_tmp68301->external_interrupt_0(); + downcast<tmp68301_device &>(*m_maincpu).external_interrupt_0(); } INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt) { - m_tmp68301->external_interrupt_2(); // to do: hook up x1-10 interrupts + downcast<tmp68301_device &>(*m_maincpu).external_interrupt_2(); // to do: hook up x1-10 interrupts } -MACHINE_CONFIG_START(seta2_state::seta2) - MCFG_DEVICE_ADD(m_maincpu, M68301, XTAL(50'000'000)/3) // !! TMP68301 !! - MCFG_DEVICE_PROGRAM_MAP(mj4simai_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback) - - TMP68301(config, m_tmp68301, 0); - m_tmp68301->set_cputag(m_maincpu); +void seta2_state::seta2(machine_config &config) +{ + TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !! + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::mj4simai_map); + m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt)); WATCHDOG_TIMER(config, "watchdog"); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(0x200, 0x100) - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x180-1, 0x00, 0xf0-1) - MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, seta2_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) - //MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_SCANLINE) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + m_screen->set_size(0x200, 0x100); + m_screen->set_visarea(0x00, 0x180-1, 0x00, 0xf0-1); + m_screen->set_screen_update(FUNC(seta2_state::screen_update)); + m_screen->screen_vblank().set(FUNC(seta2_state::screen_vblank)); + m_screen->set_palette(m_palette); + //m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE); GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity @@ -2337,154 +2321,143 @@ MACHINE_CONFIG_START(seta2_state::seta2) // sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("x1snd", X1_010, XTAL(50'000'000)/3) // clock? - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - MCFG_DEVICE_ADDRESS_MAP(0, x1_map) -MACHINE_CONFIG_END + x1_010_device &x1snd(X1_010(config, "x1snd", XTAL(50'000'000)/3)); // clock? + x1snd.add_route(ALL_OUTPUTS, "mono", 1.0); + x1snd.set_addrmap(0, &seta2_state::x1_map); +} -MACHINE_CONFIG_START(seta2_state::gundamex) +void seta2_state::gundamex(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(gundamex_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::gundamex_map); - m_tmp68301->in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r)); - m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w)); + downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r)); + downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w)); EEPROM_93C46_16BIT(config, "eeprom"); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x180-1, 0x000, 0x0e0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0x00, 0x180-1, 0x000, 0x0e0-1); +} -MACHINE_CONFIG_START(seta2_state::grdians) +void seta2_state::grdians(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(grdians_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::grdians_map); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x130-1, 0x00, 0xe8 -1) -MACHINE_CONFIG_END + m_screen->set_visarea(0x00, 0x130-1, 0x00, 0xe8 -1); +} -MACHINE_CONFIG_START(seta2_state::myangel) +void seta2_state::myangel(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(myangel_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::myangel_map); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x00, 0xf0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0, 0x178-1, 0x00, 0xf0-1); +} -MACHINE_CONFIG_START(seta2_state::myangel2) +void seta2_state::myangel2(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(myangel2_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::myangel2_map); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0, 0x178-1, 0x00, 0xf0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0, 0x178-1, 0x00, 0xf0-1); +} -MACHINE_CONFIG_START(seta2_state::pzlbowl) +void seta2_state::pzlbowl(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(pzlbowl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::pzlbowl_map); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x180-1, 0x00, 0xf0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0x00, 0x180-1, 0x00, 0xf0-1); +} -MACHINE_CONFIG_START(seta2_state::penbros) +void seta2_state::penbros(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(penbros_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::penbros_map); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0, 0x140-1, 0x00, 0xe0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0, 0x140-1, 0x00, 0xe0-1); +} -MACHINE_CONFIG_START(seta2_state::ablastb) +void seta2_state::ablastb(machine_config &config) +{ penbros(config); - MCFG_DEVICE_REPLACE("maincpu", M68000, XTAL(16'000'000)) // TMP68HC000P-16 - MCFG_DEVICE_PROGRAM_MAP(ablastb_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seta2_state, irq2_line_hold) - - MCFG_DEVICE_REMOVE("tmp68301") -MACHINE_CONFIG_END + M68000(config.replace(), m_maincpu, XTAL(16'000'000)); // TMP68HC000P-16 + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::ablastb_map); + m_maincpu->set_vblank_int("screen", FUNC(seta2_state::irq2_line_hold)); +} -MACHINE_CONFIG_START(seta2_state::reelquak) +void seta2_state::reelquak(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(reelquak_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::reelquak_map); - m_tmp68301->out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w)); + downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - MCFG_TICKET_DISPENSER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW) + TICKET_DISPENSER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1); +} -MACHINE_CONFIG_START(seta2_state::samshoot) +void seta2_state::samshoot(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(samshoot_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(seta2_state, samshoot_interrupt, 60) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::samshoot_map); + m_maincpu->set_periodic_int(FUNC(seta2_state::samshoot_interrupt), attotime::from_hz(60)); - m_tmp68301->in_parallel_callback().set_ioport("DSW2"); + downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("DSW2"); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1); +} -MACHINE_CONFIG_START(staraudi_state::staraudi) +void staraudi_state::staraudi(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(staraudi_map) + m_maincpu->set_addrmap(AS_PROGRAM, &staraudi_state::staraudi_map); SHARP_LH28F016S_16BIT(config, "flash"); UPD4992(config, m_rtc); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate - MCFG_SCREEN_VISIBLE_AREA(0x00, 0x140-1, 0x000, 0x0f0-1) + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate + m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_seta2) -MACHINE_CONFIG_END + m_gfxdecode->set_info(gfx_seta2); +} -MACHINE_CONFIG_START(seta2_state::telpacfl) +void seta2_state::telpacfl(machine_config &config) +{ seta2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(telpacfl_map) + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::telpacfl_map); - m_tmp68301->in_parallel_callback().set_ioport("KNOB"); + downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("KNOB"); EEPROM_93C46_16BIT(config, "eeprom"); // not hooked up, seems unused NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - MCFG_HOPPER_ADD("dispenser", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW) + HOPPER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x0, 0x180-1, 0x00, 0xf0-1) // still off by 1 because of different CRTC regs? -MACHINE_CONFIG_END + m_screen->set_visarea(0x0, 0x180-1, 0x00, 0xf0-1); // still off by 1 because of different CRTC regs? +} /*************************************************************************** @@ -2515,17 +2488,17 @@ void funcube_state::machine_reset() m_hopper_motor = 0; } -MACHINE_CONFIG_START(funcube_state::funcube) - - MCFG_DEVICE_ADD("maincpu", MCF5206E, XTAL(25'447'000)) - MCFG_DEVICE_PROGRAM_MAP(funcube_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", funcube_state, funcube_interrupt, "screen", 0, 1) +void funcube_state::funcube(machine_config &config) +{ + MCF5206E(config, m_maincpu, XTAL(25'447'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &funcube_state::funcube_map); + TIMER(config, "scantimer").configure_scanline(FUNC(funcube_state::funcube_interrupt), "screen", 0, 1); - MCFG_DEVICE_ADD("sub", H83007, FUNCUBE_SUB_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(funcube_sub_map) - MCFG_DEVICE_IO_MAP(funcube_sub_io) + H83007(config, m_sub, FUNCUBE_SUB_CPU_CLOCK); + m_sub->set_addrmap(AS_PROGRAM, &funcube_state::funcube_sub_map); + m_sub->set_addrmap(AS_IO, &funcube_state::funcube_sub_io); - MCFG_MCF5206E_PERIPHERAL_ADD("maincpu_onboard") + MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0); FUNCUBE_TOUCHSCREEN(config, "touchscreen", 200).tx_cb().set(":sub:sci1", FUNC(h8_sci_device::rx_w)); @@ -2534,14 +2507,14 @@ MACHINE_CONFIG_START(funcube_state::funcube) WATCHDOG_TIMER(config, "watchdog"); // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate - MCFG_SCREEN_SIZE(0x200, 0x200) - MCFG_SCREEN_VISIBLE_AREA(0x0+1, 0x140-1+1, 0x00, 0xf0-1) - MCFG_SCREEN_UPDATE_DRIVER(funcube_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, funcube_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate + m_screen->set_size(0x200, 0x200); + m_screen->set_visarea(0x0+1, 0x140-1+1, 0x00, 0xf0-1); + m_screen->set_screen_update(FUNC(funcube_state::screen_update)); + m_screen->screen_vblank().set(FUNC(funcube_state::screen_vblank)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity @@ -2550,52 +2523,48 @@ MACHINE_CONFIG_START(funcube_state::funcube) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) -MACHINE_CONFIG_END + OKIM9810(config, m_oki, XTAL(4'096'000)); + m_oki->add_route(0, "lspeaker", 0.80); + m_oki->add_route(1, "rspeaker", 0.80); +} -MACHINE_CONFIG_START(funcube_state::funcube2) +void funcube_state::funcube2(machine_config &config) +{ funcube(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(funcube2_map) + m_maincpu->set_addrmap(AS_PROGRAM, &funcube_state::funcube2_map); - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_IO_MAP(funcube2_sub_io) + m_sub->set_addrmap(AS_IO, &funcube_state::funcube2_sub_io); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x0, 0x140-1, 0x00, 0xf0-1) -MACHINE_CONFIG_END + m_screen->set_visarea(0x0, 0x140-1, 0x00, 0xf0-1); +} -MACHINE_CONFIG_START(funcube_state::funcube3) +void funcube_state::funcube3(machine_config &config) +{ funcube2(config); // video hardware - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_VISIBLE_AREA(0x0, 0x140-1, 0x00, 0xf0-1) -MACHINE_CONFIG_END - + m_screen->set_visarea(0x0, 0x140-1, 0x00, 0xf0-1); +} -MACHINE_CONFIG_START(seta2_state::namcostr) - MCFG_DEVICE_ADD(m_maincpu, M68301, XTAL(50'000'000)/3) // !! TMP68301 !! - MCFG_DEVICE_PROGRAM_MAP(namcostr_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback) - TMP68301(config, m_tmp68301, 0); // does this have a ticket dispenser? - m_tmp68301->set_cputag(m_maincpu); +void seta2_state::namcostr(machine_config &config) +{ + TMP68301(config, m_maincpu, XTAL(50'000'000)/3); // !! TMP68301 !! + m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::namcostr_map); + m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt)); + // does this have a ticket dispenser? // video hardware - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(0x200, 0x200) - MCFG_SCREEN_VISIBLE_AREA(0x40, 0x1c0-1, 0x00, 0xf0-1) - MCFG_SCREEN_UPDATE_DRIVER(seta2_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, seta2_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(0x200, 0x200); + m_screen->set_visarea(0x40, 0x1c0-1, 0x00, 0xf0-1); + m_screen->set_screen_update(FUNC(seta2_state::screen_update)); + m_screen->screen_vblank().set(FUNC(seta2_state::screen_vblank)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0); // extra 0xf0 because we might draw 256-color object with 16-color granularity @@ -2604,10 +2573,10 @@ MACHINE_CONFIG_START(seta2_state::namcostr) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("oki", OKIM9810, XTAL(4'096'000)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) -MACHINE_CONFIG_END + OKIM9810(config, m_oki, XTAL(4'096'000)); + m_oki->add_route(0, "lspeaker", 0.80); + m_oki->add_route(1, "rspeaker", 0.80); +} /*************************************************************************** @@ -2911,11 +2880,10 @@ NOTE: There is known to exist an undumped version of Guardians on the U19, U20, U21 & U22 - graphics ROMS ********************************************************** -There is known to exist an undumped version of Guardians on the + P0-113A PCB with P1-106-1 & P1-107-1 duaghtercards - It's assumed the programs roms (at least) are different to cope - with the different hardware configuration. + program ROMs verified to match the P-FG01-1 set CPU: Toshiba TMP68301AF-16 (100 Pin PQFP) Video: Allumer X1-020 (208 Pin PQFP) @@ -2961,7 +2929,7 @@ PCB Number: P0-113A BP49KA | P P | U21* || +-+ C A A M M +---------------+| | N DSW1 L L 3 3 | -| 1 DSW2 SW1 | +| 1 DSW2 SW1 2 1 | +---------------------------------------------------------------+ U2 is KA2 001 001 EPROM @@ -2973,20 +2941,25 @@ U15 is socketted to receive P1-106-1 daughtercard U77 is socketted to receive P1-107-1 daughtercard CN2 - 5 Pin header CN1 - 10 Pin header +PAL1 at U51 is KA-201 GAL16V8B +PAL2 at U52 is KA-102 GAL16V8B * Denotes not populated. +Notes: + HSync: 15.19kHz + VSync: 58.27Hz + The daughtercards below are NOT to scale with the above main board. P1-107-1 (additional RAM) +-------------------------------+ -| LOGIC JP5 JP6 JP7| +| 74LS32 JP5 JP6 JP7| | CXK58257AM-10L CXK58257AM-10L | | +-----------------------+ | | |U7 42 pin header to U77| | | +-----------------------+ | +-------------------------------+ -Unknown LOGIC chip JP5 - JP7 single wire connections for power @@ -3002,15 +2975,14 @@ P1-106-1 | +-----------------------+ | | | KA2-001-016 U1 | | | +-----------------------+ | -|JP1 JP2 JP3 JP4 LOGIC | +|JP1 JP2 JP3 JP4 74LS00 | +-------------------------------+ -Unknown LOGIC chip JP1 - JP4 single wire connections for power ***************************************************************************/ -ROM_START( grdians ) /* P-FG01-1 */ +ROM_START( grdians ) /* P-FG01-1 PCB */ ROM_REGION( 0x200000, "maincpu", 0 ) // TMP68301 Code ROM_LOAD16_BYTE( "u2.bin", 0x000000, 0x080000, CRC(36adc6f2) SHA1(544e87f88179fe1342e7a06a8948ac1828e85108) ) ROM_LOAD16_BYTE( "u3.bin", 0x000001, 0x080000, CRC(2704f416) SHA1(9081a12cbb9927d36e1c50b52aa2c6003810ee42) ) @@ -3035,6 +3007,27 @@ ROM_START( grdians ) /* P-FG01-1 */ ROM_LOAD( "u32.bin", 0x000000, 0x100000, CRC(cf0f3017) SHA1(8376d3a674f71aec72f52c72758fbc53d9feb1a1) ) ROM_END +ROM_START( grdiansa ) /* P0-113A PCB */ + ROM_REGION( 0x200000, "maincpu", 0 ) // TMP68301 Code + ROM_LOAD16_BYTE( "ka2_001_001.u2", 0x000000, 0x080000, CRC(36adc6f2) SHA1(544e87f88179fe1342e7a06a8948ac1828e85108) ) // same program code as P-FG01-1 PCB above + ROM_LOAD16_BYTE( "ka2_001_004.u3", 0x000001, 0x080000, CRC(2704f416) SHA1(9081a12cbb9927d36e1c50b52aa2c6003810ee42) ) + ROM_LOAD16_BYTE( "ka2_001_002.u4", 0x100000, 0x080000, CRC(bb52447b) SHA1(61433f683210ab2bc2cf1cc4b5b7a39cc5b6493d) ) + ROM_LOAD16_BYTE( "ka2_001_003.u5", 0x100001, 0x080000, CRC(9c164a3b) SHA1(6d688c7af9e7e8e8d54b2e4dfbf41f59c79242eb) ) + + ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE) // Sprites + ROM_LOAD64_WORD( "ka2-001-010.u18", 0x0800000, 0x200000, CRC(b3e6e95f) SHA1(c61d3def136f4bb6c5857740b0fbea64a98dd1dc) ) + ROM_LOAD64_WORD( "ka2-001-013.u17", 0x0800002, 0x200000, CRC(9f7feb13) SHA1(0b3010faf87fb5bfe55101e5eabecec6107bf42f) ) + ROM_LOAD64_WORD( "ka2-001-007.u22", 0x0800004, 0x200000, CRC(d1035051) SHA1(0bc8871b91e777009002e340e1cef92487234271) ) + ROM_LOAD64_WORD( "ka2-001-016.u1", 0x0800006, 0x200000, CRC(99fc8efa) SHA1(eeaabb3b8d6c99a16c922a2b6ff0973935fd74bd) ) // located on P1-106-1 daughtercard + ROM_LOAD64_WORD( "ka2-001-011.u20", 0x1000000, 0x200000, CRC(676edca6) SHA1(32bb507d000e19b004251d24c5fe61a09486cdd1) ) + ROM_LOAD64_WORD( "ka2-001-014.u19", 0x1000002, 0x200000, CRC(5465ef1b) SHA1(d1f0ff1950672444ece2fd86285a4051ea66f7bb) ) + ROM_LOAD64_WORD( "ka2-001-008.u23", 0x1000004, 0x200000, CRC(b2c94f31) SHA1(09891516806e2e79673b8b787d8e1caa51523a79) ) + ROM_LOAD64_WORD( "ka2-001-017.u2", 0x1000006, 0x200000, CRC(60ad7a2b) SHA1(a23c916959f3cfc8b1eead7a72c8312967b3acd7) ) // located on P1-106-1 daughtercard + + ROM_REGION( 0x200000, "x1snd", 0 ) // Samples + ROM_LOAD( "ka2-001-015.u28", 0x000000, 0x200000, CRC(fa97cc54) SHA1(d9a869e9428e5f31aee917ea7733cca1247458f2) ) // Identical halves matching parent U32.BIN +ROM_END + /*************************************************************************** MS Gundam Ex Revue @@ -3117,7 +3110,6 @@ ROM_START( gundamex ) ROM_LOAD64_WORD( "ka-001-014.u19", 0x1000002, 0x200000, CRC(7635e026) SHA1(116a3daab14a17faca85c4a956b356aaf0fc2276) ) ROM_LOAD64_WORD( "ka-001-008.u23", 0x1000004, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) ) - ROM_REGION( 0x200000, "x1snd", 0 ) // Samples ROM_LOAD( "ka-001-015.u28", 0x000000, 0x200000, CRC(ada2843b) SHA1(09d06026031bc7558da511c3c0e29187ea0a0099) ) @@ -4353,34 +4345,35 @@ ROM_START( telpacfl ) ROM_LOAD( "kc-002c.u52", 0x117, 0x117, NO_DUMP ) ROM_END -GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 ) -GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, mj4simai, 0, seta2, mj4simai, mj4simai_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 1996, myangel, 0, myangel, myangel, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, empty_init, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, empty_init, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, empty_init, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, empty_init, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) -GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, empty_init, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 2000, penbros, 0, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL ) -GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Hong Tian Lei (A-Blast) (Japan)", MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi -GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, empty_init, ROT0, "bootleg", "Hong Tian Lei (A-Blast) (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010 -GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, init_namcostr, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) -GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1994, gundamex, 0, gundamex, gundamex, seta2_state, empty_init, ROT0, "Banpresto", "Mobile Suit Gundam EX Revue", 0 ) +GAME( 1995, grdians, 0, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P-FG01-1 PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, grdiansa, grdians, grdians, grdians, seta2_state, empty_init, ROT0, "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P0-113A PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, mj4simai, 0, seta2, mj4simai, mj4simai_state, empty_init, ROT0, "Maboroshi Ware", "Wakakusamonogatari Mahjong Yonshimai (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1996, myangel, 0, myangel, myangel, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, myangel2, 0, myangel2, myangel2, seta2_state, empty_init, ROT0, "MOSS / Namco", "Kosodate Quiz My Angel 2 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1996, telpacfl, 0, telpacfl, telpacfl, seta2_state, empty_init, ROT270, "Sunsoft", "TelePachi Fever Lion (V1.0)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, reelquak, 0, reelquak, reelquak, seta2_state, empty_init, ROT0, "<unknown>", "Reel'N Quake! (Version 1.05)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 199?, endrichs, 0, reelquak, endrichs, seta2_state, empty_init, ROT0, "E.N.Tiger", "Endless Riches (Ver 1.20)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1997, staraudi, 0, staraudi, staraudi, staraudi_state, empty_init, ROT0, "Namco", "Star Audition", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) +GAME( 1999, pzlbowl, 0, pzlbowl, pzlbowl, seta2_state, empty_init, ROT0, "MOSS / Nihon System", "Puzzle De Bowling (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 2000, penbros, 0, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Penguin Brothers (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 2000, ablast, penbros, penbros, penbros, seta2_state, empty_init, ROT0, "Subsino", "Hong Tian Lei (A-Blast) (Japan)", MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi +GAME( 2000, ablastb, penbros, ablastb, penbros, seta2_state, empty_init, ROT0, "bootleg", "Hong Tian Lei (A-Blast) (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010 +GAME( 2000, namcostr, 0, namcostr, funcube, seta2_state, init_namcostr, ROT0, "Namco", "Namco Stars", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) +GAME( 2000, deerhunt, 0, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V4.0", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V3", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V2", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Deer Hunting USA V1", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, turkhunt, 0, samshoot, turkhunt, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Turkey Hunting USA V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, wschamp, 0, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V2.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, wschampa, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.01", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2001, wschampb, wschamp, samshoot, wschamp, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Wing Shooting Championship V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) +GAME( 2002, trophyh, 0, samshoot, trophyh, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) GAME( 2002, trophyht, trophyh, samshoot, trophyht, seta2_state, empty_init, ROT0, "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00 (location test)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 2000, funcube, 0, funcube, funcube, funcube_state, init_funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL ) -GAME( 2001, funcube2, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL ) -GAME( 2001, funcube3, 0, funcube3, funcube, funcube_state, init_funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL ) -GAME( 2001, funcube4, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL ) -GAME( 2002, funcube5, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL ) +GAME( 2000, funcube, 0, funcube, funcube, funcube_state, init_funcube, ROT0, "Namco", "Funcube (v1.5)", MACHINE_NO_COCKTAIL ) +GAME( 2001, funcube2, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 2 (v1.1)", MACHINE_NO_COCKTAIL ) +GAME( 2001, funcube3, 0, funcube3, funcube, funcube_state, init_funcube3, ROT0, "Namco", "Funcube 3 (v1.1)", MACHINE_NO_COCKTAIL ) +GAME( 2001, funcube4, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 4 (v1.0)", MACHINE_NO_COCKTAIL ) +GAME( 2002, funcube5, 0, funcube2, funcube, funcube_state, init_funcube2, ROT0, "Namco", "Funcube 5 (v1.0)", MACHINE_NO_COCKTAIL ) |