new working clones

-----------------------------
The Glob (Pacman hardware, Magic Electronics Inc. license) [jordigahan, ClawGrip]
Red Clash (Suntronics) [coolmod]

new not working machine
-------------------------------------
Champion 85 [PinMAME]
This commit is contained in:
Ivan Vangelista 2019-02-07 18:21:07 +01:00
parent d3403e2dce
commit c8d0db0c83
6 changed files with 285 additions and 240 deletions

View File

@ -1,18 +1,18 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:Ivan Vangelista // copyright-holders:Ivan Vangelista
// PINBALL // PINBALL
// Skeleton driver for Barni pinballs. At this time only Red Baron is dumped. // Skeleton driver for Barni pinballs.
// Known pinballs to be dumped: Shield (1985) // Known pinballs to be dumped: Shield (1985)
// Hardware listing and ROM definitions from PinMAME. // Hardware listing and ROM definitions from PinMAME.
/* /*
Hardware: Hardware:
CPU: 2 x 6809E, optional MC6802 which may replace second 6809E CPU: 2 x 6809E, optional MC6802 which may replace second 6809E
INT: IRQ on CPU 0, FIRQ on CPU 1 INT: IRQ on CPU 0, FIRQ on CPU 1
IO: 2x PIA 6821 IO: 2x PIA 6821
1x VIA 6522 1x VIA 6522
DISPLAY: 5x6 digit 7 or 16 segment display DISPLAY: 5x6 digit 7 or 16 segment display
SOUND: basically the same as Bally's Squalk & Talk -61 board but missing AY8912 synth chip SOUND: basically the same as Bally's Squalk & Talk -61 board but missing AY8912 synth chip
*/ */
#include "emu.h" #include "emu.h"
@ -62,19 +62,20 @@ void barni_state::audiocpu_map(address_map &map)
static INPUT_PORTS_START( barni ) static INPUT_PORTS_START( barni )
INPUT_PORTS_END INPUT_PORTS_END
MACHINE_CONFIG_START(barni_state::barni) void barni_state::barni(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", MC6809E, XTAL(4'000'000) / 4) MC6809E(config, m_maincpu, XTAL(4'000'000) / 4);
MCFG_DEVICE_PROGRAM_MAP(maincpu_map) m_maincpu->set_addrmap(AS_PROGRAM, &barni_state::maincpu_map);
MCFG_DEVICE_ADD("subcpu", MC6809E, XTAL(4'000'000) / 4) mc6809e_device &subcpu(MC6809E(config, "subcpu", XTAL(4'000'000) / 4));
MCFG_DEVICE_PROGRAM_MAP(subcpu_map) subcpu.set_addrmap(AS_PROGRAM, &barni_state::subcpu_map);
MCFG_DEVICE_ADD("audiocpu", M6802, 4000000) // uses own XTAL, but what is the value? m6802_cpu_device &audiocpu(M6802(config, "audiocpu", 4000000)); // uses own XTAL, but what is the value?
MCFG_DEVICE_PROGRAM_MAP(audiocpu_map) audiocpu.set_addrmap(AS_PROGRAM, &barni_state::audiocpu_map);
/* video hardware */ /* video hardware */
//MCFG_DEFAULT_LAYOUT() //config.set_default_layout();
//6522via //6522via
//6821pia //6821pia
@ -83,7 +84,26 @@ MACHINE_CONFIG_START(barni_state::barni)
//tmms5220 //tmms5220
//dac //dac
genpin_audio(config); genpin_audio(config);
MACHINE_CONFIG_END }
/*--------------------------------
/ Champion 85
/-------------------------------*/
ROM_START(champion)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("che.bin", 0xe000, 0x2000, CRC(c5dc9228) SHA1(5306980a9c73118cfb843dbce0d56f516d054220))
ROM_LOAD("chc.bin", 0xc000, 0x2000, CRC(6ab0f232) SHA1(0638d33f86c62ee93dff924a16a5b9309392d9e8))
ROM_REGION(0x10000, "subcpu", 0)
ROM_LOAD("chan.bin", 0xe000, 0x2000, CRC(3f148587) SHA1(e44dc9cce15830f522dc781aaa13c659a43371f3))
ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("voz1.bin", 0xf000, 0x1000, CRC(48665778) SHA1(c295dfe7f4a98756f508391eb326f37a5aac37ff))
ROM_LOAD("voz2.bin", 0xe000, 0x1000, CRC(30e7da5e) SHA1(3054cf9b09e0f89c242e1ad35bb31d9bd77248e4))
ROM_LOAD("voz3.bin", 0xd000, 0x1000, CRC(3cd8058e) SHA1(fa4fd0cf4124263d4021c5a86033af9e5aa66eed))
ROM_LOAD("voz4.bin", 0xc000, 0x1000, CRC(0d00d8cc) SHA1(10f64d2fc3fc3e276bbd0e108815a3b395dcf0c9))
ROM_END
/*-------------------------------- /*--------------------------------
@ -105,4 +125,5 @@ ROM_START(redbarnp)
ROM_END ROM_END
GAME( 1985, champion, 0, barni, barni, barni_state, empty_init, ROT0, "Barni", "Champion 85", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1985, redbarnp, 0, barni, barni, barni_state, empty_init, ROT0, "Barni", "Red Baron (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) GAME( 1985, redbarnp, 0, barni, barni, barni_state, empty_init, ROT0, "Barni", "Red Baron (Pinball)", MACHINE_IS_SKELETON_MECHANICAL )

View File

@ -3564,31 +3564,33 @@ void pacman_state::pacman(machine_config &config, bool latch)
m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0); m_namco_sound->add_route(ALL_OUTPUTS, "mono", 1.0);
} }
MACHINE_CONFIG_START(pacman_state::maketrax) void pacman_state::maketrax(machine_config &config)
{
pacman(config); pacman(config);
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,maketrax) MCFG_MACHINE_RESET_OVERRIDE(pacman_state,maketrax)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::korosuke) void pacman_state::korosuke(machine_config &config)
{
maketrax(config); maketrax(config);
// 8K on original boards // 8K on original boards
m_mainlatch->q_out_cb<7>().set_nop(); // outputs 4-7 go to protection chip at 6P m_mainlatch->q_out_cb<7>().set_nop(); // outputs 4-7 go to protection chip at 6P
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::pengojpm) void pacman_state::pengojpm(machine_config &config)
{
pacman(config); pacman(config);
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::pengojpm_map);
MCFG_DEVICE_PROGRAM_MAP(pengojpm_map) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::birdiy) void pacman_state::birdiy(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") Z80(config.replace(), m_maincpu, MASTER_CLOCK/6);
MCFG_DEVICE_PROGRAM_MAP(birdiy_map) m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::birdiy_map);
MCFG_DEVICE_REMOVE_ADDRESS_MAP(AS_IO)
// 74LS259 at 8K or 4099 at 7K // 74LS259 at 8K or 4099 at 7K
m_mainlatch->q_out_cb<0>().set_nop(); m_mainlatch->q_out_cb<0>().set_nop();
@ -3597,58 +3599,56 @@ MACHINE_CONFIG_START(pacman_state::birdiy)
m_mainlatch->q_out_cb<7>().set(FUNC(pacman_state::coin_counter_w)); m_mainlatch->q_out_cb<7>().set(FUNC(pacman_state::coin_counter_w));
MCFG_VIDEO_START_OVERRIDE(pacman_state,birdiy) MCFG_VIDEO_START_OVERRIDE(pacman_state,birdiy)
MACHINE_CONFIG_END }
void pacman_state::piranha(machine_config &config)
{
MACHINE_CONFIG_START(pacman_state::piranha)
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_IO, &pacman_state::piranha_portmap);
MCFG_DEVICE_IO_MAP(piranha_portmap) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::nmouse) void pacman_state::nmouse(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_IO, &pacman_state::nmouse_portmap);
MCFG_DEVICE_IO_MAP(nmouse_portmap) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::mspacman) void pacman_state::mspacman(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::mspacman_map);
MCFG_DEVICE_PROGRAM_MAP(mspacman_map)
m_mainlatch->q_out_cb<6>().set(FUNC(pacman_state::coin_lockout_global_w)); m_mainlatch->q_out_cb<6>().set(FUNC(pacman_state::coin_lockout_global_w));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::woodpek) void pacman_state::woodpek(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::woodpek_map);
MCFG_DEVICE_PROGRAM_MAP(woodpek_map) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::numcrash) void pacman_state::numcrash(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::numcrash_map);
MCFG_DEVICE_PROGRAM_MAP(numcrash_map)
m_mainlatch->q_out_cb<3>().set_nop(); // ??? m_mainlatch->q_out_cb<3>().set_nop(); // ???
m_mainlatch->q_out_cb<7>().set_nop(); // ??? m_mainlatch->q_out_cb<7>().set_nop(); // ???
MACHINE_CONFIG_END }
void pacman_state::alibaba(machine_config &config) void pacman_state::alibaba(machine_config &config)
{ {
@ -3669,107 +3669,104 @@ void pacman_state::alibaba(machine_config &config)
latch2.q_out_cb<2>().set(FUNC(pacman_state::irq_mask_w)); latch2.q_out_cb<2>().set(FUNC(pacman_state::irq_mask_w));
} }
MACHINE_CONFIG_START(pacman_state::dremshpr) void pacman_state::dremshpr(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::dremshpr_map);
MCFG_DEVICE_PROGRAM_MAP(dremshpr_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::dremshpr_portmap);
MCFG_DEVICE_IO_MAP(dremshpr_portmap)
MCFG_DEVICE_MODIFY("screen") subdevice<screen_device>("screen")->screen_vblank().set(FUNC(pacman_state::vblank_nmi));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, vblank_nmi))
/* sound hardware */ /* sound hardware */
config.device_remove("namco"); config.device_remove("namco");
AY8910(config, "ay8910", 14318000/8).add_route(ALL_OUTPUTS, "mono", 0.50); AY8910(config, "ay8910", 14318000/8).add_route(ALL_OUTPUTS, "mono", 0.50);
m_mainlatch->q_out_cb<1>().set_nop(); m_mainlatch->q_out_cb<1>().set_nop();
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::theglobp) void pacman_state::theglobp(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::epos_map);
MCFG_DEVICE_PROGRAM_MAP(epos_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::epos_portmap);
MCFG_DEVICE_IO_MAP(epos_portmap)
MCFG_MACHINE_START_OVERRIDE(pacman_state,theglobp) MCFG_MACHINE_START_OVERRIDE(pacman_state,theglobp)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,theglobp) MCFG_MACHINE_RESET_OVERRIDE(pacman_state,theglobp)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::acitya) void pacman_state::acitya(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::epos_map);
MCFG_DEVICE_PROGRAM_MAP(epos_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::epos_portmap);
MCFG_DEVICE_IO_MAP(epos_portmap)
MCFG_MACHINE_START_OVERRIDE(pacman_state,acitya) MCFG_MACHINE_START_OVERRIDE(pacman_state,acitya)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,acitya) MCFG_MACHINE_RESET_OVERRIDE(pacman_state,acitya)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::eeekk) void pacman_state::eeekk(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::epos_map);
MCFG_DEVICE_PROGRAM_MAP(epos_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::epos_portmap);
MCFG_DEVICE_IO_MAP(epos_portmap)
MCFG_MACHINE_START_OVERRIDE(pacman_state,eeekk) MCFG_MACHINE_START_OVERRIDE(pacman_state,eeekk)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,eeekk) MCFG_MACHINE_RESET_OVERRIDE(pacman_state,eeekk)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::vanvan) void pacman_state::vanvan(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::dremshpr_map);
MCFG_DEVICE_PROGRAM_MAP(dremshpr_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::vanvan_portmap);
MCFG_DEVICE_IO_MAP(vanvan_portmap)
/* video hardware */ /* video hardware */
MCFG_SCREEN_MODIFY("screen") screen_device &screen(*subdevice<screen_device>("screen"));
MCFG_SCREEN_VISIBLE_AREA(2*8, 34*8-1, 0*8, 28*8-1) screen.set_visarea(2*8, 34*8-1, 0*8, 28*8-1);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, vblank_nmi)) screen.screen_vblank().set(FUNC(pacman_state::vblank_nmi));
/* sound hardware */ /* sound hardware */
config.device_remove("namco"); config.device_remove("namco");
MCFG_DEVICE_ADD("sn1", SN76496, 1789750)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) SN76496(config, "sn1", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75);
MCFG_DEVICE_ADD("sn2", SN76496, 1789750)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) SN76496(config, "sn2", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75);
m_mainlatch->q_out_cb<1>().set_nop(); m_mainlatch->q_out_cb<1>().set_nop();
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::bigbucks) void pacman_state::bigbucks(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::bigbucks_map);
MCFG_DEVICE_PROGRAM_MAP(bigbucks_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::bigbucks_portmap);
MCFG_DEVICE_IO_MAP(bigbucks_portmap) m_maincpu->set_periodic_int(FUNC(pacman_state::periodic_irq), attotime::from_hz(20*60));
MCFG_DEVICE_PERIODIC_INT_DRIVER(pacman_state, periodic_irq, 20*60)
MCFG_SCREEN_MODIFY("screen") subdevice<screen_device>("screen")->set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1)
m_mainlatch->q_out_cb<7>().set_nop(); /*?*/ m_mainlatch->q_out_cb<7>().set_nop(); /*?*/
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::s2650games) void pacman_state::s2650games(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
@ -3789,80 +3786,79 @@ MACHINE_CONFIG_START(pacman_state::s2650games)
m_gfxdecode->set_info(gfx_s2650games); m_gfxdecode->set_info(gfx_s2650games);
MCFG_SCREEN_MODIFY("screen") screen_device &screen(*subdevice<screen_device>("screen"));
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_UPDATE_DRIVER(pacman_state, screen_update_s2650games) screen.set_screen_update(FUNC(pacman_state::screen_update_s2650games));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, s2650_interrupt)) screen.screen_vblank().set(FUNC(pacman_state::s2650_interrupt));
MCFG_VIDEO_START_OVERRIDE(pacman_state,s2650games) MCFG_VIDEO_START_OVERRIDE(pacman_state,s2650games)
/* sound hardware */ /* sound hardware */
config.device_remove("namco"); config.device_remove("namco");
MCFG_DEVICE_ADD("sn1", SN76496, MASTER_CLOCK/6) /* 1H */ SN76496(config, "sn1", MASTER_CLOCK/6).add_route(ALL_OUTPUTS, "mono", 0.75); /* 1H */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::drivfrcp) void pacman_state::drivfrcp(machine_config &config)
{
s2650games(config); s2650games(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_IO, &pacman_state::drivfrcp_portmap);
MCFG_DEVICE_IO_MAP(drivfrcp_portmap) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::_8bpm ) void pacman_state::_8bpm(machine_config &config)
{
s2650games(config); s2650games(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_IO, &pacman_state::_8bpm_portmap);
MCFG_DEVICE_IO_MAP(_8bpm_portmap) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::porky) void pacman_state::porky(machine_config &config)
{
s2650games(config); s2650games(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_IO, &pacman_state::porky_portmap);
MCFG_DEVICE_IO_MAP(porky_portmap) }
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pacman_state::rocktrv2) void pacman_state::rocktrv2(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::rocktrv2_map);
MCFG_DEVICE_PROGRAM_MAP(rocktrv2_map)
MCFG_SCREEN_MODIFY("screen") screen_device &screen(*subdevice<screen_device>("screen"));
MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 0*8, 28*8-1) screen.set_visarea(0*8, 36*8-1, 0*8, 28*8-1);
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, pacman_state, rocktrv2_vblank_irq)) screen.screen_vblank().set(FUNC(pacman_state::rocktrv2_vblank_irq));
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::mschamp) void pacman_state::mschamp(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::mschamp_map);
MCFG_DEVICE_PROGRAM_MAP(mschamp_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::mschamp_portmap);
MCFG_DEVICE_IO_MAP(mschamp_portmap)
MCFG_MACHINE_RESET_OVERRIDE(pacman_state,mschamp) MCFG_MACHINE_RESET_OVERRIDE(pacman_state,mschamp)
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(pacman_state::superabc) void pacman_state::superabc(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::superabc_map);
MCFG_DEVICE_PROGRAM_MAP(superabc_map)
NVRAM(config, "28c16.u17", nvram_device::DEFAULT_ALL_0); NVRAM(config, "28c16.u17", nvram_device::DEFAULT_ALL_0);
@ -3870,7 +3866,7 @@ MACHINE_CONFIG_START(pacman_state::superabc)
/* video hardware */ /* video hardware */
m_gfxdecode->set_info(gfx_superabc); m_gfxdecode->set_info(gfx_superabc);
MACHINE_CONFIG_END }
void pacman_state::crush4(machine_config &config) void pacman_state::crush4(machine_config &config)
@ -3881,17 +3877,17 @@ void pacman_state::crush4(machine_config &config)
m_gfxdecode->set_info(gfx_crush4); m_gfxdecode->set_info(gfx_crush4);
} }
MACHINE_CONFIG_START(pacman_state::crushs) void pacman_state::crushs(machine_config &config)
{
pacman(config); pacman(config);
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_MODIFY("maincpu") m_maincpu->set_addrmap(AS_PROGRAM, &pacman_state::crushs_map);
MCFG_DEVICE_PROGRAM_MAP(crushs_map) m_maincpu->set_addrmap(AS_IO, &pacman_state::crushs_portmap);
MCFG_DEVICE_IO_MAP(crushs_portmap)
/* sound hardware */ /* sound hardware */
AY8912(config, "ay8912", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75); AY8912(config, "ay8912", 1789750).add_route(ALL_OUTPUTS, "mono", 0.75);
MACHINE_CONFIG_END }
@ -6338,6 +6334,27 @@ ROM_START( sprglbpg )
ROM_END ROM_END
// 2 PCB set (G-GA-2 and G-GB-2). It was modified to use one 27128 instead of eight 2716 for the program ROMs.
ROM_START( theglobme )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "globo_1-8_a.6e", 0x0000, 0x4000, CRC(57252220) SHA1(ee02a1f8817cb5c55d67653391f4509bb5a30403) )
ROM_REGION( 0x2000, "gfx1", 0 )
ROM_LOAD( "globo-10_b.5e", 0x0000, 0x0800, CRC(36408c76) SHA1(f5bb18e38de57adc2aed6211048d9f0ee0e58df7) )
ROM_LOAD( "globo-12_b.5h", 0x0800, 0x0800, CRC(b8ba069c) SHA1(f8d8e40afd8214a6d951af8de2761703b0651f79) )
ROM_LOAD( "globo-11_b.5f", 0x1000, 0x0800, CRC(890b8ebf) SHA1(1bf64f4ca1fca8efd35ac3d414d2bb755c5e44cc) )
ROM_LOAD( "globo-13_b.5j", 0x1800, 0x0800, CRC(7c4456a4) SHA1(74f55ae921cdf8f1f7a866d75a63244187426f17) )
ROM_REGION( 0x0120, "proms", 0 )
ROM_LOAD( "n82s123an_a.7f", 0x0000, 0x0020, CRC(1f617527) SHA1(448845cab63800a05fcb106897503d994377f78f) )
ROM_LOAD( "n82s129n_b.4a", 0x0020, 0x0100, CRC(28faa769) SHA1(7588889f3102d4e0ca7918f536556209b2490ea1) )
ROM_REGION( 0x0200, "namco", 0 ) /* sound PROMs, Harris 63S141J */
ROM_LOAD( "63s141_b.1m", 0x0000, 0x0100, CRC(a9cc86bf) SHA1(bbcec0570aeceb582ff8238a4bc8546a23430081) )
ROM_LOAD( "63s141_b.3m", 0x0100, 0x0100, CRC(77245b66) SHA1(0c4d0bee858b97632411c440bea6948a74759746) ) /* timing - not used */
ROM_END
ROM_START( beastfp ) ROM_START( beastfp )
ROM_REGION( 0x20000, "maincpu", 0 ) ROM_REGION( 0x20000, "maincpu", 0 )
ROM_LOAD( "bf-u2.bin", 0x0000, 0x2000, CRC(3afc517b) SHA1(5b74bca9e9cd4d8bcf94a340f8f0e53fe1dcfc1d) ) ROM_LOAD( "bf-u2.bin", 0x0000, 0x2000, CRC(3afc517b) SHA1(5b74bca9e9cd4d8bcf94a340f8f0e53fe1dcfc1d) )
@ -7637,6 +7654,7 @@ GAME( 1983, acitya, bwcasino, acitya, acitya, pacman_state, empty_init,
GAME( 1983, theglobp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, theglobp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "The Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, sprglobp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE ) GAME( 1983, sprglobp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "Super Glob (Pac-Man hardware)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, sprglbpg, suprglob, pacman, theglobp, pacman_state, empty_init, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware) (German bootleg)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, sprglbpg, suprglob, pacman, theglobp, pacman_state, empty_init, ROT90, "bootleg (Software Labor)", "Super Glob (Pac-Man hardware) (German bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1983, theglobme,suprglob, woodpek, theglobp, pacman_state, empty_init, ROT90, "Magic Electronics Inc.", "The Glob (Pacman hardware, Magic Electronics Inc. license)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, beastfp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "Beastie Feastie (conversion kit)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, beastfp, suprglob, theglobp, theglobp, pacman_state, empty_init, ROT90, "Epos Corporation", "Beastie Feastie (conversion kit)", MACHINE_SUPPORTS_SAVE )
GAME( 1984, eeekk, 0, eeekk, eeekk, pacman_state, empty_init, ROT90, "Epos Corporation", "Eeekk!", MACHINE_SUPPORTS_SAVE ) GAME( 1984, eeekk, 0, eeekk, eeekk, pacman_state, empty_init, ROT90, "Epos Corporation", "Eeekk!", MACHINE_SUPPORTS_SAVE )

View File

@ -36,7 +36,7 @@ WRITE8_MEMBER( redclash_state::irqack_w )
m_maincpu->set_input_line(0, CLEAR_LINE); m_maincpu->set_input_line(0, CLEAR_LINE);
} }
template <unsigned B> WRITE8_MEMBER(redclash_state::redclash_star_w) template <unsigned B> WRITE8_MEMBER(redclash_state::star_w)
{ {
m_stars->set_speed(BIT(data, 0) << B, 1U << B); m_stars->set_speed(BIT(data, 0) << B, 1U << B);
} }
@ -45,41 +45,41 @@ void redclash_state::zerohour_map(address_map &map)
{ {
map(0x0000, 0x2fff).rom(); map(0x0000, 0x2fff).rom();
map(0x3000, 0x37ff).ram(); map(0x3000, 0x37ff).ram();
map(0x3800, 0x3bff).ram().share("spriteram"); map(0x3800, 0x3bff).ram().share(m_spriteram);
map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::redclash_videoram_w)).share("videoram"); map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::videoram_w)).share(m_videoram);
map(0x4800, 0x4800).portr("IN0"); /* IN0 */ map(0x4800, 0x4800).portr("IN0"); /* IN0 */
map(0x4801, 0x4801).portr("IN1"); /* IN1 */ map(0x4801, 0x4801).portr("IN1"); /* IN1 */
map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */ map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */
map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */ map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */
map(0x5000, 0x5007).nopw(); /* to sound board */ map(0x5000, 0x5007).nopw(); /* to sound board */
map(0x5800, 0x5800).w(FUNC(redclash_state::redclash_star_w<0>)); map(0x5800, 0x5800).w(FUNC(redclash_state::star_w<0>));
map(0x5801, 0x5804).nopw(); /* to sound board */ map(0x5801, 0x5804).nopw(); /* to sound board */
map(0x5805, 0x5805).w(FUNC(redclash_state::redclash_star_w<1>)); map(0x5805, 0x5805).w(FUNC(redclash_state::star_w<1>));
map(0x5806, 0x5806).w(FUNC(redclash_state::redclash_star_w<2>)); map(0x5806, 0x5806).w(FUNC(redclash_state::star_w<2>));
map(0x5807, 0x5807).w(FUNC(redclash_state::redclash_flipscreen_w)); map(0x5807, 0x5807).w(FUNC(redclash_state::flipscreen_w));
map(0x7000, 0x7000).w(FUNC(redclash_state::redclash_star_reset_w)); map(0x7000, 0x7000).w(FUNC(redclash_state::star_reset_w));
map(0x7800, 0x7800).w(FUNC(redclash_state::irqack_w)); map(0x7800, 0x7800).w(FUNC(redclash_state::irqack_w));
} }
void redclash_state::redclash_map(address_map &map) void redclash_state::redclash_map(address_map &map)
{ {
map(0x0000, 0x2fff).rom(); map(0x0000, 0x2fff).rom();
// AM_RANGE(0x3000, 0x3000) AM_WRITENOP // map(0x3000, 0x3000).set_nopw();
// AM_RANGE(0x3800, 0x3800) AM_WRITENOP // map(0x3800, 0x3800).set_nopw();
map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::redclash_videoram_w)).share("videoram"); map(0x4000, 0x43ff).ram().w(FUNC(redclash_state::videoram_w)).share(m_videoram);
map(0x4800, 0x4800).portr("IN0"); /* IN0 */ map(0x4800, 0x4800).portr("IN0"); /* IN0 */
map(0x4801, 0x4801).portr("IN1"); /* IN1 */ map(0x4801, 0x4801).portr("IN1"); /* IN1 */
map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */ map(0x4802, 0x4802).portr("DSW1"); /* DSW0 */
map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */ map(0x4803, 0x4803).portr("DSW2"); /* DSW1 */
map(0x5000, 0x5007).nopw(); /* to sound board */ map(0x5000, 0x5007).nopw(); /* to sound board */
map(0x5800, 0x5800).w(FUNC(redclash_state::redclash_star_w<0>)); map(0x5800, 0x5800).w(FUNC(redclash_state::star_w<0>));
map(0x5801, 0x5801).w(FUNC(redclash_state::redclash_gfxbank_w)); map(0x5801, 0x5801).w(FUNC(redclash_state::gfxbank_w));
map(0x5805, 0x5805).w(FUNC(redclash_state::redclash_star_w<1>)); map(0x5805, 0x5805).w(FUNC(redclash_state::star_w<1>));
map(0x5806, 0x5806).w(FUNC(redclash_state::redclash_star_w<2>)); map(0x5806, 0x5806).w(FUNC(redclash_state::star_w<2>));
map(0x5807, 0x5807).w(FUNC(redclash_state::redclash_flipscreen_w)); map(0x5807, 0x5807).w(FUNC(redclash_state::flipscreen_w));
map(0x6000, 0x67ff).ram(); map(0x6000, 0x67ff).ram();
map(0x6800, 0x6bff).ram().share("spriteram"); map(0x6800, 0x6bff).ram().share(m_spriteram);
map(0x7000, 0x7000).w(FUNC(redclash_state::redclash_star_reset_w)); map(0x7000, 0x7000).w(FUNC(redclash_state::star_reset_w));
map(0x7800, 0x7800).w(FUNC(redclash_state::irqack_w)); map(0x7800, 0x7800).w(FUNC(redclash_state::irqack_w));
} }
@ -119,7 +119,7 @@ static INPUT_PORTS_START( redclash )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Note that there are TWO VBlank inputs, one is active low, the other active */ /* Note that there are TWO VBlank inputs, one is active low, the other active */
/* high. There are probably other differencies in the hardware, but emulating */ /* high. There are probably other differences in the hardware, but emulating */
/* them this way is enough to get the game running. */ /* them this way is enough to get the game running. */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
@ -213,7 +213,7 @@ static INPUT_PORTS_START( zerohour )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
/* Note that there are TWO VBlank inputs, one is active low, the other active */ /* Note that there are TWO VBlank inputs, one is active low, the other active */
/* high. There are probably other differencies in the hardware, but emulating */ /* high. There are probably other differences in the hardware, but emulating */
/* them this way is enough to get the game running. */ /* them this way is enough to get the game running. */
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen")
@ -345,54 +345,37 @@ void redclash_state::machine_reset()
m_gfxbank = 0; m_gfxbank = 0;
} }
MACHINE_CONFIG_START(redclash_state::zerohour) void redclash_state::zerohour(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz */ Z80(config, m_maincpu, 4000000); /* 4 MHz */
MCFG_DEVICE_PROGRAM_MAP(zerohour_map) m_maincpu->set_addrmap(AS_PROGRAM, &redclash_state::zerohour_map);
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_REFRESH_RATE(60) screen.set_refresh_hz(60);
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
MCFG_SCREEN_SIZE(32*8, 32*8) screen.set_size(32*8, 32*8);
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1) screen.set_visarea(1*8, 31*8-1, 4*8, 28*8-1);
MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_redclash) screen.set_screen_update(FUNC(redclash_state::screen_update));
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, redclash_state, screen_vblank_redclash)) screen.screen_vblank().set(FUNC(redclash_state::screen_vblank));
MCFG_SCREEN_PALETTE(m_palette) screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_redclash); GFXDECODE(config, m_gfxdecode, m_palette, gfx_redclash);
PALETTE(config, m_palette, FUNC(redclash_state::redclash_palette), 4*8 + 4*16 + 32, 32 + 32); PALETTE(config, m_palette, FUNC(redclash_state::palette), 4*8 + 4*16 + 32, 32 + 32);
ZEROHOUR_STARS(config, m_stars, 0); ZEROHOUR_STARS(config, m_stars, 0);
/* sound hardware */ /* sound hardware */
MACHINE_CONFIG_END }
MACHINE_CONFIG_START(redclash_state::redclash) void redclash_state::redclash(machine_config &config)
{
zerohour(config);
/* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &redclash_state::redclash_map);
MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz */ }
MCFG_DEVICE_PROGRAM_MAP(redclash_map)
/* 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(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 4*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(redclash_state, screen_update_redclash)
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, redclash_state, screen_vblank_redclash))
MCFG_SCREEN_PALETTE(m_palette)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_redclash);
PALETTE(config, m_palette, FUNC(redclash_state::redclash_palette), 4*8 + 4*16 + 32, 32 + 32);
ZEROHOUR_STARS(config, m_stars, 0);
/* sound hardware */
MACHINE_CONFIG_END
@ -560,6 +543,30 @@ ROM_START( redclashk )
ROM_LOAD( "3.11e", 0x0040, 0x0020, CRC(27fa3a50) SHA1(7cf59b7a37c156640d6ea91554d1c4276c1780e0) ) /* 6331.6w */ ROM_LOAD( "3.11e", 0x0040, 0x0020, CRC(27fa3a50) SHA1(7cf59b7a37c156640d6ea91554d1c4276c1780e0) ) /* 6331.6w */
ROM_END ROM_END
// 2 PCB set (K-00A and K-00B)
ROM_START( redclashs )
ROM_REGION(0x10000, "maincpu", 0 )
ROM_LOAD( "1.11c", 0x0000, 0x1000, CRC(62275f85) SHA1(8f5d7113a012cc29e3729d54c4a0319c838a7c0d) )
ROM_LOAD( "3.7c", 0x1000, 0x1000, CRC(c2090318) SHA1(71725cdf51aedf5f29fa1dd1a41ad5e62c9a580d) )
ROM_LOAD( "2.9c", 0x2000, 0x1000, CRC(b60e5ada) SHA1(37440f382c5e8852d804fa9837c36cc1e9d94d1d) )
ROM_REGION(0x0800, "gfx1", 0 )
ROM_LOAD( "6.a12", 0x0000, 0x0800, CRC(da9bbcc2) SHA1(4cbe03c7f5e99cc2f124e0089ea3c392156b5d92) )
ROM_REGION( 0x2000, "gfx2", 0 )
ROM_LOAD( "4.3e", 0x0000, 0x0800, CRC(483a1293) SHA1(e7812475c7509389bcf8fee35598e9894428eb37) )
ROM_CONTINUE( 0x1000, 0x0800 )
ROM_LOAD( "5.3d", 0x0800, 0x0800, CRC(c45d9601) SHA1(2f156ad61161d65284df0cc55eb1b3b990eb41cb) )
ROM_CONTINUE( 0x1800, 0x0800 )
ROM_REGION( 0x2000, "gfx3", ROMREGION_ERASE00 )
/* gfx data will be rearranged here for 8x8 sprites */
ROM_REGION( 0x0060, "proms", 0 ) // not dumped for this set
ROM_LOAD( "1.12f", 0x0000, 0x0020, CRC(43989681) SHA1(0d471e6f499294f2f62f27392b8370e2af8e38a3) ) /* palette */
ROM_LOAD( "2.4a", 0x0020, 0x0020, CRC(9adabf46) SHA1(f3538fdbc4280b6be46a4d7ebb4c34bd1a1ce2b7) ) /* sprite color lookup table */
ROM_LOAD( "3.11e", 0x0040, 0x0020, CRC(27fa3a50) SHA1(7cf59b7a37c156640d6ea91554d1c4276c1780e0) ) /* ?? */
ROM_END
void redclash_state::init_redclash() void redclash_state::init_redclash()
{ {
@ -576,9 +583,10 @@ void redclash_state::init_redclash()
} }
GAME( 1980, zerohour, 0, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1980, zerohour, 0, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1980, zerohoura, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1980, zerohoura, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "Universal", "Zero Hour (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1980, zerohouri, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "bootleg (Inder SA)", "Zero Hour (Inder)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1980, zerohouri, zerohour, zerohour, zerohour, redclash_state, init_redclash, ROT270, "bootleg (Inder SA)", "Zero Hour (Inder)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1981, redclash, 0, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1981, redclash, 0, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 1)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1981, redclasha, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1981, redclasha, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan", "Red Clash (set 2)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1981, redclashk, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan (Kaneko license)", "Red Clash (Kaneko)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1981, redclashk, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan (Kaneko license)", "Red Clash (Kaneko)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
GAME( 1982, redclashs, redclash, redclash, redclash, redclash_state, init_redclash, ROT270, "Tehkan (Suntronics license)", "Red Clash (Suntronics)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )

View File

@ -42,19 +42,19 @@ protected:
virtual void video_start() override; virtual void video_start() override;
private: private:
DECLARE_WRITE_LINE_MEMBER(screen_vblank_redclash); DECLARE_WRITE_LINE_MEMBER(screen_vblank);
DECLARE_WRITE8_MEMBER(redclash_videoram_w); DECLARE_WRITE8_MEMBER(videoram_w);
DECLARE_WRITE8_MEMBER(redclash_gfxbank_w); DECLARE_WRITE8_MEMBER(gfxbank_w);
DECLARE_WRITE8_MEMBER(redclash_flipscreen_w); DECLARE_WRITE8_MEMBER(flipscreen_w);
DECLARE_WRITE8_MEMBER(irqack_w); DECLARE_WRITE8_MEMBER(irqack_w);
DECLARE_WRITE8_MEMBER(redclash_star_reset_w); DECLARE_WRITE8_MEMBER(star_reset_w);
template <unsigned B> DECLARE_WRITE8_MEMBER(redclash_star_w); template <unsigned B> DECLARE_WRITE8_MEMBER(star_w);
void redclash_palette(palette_device &palette) const; void palette(palette_device &palette) const;
TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info);
uint32_t screen_update_redclash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void redclash_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
void redclash_draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect);
void redclash_map(address_map &map); void redclash_map(address_map &map);
void zerohour_map(address_map &map); void zerohour_map(address_map &map);

View File

@ -2828,6 +2828,7 @@ metrocrsa // (c) 1985
barata // barata //
@source:barni.cpp @source:barni.cpp
champion //
redbarnp // redbarnp //
@source:bartop52.cpp @source:bartop52.cpp
@ -30998,6 +30999,7 @@ sprglbpg // German bootleg
sprglobp // (c) 1983 Epos Corporation sprglobp // (c) 1983 Epos Corporation
superabc // hack superabc // hack
superabco // hack superabco // hack
theglobme // (c) 1983 Magic Electronics
theglobp // (c) 1983 Epos Corporation theglobp // (c) 1983 Epos Corporation
titanpac // hack titanpac // hack
pacmanfm // bootleg (FAMARE S.A.) pacmanfm // bootleg (FAMARE S.A.)
@ -33305,6 +33307,7 @@ ww3 // M27 (c) 1981
redclash // (c) 1981 Tehkan redclash // (c) 1981 Tehkan
redclasha // (c) 1981 Tehkan redclasha // (c) 1981 Tehkan
redclashk // (c) Kaneko (bootleg?) redclashk // (c) Kaneko (bootleg?)
redclashs // (c) Suntronics (licensed?)
zerohour // 8011 (c) Universal zerohour // 8011 (c) Universal
zerohoura // 8011 (c) Universal zerohoura // 8011 (c) Universal
zerohouri // zerohouri //

View File

@ -2,7 +2,7 @@
// copyright-holders:David Haywood // copyright-holders:David Haywood
/*************************************************************************** /***************************************************************************
video.c redclash.cpp
Functions to emulate the video hardware of the machine. Functions to emulate the video hardware of the machine.
@ -21,7 +21,7 @@
***************************************************************************/ ***************************************************************************/
void redclash_state::redclash_palette(palette_device &palette) const void redclash_state::palette(palette_device &palette) const
{ {
const uint8_t *color_prom = memregion("proms")->base(); const uint8_t *color_prom = memregion("proms")->base();
@ -98,13 +98,13 @@ void redclash_state::redclash_palette(palette_device &palette) const
} }
WRITE8_MEMBER( redclash_state::redclash_videoram_w ) WRITE8_MEMBER( redclash_state::videoram_w )
{ {
m_videoram[offset] = data; m_videoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset); m_fg_tilemap->mark_tile_dirty(offset);
} }
WRITE8_MEMBER( redclash_state::redclash_gfxbank_w ) WRITE8_MEMBER( redclash_state::gfxbank_w )
{ {
if (m_gfxbank != (data & 0x01)) if (m_gfxbank != (data & 0x01))
{ {
@ -113,12 +113,12 @@ WRITE8_MEMBER( redclash_state::redclash_gfxbank_w )
} }
} }
WRITE8_MEMBER( redclash_state::redclash_flipscreen_w ) WRITE8_MEMBER( redclash_state::flipscreen_w )
{ {
flip_screen_set(data & 0x01); flip_screen_set(data & 0x01);
} }
WRITE8_MEMBER( redclash_state::redclash_star_reset_w ) WRITE8_MEMBER( redclash_state::star_reset_w )
{ {
m_stars->set_enable(true); m_stars->set_enable(true);
} }
@ -138,33 +138,30 @@ void redclash_state::video_start()
m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0);
} }
void redclash_state::redclash_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) void redclash_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
uint8_t *spriteram = m_spriteram; for (int offs = m_spriteram.bytes() - 0x20; offs >= 0; offs -= 0x20)
int i, offs;
for (offs = m_spriteram.bytes() - 0x20; offs >= 0; offs -= 0x20)
{ {
i = 0; int i = 0;
while (i < 0x20 && spriteram[offs + i] != 0) while (i < 0x20 && m_spriteram[offs + i] != 0)
i += 4; i += 4;
while (i > 0) while (i > 0)
{ {
i -= 4; i -= 4;
if (spriteram[offs + i] & 0x80) if (m_spriteram[offs + i] & 0x80)
{ {
int color = spriteram[offs + i + 2] & 0x0f; int color = m_spriteram[offs + i + 2] & 0x0f;
int sx = spriteram[offs + i + 3]; int sx = m_spriteram[offs + i + 3];
int sy = offs / 4 + (spriteram[offs + i] & 0x07); int sy = offs / 4 + (m_spriteram[offs + i] & 0x07);
switch ((spriteram[offs + i] & 0x18) >> 3) switch ((m_spriteram[offs + i] & 0x18) >> 3)
{ {
case 3: /* 24x24 */ case 3: /* 24x24 */
{ {
int code = ((spriteram[offs + i + 1] & 0xf0) >> 4) + ((m_gfxbank & 1) << 4); int code = ((m_spriteram[offs + i + 1] & 0xf0) >> 4) + ((m_gfxbank & 1) << 4);
m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, m_gfxdecode->gfx(3)->transpen(bitmap,cliprect,
code, code,
@ -181,10 +178,10 @@ void redclash_state::redclash_draw_sprites(bitmap_ind16 &bitmap, const rectangle
} }
case 2: /* 16x16 */ case 2: /* 16x16 */
if (spriteram[offs + i] & 0x20) /* zero hour spaceships */ if (m_spriteram[offs + i] & 0x20) /* zero hour spaceships */
{ {
int code = ((spriteram[offs + i + 1] & 0xf8) >> 3) + ((m_gfxbank & 1) << 5); int code = ((m_spriteram[offs + i + 1] & 0xf8) >> 3) + ((m_gfxbank & 1) << 5);
int bank = (spriteram[offs + i + 1] & 0x02) >> 1; int bank = (m_spriteram[offs + i + 1] & 0x02) >> 1;
m_gfxdecode->gfx(4+bank)->transpen(bitmap,cliprect, m_gfxdecode->gfx(4+bank)->transpen(bitmap,cliprect,
code, code,
@ -194,7 +191,7 @@ void redclash_state::redclash_draw_sprites(bitmap_ind16 &bitmap, const rectangle
} }
else else
{ {
int code = ((spriteram[offs + i + 1] & 0xf0) >> 4) + ((m_gfxbank & 1) << 4); int code = ((m_spriteram[offs + i + 1] & 0xf0) >> 4) + ((m_gfxbank & 1) << 4);
m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, m_gfxdecode->gfx(2)->transpen(bitmap,cliprect,
code, code,
@ -206,7 +203,7 @@ void redclash_state::redclash_draw_sprites(bitmap_ind16 &bitmap, const rectangle
case 1: /* 8x8 */ case 1: /* 8x8 */
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
spriteram[offs + i + 1],// + 4 * (spriteram[offs + i + 2] & 0x10), m_spriteram[offs + i + 1],// + 4 * (m_spriteram[offs + i + 2] & 0x10),
color, color,
0,0, 0,0,
sx,sy - 16,0); sx,sy - 16,0);
@ -221,11 +218,9 @@ void redclash_state::redclash_draw_sprites(bitmap_ind16 &bitmap, const rectangle
} }
} }
void redclash_state::redclash_draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect ) void redclash_state::draw_bullets( bitmap_ind16 &bitmap, const rectangle &cliprect )
{ {
int offs; for (int offs = 0; offs < 0x20; offs++)
for (offs = 0; offs < 0x20; offs++)
{ {
// sx = m_videoramoffs]; // sx = m_videoramoffs];
int sx = 8 * offs + (m_videoram[offs] & 0x07); /* ?? */ int sx = 8 * offs + (m_videoram[offs] & 0x07); /* ?? */
@ -241,19 +236,19 @@ void redclash_state::redclash_draw_bullets( bitmap_ind16 &bitmap, const rectangl
} }
} }
WRITE_LINE_MEMBER(redclash_state::screen_vblank_redclash) WRITE_LINE_MEMBER(redclash_state::screen_vblank)
{ {
// falling edge // falling edge
if (!state) if (!state)
m_stars->update_state(); m_stars->update_state();
} }
uint32_t redclash_state::screen_update_redclash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) uint32_t redclash_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
bitmap.fill(m_palette->black_pen(), cliprect); bitmap.fill(m_palette->black_pen(), cliprect);
m_stars->draw(bitmap, cliprect, 0x60, true, 0x00, 0xff); m_stars->draw(bitmap, cliprect, 0x60, true, 0x00, 0xff);
redclash_draw_sprites(bitmap, cliprect); draw_sprites(bitmap, cliprect);
redclash_draw_bullets(bitmap, cliprect); draw_bullets(bitmap, cliprect);
m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0; return 0;
} }