1 // license:BSD-3-Clause
2 // copyright-holders:Ernesto Corvi
3 /***************************************************************************
4 
5     Vendetta (GX081) (c) 1991 Konami
6 
7     Preliminary driver by:
8     Ernesto Corvi
9     someone@secureshell.com
10 
11     Notes:
12     - collision detection is handled by a protection chip. Its emulation might
13       not be 100% accurate.
14 
15 ********************************************************************************
16    Game driver for "ESCAPE KIDS (TM)"  (KONAMI, 1991)
17  --------------------------------------------------------------------------------
18 
19             This driver was made on the basis of 'src/drivers/vendetta.cpp' file.
20                                          Driver by OHSAKI Masayuki (2002/08/13)
21 
22  ********************************************************************************
23 
24 
25  ***** NOTES *****
26       -------
27   1) ESCAPE KIDS uses 053246's unknown function. (see video/k053246_k053247_k055673.cpp)
28                    (053246 register #5  UnKnown Bit #5, #3, #2 always set "1")
29 
30 
31  ***** On the "error.log" *****
32       --------------------
33   1) "YM2151 Write 00 to undocumented register #xx" (xx=00-1f)
34                 Why???
35 
36   2) "xxxx: read from unknown 052109 address yyyy"
37   3) "xxxx: write zz to unknown 052109 address yyyy"
38                 These are video/k052109.cpp's message.
39                 "video/k052109.cpp" checks 052109 RAM area access.
40                 If accessed over 0x1800 (0x3800), logged 2) or 3) messages.
41                 Escape Kids use 0x1800-0x19ff and 0x3800-0x39ff area.
42 
43 
44  ***** UnEmulated *****
45       ------------
46   2) 0x7c00 (Banked ROM area) access to data WRITE (???)
47   3) 0x3fda (053248 RAM area) access to data WRITE (Watchdog ???)
48 
49 
50  ***** ESCAPE KIDS PCB layout/ Need to dump *****
51       --------------------------------------
52    (Parts side view)
53    +-------------------------------------------------------+
54    |   R          ROM9                               [CN1] |  CN1:Player4 Input?
55    |   O                                             [CN2] |           (Labeled '4P')
56    |   M          ROM8                       ROM1    [SW1] |  CN2:Player3 Input?
57    |   7                              [CUS1]             +-+           (Labeled '3P')
58    |        [CUS7]   [CUS8]                              +-+  CN3:Stereo sound out
59    | R                                       [CUS2]        |
60    | O                                                   J |  SW1:Test Switch
61    | M                                                   A |
62    | 6    [CUS6]                                         M | ***  Custom Chips  ***
63    |                                                     M |      CUS1: 053248
64    | R                                                   A |      CUS2: 053252
65    | O    [CUS5]                                        56P|      CUS3: 053260
66    | M                                                     |      CUS4: 053246
67    | 5                           ROM2  [ Z80 ]           +-+      CUS5: 053247
68    |                                                     +-+      CUS6: 053251
69    | R    [CUS4]                     [CUS3] [YM2151] [CN3] |      CUS7: 051962
70    | O                                                     |      CUS8: 052109
71    | M                                 ROM3                |
72    | 4                                         [Sound AMP] |
73    +-------------------------------------------------------+
74 
75   ***  Dump ROMs  ***
76      1) ROM1 (17C)  32Pin 1Mbit UV-EPROM          -> save "975r01" file
77      2) ROM2 ( 5F)  28Pin 512Kbit One-Time PROM   -> save "975f02" file
78      3) ROM3 ( 1D)  40Pin 4Mbit mask ROM          -> save "975c03" file
79      4) ROM4 ( 3K)  42Pin 8Mbit mask ROM          -> save "975c04" file
80      5) ROM5 ( 8L)  42Pin 8Mbit mask ROM          -> save "975c05" file
81      6) ROM6 (12M)  42Pin 8Mbit mask ROM          -> save "975c06" file
82      7) ROM7 (16K)  42Pin 8Mbit mask ROM          -> save "975c07" file
83      8) ROM8 (16I)  40Pin 4Mbit mask ROM          -> save "975c08" file
84      9) ROM9 (18I)  40Pin 4Mbit mask ROM          -> save "975c09" file
85                                                         vvvvvvvvvvvv
86                                                         esckidsj.zip
87 
88 ***************************************************************************/
89 
90 #include "emu.h"
91 #include "includes/vendetta.h"
92 #include "includes/konamipt.h"
93 
94 #include "cpu/z80/z80.h"
95 #include "machine/eepromser.h"
96 #include "machine/watchdog.h"
97 #include "sound/ym2151.h"
98 #include "sound/k053260.h"
99 #include "speaker.h"
100 
101 
102 /***************************************************************************
103 
104   EEPROM
105 
106 ***************************************************************************/
107 
eeprom_w(uint8_t data)108 void vendetta_state::eeprom_w(uint8_t data)
109 {
110 	/* bit 0 - VOC0 - Video banking related */
111 	/* bit 1 - VOC1 - Video banking related */
112 	/* bit 2 - MSCHNG - Mono Sound select (Amp) */
113 	/* bit 3 - EEPCS - EEPROM CS */
114 	/* bit 4 - EEPCLK - EEPROM clock */
115 	/* bit 5 - EEPDI - EEPROM data */
116 	/* bit 6 - IRQ enable */
117 	/* bit 7 - Unused */
118 
119 
120 	if (data == 0xff ) /* this is a bug in the EEPROM write code */
121 		return;
122 
123 	/* EEPROM */
124 	ioport("EEPROMOUT")->write(data, 0xff);
125 
126 	m_irq_enabled = (data >> 6) & 1;
127 
128 	m_videobank0->set_bank(BIT(data, 0));
129 	m_videobank1->set_bank(BIT(data, 0));
130 }
131 
132 /********************************************/
133 
K052109_r(offs_t offset)134 uint8_t vendetta_state::K052109_r(offs_t offset)
135 {
136 	return m_k052109->read(offset + 0x2000);
137 }
138 
K052109_w(offs_t offset,uint8_t data)139 void vendetta_state::K052109_w(offs_t offset, uint8_t data)
140 {
141 	// *************************************************************************************
142 	// *  Escape Kids uses 052109's mirrored Tilemap ROM bank selector, but only during    *
143 	// *  Tilemap mask ROM Test       (0x1d80<->0x3d80, 0x1e00<->0x3e00, 0x1f00<->0x3f00)  *
144 	// *************************************************************************************
145 	if ((offset == 0x1d80) || (offset == 0x1e00) || (offset == 0x1f00))
146 		m_k052109->write(offset, data);
147 	m_k052109->write(offset + 0x2000, data);
148 }
149 
150 
_5fe0_w(uint8_t data)151 void vendetta_state::_5fe0_w(uint8_t data)
152 {
153 	/* bit 0,1 coin counters */
154 	machine().bookkeeping().coin_counter_w(0, data & 0x01);
155 	machine().bookkeeping().coin_counter_w(1, data & 0x02);
156 
157 	/* bit 2 = BRAMBK ?? */
158 
159 	/* bit 3 = enable char ROM reading through the video RAM */
160 	m_k052109->set_rmrd_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
161 
162 	/* bit 4 = INIT ?? */
163 
164 	/* bit 5 = enable sprite ROM reading */
165 	m_k053246->k053246_set_objcha_line((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
166 }
167 
device_timer(emu_timer & timer,device_timer_id id,int param,void * ptr)168 void vendetta_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
169 {
170 	switch (id)
171 	{
172 	case TIMER_Z80_NMI:
173 		m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
174 		break;
175 	default:
176 		throw emu_fatalerror("Unknown id in vendetta_state::device_timer");
177 	}
178 }
179 
z80_arm_nmi_w(uint8_t data)180 void vendetta_state::z80_arm_nmi_w(uint8_t data)
181 {
182 	m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
183 
184 	timer_set(attotime::from_usec(25), TIMER_Z80_NMI);
185 }
186 
z80_irq_w(uint8_t data)187 void vendetta_state::z80_irq_w(uint8_t data)
188 {
189 	m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80
190 }
191 
z80_irq_r()192 uint8_t vendetta_state::z80_irq_r()
193 {
194 	m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80
195 	return 0x00;
196 }
197 
198 /********************************************/
199 
main_map(address_map & map)200 void vendetta_state::main_map(address_map &map)
201 {
202 	map(0x0000, 0x1fff).bankr("bank1");
203 	map(0x2000, 0x3fff).ram();
204 
205 	/* what is the desired effect of overlapping these memory regions anyway? */
206 	map(0x4000, 0x7fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
207 
208 	map(0x4000, 0x4fff).m(m_videobank0, FUNC(address_map_bank_device::amap8));
209 	map(0x5f80, 0x5f9f).rw(m_k054000, FUNC(k054000_device::read), FUNC(k054000_device::write));
210 	map(0x5fa0, 0x5faf).w(m_k053251, FUNC(k053251_device::write));
211 	map(0x5fb0, 0x5fb7).w(m_k053246, FUNC(k053247_device::k053246_w));
212 	map(0x5fc0, 0x5fc0).portr("P1");
213 	map(0x5fc1, 0x5fc1).portr("P2");
214 	map(0x5fc2, 0x5fc2).portr("P3");
215 	map(0x5fc3, 0x5fc3).portr("P4");
216 	map(0x5fd0, 0x5fd0).portr("EEPROM");
217 	map(0x5fd1, 0x5fd1).portr("SERVICE");
218 	map(0x5fe0, 0x5fe0).w(FUNC(vendetta_state::_5fe0_w));
219 	map(0x5fe2, 0x5fe2).w(FUNC(vendetta_state::eeprom_w));
220 	map(0x5fe4, 0x5fe4).rw(FUNC(vendetta_state::z80_irq_r), FUNC(vendetta_state::z80_irq_w));
221 	map(0x5fe6, 0x5fe7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write));
222 	map(0x5fe8, 0x5fe9).r(m_k053246, FUNC(k053247_device::k053246_r));
223 	map(0x5fea, 0x5fea).r("watchdog", FUNC(watchdog_timer_device::reset_r));
224 	map(0x6000, 0x6fff).m(m_videobank1, FUNC(address_map_bank_device::amap8));
225 
226 	map(0x8000, 0xffff).rom().region("maincpu", 0x38000);
227 }
228 
esckids_map(address_map & map)229 void vendetta_state::esckids_map(address_map &map)
230 {
231 	map(0x0000, 0x1fff).ram();                         // 053248 64K SRAM
232 	/* what is the desired effect of overlapping these memory regions anyway? */
233 	map(0x2000, 0x5fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));            // 052109 (Tilemap)
234 
235 	map(0x2000, 0x2fff).m(m_videobank0, FUNC(address_map_bank_device::amap8));    // 052109 (Tilemap) 0x0000-0x0fff - 052109 (Tilemap)
236 	map(0x3f80, 0x3f80).portr("P1");
237 	map(0x3f81, 0x3f81).portr("P2");
238 	map(0x3f82, 0x3f82).portr("P3");             // ???  (But not used)
239 	map(0x3f83, 0x3f83).portr("P4");             // ???  (But not used)
240 	map(0x3f92, 0x3f92).portr("EEPROM");
241 	map(0x3f93, 0x3f93).portr("SERVICE");
242 	map(0x3fa0, 0x3fa7).w(m_k053246, FUNC(k053247_device::k053246_w));           // 053246 (Sprite)
243 	map(0x3fb0, 0x3fbf).w(m_k053251, FUNC(k053251_device::write));           // 053251 (Priority Encoder)
244 	map(0x3fc0, 0x3fcf).rw(m_k053252, FUNC(k053252_device::read), FUNC(k053252_device::write));              // 053252
245 	map(0x3fd0, 0x3fd0).w(FUNC(vendetta_state::_5fe0_w));      // Coin Counter, 052109 RMRD, 053246 OBJCHA
246 	map(0x3fd2, 0x3fd2).w(FUNC(vendetta_state::eeprom_w));    // EEPROM, Video banking
247 	map(0x3fd4, 0x3fd4).rw(FUNC(vendetta_state::z80_irq_r), FUNC(vendetta_state::z80_irq_w));            // Sound
248 	map(0x3fd6, 0x3fd7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write)); // Sound
249 	map(0x3fd8, 0x3fd9).r(m_k053246, FUNC(k053247_device::k053246_r));                // 053246 (Sprite)
250 	map(0x3fda, 0x3fda).nopw();                // Not Emulated (Watchdog ???)
251 	map(0x4000, 0x4fff).m(m_videobank1, FUNC(address_map_bank_device::amap8));    // 0x2000-0x3fff, Tilemap mask ROM bank selector (mask ROM Test)
252 	map(0x6000, 0x7fff).bankr("bank1");                    // 053248 '975r01' 1M ROM (Banked)
253 	map(0x8000, 0xffff).rom().region("maincpu", 0x18000);  // 053248 '975r01' 1M ROM (0x18000-0x1ffff)
254 }
255 
videobank0_map(address_map & map)256 void vendetta_state::videobank0_map(address_map &map)
257 {
258 	map(0x0000, 0x0fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
259 	map(0x1000, 0x1fff).rw(m_k053246, FUNC(k053247_device::k053247_r), FUNC(k053247_device::k053247_w));
260 }
261 
videobank1_map(address_map & map)262 void vendetta_state::videobank1_map(address_map &map)
263 {
264 	map(0x0000, 0x0fff).rw(FUNC(vendetta_state::K052109_r), FUNC(vendetta_state::K052109_w));
265 	map(0x1000, 0x1fff).ram().w(m_palette, FUNC(palette_device::write8)).share("palette");
266 }
267 
sound_map(address_map & map)268 void vendetta_state::sound_map(address_map &map)
269 {
270 	map(0x0000, 0xefff).rom();
271 	map(0xf000, 0xf7ff).ram();
272 	map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
273 	map(0xfa00, 0xfa00).w(FUNC(vendetta_state::z80_arm_nmi_w));
274 	map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
275 }
276 
277 /***************************************************************************
278 
279     Input Ports
280 
281 ***************************************************************************/
282 
283 static INPUT_PORTS_START( vendet4p )
284 	PORT_START("P1")
285 	KONAMI8_RL_B12_COIN(1)
286 
287 	PORT_START("P2")
288 	KONAMI8_RL_B12_COIN(2)
289 
290 	PORT_START("P3")
291 	KONAMI8_RL_B12_COIN(3)
292 
293 	PORT_START("P4")
294 	KONAMI8_RL_B12_COIN(4)
295 
296 	PORT_START("SERVICE")
297 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
298 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
299 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
300 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
301 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
302 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
303 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
304 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
305 
306 	PORT_START("EEPROM")
307 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
308 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
309 	PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
310 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* not really vblank, object related. Its timed, otherwise sprites flicker */
311 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
312 
313 	PORT_START( "EEPROMOUT" )
314 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
315 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
316 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
317 INPUT_PORTS_END
318 
INPUT_PORTS_START(vendetta)319 static INPUT_PORTS_START( vendetta )
320 	PORT_INCLUDE( vendet4p )
321 
322 	PORT_MODIFY("P3")
323 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
324 
325 	PORT_MODIFY("P4")
326 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
327 
328 	PORT_MODIFY("SERVICE")
329 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
330 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
331 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
332 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
333 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
334 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
335 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
336 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
337 INPUT_PORTS_END
338 
339 static INPUT_PORTS_START( esckids )
340 	PORT_START("P1")
341 	KONAMI8_RL_B12_COIN(1)      // Player 1 Control
342 
343 	PORT_START("P2")
344 	KONAMI8_RL_B12_COIN(2)      // Player 2 Control
345 
346 	PORT_START("P3")
347 	KONAMI8_RL_B12_COIN(3)      // Player 3 Control ???  (Not used)
348 
349 	PORT_START("P4")
350 	KONAMI8_RL_B12_COIN(4)      // Player 4 Control ???  (Not used)
351 
352 	PORT_START("SERVICE")       // Start, Service
353 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
354 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
355 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
356 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
357 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
358 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
359 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
360 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
361 
362 	PORT_START("EEPROM")
363 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, do_read)
364 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, ready_read)
365 	PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
366 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_VBLANK("screen") /* not really vblank, object related. Its timed, otherwise sprites flicker */
367 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
368 
369 	PORT_START( "EEPROMOUT" )
370 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, cs_write)
371 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, clk_write)
372 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_er5911_device, di_write)
373 INPUT_PORTS_END
374 
375 static INPUT_PORTS_START( esckidsj )
376 	PORT_INCLUDE( esckids )
377 
378 	PORT_MODIFY("P3")
379 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
380 
381 	PORT_MODIFY("P4")
382 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
383 INPUT_PORTS_END
384 
385 /***************************************************************************
386 
387     Machine Driver
388 
389 ***************************************************************************/
390 
391 INTERRUPT_GEN_MEMBER(vendetta_state::irq)
392 {
393 	if (m_irq_enabled)
394 		device.execute().set_input_line(KONAMI_IRQ_LINE, HOLD_LINE);
395 }
396 
machine_start()397 void vendetta_state::machine_start()
398 {
399 	membank("bank1")->configure_entries(0, 28, memregion("maincpu")->base(), 0x2000);
400 	membank("bank1")->set_entry(0);
401 
402 	save_item(NAME(m_irq_enabled));
403 	save_item(NAME(m_sprite_colorbase));
404 	save_item(NAME(m_layer_colorbase));
405 	save_item(NAME(m_layerpri));
406 }
407 
machine_reset()408 void vendetta_state::machine_reset()
409 {
410 	for (int i = 0; i < 3; i++)
411 	{
412 		m_layerpri[i] = 0;
413 		m_layer_colorbase[i] = 0;
414 	}
415 
416 	m_sprite_colorbase = 0;
417 	m_irq_enabled = 0;
418 }
419 
banking_callback(uint8_t data)420 void vendetta_state::banking_callback(uint8_t data)
421 {
422 	if (data >= 0x1c)
423 		logerror("%s Unknown bank selected %02x\n", machine().describe_context(), data);
424 	else
425 		membank("bank1")->set_entry(data);
426 }
427 
vendetta(machine_config & config)428 void vendetta_state::vendetta(machine_config &config)
429 {
430 	/* basic machine hardware */
431 	KONAMI(config, m_maincpu, XTAL(24'000'000)/8); /* 052001 (verified on pcb) */
432 	m_maincpu->set_addrmap(AS_PROGRAM, &vendetta_state::main_map);
433 	m_maincpu->set_vblank_int("screen", FUNC(vendetta_state::irq));
434 	m_maincpu->line().set(FUNC(vendetta_state::banking_callback));
435 
436 	ADDRESS_MAP_BANK(config, "videobank0").set_map(&vendetta_state::videobank0_map).set_options(ENDIANNESS_BIG, 8, 13, 0x1000);
437 	ADDRESS_MAP_BANK(config, "videobank1").set_map(&vendetta_state::videobank1_map).set_options(ENDIANNESS_BIG, 8, 13, 0x1000);
438 
439 	Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified with PCB */
440 	m_audiocpu->set_addrmap(AS_PROGRAM, &vendetta_state::sound_map); /* interrupts are triggered by the main CPU */
441 
442 	EEPROM_ER5911_8BIT(config, "eeprom");
443 
444 	WATCHDOG_TIMER(config, "watchdog");
445 
446 	/* video hardware */
447 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
448 	screen.set_refresh_hz(59.17); /* measured on PCB */
449 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
450 	screen.set_size(64*8, 32*8);
451 	screen.set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1);
452 	screen.set_screen_update(FUNC(vendetta_state::screen_update));
453 	screen.set_palette(m_palette);
454 
455 	PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 2048);
456 	m_palette->enable_shadows();
457 
458 	K052109(config, m_k052109, 0);
459 	m_k052109->set_palette(m_palette);
460 	m_k052109->set_tile_callback(FUNC(vendetta_state::vendetta_tile_callback));
461 
462 	K053246(config, m_k053246, 0);
463 	m_k053246->set_sprite_callback(FUNC(vendetta_state::sprite_callback));
464 	m_k053246->set_config(NORMAL_PLANE_ORDER, 53, 6);
465 	m_k053246->set_palette(m_palette);
466 
467 	K053251(config, m_k053251, 0);
468 
469 	K054000(config, m_k054000, 0);
470 
471 	/* sound hardware */
472 	SPEAKER(config, "lspeaker").front_left();
473 	SPEAKER(config, "rspeaker").front_right();
474 
475 	YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0);  /* verified with PCB */
476 
477 	k053260_device &k053260(K053260(config, "k053260", XTAL(3'579'545))); /* verified with PCB */
478 	k053260.add_route(0, "lspeaker", 0.75);
479 	k053260.add_route(1, "rspeaker", 0.75);
480 }
481 
esckids(machine_config & config)482 void vendetta_state::esckids(machine_config &config)
483 {
484 	vendetta(config);
485 
486 	/* basic machine hardware */
487 	m_maincpu->set_addrmap(AS_PROGRAM, &vendetta_state::esckids_map);
488 
489 	//subdevice<screen_device>("screen")->set_visarea(13*8, (64-13)*8-1, 2*8, 30*8-1); /* black areas on the edges */
490 	subdevice<screen_device>("screen")->set_visarea(14*8, (64-14)*8-1, 2*8, 30*8-1);
491 
492 	config.device_remove("k054000");
493 	config.device_remove("k052109");
494 
495 	K052109(config, m_k052109, 0);
496 	m_k052109->set_palette(m_palette);
497 	m_k052109->set_tile_callback(FUNC(vendetta_state::esckids_tile_callback));
498 
499 	m_k053246->set_config(NORMAL_PLANE_ORDER, 101, 6);
500 
501 	K053252(config, "k053252", 6000000).set_offsets(12*8, 1*8);
502 }
503 
504 
505 
506 /***************************************************************************
507 
508   Game ROMs
509 
510 ***************************************************************************/
511 
512 ROM_START( vendetta )
513 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
514 	ROM_LOAD( "081t01.17c", 0x00000, 0x40000, CRC(e76267f5) SHA1(efef6c2edb4c181374661f358dad09123741b63d) )
515 
516 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
517 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
518 
519 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
520 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
521 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
522 
523 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
524 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
525 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
526 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
527 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
528 
529 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
530 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
531 
532 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
533 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
534 ROM_END
535 
536 ROM_START( vendettar )
537 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
538 	ROM_LOAD( "081r01.17c", 0x00000, 0x40000, CRC(84796281) SHA1(e4330c6eaa17adda5b4bd3eb824388c89fb07918) )
539 
540 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
541 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
542 
543 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
544 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
545 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
546 
547 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
548 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
549 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
550 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
551 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
552 
553 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
554 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
555 
556 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
557 	ROM_LOAD( "vendettar.nv", 0x0000, 0x080, CRC(ec3f0449) SHA1(da35b98cd10bfabe9df3ede05462fabeb0e01ca9) )
558 ROM_END
559 
560 ROM_START( vendettaz )
561 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
562 	ROM_LOAD( "081z01.17c", 0x00000, 0x40000, CRC(4d225a8d) SHA1(fe8f6e63d033cf04c9a287d870db244fddb81f03) )
563 
564 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
565 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
566 
567 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
568 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
569 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
570 
571 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
572 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
573 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
574 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
575 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
576 
577 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
578 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
579 
580 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
581 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
582 ROM_END
583 
584 ROM_START( vendettaun )
585 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
586 	ROM_LOAD( "1.17c", 0x00000, 0x40000, CRC(1a7ceb1b) SHA1(c7454e11b7a06d10c94fe44ba6f83208bca4ced9) ) /* World 4 player, program ROM found labeled simply as "1" */
587 
588 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
589 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
590 
591 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
592 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
593 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
594 
595 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
596 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
597 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
598 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
599 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
600 
601 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
602 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
603 
604 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
605 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
606 ROM_END
607 
608 ROM_START( vendetta2pw )
609 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
610 	ROM_LOAD( "081w01.17c", 0x00000, 0x40000, CRC(cee57132) SHA1(8b6413877e127511daa76278910c2ee3247d613a) )
611 
612 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
613 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
614 
615 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
616 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
617 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
618 
619 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
620 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
621 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
622 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
623 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
624 
625 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
626 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
627 
628 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
629 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
630 ROM_END
631 
632 ROM_START( vendetta2peba )
633 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
634 	ROM_LOAD( "081-eb-a01.17c", 0x00000, 0x40000, CRC(8430bb52) SHA1(54e896510fa44e76b0640b17150210fbf6b3b5bc)) // Label was unclear apart from EB stamp on the middle line.  Bottom line looked like 401, but probably A01
635 
636 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
637 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
638 
639 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
640 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
641 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
642 
643 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
644 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
645 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
646 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
647 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
648 
649 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
650 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
651 
652 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
653 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
654 ROM_END
655 
656 ROM_START( vendetta2pun )
657 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
658 	ROM_LOAD( "1.17c", 0x00000, 0x40000, CRC(b4edde48) SHA1(bf6342cfeb0560cdf9c943f6d112fd89ee5a4f6b) ) /* World 2 player, program ROM found labeled simply as "1" */
659 
660 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
661 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
662 
663 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
664 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
665 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
666 
667 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
668 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
669 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
670 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
671 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
672 
673 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
674 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
675 
676 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
677 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
678 ROM_END
679 
680 ROM_START( vendetta2pu )
681 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
682 	ROM_LOAD( "081u01.17c", 0x00000, 0x40000, CRC(b4d9ade5) SHA1(fbd543738cb0b68c80ff05eed7849b608de03395) )
683 
684 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
685 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
686 
687 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
688 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
689 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
690 
691 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
692 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
693 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
694 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
695 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
696 
697 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
698 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
699 
700 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
701 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
702 ROM_END
703 
704 ROM_START( vendetta2pd )
705 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
706 	ROM_LOAD( "081d01.17c", 0x00000, 0x40000, CRC(335da495) SHA1(ea74680eb898aeecf9f1eec95f151bcf66e6b6cb) )
707 
708 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
709 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
710 
711 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
712 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
713 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
714 
715 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
716 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
717 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
718 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
719 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
720 
721 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
722 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
723 
724 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
725 	ROM_LOAD( "vendetta.nv", 0x0000, 0x080, CRC(fbac4e30) SHA1(d3ff3a392550d9b06400b9292a44bdac7ba5c801) )
726 ROM_END
727 
728 ROM_START( vendettan )
729 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
730 	ROM_LOAD( "081n01.17c", 0x00000, 0x40000, CRC(fc766fab) SHA1(a22c82810f2a2b66fc112e2d043e8025d0dc2841) )
731 
732 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
733 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
734 
735 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
736 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
737 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
738 
739 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
740 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
741 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
742 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
743 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
744 
745 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
746 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
747 
748 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
749 	ROM_LOAD( "vendettaj.nv", 0x0000, 0x080, CRC(3550a54e) SHA1(370cd40a12c471b3b6690ecbdde9c7979bc2a652) )
750 ROM_END
751 
752 ROM_START( vendetta2pp )
753 	ROM_REGION( 0x40000, "maincpu", 0 ) /* code + banked ROMs + banked RAM */
754 	ROM_LOAD( "081p01.17c", 0x00000, 0x40000, CRC(5fe30242) SHA1(2ea98e66637fa2ad60044b1a2b0dd158a82403a2) )
755 
756 	ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
757 	ROM_LOAD( "081b02", 0x000000, 0x10000, CRC(4c604d9b) SHA1(22d979f5dbde7912dd927bf5538fdbfc5b82905e) )
758 
759 	ROM_REGION( 0x100000, "k052109", 0 )    /* tiles */
760 	ROM_LOAD32_WORD( "081a09", 0x000000, 0x080000, CRC(b4c777a9) SHA1(cc2b1dff4404ecd72b604e25d00fffdf7f0f8b52) )
761 	ROM_LOAD32_WORD( "081a08", 0x000002, 0x080000, CRC(272ac8d9) SHA1(2da12fe4c13921bf0d4ebffec326f8d207ec4fad) )
762 
763 	ROM_REGION( 0x400000, "k053246", 0 ) /* graphics ( don't dispose as the program can read them ) */
764 	ROM_LOAD64_WORD( "081a04", 0x000000, 0x100000, CRC(464b9aa4) SHA1(28066ff0a07c3e56e7192918a882778c1b316b37) ) /* sprites */
765 	ROM_LOAD64_WORD( "081a05", 0x000002, 0x100000, CRC(4e173759) SHA1(ce803f2aca7d7dedad00ab30e112443848747bd2) ) /* sprites */
766 	ROM_LOAD64_WORD( "081a06", 0x000004, 0x100000, CRC(e9fe6d80) SHA1(2b7fc9d7fe43cd85dc8b975fe639c273cb0d9256) ) /* sprites */
767 	ROM_LOAD64_WORD( "081a07", 0x000006, 0x100000, CRC(8a22b29a) SHA1(be539f21518e13038ab1d4cc2b2a901dd3e621f4) ) /* sprites */
768 
769 	ROM_REGION( 0x100000, "k053260", 0 ) /* 053260 samples */
770 	ROM_LOAD( "081a03", 0x000000, 0x100000, CRC(14b6baea) SHA1(fe15ee57f19f5acaad6c1642d51f390046a7468a) )
771 
772 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
773 	ROM_LOAD( "vendettaj.nv", 0x0000, 0x080, CRC(3550a54e) SHA1(370cd40a12c471b3b6690ecbdde9c7979bc2a652) )
774 ROM_END
775 
776 
777 ROM_START( esckids )
778 	ROM_REGION( 0x020000, "maincpu", 0 )        // Main CPU (053248) Code & Banked (1M x 1)
779 	ROM_LOAD( "17c.bin", 0x000000, 0x020000, CRC(9dfba99c) SHA1(dbcb89aad5a9addaf7200b2524be999877313a6e) )
780 
781 	ROM_REGION( 0x010000, "audiocpu", 0 )       // Sound CPU (Z80) Code (512K x 1)
782 	ROM_LOAD( "975f02", 0x000000, 0x010000, CRC(994fb229) SHA1(bf194ae91240225b8edb647b1a62cd83abfa215e) )
783 
784 	ROM_REGION( 0x100000, "k052109", 0 )       // Tilemap mask ROM (4M x 2)
785 	ROM_LOAD32_WORD( "975c09", 0x000000, 0x080000, CRC(bc52210e) SHA1(301a3892d250495c2e849d67fea5f01fb0196bed) )
786 	ROM_LOAD32_WORD( "975c08", 0x000002, 0x080000, CRC(fcff9256) SHA1(b60d29f4d04f074120d4bb7f2a71b9e9bf252d33) )
787 
788 	ROM_REGION( 0x400000, "k053246", 0 )       // Sprite mask ROM (8M x 4)
789 	ROM_LOAD64_WORD( "975c04", 0x000000, 0x100000, CRC(15688a6f) SHA1(a445237a11e5f98f0f9b2573a7ef0583366a137e) )
790 	ROM_LOAD64_WORD( "975c05", 0x000002, 0x100000, CRC(1ff33bb7) SHA1(eb17da33ba2769ea02f91fece27de2e61705e75a) )
791 	ROM_LOAD64_WORD( "975c06", 0x000004, 0x100000, CRC(36d410f9) SHA1(2b1fd93c11839480aa05a8bf27feef7591704f3d) )
792 	ROM_LOAD64_WORD( "975c07", 0x000006, 0x100000, CRC(97ec541e) SHA1(d1aa186b17cfe6e505f5b305703319299fa54518) )
793 
794 	ROM_REGION( 0x100000, "k053260", 0 )    // Samples mask ROM (4M x 1)
795 	ROM_LOAD( "975c03", 0x000000, 0x080000, CRC(dc4a1707) SHA1(f252d08483fd664f8fc03bf8f174efd452b4cdc5) )
796 
797 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
798 	ROM_LOAD( "esckids.nv", 0x0000, 0x080, CRC(a8522e1f) SHA1(43f82fce3c3b854bc8898c63dffc7c01b288c8aa) )
799 ROM_END
800 
801 
802 ROM_START( esckidsj )
803 	ROM_REGION( 0x020000, "maincpu", 0 )        // Main CPU (053248) Code & Banked (1M x 1)
804 	ROM_LOAD( "975r01", 0x000000, 0x020000, CRC(7b5c5572) SHA1(b94b58c010539926d112c2dfd80bcbad76acc986) )
805 
806 	ROM_REGION( 0x010000, "audiocpu", 0 )       // Sound CPU (Z80) Code (512K x 1)
807 	ROM_LOAD( "975f02", 0x000000, 0x010000, CRC(994fb229) SHA1(bf194ae91240225b8edb647b1a62cd83abfa215e) )
808 
809 	ROM_REGION( 0x100000, "k052109", 0 )       // Tilemap mask ROM (4M x 2)
810 	ROM_LOAD32_WORD( "975c09", 0x000000, 0x080000, CRC(bc52210e) SHA1(301a3892d250495c2e849d67fea5f01fb0196bed) )
811 	ROM_LOAD32_WORD( "975c08", 0x000002, 0x080000, CRC(fcff9256) SHA1(b60d29f4d04f074120d4bb7f2a71b9e9bf252d33) )
812 
813 	ROM_REGION( 0x400000, "k053246", 0 )       // Sprite mask ROM (8M x 4)
814 	ROM_LOAD64_WORD( "975c04", 0x000000, 0x100000, CRC(15688a6f) SHA1(a445237a11e5f98f0f9b2573a7ef0583366a137e) )
815 	ROM_LOAD64_WORD( "975c05", 0x000002, 0x100000, CRC(1ff33bb7) SHA1(eb17da33ba2769ea02f91fece27de2e61705e75a) )
816 	ROM_LOAD64_WORD( "975c06", 0x000004, 0x100000, CRC(36d410f9) SHA1(2b1fd93c11839480aa05a8bf27feef7591704f3d) )
817 	ROM_LOAD64_WORD( "975c07", 0x000006, 0x100000, CRC(97ec541e) SHA1(d1aa186b17cfe6e505f5b305703319299fa54518) )
818 
819 	ROM_REGION( 0x100000, "k053260", 0 )    // Samples mask ROM (4M x 1)
820 	ROM_LOAD( "975c03", 0x000000, 0x080000, CRC(dc4a1707) SHA1(f252d08483fd664f8fc03bf8f174efd452b4cdc5) )
821 
822 	ROM_REGION( 0x80, "eeprom", 0 ) // default EEPROM to prevent game booting upside down with error
823 	ROM_LOAD( "esckidsj.nv", 0x0000, 0x080, CRC(985e2a2d) SHA1(afd9e5fc014d593d0a384326f32caf2a73fba867) )
824 ROM_END
825 
826 
827 /***************************************************************************
828 
829   Game driver(s)
830 
831 ***************************************************************************/
832 
833 
834 GAME( 1991, vendetta,    0,        vendetta, vendet4p, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (World, 4 Players, ver. T)", MACHINE_SUPPORTS_SAVE )
835 GAME( 1991, vendettar,   vendetta, vendetta, vendet4p, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (US, 4 Players, ver. R)", MACHINE_SUPPORTS_SAVE )
836 GAME( 1991, vendettaz,   vendetta, vendetta, vendet4p, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (Asia, 4 Players, ver. Z)", MACHINE_SUPPORTS_SAVE )
837 GAME( 1991, vendettaun,  vendetta, vendetta, vendet4p, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (World, 4 Players, ver. ?)", MACHINE_SUPPORTS_SAVE ) /* program ROM labeled as 1 */
838 GAME( 1991, vendetta2pw, vendetta, vendetta, vendetta, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (World, 2 Players, ver. W)", MACHINE_SUPPORTS_SAVE )
839 GAME( 1991, vendetta2peba,vendetta,vendetta, vendetta, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (World, 2 Players, ver. EB-A?)", MACHINE_SUPPORTS_SAVE )
840 GAME( 1991, vendetta2pun,vendetta, vendetta, vendetta, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (World, 2 Players, ver. ?)", MACHINE_SUPPORTS_SAVE ) /* program ROM labeled as 1 */
841 GAME( 1991, vendetta2pu, vendetta, vendetta, vendetta, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (Asia, 2 Players, ver. U)", MACHINE_SUPPORTS_SAVE )
842 GAME( 1991, vendetta2pd, vendetta, vendetta, vendetta, vendetta_state, empty_init, ROT0, "Konami", "Vendetta (Asia, 2 Players, ver. D)", MACHINE_SUPPORTS_SAVE )
843 GAME( 1991, vendettan,   vendetta, vendetta, vendet4p, vendetta_state, empty_init, ROT0, "Konami", "Crime Fighters 2 (Japan, 4 Players, ver. N)", MACHINE_SUPPORTS_SAVE )
844 GAME( 1991, vendetta2pp, vendetta, vendetta, vendetta, vendetta_state, empty_init, ROT0, "Konami", "Crime Fighters 2 (Japan, 2 Players, ver. P)", MACHINE_SUPPORTS_SAVE )
845 GAME( 1991, esckids,     0,        esckids,  esckids,  vendetta_state, empty_init, ROT0, "Konami", "Escape Kids (Asia, 4 Players)", MACHINE_SUPPORTS_SAVE )
846 GAME( 1991, esckidsj,    esckids,  esckids,  esckidsj, vendetta_state, empty_init, ROT0, "Konami", "Escape Kids (Japan, 2 Players)", MACHINE_SUPPORTS_SAVE )
847