diff options
Diffstat (limited to 'src/mame/drivers/chqflag.cpp')
-rw-r--r-- | src/mame/drivers/chqflag.cpp | 451 |
1 files changed, 0 insertions, 451 deletions
diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp deleted file mode 100644 index d5a94d0f287..00000000000 --- a/src/mame/drivers/chqflag.cpp +++ /dev/null @@ -1,451 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nicola Salmoria, Manuel Abadia -/*************************************************************************** - - Chequered Flag / Checkered Flag (GX717) (c) Konami 1988 - - Notes: - - 007232 volume & panning control is almost certainly wrong; - - 051733 opponent cars have wrong RNG colors compared to references; - - 051733 opponent car-to-car collisions direction are wrong, according - to reference orange car should shift to the left instead (current emulation - makes them to wall crash most of the time instead); - - needs proper shadow/highlight factor values for sprites and tilemap; - - compared to references, emulation is a bit slower (around 2/3 seconds - behind on a full lap of stage 2); - - 2008-07 - Dip locations and recommended settings verified with manual - -***************************************************************************/ - -#include "emu.h" -#include "includes/chqflag.h" -#include "includes/konamipt.h" - -#include "cpu/z80/z80.h" -#include "cpu/m6809/konami.h" -#include "machine/gen_latch.h" -#include "machine/watchdog.h" -#include "sound/ym2151.h" -#include "speaker.h" - -#include "chqflag.lh" - - -/* these trampolines are less confusing than nested address_map_bank_devices */ -template<int Chip> -READ8_MEMBER(chqflag_state::k051316_ramrom_r) -{ - if (m_k051316_readroms) - return m_k051316[Chip]->rom_r(offset); - else - return m_k051316[Chip]->read(offset); -} - -WRITE8_MEMBER(chqflag_state::chqflag_bankswitch_w) -{ - /* bits 0-4 = ROM bank # (0x00-0x11) */ - int bankaddress = data & 0x1f; - if (bankaddress < (0x50000 / 0x4000)) - m_rombank->set_entry(bankaddress); - - /* bit 5 = select work RAM or k051316 + palette */ - m_bank1000->set_bank((data & 0x20) >> 5); - - /* other bits unknown/unused */ -} - -WRITE8_MEMBER(chqflag_state::chqflag_vreg_w) -{ - /* bits 0 & 1 = coin counters */ - machine().bookkeeping().coin_counter_w(1, data & 0x01); - machine().bookkeeping().coin_counter_w(0, data & 0x02); - - /* bit 4 = enable rom reading through K051316 #1 & #2 */ - m_k051316_readroms = (data & 0x10); - - /* Bits 3-7 probably control palette dimming in a similar way to TMNT2/Sunset Riders, */ - /* however I don't have enough evidence to determine the exact behaviour. */ - /* Bits 3 and 7 are set in night stages, where the background should get darker and */ - /* the headlight (which have the shadow bit set) become highlights */ - /* Maybe one of the bits inverts the SHAD line while the other darkens the background. */ - /* - * Update according to a reference: - * 0x00 is certainly shadow (car pit-in shadow when zoomed in/clouds before rain) - * 0x80 is used when rain shows up (which should be white/highlighted) - * 0x88 is for when night shows up (max amount of highlight) - * 0x08 is used at dawn after 0x88 state - * The shadow part looks ugly when rain starts/ends pouring (-> black colored with a setting of 0x00), - * the reference shows dimmed background when this event occurs (which is handled via reg 1 bit 0 of k051960 device), - * might be actually disabling the shadow here (-> setting 1.0f instead). - * - * TODO: true values aren't known, also shadow_factors table probably scales towards zero instead (game doesn't use those) - */ - const double shadow_factors[4] = {0.8, 1.33, 1.66, 2.0 }; - const double highlight_factors[4] = {1.0, 1.33, 1.66, 2.0 }; - uint8_t shadow_value = ((data & 0x80) >> 6) | ((data & 0x08) >> 3); - - m_palette->set_shadow_factor(m_last_vreg != 0 ? highlight_factors[shadow_value] : shadow_factors[shadow_value] ); - - #if 0 - if ((data & 0x80) != m_last_vreg) - { - m_last_vreg = data & 0x80; - - /* only affect the background */ - update_background_shadows(data); - } - #endif - -//if ((data & 0xf8) && (data & 0xf8) != 0x88) -// popmessage("chqflag_vreg_w %02x",data); - - - /* other bits unknown. bit 5 is used. */ -} - -WRITE8_MEMBER(chqflag_state::select_analog_ctrl_w) -{ - m_analog_ctrl = data; -} - -READ8_MEMBER(chqflag_state::analog_read_r) -{ - switch (m_analog_ctrl & 0x03) - { - case 0x00: return (m_accel = ioport("IN3")->read()); /* accelerator */ - case 0x01: return (m_wheel = ioport("IN4")->read()); /* steering */ - case 0x02: return m_accel; /* accelerator (previous?) */ - case 0x03: return m_wheel; /* steering (previous?) */ - } - - return 0xff; -} - - -/****************************************************************************/ - -void chqflag_state::chqflag_map(address_map &map) -{ - map(0x0000, 0x0fff).ram(); - map(0x1000, 0x1fff).m(m_bank1000, FUNC(address_map_bank_device::amap8)); - map(0x2000, 0x2007).rw(m_k051960, FUNC(k051960_device::k051937_r), FUNC(k051960_device::k051937_w)); /* Sprite control registers */ - map(0x2400, 0x27ff).rw(m_k051960, FUNC(k051960_device::k051960_r), FUNC(k051960_device::k051960_w)); /* Sprite RAM */ - map(0x2800, 0x2fff).r(FUNC(chqflag_state::k051316_ramrom_r<1>)).w(m_k051316[1], FUNC(k051316_device::write)); /* 051316 zoom/rotation (chip 2) */ - map(0x3000, 0x3000).w("soundlatch", FUNC(generic_latch_8_device::write)); /* sound code # */ - map(0x3001, 0x3001).w("soundlatch2", FUNC(generic_latch_8_device::write)); /* cause interrupt on audio CPU */ - map(0x3002, 0x3002).w(FUNC(chqflag_state::chqflag_bankswitch_w)); /* bankswitch control */ - map(0x3003, 0x3003).w(FUNC(chqflag_state::chqflag_vreg_w)); /* enable K051316 ROM reading */ - map(0x3100, 0x3100).portr("DSW1"); /* DIPSW #1 */ - map(0x3200, 0x3200).portr("IN1"); /* COINSW, STARTSW, test mode */ - map(0x3201, 0x3201).portr("IN0"); /* DIPSW #3, SW 4 */ - map(0x3203, 0x3203).portr("DSW2"); /* DIPSW #2 */ - map(0x3300, 0x3300).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* watchdog timer */ - map(0x3400, 0x341f).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write)); /* 051733 (protection) */ - map(0x3500, 0x350f).w(m_k051316[0], FUNC(k051316_device::ctrl_w)); /* 051316 control registers (chip 1) */ - map(0x3600, 0x360f).w(m_k051316[1], FUNC(k051316_device::ctrl_w)); /* 051316 control registers (chip 2) */ - map(0x3700, 0x3700).w(FUNC(chqflag_state::select_analog_ctrl_w)); /* select accelerator/wheel */ - map(0x3701, 0x3701).portr("IN2"); /* Brake + Shift + ? */ - map(0x3702, 0x3702).rw(FUNC(chqflag_state::analog_read_r), FUNC(chqflag_state::select_analog_ctrl_w)); /* accelerator/wheel */ - map(0x4000, 0x7fff).bankr("rombank"); /* banked ROM */ - map(0x8000, 0xffff).rom().region("maincpu", 0x48000); /* ROM */ -} - -void chqflag_state::bank1000_map(address_map &map) -{ - map(0x0000, 0x0fff).ram(); - map(0x1000, 0x17ff).r(FUNC(chqflag_state::k051316_ramrom_r<0>)).w(m_k051316[0], FUNC(k051316_device::write)); - map(0x1800, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); -} - - -WRITE8_MEMBER(chqflag_state::k007232_bankswitch_w) -{ - int bank_A, bank_B; - - /* banks # for the 007232 (chip 1) */ - bank_A = ((data >> 4) & 0x03); - bank_B = ((data >> 6) & 0x03); - m_k007232[0]->set_bank(bank_A, bank_B); - - /* banks # for the 007232 (chip 2) */ - bank_A = ((data >> 0) & 0x03); - bank_B = ((data >> 2) & 0x03); - m_k007232[1]->set_bank(bank_A, bank_B); -} - -void chqflag_state::chqflag_sound_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); /* ROM */ - map(0x8000, 0x87ff).ram(); /* RAM */ - map(0x9000, 0x9000).w(FUNC(chqflag_state::k007232_bankswitch_w)); /* 007232 bankswitch */ - map(0xa000, 0xa00d).rw(m_k007232[0], FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 (chip 1) */ - map(0xa01c, 0xa01c).w(FUNC(chqflag_state::k007232_extvolume_w)); /* extra volume, goes to the 007232 w/ A4 */ - /* selecting a different latch for the external port */ - map(0xb000, 0xb00d).rw(m_k007232[1], FUNC(k007232_device::read), FUNC(k007232_device::write)); /* 007232 (chip 2) */ - map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); /* YM2151 */ - map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read)); - map(0xe000, 0xe000).r("soundlatch2", FUNC(generic_latch_8_device::read)); /* engine sound volume */ - map(0xf000, 0xf000).nopw(); /* ??? */ -} - - -static INPUT_PORTS_START( chqflag ) - PORT_START("DSW1") - KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), "Invalid", SW1) - /* Invalid = both coin slots disabled */ - - PORT_START("DSW2") - PORT_DIPUNUSED_DIPLOC( 0x01, IP_ACTIVE_LOW, "SW2:1" ) /* Manual says it's not used */ - PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" ) /* Manual says it's not used */ - PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW2:3" ) /* Manual says it's not used */ - PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" ) /* Manual says it's not used */ - PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) /* Manual says it's not used */ - PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7") - PORT_DIPSETTING( 0x60, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Very_Difficult ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8") - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - - PORT_START("IN0") - PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNKNOWN ) - PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:4" ) /* Manual says it's not used */ - - PORT_START("IN1") - /* COINSW + STARTSW */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) - /* DIPSW #3 */ - PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW3:1" ) /* Manual says it's not used */ - PORT_DIPNAME( 0x40, 0x40, "Title" ) PORT_DIPLOCATION("SW3:2") - PORT_DIPSETTING( 0x40, "Chequered Flag" ) - PORT_DIPSETTING( 0x00, "Checkered Flag" ) - PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:3" ) - - PORT_START("IN2") /* Brake, Shift + ??? */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_TOGGLE - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x0c, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* if this is set, it goes directly to test mode */ - PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* if bit 7 == 0, the game resets */ - - PORT_START("IN3") /* Accelerator */ - PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(50) PORT_KEYDELTA(5) - - PORT_START("IN4") /* Driving wheel */ - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xef) PORT_SENSITIVITY(80) PORT_KEYDELTA(8) -INPUT_PORTS_END - -static INPUT_PORTS_START( chqflagj ) - PORT_INCLUDE( chqflag ) - - PORT_MODIFY("DSW1") - KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), " 1 Coin/1 Credit", SW1) - // Manual says 1-5, 1-6, 1-7 and 1-8 are not used, but they work - - PORT_MODIFY("IN1") - PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW3:2" ) /* Manual says it's not used */ -INPUT_PORTS_END - - - -WRITE8_MEMBER(chqflag_state::volume_callback0) -{ - // volume/pan for one of the channels on this chip - // which channel and which bits are left/right is a guess - m_k007232[0]->set_volume(0, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2); -} - -WRITE8_MEMBER(chqflag_state::k007232_extvolume_w) -{ - // volume/pan for one of the channels on this chip - // which channel and which bits are left/right is a guess - m_k007232[0]->set_volume(1, (data & 0x0f) * 0x11/2, (data >> 4) * 0x11/2); -} - -WRITE8_MEMBER(chqflag_state::volume_callback1) -{ - m_k007232[1]->set_volume(0, (data >> 4) * 0x11, 0); - m_k007232[1]->set_volume(1, 0, (data & 0x0f) * 0x11); -} - -void chqflag_state::machine_start() -{ - m_rombank->configure_entries(0, 0x50000 / 0x4000, memregion("maincpu")->base(), 0x4000); - - save_item(NAME(m_k051316_readroms)); - save_item(NAME(m_last_vreg)); - save_item(NAME(m_analog_ctrl)); - save_item(NAME(m_accel)); - save_item(NAME(m_wheel)); -} - -void chqflag_state::machine_reset() -{ - m_k051316_readroms = 0; - m_last_vreg = 0; - m_analog_ctrl = 0; - m_accel = 0; - m_wheel = 0; - update_background_shadows(0); -} - -inline void chqflag_state::update_background_shadows(uint8_t data) -{ - double brt = (data & 1) ? 0.8 : 1.0; - - for (int i = 512; i < 1024; i++) - m_palette->set_pen_contrast(i, brt); -} - - -WRITE_LINE_MEMBER(chqflag_state::background_brt_w) -{ -// popmessage("%d",state); - - if (state != m_last_vreg) - { - m_last_vreg = state; - update_background_shadows(state); - } -} - -void chqflag_state::chqflag(machine_config &config) -{ - /* basic machine hardware */ - KONAMI(config, m_maincpu, XTAL(24'000'000)/2/4); /* 052001 (verified on pcb) */ - m_maincpu->set_addrmap(AS_PROGRAM, &chqflag_state::chqflag_map); - - Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */ - m_audiocpu->set_addrmap(AS_PROGRAM, &chqflag_state::chqflag_sound_map); - - ADDRESS_MAP_BANK(config, m_bank1000).set_map(&chqflag_state::bank1000_map).set_options(ENDIANNESS_BIG, 8, 13, 0x1000); - - config.set_maximum_quantum(attotime::from_hz(600)); - - WATCHDOG_TIMER(config, "watchdog"); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(XTAL(24'000'000)/3, 528, 96, 400, 256, 16, 240); // measured Vsync 59.17hz Hsync 15.13 / 15.19khz -// 6MHz dotclock is more realistic, however needs drawing updates. replace when ready -// screen.set_raw(XTAL(24'000'000)/4, 396, hbend, hbstart, 256, 16, 240); - screen.set_screen_update(FUNC(chqflag_state::screen_update_chqflag)); - screen.set_palette(m_palette); - - PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 1024); - m_palette->enable_shadows(); - - K051960(config, m_k051960, 0); - m_k051960->set_palette(m_palette); - m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(chqflag_state::sprite_callback)); - m_k051960->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); - m_k051960->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); - m_k051960->vreg_contrast_handler().set(FUNC(chqflag_state::background_brt_w)); - - K051316(config, m_k051316[0], 0); - m_k051316[0]->set_palette(m_palette); - m_k051316[0]->set_offsets(7, 0); - m_k051316[0]->set_zoom_callback(FUNC(chqflag_state::zoom_callback_1)); - - K051316(config, m_k051316[1], 0); - m_k051316[1]->set_palette(m_palette); - m_k051316[1]->set_bpp(8); - m_k051316[1]->set_layermask(0xc0); - m_k051316[1]->set_wrap(1); - m_k051316[1]->set_zoom_callback(FUNC(chqflag_state::zoom_callback_2)); - - K051733(config, "k051733", 0); - - /* sound hardware */ - SPEAKER(config, "lspeaker").front_left(); - SPEAKER(config, "rspeaker").front_right(); - - GENERIC_LATCH_8(config, "soundlatch"); - GENERIC_LATCH_8(config, "soundlatch2").data_pending_callback().set_inputline(m_audiocpu, 0); - - ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(3'579'545))); /* verified on pcb */ - ymsnd.irq_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); - ymsnd.add_route(0, "lspeaker", 1.00); - ymsnd.add_route(1, "rspeaker", 1.00); - - K007232(config, m_k007232[0], XTAL(3'579'545)); /* verified on pcb */ - m_k007232[0]->port_write().set(FUNC(chqflag_state::volume_callback0)); - m_k007232[0]->add_route(0, "lspeaker", 0.20); - m_k007232[0]->add_route(1, "rspeaker", 0.20); - - K007232(config, m_k007232[1], XTAL(3'579'545)); /* verified on pcb */ - m_k007232[1]->port_write().set(FUNC(chqflag_state::volume_callback1)); - m_k007232[1]->add_route(0, "lspeaker", 0.20); - m_k007232[1]->add_route(0, "rspeaker", 0.20); - m_k007232[1]->add_route(1, "lspeaker", 0.20); - m_k007232[1]->add_route(1, "rspeaker", 0.20); -} - -ROM_START( chqflag ) - ROM_REGION( 0x50000, "maincpu", 0 ) /* 052001 code */ - ROM_LOAD( "717e10", 0x00000, 0x40000, CRC(72fc56f6) SHA1(433ea9a33f0230e046c731c70060f6a38db14ac7) ) - ROM_LOAD( "717h02", 0x40000, 0x10000, CRC(f5bd4e78) SHA1(7bab02152d055a6c3a322c88e7ee0b85a39d8ef2) ) - - ROM_REGION( 0x08000, "audiocpu", 0 ) /* Z80 code */ - ROM_LOAD( "717e01", 0x000000, 0x008000, CRC(966b8ba8) SHA1(ab7448cb61fa5922b1d8ae5f0d0f42d734ed4f93) ) - - ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */ - ROM_LOAD32_WORD( "717e04", 0x000000, 0x080000, CRC(1a50a1cc) SHA1(bc16fab84c637ed124e37b115ddc0149560b727d) ) - ROM_LOAD32_WORD( "717e05", 0x000002, 0x080000, CRC(46ccb506) SHA1(3ed1f54744fc5cdc0f48e42f250c366267a8199a) ) - - ROM_REGION( 0x020000, "k051316_1", 0 ) /* zoom/rotate */ - ROM_LOAD( "717e06.n16", 0x000000, 0x020000, CRC(1ec26c7a) SHA1(05b5b522c5ebf5d0a71a7fc39ec9382008ef33c8) ) - - ROM_REGION( 0x100000, "k051316_2", 0 ) /* zoom/rotate */ - ROM_LOAD( "717e07.l20", 0x000000, 0x040000, CRC(b9a565a8) SHA1(a11782f7336e5ad58a4c6ea81f2eeac35d5e7d0a) ) - ROM_LOAD( "717e08.l22", 0x040000, 0x040000, CRC(b68a212e) SHA1(b2bd121a43552c3ade528ac763a0df40c3e648e0) ) - ROM_LOAD( "717e11.n20", 0x080000, 0x040000, CRC(ebb171ec) SHA1(d65d4a6b169ce03e4427b2a397484634f938236b) ) - ROM_LOAD( "717e12.n22", 0x0c0000, 0x040000, CRC(9269335d) SHA1(af298c8cff50d707d6abc806065f8e931f975dc0) ) - - ROM_REGION( 0x080000, "k007232_1", 0 ) /* 007232 data (chip 1) */ - ROM_LOAD( "717e03", 0x000000, 0x080000, CRC(ebe73c22) SHA1(fad3334e5e91bf8d11b74ffdbbfd57567e6f6f8c) ) - - ROM_REGION( 0x080000, "k007232_2", 0 ) /* 007232 data (chip 2) */ - ROM_LOAD( "717e09", 0x000000, 0x080000, CRC(d74e857d) SHA1(00c851c857650d67fc4caccea4461d99be4acb3c) ) -ROM_END - -ROM_START( chqflagj ) - ROM_REGION( 0x50000, "maincpu", 0 ) /* 052001 code */ - ROM_LOAD( "717e10", 0x00000, 0x40000, CRC(72fc56f6) SHA1(433ea9a33f0230e046c731c70060f6a38db14ac7) ) - ROM_LOAD( "717j02.bin", 0x40000, 0x10000, CRC(05355daa) SHA1(130ddbc289c077565e44f33c63a63963e6417e19) ) - - ROM_REGION( 0x08000, "audiocpu", 0 ) /* Z80 code */ - ROM_LOAD( "717e01", 0x000000, 0x008000, CRC(966b8ba8) SHA1(ab7448cb61fa5922b1d8ae5f0d0f42d734ed4f93) ) - - ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */ - ROM_LOAD32_WORD( "717e04", 0x000000, 0x080000, CRC(1a50a1cc) SHA1(bc16fab84c637ed124e37b115ddc0149560b727d) ) - ROM_LOAD32_WORD( "717e05", 0x000002, 0x080000, CRC(46ccb506) SHA1(3ed1f54744fc5cdc0f48e42f250c366267a8199a) ) - - ROM_REGION( 0x020000, "k051316_1", 0 ) /* zoom/rotate */ - ROM_LOAD( "717e06.n16", 0x000000, 0x020000, CRC(1ec26c7a) SHA1(05b5b522c5ebf5d0a71a7fc39ec9382008ef33c8) ) - - ROM_REGION( 0x100000, "k051316_2", 0 ) /* zoom/rotate */ - ROM_LOAD( "717e07.l20", 0x000000, 0x040000, CRC(b9a565a8) SHA1(a11782f7336e5ad58a4c6ea81f2eeac35d5e7d0a) ) - ROM_LOAD( "717e08.l22", 0x040000, 0x040000, CRC(b68a212e) SHA1(b2bd121a43552c3ade528ac763a0df40c3e648e0) ) - ROM_LOAD( "717e11.n20", 0x080000, 0x040000, CRC(ebb171ec) SHA1(d65d4a6b169ce03e4427b2a397484634f938236b) ) - ROM_LOAD( "717e12.n22", 0x0c0000, 0x040000, CRC(9269335d) SHA1(af298c8cff50d707d6abc806065f8e931f975dc0) ) - - ROM_REGION( 0x080000, "k007232_1", 0 ) /* 007232 data (chip 1) */ - ROM_LOAD( "717e03", 0x000000, 0x080000, CRC(ebe73c22) SHA1(fad3334e5e91bf8d11b74ffdbbfd57567e6f6f8c) ) - - ROM_REGION( 0x080000, "k007232_2", 0 ) /* 007232 data (chip 2) */ - ROM_LOAD( "717e09", 0x000000, 0x080000, CRC(d74e857d) SHA1(00c851c857650d67fc4caccea4461d99be4acb3c) ) -ROM_END - - -// YEAR NAME PARENT MACHINE INPUT CLASS INIT MONITOR COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1988, chqflag, 0, chqflag, chqflag, chqflag_state, empty_init, ROT90, "Konami", "Chequered Flag", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag ) -GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, chqflag_state, empty_init, ROT90, "Konami", "Chequered Flag (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag ) |