1 // license:BSD-3-Clause
2 // copyright-holders:Bryan McPhail
3 /***************************************************************************
4
5 The Main Event, (c) 1988 Konami
6 Devastators, (c) 1988 Konami
7
8 Emulation by Bryan McPhail, mish@tendril.co.uk
9
10 Notes:
11 - Schematics show a palette/work RAM bank selector, but this doesn't seem
12 to be used?
13
14 - Devastators: has player-trench collision detection issues, player isn't
15 supposed to go through them.
16
17 - Devastators: shadows don't work. Bit 7 of the sprite attribute is always 0,
18 could there be a global enable flag in the 051960?
19 This is particularly evident in level 2 where plane shadows cover other sprites.
20 The priority/shadow encoder PROM is quite complex, however bits 5-7 of the sprite
21 attribute don't seem to be used, at least not in the first two levels, so the
22 PROM just maps to the fixed priority order currently implemented.
23
24 - Devastators: sprite zooming for the planes in level 2 is particularly bad.
25
26 - Devastators: title screen white backdrop is always supposed to flicker,
27 it currently do that only from second/fourth attract cycles (supposed to always
28 flicker from PCB video);
29
30 Both games run on Konami's PWB351024A PCB
31 The Main Event uses a uPD7759 + 640KHz resonator plus sample ROM, for Devastators this area is unpopulated
32 Devastators uses a YM2151 + YM3012 and the 051733, for The Main Event these chips are unpopulated
33
34 ***************************************************************************/
35
36 #include "emu.h"
37 #include "includes/mainevt.h"
38 #include "includes/konamipt.h"
39
40 #include "cpu/z80/z80.h"
41 #include "cpu/m6809/hd6309.h"
42 #include "cpu/m6809/m6809.h"
43 #include "machine/gen_latch.h"
44 #include "sound/ym2151.h"
45 #include "emupal.h"
46 #include "screen.h"
47 #include "speaker.h"
48
49
dv_nmienable_w(uint8_t data)50 void mainevt_state::dv_nmienable_w(uint8_t data)
51 {
52 m_nmi_enable = data;
53 }
54
WRITE_LINE_MEMBER(mainevt_state::dv_vblank_w)55 WRITE_LINE_MEMBER(mainevt_state::dv_vblank_w)
56 {
57 if (state && m_nmi_enable)
58 m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
59 }
60
61
mainevt_bankswitch_w(uint8_t data)62 void mainevt_state::mainevt_bankswitch_w(uint8_t data)
63 {
64 /* bit 0-1 ROM bank select */
65 m_rombank->set_entry(data & 0x03);
66
67 /* TODO: bit 5 = select work RAM or palette? */
68 //palette_selected = data & 0x20;
69
70 /* bit 6 = enable char ROM reading through the video RAM */
71 m_k052109->set_rmrd_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
72
73 /* bit 7 = NINITSET (unknown) */
74
75 /* other bits unused */
76 }
77
mainevt_coin_w(uint8_t data)78 void mainevt_state::mainevt_coin_w(uint8_t data)
79 {
80 machine().bookkeeping().coin_counter_w(0, data & 0x10);
81 machine().bookkeeping().coin_counter_w(1, data & 0x20);
82 m_leds[0] = BIT(data, 0);
83 m_leds[1] = BIT(data, 1);
84 m_leds[2] = BIT(data, 2);
85 m_leds[3] = BIT(data, 3);
86 }
87
mainevt_sh_irqtrigger_w(uint8_t data)88 void mainevt_state::mainevt_sh_irqtrigger_w(uint8_t data)
89 {
90 m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80
91 }
92
mainevt_sh_busy_r()93 uint8_t mainevt_state::mainevt_sh_busy_r()
94 {
95 return m_upd7759->busy_r();
96 }
97
mainevt_sh_irqcontrol_w(uint8_t data)98 void mainevt_state::mainevt_sh_irqcontrol_w(uint8_t data)
99 {
100 m_upd7759->reset_w(data & 2);
101 m_upd7759->start_w(data & 1);
102
103 m_sound_irq_mask = data & 4;
104 }
105
devstor_sh_irqcontrol_w(uint8_t data)106 void mainevt_state::devstor_sh_irqcontrol_w(uint8_t data)
107 {
108 m_sound_irq_mask = data & 4;
109 }
110
mainevt_sh_bankswitch_w(uint8_t data)111 void mainevt_state::mainevt_sh_bankswitch_w(uint8_t data)
112 {
113 int bank_A, bank_B;
114
115 //logerror("CPU #1 PC: %04x bank switch = %02x\n", m_audiocpu->pc(),data);
116
117 /* bits 0-3 select the 007232 banks */
118 bank_A = (data & 0x3);
119 bank_B = ((data >> 2) & 0x3);
120 m_k007232->set_bank(bank_A, bank_B);
121
122 /* bits 4-5 select the UPD7759 bank */
123 m_upd7759->set_rom_bank((data >> 4) & 0x03);
124 }
125
dv_sh_bankswitch_w(uint8_t data)126 void mainevt_state::dv_sh_bankswitch_w(uint8_t data)
127 {
128 int bank_A, bank_B;
129
130 //logerror("CPU #1 PC: %04x bank switch = %02x\n",m_audiocpu->pc(),data);
131
132 /* bits 0-3 select the 007232 banks */
133 bank_A = (data & 0x3);
134 bank_B = ((data >> 2) & 0x3);
135 m_k007232->set_bank(bank_A, bank_B);
136 }
137
k052109_051960_r(offs_t offset)138 uint8_t mainevt_state::k052109_051960_r(offs_t offset)
139 {
140 if (m_k052109->get_rmrd_line() == CLEAR_LINE)
141 {
142 if (offset >= 0x3800 && offset < 0x3808)
143 return m_k051960->k051937_r(offset - 0x3800);
144 else if (offset < 0x3c00)
145 return m_k052109->read(offset);
146 else
147 return m_k051960->k051960_r(offset - 0x3c00);
148 }
149 else
150 return m_k052109->read(offset);
151 }
152
k052109_051960_w(offs_t offset,uint8_t data)153 void mainevt_state::k052109_051960_w(offs_t offset, uint8_t data)
154 {
155 if (offset >= 0x3800 && offset < 0x3808)
156 m_k051960->k051937_w(offset - 0x3800, data);
157 else if (offset < 0x3c00)
158 m_k052109->write(offset, data);
159 else
160 m_k051960->k051960_w(offset - 0x3c00, data);
161 }
162
163
mainevt_map(address_map & map)164 void mainevt_state::mainevt_map(address_map &map)
165 {
166 map(0x0000, 0x3fff).rw(FUNC(mainevt_state::k052109_051960_r), FUNC(mainevt_state::k052109_051960_w));
167
168 map(0x1f80, 0x1f80).w(FUNC(mainevt_state::mainevt_bankswitch_w));
169 map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); /* probably */
170 map(0x1f88, 0x1f88).w(FUNC(mainevt_state::mainevt_sh_irqtrigger_w)); /* probably */
171 map(0x1f8c, 0x1f8d).nopw(); /* ??? */
172 map(0x1f90, 0x1f90).w(FUNC(mainevt_state::mainevt_coin_w)); /* coin counters + lamps */
173
174 map(0x1f94, 0x1f94).portr("SYSTEM");
175 map(0x1f95, 0x1f95).portr("P1");
176 map(0x1f96, 0x1f96).portr("P2");
177 map(0x1f97, 0x1f97).portr("DSW1");
178 map(0x1f98, 0x1f98).portr("DSW3");
179 map(0x1f99, 0x1f99).portr("P3");
180 map(0x1f9a, 0x1f9a).portr("P4");
181 map(0x1f9b, 0x1f9b).portr("DSW2");
182
183 map(0x4000, 0x5dff).ram();
184 map(0x5e00, 0x5fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
185 map(0x6000, 0x7fff).bankr("rombank");
186 map(0x8000, 0xffff).rom();
187 }
188
189
devstors_map(address_map & map)190 void mainevt_state::devstors_map(address_map &map)
191 {
192 map(0x0000, 0x3fff).rw(FUNC(mainevt_state::k052109_051960_r), FUNC(mainevt_state::k052109_051960_w));
193
194 map(0x1f80, 0x1f80).w(FUNC(mainevt_state::mainevt_bankswitch_w));
195 map(0x1f84, 0x1f84).w("soundlatch", FUNC(generic_latch_8_device::write)); /* probably */
196 map(0x1f88, 0x1f88).w(FUNC(mainevt_state::mainevt_sh_irqtrigger_w)); /* probably */
197 map(0x1f90, 0x1f90).w(FUNC(mainevt_state::mainevt_coin_w)); /* coin counters + lamps */
198
199 map(0x1f94, 0x1f94).portr("SYSTEM");
200 map(0x1f95, 0x1f95).portr("P1");
201 map(0x1f96, 0x1f96).portr("P2");
202 map(0x1f97, 0x1f97).portr("DSW1");
203 map(0x1f98, 0x1f98).portr("DSW3");
204 map(0x1f9b, 0x1f9b).portr("DSW2");
205 map(0x1fa0, 0x1fbf).rw("k051733", FUNC(k051733_device::read), FUNC(k051733_device::write));
206 map(0x1fb2, 0x1fb2).w(FUNC(mainevt_state::dv_nmienable_w));
207
208 map(0x4000, 0x5dff).ram();
209 map(0x5e00, 0x5fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
210 map(0x6000, 0x7fff).bankr("rombank");
211 map(0x8000, 0xffff).rom();
212 }
213
214
mainevt_sound_map(address_map & map)215 void mainevt_state::mainevt_sound_map(address_map &map)
216 {
217 map(0x0000, 0x7fff).rom();
218 map(0x8000, 0x83ff).ram();
219 map(0x9000, 0x9000).w(m_upd7759, FUNC(upd7759_device::port_w));
220 map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
221 map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
222 map(0xd000, 0xd000).r(FUNC(mainevt_state::mainevt_sh_busy_r));
223 map(0xe000, 0xe000).w(FUNC(mainevt_state::mainevt_sh_irqcontrol_w));
224 map(0xf000, 0xf000).w(FUNC(mainevt_state::mainevt_sh_bankswitch_w));
225 }
226
devstors_sound_map(address_map & map)227 void mainevt_state::devstors_sound_map(address_map &map)
228 {
229 map(0x0000, 0x7fff).rom();
230 map(0x8000, 0x83ff).ram();
231 map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
232 map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
233 map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
234 map(0xe000, 0xe000).w(FUNC(mainevt_state::devstor_sh_irqcontrol_w));
235 map(0xf000, 0xf000).w(FUNC(mainevt_state::dv_sh_bankswitch_w));
236 }
237
238
239 /*****************************************************************************/
240
241 static INPUT_PORTS_START( mainevt )
242 PORT_START("SYSTEM")
243 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
244 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
245 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
246 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
247 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
248 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
249 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 )
250 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 )
251
252 PORT_START("P1")
253 KONAMI8_B12_UNK(1)
254
255 PORT_START("P2")
256 KONAMI8_B12_UNK(2)
257
258 PORT_START("P3")
259 KONAMI8_B12_UNK(3)
260
261 PORT_START("P4")
262 KONAMI8_B12_UNK(4)
263
264 PORT_START("DSW1")
DEF_STR(Coinage)265 PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
266 PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) )
267 PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) )
268 PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
269 PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) )
270 PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) )
271 PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
272 PORT_DIPSETTING( 0x00, DEF_STR( 4C_5C ) )
273 PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) )
274 PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) )
275 PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
276 PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) )
277 PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
278 PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
279 PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
280 PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
281 PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) )
282 PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW1:5" ) /* Listed as "Unused" */
283 PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW1:6" ) /* Listed as "Unused" */
284 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW1:7" ) /* Listed as "Unused" */
285 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW1:8" ) /* Listed as "Unused" */
286
287 PORT_START("DSW2")
288 PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW2:1" ) /* Listed as "Unused" */
289 PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW2:2" ) /* Listed as "Unused" */
290 PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Listed as "Unused" */
291 PORT_DIPNAME( 0x18, 0x10, "Bonus Energy" ) PORT_DIPLOCATION("SW2:4,5") // Typo on US manual "SW2:1,2"
292 PORT_DIPSETTING( 0x00, "60" )
293 PORT_DIPSETTING( 0x08, "70" )
294 PORT_DIPSETTING( 0x10, "80" ) // factory default
295 PORT_DIPSETTING( 0x18, "90" )
296 PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7")
297 PORT_DIPSETTING( 0x60, DEF_STR( Easy ) )
298 PORT_DIPSETTING( 0x40, DEF_STR( Normal ) ) // factory default
299 PORT_DIPSETTING( 0x20, DEF_STR( Hard ) )
300 PORT_DIPSETTING( 0x00, DEF_STR( Very_Hard ) )
301 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8")
302 PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
303 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
304
305 PORT_START("DSW3")
306 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW3:1")
307 PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
308 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
309 PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW3:2" ) /* Listed as "Unused" */
310 PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW3:3" )
311 PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW3:4" ) /* Listed as "Unused" */
312 PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
313 INPUT_PORTS_END
314
315 static INPUT_PORTS_START( mainev2p )
316 PORT_INCLUDE( mainevt )
317
318 PORT_MODIFY("SYSTEM")
319 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* no keys for P3 & P4 */
320 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
321 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
322 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
323
324 PORT_MODIFY("P1")
325 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
326 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
327
328 PORT_MODIFY("P2")
329 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
330 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
331
332 PORT_MODIFY("P3")
333 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
334
335 PORT_MODIFY("P4")
336 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
337
338 PORT_MODIFY("DSW1")
339 KONAMI_COINAGE_ALT
340 INPUT_PORTS_END
341
342 static INPUT_PORTS_START( devstors )
343 PORT_INCLUDE( mainev2p )
344
345 PORT_MODIFY("SYSTEM")
346 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* no service2 */
347
348 PORT_MODIFY("P1")
349 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* no 3rd button */
350
351 PORT_MODIFY("P2")
352 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* no 3rd button */
353
354 PORT_MODIFY("P3")
355 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
356
357 PORT_MODIFY("P4")
358 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
359
360 PORT_MODIFY("DSW1") /* like mainevt, but different 0x00 settings */
361 KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), "Invalid", SW1)
362 /* "Invalid" = both coin slots disabled */
363
364 PORT_MODIFY("DSW2")
365 PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
366 PORT_DIPSETTING( 0x03, "2" )
367 PORT_DIPSETTING( 0x02, "3" ) // factory default
368 PORT_DIPSETTING( 0x01, "5" )
369 PORT_DIPSETTING( 0x00, "7" )
370 PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Listed as "Unused" */
371 PORT_DIPNAME( 0x18, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,5")
372 PORT_DIPSETTING( 0x18, "150 and every 200" )
373 PORT_DIPSETTING( 0x10, "150 and every 250" ) // factory default
374 PORT_DIPSETTING( 0x08, "150 Only" )
375 PORT_DIPSETTING( 0x00, "200 Only" )
376 INPUT_PORTS_END
377
378 /* Same as 'devstors', but additional "Cocktail" Dip Switch (even if I don't see the use) */
379 static INPUT_PORTS_START( devstors_ct )
380 PORT_INCLUDE( devstors )
381
382 PORT_MODIFY("DSW2")
383 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW2:3")
384 PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
385 PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) )
386 INPUT_PORTS_END
387
388 /*****************************************************************************/
389
390 void mainevt_state::volume_callback(uint8_t data)
391 {
392 m_k007232->set_volume(0, (data >> 4) * 0x11, 0);
393 m_k007232->set_volume(1, 0, (data & 0x0f) * 0x11);
394 }
395
machine_start()396 void mainevt_state::machine_start()
397 {
398 m_leds.resolve();
399 m_rombank->configure_entries(0, 4, memregion("maincpu")->base(), 0x2000);
400
401 save_item(NAME(m_nmi_enable));
402 }
403
machine_reset()404 void mainevt_state::machine_reset()
405 {
406 m_nmi_enable = 0;
407 }
408
INTERRUPT_GEN_MEMBER(mainevt_state::mainevt_sound_timer_irq)409 INTERRUPT_GEN_MEMBER(mainevt_state::mainevt_sound_timer_irq)
410 {
411 if(m_sound_irq_mask)
412 m_audiocpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero);
413 }
414
INTERRUPT_GEN_MEMBER(mainevt_state::devstors_sound_timer_irq)415 INTERRUPT_GEN_MEMBER(mainevt_state::devstors_sound_timer_irq)
416 {
417 if(m_sound_irq_mask)
418 m_audiocpu->set_input_line(0, HOLD_LINE);
419 }
420
mainevt(machine_config & config)421 void mainevt_state::mainevt(machine_config &config)
422 {
423 /* basic machine hardware */
424 HD6309E(config, m_maincpu, 24_MHz_XTAL / 8); // E & Q generated by 052109
425 m_maincpu->set_addrmap(AS_PROGRAM, &mainevt_state::mainevt_map);
426
427 Z80(config, m_audiocpu, 3.579545_MHz_XTAL); /* 3.579545 MHz */
428 m_audiocpu->set_addrmap(AS_PROGRAM, &mainevt_state::mainevt_sound_map);
429 m_audiocpu->set_periodic_int(FUNC(mainevt_state::mainevt_sound_timer_irq), attotime::from_hz(8*60)); /* ??? */
430
431 /* video hardware */
432 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
433 // screen.set_refresh_hz(60);
434 // screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
435 // screen.set_size(64*8, 32*8);
436 // screen.set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1);
437 screen.set_raw(XTAL(24'000'000)/3, 528, 14*8, (64-14)*8, 256, 16, 240); // same hardware as Devastators so assume 59.17
438 screen.set_screen_update(FUNC(mainevt_state::screen_update_mainevt));
439 screen.set_palette("palette");
440
441 PALETTE(config, "palette").set_format(palette_device::xBGR_555, 256).enable_shadows();
442
443 K052109(config, m_k052109, 24_MHz_XTAL);
444 m_k052109->set_palette("palette");
445 m_k052109->set_screen("screen");
446 m_k052109->set_tile_callback(FUNC(mainevt_state::mainevt_tile_callback));
447 m_k052109->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
448
449 K051960(config, m_k051960, 24_MHz_XTAL);
450 m_k051960->set_palette("palette");
451 m_k051960->set_screen("screen");
452 m_k051960->set_sprite_callback(FUNC(mainevt_state::mainevt_sprite_callback));
453
454 /* sound hardware */
455 SPEAKER(config, "mono").front_center();
456
457 GENERIC_LATCH_8(config, "soundlatch");
458
459 K007232(config, m_k007232, 3.579545_MHz_XTAL);
460 m_k007232->port_write().set(FUNC(mainevt_state::volume_callback));
461 m_k007232->add_route(0, "mono", 0.20);
462 m_k007232->add_route(1, "mono", 0.20);
463
464 UPD7759(config, m_upd7759);
465 m_upd7759->add_route(ALL_OUTPUTS, "mono", 0.50);
466 }
467
468
devstors(machine_config & config)469 void mainevt_state::devstors(machine_config &config)
470 {
471 /* basic machine hardware */
472 HD6309E(config, m_maincpu, 24_MHz_XTAL / 8); // E & Q generated by 052109
473 m_maincpu->set_addrmap(AS_PROGRAM, &mainevt_state::devstors_map);
474
475 Z80(config, m_audiocpu, 3.579545_MHz_XTAL);
476 m_audiocpu->set_addrmap(AS_PROGRAM, &mainevt_state::devstors_sound_map);
477 m_audiocpu->set_periodic_int(FUNC(mainevt_state::devstors_sound_timer_irq), attotime::from_hz(4*60)); /* ??? */
478
479 /* video hardware */
480 screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
481 // screen.set_refresh_hz(60);
482 // screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
483 // screen.set_size(64*8, 32*8);
484 // screen.set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1);
485 screen.set_raw(XTAL(24'000'000)/3, 528, 13*8, (64-13)*8, 256, 16, 240); // measured 59.17
486 screen.set_screen_update(FUNC(mainevt_state::screen_update_dv));
487 screen.set_palette("palette");
488 screen.screen_vblank().set(FUNC(mainevt_state::dv_vblank_w));
489
490 PALETTE(config, "palette").set_format(palette_device::xBGR_555, 256).enable_shadows();
491
492 K052109(config, m_k052109, 24_MHz_XTAL);
493 m_k052109->set_palette("palette");
494 m_k052109->set_screen("screen");
495 m_k052109->set_tile_callback(FUNC(mainevt_state::dv_tile_callback));
496 m_k052109->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE);
497
498 K051960(config, m_k051960, 24_MHz_XTAL);
499 m_k051960->set_palette("palette");
500 m_k051960->set_screen("screen");
501 m_k051960->set_sprite_callback(FUNC(mainevt_state::dv_sprite_callback));
502
503 K051733(config, "k051733", 0);
504
505 /* sound hardware */
506 SPEAKER(config, "mono").front_center();
507
508 GENERIC_LATCH_8(config, "soundlatch");
509
510 YM2151(config, "ymsnd", 3.579545_MHz_XTAL).add_route(0, "mono", 0.30).add_route(1, "mono", 0.30);
511
512 K007232(config, m_k007232, 3.579545_MHz_XTAL);
513 m_k007232->port_write().set(FUNC(mainevt_state::volume_callback));
514 m_k007232->add_route(0, "mono", 0.20);
515 m_k007232->add_route(1, "mono", 0.20);
516 }
517
518
519
520 /***************************************************************************
521
522 Game driver(s)
523
524 ***************************************************************************/
525
526
527 ROM_START( mainevt ) /* 4 players - English title screen - No "Warning" message in the ROM */
528 ROM_REGION( 0x10000, "maincpu", 0 )
529 ROM_LOAD( "799y02.k11", 0x00000, 0x10000, CRC(e2e7dbd5) SHA1(80314cd42a9f47f7bb82a2160fb5ef2ddc6dff30) )
530
531 ROM_REGION( 0x8000, "audiocpu", 0 )
532 ROM_LOAD( "799c01.f7", 0x00000, 0x08000, CRC(447c4c5c) SHA1(86e42132793c59cc6feece143516f7ecd4ed14e8) )
533
534 ROM_REGION( 0x20000, "k052109", 0 ) /* tiles */
535 ROM_LOAD32_BYTE( "799c06.f22", 0x00000, 0x08000, CRC(f839cb58) SHA1(b36202ca2b68b6249c3f972ad09501e28a0162f7) )
536 ROM_LOAD32_BYTE( "799c07.h22", 0x00001, 0x08000, CRC(176df538) SHA1(379e1de81afb85b1559de170cd2ab9f4af2b137e) )
537 ROM_LOAD32_BYTE( "799c08.j22", 0x00002, 0x08000, CRC(d01e0078) SHA1(7ac242eb24271ac2783ec4d9e97ae051f1f3363a) )
538 ROM_LOAD32_BYTE( "799c09.k22", 0x00003, 0x08000, CRC(9baec75e) SHA1(a8f6102c8fd46f18678f336bc44be31458ca9256) )
539
540 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
541 ROM_LOAD32_WORD( "799b04.h4", 0x00000, 0x80000, CRC(323e0c2b) SHA1(c108d656b6ceff13c910739e4ca760acbb640de3) )
542 ROM_LOAD32_WORD( "799b05.k4", 0x00002, 0x80000, CRC(571c5831) SHA1(2a18f0bcf6946ada6e0bde7edbd11afd4db1c170) )
543
544 ROM_REGION( 0x0100, "proms", 0 )
545 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(61f6c8d1) SHA1(c70f1f8e434aaaffb89e30e2230a08374ef324ad) ) /* priority encoder (not used) */
546
547 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
548 ROM_LOAD( "799b03.d4", 0x00000, 0x80000, CRC(f1cfd342) SHA1(079afc5c631de7f5b652d0ce6fd44b3aacd14a1b) )
549
550 ROM_REGION( 0x80000, "upd", 0 ) /* 512k for the UPD7759C samples */
551 ROM_LOAD( "799b06.c22", 0x00000, 0x80000, CRC(2c8c47d7) SHA1(18a899767177ddfd870df9ed156d8bbc04b58a19) )
552 ROM_END
553
554 ROM_START( mainevto ) /* 4 players - English title screen - No "Warning" message in the ROM */
555 ROM_REGION( 0x10000, "maincpu", 0 )
556 ROM_LOAD( "799f02.k11", 0x00000, 0x10000, CRC(c143596b) SHA1(5da7efaf0f7c7a493cc242eae115f278bc9c134b) )
557
558 ROM_REGION( 0x8000, "audiocpu", 0 )
559 ROM_LOAD( "799c01.f7", 0x00000, 0x08000, CRC(447c4c5c) SHA1(86e42132793c59cc6feece143516f7ecd4ed14e8) )
560
561 ROM_REGION( 0x20000, "k052109", 0 ) /* tiles */
562 ROM_LOAD32_BYTE( "799c06.f22", 0x00000, 0x08000, CRC(f839cb58) SHA1(b36202ca2b68b6249c3f972ad09501e28a0162f7) )
563 ROM_LOAD32_BYTE( "799c07.h22", 0x00001, 0x08000, CRC(176df538) SHA1(379e1de81afb85b1559de170cd2ab9f4af2b137e) )
564 ROM_LOAD32_BYTE( "799c08.j22", 0x00002, 0x08000, CRC(d01e0078) SHA1(7ac242eb24271ac2783ec4d9e97ae051f1f3363a) )
565 ROM_LOAD32_BYTE( "799c09.k22", 0x00003, 0x08000, CRC(9baec75e) SHA1(a8f6102c8fd46f18678f336bc44be31458ca9256) )
566
567 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
568 ROM_LOAD32_WORD( "799b04.h4", 0x00000, 0x80000, CRC(323e0c2b) SHA1(c108d656b6ceff13c910739e4ca760acbb640de3) )
569 ROM_LOAD32_WORD( "799b05.k4", 0x00002, 0x80000, CRC(571c5831) SHA1(2a18f0bcf6946ada6e0bde7edbd11afd4db1c170) )
570
571 ROM_REGION( 0x0100, "proms", 0 )
572 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(61f6c8d1) SHA1(c70f1f8e434aaaffb89e30e2230a08374ef324ad) ) /* priority encoder (not used) */
573
574 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
575 ROM_LOAD( "799b03.d4", 0x00000, 0x80000, CRC(f1cfd342) SHA1(079afc5c631de7f5b652d0ce6fd44b3aacd14a1b) )
576
577 ROM_REGION( 0x80000, "upd", 0 ) /* 512k for the UPD7759C samples */
578 ROM_LOAD( "799b06.c22", 0x00000, 0x80000, CRC(2c8c47d7) SHA1(18a899767177ddfd870df9ed156d8bbc04b58a19) )
579 ROM_END
580
581 ROM_START( mainevt2p ) /* 2 players - English title screen - "Warning" message in the ROM (not displayed) */
582 ROM_REGION( 0x10000, "maincpu", 0 )
583 ROM_LOAD( "799x02.k11", 0x00000, 0x10000, CRC(42cfc650) SHA1(2d1918ebc0d93a2356ad995a6854dbde7c3b8daf) )
584
585 ROM_REGION( 0x8000, "audiocpu", 0 )
586 ROM_LOAD( "799c01.f7", 0x00000, 0x08000, CRC(447c4c5c) SHA1(86e42132793c59cc6feece143516f7ecd4ed14e8) )
587
588 ROM_REGION( 0x20000, "k052109", 0 ) /* tiles */
589 ROM_LOAD32_BYTE( "799c06.f22", 0x00000, 0x08000, CRC(f839cb58) SHA1(b36202ca2b68b6249c3f972ad09501e28a0162f7) )
590 ROM_LOAD32_BYTE( "799c07.h22", 0x00001, 0x08000, CRC(176df538) SHA1(379e1de81afb85b1559de170cd2ab9f4af2b137e) )
591 ROM_LOAD32_BYTE( "799c08.j22", 0x00002, 0x08000, CRC(d01e0078) SHA1(7ac242eb24271ac2783ec4d9e97ae051f1f3363a) )
592 ROM_LOAD32_BYTE( "799c09.k22", 0x00003, 0x08000, CRC(9baec75e) SHA1(a8f6102c8fd46f18678f336bc44be31458ca9256) )
593
594 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
595 ROM_LOAD32_WORD( "799b04.h4", 0x00000, 0x80000, CRC(323e0c2b) SHA1(c108d656b6ceff13c910739e4ca760acbb640de3) )
596 ROM_LOAD32_WORD( "799b05.k4", 0x00002, 0x80000, CRC(571c5831) SHA1(2a18f0bcf6946ada6e0bde7edbd11afd4db1c170) )
597
598 ROM_REGION( 0x0100, "proms", 0 )
599 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(61f6c8d1) SHA1(c70f1f8e434aaaffb89e30e2230a08374ef324ad) ) /* priority encoder (not used) */
600
601 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
602 ROM_LOAD( "799b03.d4", 0x00000, 0x80000, CRC(f1cfd342) SHA1(079afc5c631de7f5b652d0ce6fd44b3aacd14a1b) )
603
604 ROM_REGION( 0x80000, "upd", 0 ) /* 512k for the UPD7759C samples */
605 ROM_LOAD( "799b06.c22", 0x00000, 0x80000, CRC(2c8c47d7) SHA1(18a899767177ddfd870df9ed156d8bbc04b58a19) )
606 ROM_END
607
608 ROM_START( ringohja ) /* 2 players - Japan title screen - "Warning" message in the ROM (displayed) */
609 ROM_REGION( 0x10000, "maincpu", 0 )
610 ROM_LOAD( "799n02.k11", 0x00000, 0x10000, CRC(f9305dd0) SHA1(7135053be9d46ac9c09ab63eca1eb71825a71a13) )
611
612 ROM_REGION( 0x8000, "audiocpu", 0 )
613 ROM_LOAD( "799c01.f7", 0x00000, 0x08000, CRC(447c4c5c) SHA1(86e42132793c59cc6feece143516f7ecd4ed14e8) )
614
615 ROM_REGION( 0x20000, "k052109", 0 ) /* tiles */
616 ROM_LOAD32_BYTE( "799c06.f22", 0x00000, 0x08000, CRC(f839cb58) SHA1(b36202ca2b68b6249c3f972ad09501e28a0162f7) )
617 ROM_LOAD32_BYTE( "799c07.h22", 0x00001, 0x08000, CRC(176df538) SHA1(379e1de81afb85b1559de170cd2ab9f4af2b137e) )
618 ROM_LOAD32_BYTE( "799c08.j22", 0x00002, 0x08000, CRC(d01e0078) SHA1(7ac242eb24271ac2783ec4d9e97ae051f1f3363a) )
619 ROM_LOAD32_BYTE( "799c09.k22", 0x00003, 0x08000, CRC(9baec75e) SHA1(a8f6102c8fd46f18678f336bc44be31458ca9256) )
620
621 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
622 ROM_LOAD32_WORD( "799b04.h4", 0x00000, 0x80000, CRC(323e0c2b) SHA1(c108d656b6ceff13c910739e4ca760acbb640de3) )
623 ROM_LOAD32_WORD( "799b05.k4", 0x00002, 0x80000, CRC(571c5831) SHA1(2a18f0bcf6946ada6e0bde7edbd11afd4db1c170) )
624
625 ROM_REGION( 0x0100, "proms", 0 )
626 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(61f6c8d1) SHA1(c70f1f8e434aaaffb89e30e2230a08374ef324ad) ) /* priority encoder (not used) */
627
628 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
629 ROM_LOAD( "799b03.d4", 0x00000, 0x80000, CRC(f1cfd342) SHA1(079afc5c631de7f5b652d0ce6fd44b3aacd14a1b) )
630
631 ROM_REGION( 0x80000, "upd", 0 ) /* 512k for the UPD7759C samples */
632 ROM_LOAD( "799b06.c22", 0x00000, 0x80000, CRC(2c8c47d7) SHA1(18a899767177ddfd870df9ed156d8bbc04b58a19) )
633 ROM_END
634
635
636 ROM_START( devstors )
637 ROM_REGION( 0x10000, "maincpu", 0 )
638 ROM_LOAD( "890z02.k11", 0x00000, 0x10000, CRC(ebeb306f) SHA1(838fcfe95dfedd61f21f34301d48e337db765ab2) )
639
640 ROM_REGION( 0x8000, "audiocpu", 0 )
641 ROM_LOAD( "890k01.f7", 0x00000, 0x08000, CRC(d44b3eb0) SHA1(26109fc56668b65f1a5aa6d8ec2c08fd70ca7c51) )
642
643 ROM_REGION( 0x40000, "k052109", 0 ) /* tiles */
644 ROM_LOAD32_BYTE( "890f06.f22", 0x00000, 0x10000, CRC(26592155) SHA1(aa1f8662f091ca1eb495223e41a35edd861ae9e9) )
645 ROM_LOAD32_BYTE( "890f07.h22", 0x00001, 0x10000, CRC(6c74fa2e) SHA1(419a2ad31d269fafe4c474bf512e935d5e018846) )
646 ROM_LOAD32_BYTE( "890f08.j22", 0x00002, 0x10000, CRC(29e12e80) SHA1(6d09e190055218e2dfd07838f1446dfb5f801206) )
647 ROM_LOAD32_BYTE( "890f09.k22", 0x00003, 0x10000, CRC(67ca40d5) SHA1(ff719f55d2534ff076fbdd2bcb7d12c683bfe958) )
648
649 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
650 ROM_LOAD32_WORD( "890f04.h4", 0x00000, 0x80000, CRC(f16cd1fa) SHA1(60ea19c19918a71aded3c9ea398c956908e217f1) )
651 ROM_LOAD32_WORD( "890f05.k4", 0x00002, 0x80000, CRC(da37db05) SHA1(0b48d1021cf0dec78dae0ef183b4c61fea783533) )
652
653 ROM_REGION( 0x0100, "proms", 0 )
654 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(d3620106) SHA1(528a0a34754902d0f262a9619c6105da6de99354) ) /* priority encoder (not used) */
655
656 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
657 ROM_LOAD( "890f03.d4", 0x00000, 0x80000, CRC(19065031) SHA1(12c47fbe28f85fa2f901fe52601188a5e9633f22) )
658 ROM_END
659
660 ROM_START( devstorsx )
661 ROM_REGION( 0x10000, "maincpu", 0 )
662 ROM_LOAD( "890x02.k11", 0x00000, 0x10000, CRC(e58ebb35) SHA1(4253b6a7128534cc0866bc910a271d91ac8b40fd) )
663
664 ROM_REGION( 0x8000, "audiocpu", 0 )
665 ROM_LOAD( "890k01.f7", 0x00000, 0x08000, CRC(d44b3eb0) SHA1(26109fc56668b65f1a5aa6d8ec2c08fd70ca7c51) )
666
667 ROM_REGION( 0x40000, "k052109", 0 ) /* tiles */
668 ROM_LOAD32_BYTE( "890f06.f22", 0x00000, 0x10000, CRC(26592155) SHA1(aa1f8662f091ca1eb495223e41a35edd861ae9e9) )
669 ROM_LOAD32_BYTE( "890f07.h22", 0x00001, 0x10000, CRC(6c74fa2e) SHA1(419a2ad31d269fafe4c474bf512e935d5e018846) )
670 ROM_LOAD32_BYTE( "890f08.j22", 0x00002, 0x10000, CRC(29e12e80) SHA1(6d09e190055218e2dfd07838f1446dfb5f801206) )
671 ROM_LOAD32_BYTE( "890f09.k22", 0x00003, 0x10000, CRC(67ca40d5) SHA1(ff719f55d2534ff076fbdd2bcb7d12c683bfe958) )
672
673 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
674 ROM_LOAD32_WORD( "890f04.h4", 0x00000, 0x80000, CRC(f16cd1fa) SHA1(60ea19c19918a71aded3c9ea398c956908e217f1) )
675 ROM_LOAD32_WORD( "890f05.k4", 0x00002, 0x80000, CRC(da37db05) SHA1(0b48d1021cf0dec78dae0ef183b4c61fea783533) )
676
677 ROM_REGION( 0x0100, "proms", 0 )
678 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(d3620106) SHA1(528a0a34754902d0f262a9619c6105da6de99354) ) /* priority encoder (not used) */
679
680 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
681 ROM_LOAD( "890f03.d4", 0x00000, 0x80000, CRC(19065031) SHA1(12c47fbe28f85fa2f901fe52601188a5e9633f22) )
682 ROM_END
683
684 ROM_START( devstorsv )
685 ROM_REGION( 0x10000, "maincpu", 0 )
686 ROM_LOAD( "890v02.k11", 0x00000, 0x10000, CRC(52f4ccdd) SHA1(074e526ed170a5f2083c8c0808734291a2ea7403) )
687
688 ROM_REGION( 0x8000, "audiocpu", 0 )
689 ROM_LOAD( "890k01.f7", 0x00000, 0x08000, CRC(d44b3eb0) SHA1(26109fc56668b65f1a5aa6d8ec2c08fd70ca7c51) )
690
691 ROM_REGION( 0x40000, "k052109", 0 ) /* tiles */
692 ROM_LOAD32_BYTE( "890f06.f22", 0x00000, 0x10000, CRC(26592155) SHA1(aa1f8662f091ca1eb495223e41a35edd861ae9e9) )
693 ROM_LOAD32_BYTE( "890f07.h22", 0x00001, 0x10000, CRC(6c74fa2e) SHA1(419a2ad31d269fafe4c474bf512e935d5e018846) )
694 ROM_LOAD32_BYTE( "890f08.j22", 0x00002, 0x10000, CRC(29e12e80) SHA1(6d09e190055218e2dfd07838f1446dfb5f801206) )
695 ROM_LOAD32_BYTE( "890f09.k22", 0x00003, 0x10000, CRC(67ca40d5) SHA1(ff719f55d2534ff076fbdd2bcb7d12c683bfe958) )
696
697 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
698 ROM_LOAD32_WORD( "890f04.h4", 0x00000, 0x80000, CRC(f16cd1fa) SHA1(60ea19c19918a71aded3c9ea398c956908e217f1) )
699 ROM_LOAD32_WORD( "890f05.k4", 0x00002, 0x80000, CRC(da37db05) SHA1(0b48d1021cf0dec78dae0ef183b4c61fea783533) )
700
701 ROM_REGION( 0x0100, "proms", 0 )
702 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(d3620106) SHA1(528a0a34754902d0f262a9619c6105da6de99354) ) /* priority encoder (not used) */
703
704 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
705 ROM_LOAD( "890f03.d4", 0x00000, 0x80000, CRC(19065031) SHA1(12c47fbe28f85fa2f901fe52601188a5e9633f22) )
706 ROM_END
707
708 ROM_START( devstors2 )
709 ROM_REGION( 0x10000, "maincpu", 0 )
710 ROM_LOAD( "890_202.k11", 0x00000, 0x10000, CRC(afbf0951) SHA1(6eb5d7e1de58058bd50d184d4c7e8dbea9cce13d) )
711
712 ROM_REGION( 0x8000, "audiocpu", 0 )
713 ROM_LOAD( "890k01.f7", 0x00000, 0x08000, CRC(d44b3eb0) SHA1(26109fc56668b65f1a5aa6d8ec2c08fd70ca7c51) )
714
715 ROM_REGION( 0x40000, "k052109", 0 ) /* tiles */
716 ROM_LOAD32_BYTE( "890f06.f22", 0x00000, 0x10000, CRC(26592155) SHA1(aa1f8662f091ca1eb495223e41a35edd861ae9e9) )
717 ROM_LOAD32_BYTE( "890f07.h22", 0x00001, 0x10000, CRC(6c74fa2e) SHA1(419a2ad31d269fafe4c474bf512e935d5e018846) )
718 ROM_LOAD32_BYTE( "890f08.j22", 0x00002, 0x10000, CRC(29e12e80) SHA1(6d09e190055218e2dfd07838f1446dfb5f801206) )
719 ROM_LOAD32_BYTE( "890f09.k22", 0x00003, 0x10000, CRC(67ca40d5) SHA1(ff719f55d2534ff076fbdd2bcb7d12c683bfe958) )
720
721 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
722 ROM_LOAD32_WORD( "890f04.h4", 0x00000, 0x80000, CRC(f16cd1fa) SHA1(60ea19c19918a71aded3c9ea398c956908e217f1) )
723 ROM_LOAD32_WORD( "890f05.k4", 0x00002, 0x80000, CRC(da37db05) SHA1(0b48d1021cf0dec78dae0ef183b4c61fea783533) )
724
725 ROM_REGION( 0x0100, "proms", 0 )
726 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(d3620106) SHA1(528a0a34754902d0f262a9619c6105da6de99354) ) /* priority encoder (not used) */
727
728 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
729 ROM_LOAD( "890f03.d4", 0x00000, 0x80000, CRC(19065031) SHA1(12c47fbe28f85fa2f901fe52601188a5e9633f22) )
730 ROM_END
731
732 ROM_START( garuka )
733 ROM_REGION( 0x10000, "maincpu", 0 )
734 ROM_LOAD( "890w02.k11", 0x00000, 0x10000, CRC(b2f6f538) SHA1(95dad3258a2e4c5648d0fc22c06fa3e2da3b5ed1) )
735
736 ROM_REGION( 0x8000, "audiocpu", 0 )
737 ROM_LOAD( "890k01.f7", 0x00000, 0x08000, CRC(d44b3eb0) SHA1(26109fc56668b65f1a5aa6d8ec2c08fd70ca7c51) )
738
739 ROM_REGION( 0x40000, "k052109", 0 ) /* tiles */
740 ROM_LOAD32_BYTE( "890f06.f22", 0x00000, 0x10000, CRC(26592155) SHA1(aa1f8662f091ca1eb495223e41a35edd861ae9e9) )
741 ROM_LOAD32_BYTE( "890f07.h22", 0x00001, 0x10000, CRC(6c74fa2e) SHA1(419a2ad31d269fafe4c474bf512e935d5e018846) )
742 ROM_LOAD32_BYTE( "890f08.j22", 0x00002, 0x10000, CRC(29e12e80) SHA1(6d09e190055218e2dfd07838f1446dfb5f801206) )
743 ROM_LOAD32_BYTE( "890f09.k22", 0x00003, 0x10000, CRC(67ca40d5) SHA1(ff719f55d2534ff076fbdd2bcb7d12c683bfe958) )
744
745 ROM_REGION( 0x100000, "k051960", 0 ) /* sprites */
746 ROM_LOAD32_WORD( "890f04.h4", 0x00000, 0x80000, CRC(f16cd1fa) SHA1(60ea19c19918a71aded3c9ea398c956908e217f1) )
747 ROM_LOAD32_WORD( "890f05.k4", 0x00002, 0x80000, CRC(da37db05) SHA1(0b48d1021cf0dec78dae0ef183b4c61fea783533) )
748
749 ROM_REGION( 0x0100, "proms", 0 )
750 ROM_LOAD( "63s141n.k14", 0x0000, 0x0100, CRC(d3620106) SHA1(528a0a34754902d0f262a9619c6105da6de99354) ) /* priority encoder (not used) */
751
752 ROM_REGION( 0x80000, "k007232", 0 ) /* 512k for 007232 samples */
753 ROM_LOAD( "890f03.d4", 0x00000, 0x80000, CRC(19065031) SHA1(12c47fbe28f85fa2f901fe52601188a5e9633f22) )
754 ROM_END
755
756
757
758 GAME( 1988, mainevt, 0, mainevt, mainevt, mainevt_state, empty_init, ROT0, "Konami", "The Main Event (4 Players ver. Y)", MACHINE_SUPPORTS_SAVE )
759 GAME( 1988, mainevto, mainevt, mainevt, mainevt, mainevt_state, empty_init, ROT0, "Konami", "The Main Event (4 Players ver. F)", MACHINE_SUPPORTS_SAVE )
760 GAME( 1988, mainevt2p, mainevt, mainevt, mainev2p, mainevt_state, empty_init, ROT0, "Konami", "The Main Event (2 Players ver. X)", MACHINE_SUPPORTS_SAVE )
761 GAME( 1988, ringohja, mainevt, mainevt, mainev2p, mainevt_state, empty_init, ROT0, "Konami", "Ring no Ohja (Japan 2 Players ver. N)", MACHINE_SUPPORTS_SAVE )
762 GAME( 1988, devstors, 0, devstors, devstors, mainevt_state, empty_init, ROT90, "Konami", "Devastators (ver. Z)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
763 GAME( 1988, devstorsx, devstors, devstors, devstors_ct, mainevt_state, empty_init, ROT90, "Konami", "Devastators (ver. X)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
764 GAME( 1988, devstorsv, devstors, devstors, devstors, mainevt_state, empty_init, ROT90, "Konami", "Devastators (ver. V)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
765 GAME( 1988, devstors2, devstors, devstors, devstors_ct, mainevt_state, empty_init, ROT90, "Konami", "Devastators (ver. 2)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
766 GAME( 1988, garuka, devstors, devstors, devstors_ct, mainevt_state, empty_init, ROT90, "Konami", "Garuka (Japan ver. W)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
767