summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/atari/dragrace.cpp
blob: 33db8bb9577b4e4d30ea4a5848f1197c9b524018 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
// license:BSD-3-Clause
// copyright-holders: Stefan Jokisch

/***************************************************************************

    Atari Drag Race Driver

***************************************************************************/

#include "emu.h"

#include "dragrace_a.h"

#include "cpu/m6800/m6800.h"
#include "machine/74259.h"
#include "machine/timer.h"
#include "machine/watchdog.h"
#include "sound/discrete.h"

#include "emupal.h"
#include "screen.h"
#include "speaker.h"
#include "tilemap.h"

#include "dragrace.lh"


namespace {

class dragrace_state : public driver_device
{
public:
	dragrace_state(const machine_config &mconfig, device_type type, const char *tag) :
		driver_device(mconfig, type, tag),
		m_maincpu(*this, "maincpu"),
		m_watchdog(*this, "watchdog"),
		m_gfxdecode(*this, "gfxdecode"),
		m_screen(*this, "screen"),
		m_discrete(*this, "discrete"),
		m_playfield_ram(*this, "playfield_ram"),
		m_position_ram(*this, "position_ram"),
		m_p(*this, "P%u", 1U),
		m_dial(*this, "DIAL%u", 1U),
		m_in(*this, "IN%u", 0U),
		m_gear_sel(*this, "P%ugear", 1U),
		m_tacho_sel(*this, "tachometer%u", 1U)
	{
	}

	void dragrace(machine_config &config);

protected:
	virtual void machine_start() override ATTR_COLD;
	virtual void machine_reset() override ATTR_COLD;
	virtual void video_start() override ATTR_COLD;

private:
	// devices
	required_device<cpu_device> m_maincpu;
	required_device<watchdog_timer_device> m_watchdog;
	required_device<gfxdecode_device> m_gfxdecode;
	required_device<screen_device> m_screen;
	required_device<discrete_sound_device> m_discrete;

	// memory pointers
	required_shared_ptr<uint8_t> m_playfield_ram;
	required_shared_ptr<uint8_t> m_position_ram;

	// inputs
	required_ioport_array<2> m_p, m_dial;
	required_ioport_array<3> m_in;

	// outputs
	output_finder<2> m_gear_sel, m_tacho_sel;

	// video-related
	tilemap_t *m_bg_tilemap = nullptr;

	// misc
	uint8_t m_gear[2]{};
	emu_timer *m_scan_timer;
	emu_timer *m_irq_off_timer;

	void speed1_w(uint8_t data);
	void speed2_w(uint8_t data);
	uint8_t input_r(offs_t offset);
	uint8_t steering_r();
	uint8_t scanline_r();
	TILE_GET_INFO_MEMBER(get_tile_info);
	void palette(palette_device &palette) const;
	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
	TIMER_DEVICE_CALLBACK_MEMBER(frame_callback);
	TIMER_CALLBACK_MEMBER(scanline_irq);
	TIMER_CALLBACK_MEMBER(irq_off);

	void main_map(address_map &map) ATTR_COLD;
};


TILE_GET_INFO_MEMBER(dragrace_state::get_tile_info)
{
	uint8_t code = m_playfield_ram[tile_index];
	int num = code & 0x1f;
	int col = 0;

	if ((code & 0xc0) == 0x40)
		num |= 0x20;

	switch (code & 0xa0)
	{
		case 0x00:
			col = 0;
			break;
		case 0x20:
			col = 1;
			break;
		case 0x80:
			col = (code & 0x40) ? 1 : 0;
			break;
		case 0xa0:
			col = (code & 0x40) ? 3 : 2;
			break;
	}

	tileinfo.set(((code & 0xa0) == 0x80) ? 1 : 0, num, col, 0);
}


void dragrace_state::video_start()
{
	m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dragrace_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16);
}


uint32_t dragrace_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
	m_bg_tilemap->mark_all_dirty();

	for (int y = 0; y < 256; y += 4)
	{
		rectangle rect = cliprect;

		int const xl = m_position_ram[y + 0] & 15;
		int const xh = m_position_ram[y + 1] & 15;
		int const yl = m_position_ram[y + 2] & 15;
		int const yh = m_position_ram[y + 3] & 15;

		m_bg_tilemap->set_scrollx(0, 16 * xh + xl - 8);
		m_bg_tilemap->set_scrolly(0, 16 * yh + yl);

		rect.sety((std::max)(rect.top(), y + 0), (std::min)(rect.bottom(), y + 3));

		m_bg_tilemap->draw(screen, bitmap, rect, 0, 0);
	}

	return 0;
}


TIMER_DEVICE_CALLBACK_MEMBER(dragrace_state::frame_callback)
{
	for (int i = 0; i < 2; i++)
	{
		switch (m_p[i]->read())
		{
			case 0x01: m_gear[i] = 1; break;
			case 0x02: m_gear[i] = 2; break;
			case 0x04: m_gear[i] = 3; break;
			case 0x08: m_gear[i] = 4; break;
			case 0x10: m_gear[i] = 0; break;
		}
	}

	m_gear_sel[0] = m_gear[0];
	m_gear_sel[1] = m_gear[1];

	// watchdog is disabled during service mode
	m_watchdog->watchdog_enable(m_in[0]->read() & 0x20);
}

TIMER_CALLBACK_MEMBER(dragrace_state::scanline_irq)
{
	m_maincpu->set_input_line(M6800_IRQ_LINE, ASSERT_LINE);
	m_irq_off_timer->adjust(m_screen->scan_period() * 3);

	// Four IRQs per frame (vpos = 64, 128, 192, 240)
	int const scanline = m_screen->vpos();
	m_scan_timer->adjust(m_screen->time_until_pos(scanline < 240 ? std::min(scanline + 64, 240) : 64));
}

TIMER_CALLBACK_MEMBER(dragrace_state::irq_off)
{
	m_maincpu->set_input_line(M6800_IRQ_LINE, CLEAR_LINE);
}


void dragrace_state::speed1_w(uint8_t data)
{
	unsigned freq = ~data & 0x1f;
	m_discrete->write(DRAGRACE_MOTOR1_DATA, freq);

	// the tachometers are driven from the same frequency generator that creates the engine sound
	m_tacho_sel[0] = freq;
}

void dragrace_state::speed2_w(uint8_t data)
{
	unsigned freq = ~data & 0x1f;
	m_discrete->write(DRAGRACE_MOTOR2_DATA, freq);

	// the tachometers are driven from the same frequency generator that creates the engine sound
	m_tacho_sel[1] = freq;
}

uint8_t dragrace_state::input_r(offs_t offset)
{
	int val = m_in[2]->read();

	uint8_t const maskA = 1 << (offset % 8);
	uint8_t const maskB = 1 << (offset / 8);

	for (int i = 0; i < 2; i++)
	{
		int in = m_in[i]->read();

		if (m_gear[i] != 0)
			in &= ~(1 << m_gear[i]);

		if (in & maskA)
			val |= 1 << i;
	}

	return (val & maskB) ? 0xff : 0x7f;
}


uint8_t dragrace_state::steering_r()
{
	int bitA[2];
	int bitB[2];

	for (int i = 0; i < 2; i++)
	{
		int const dial = m_dial[i]->read();

		bitA[i] = ((dial + 1) / 2) & 1;
		bitB[i] = ((dial + 0) / 2) & 1;
	}

	return
		(bitA[0] << 0) | (bitB[0] << 1) |
		(bitA[1] << 2) | (bitB[1] << 3);
}


uint8_t dragrace_state::scanline_r()
{
	return (m_screen->vpos() ^ 0xf0) | 0x0f;
}


void dragrace_state::main_map(address_map &map)
{
	map(0x0080, 0x00ff).ram();
	map(0x0800, 0x083f).r(FUNC(dragrace_state::input_r));
	map(0x0900, 0x0907).w("latch_f5", FUNC(addressable_latch_device::write_d0));
	map(0x0908, 0x090f).w("latch_a5", FUNC(addressable_latch_device::write_d0));
	map(0x0910, 0x0917).w("latch_h5", FUNC(addressable_latch_device::write_d0));
	map(0x0918, 0x091f).w("latch_e5", FUNC(addressable_latch_device::write_d0));
	map(0x0920, 0x0927).w("latch_f5", FUNC(addressable_latch_device::clear));
	map(0x0928, 0x092f).w("latch_a5", FUNC(addressable_latch_device::clear));
	map(0x0930, 0x0937).w("latch_h5", FUNC(addressable_latch_device::clear));
	map(0x0938, 0x093f).w("latch_e5", FUNC(addressable_latch_device::clear));
	map(0x0a00, 0x0aff).writeonly().share(m_playfield_ram);
	map(0x0b00, 0x0bff).writeonly().share(m_position_ram);
	map(0x0c00, 0x0c00).r(FUNC(dragrace_state::steering_r));
	map(0x0d00, 0x0d00).r(FUNC(dragrace_state::scanline_r));
	map(0x0e00, 0x0eff).w(m_watchdog, FUNC(watchdog_timer_device::reset_w));
	map(0x1000, 0x1fff).rom(); // program
	map(0xf800, 0xffff).rom(); // program mirror
}


static INPUT_PORTS_START( dragrace )
	PORT_START("IN0")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Player 1 Gas") PORT_PLAYER(1)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // player 1 gear 1
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) // player 1 gear 2
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // player 1 gear 3
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // player 1 gear 4
	PORT_SERVICE( 0x20, IP_ACTIVE_LOW )
	PORT_DIPNAME( 0xc0, 0x80, "Extended Play" )         PORT_DIPLOCATION("SW1:1,2")
	PORT_DIPSETTING( 0x00, "6.9 seconds" )
	PORT_DIPSETTING( 0x80, "5.9 seconds" )
	PORT_DIPSETTING( 0x40, "4.9 seconds" )
	PORT_DIPSETTING( 0xc0, "Never" )

	PORT_START("IN1")
	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Player 2 Gas") PORT_PLAYER(2)
	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) // player 2 gear 1
	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) // player 2 gear 2
	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) // player 2 gear 3
	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED ) // player 2 gear 4
	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
	PORT_DIPNAME( 0xc0, 0x80, "Number Of Heats" )       PORT_DIPLOCATION("SW1:3,4")
	PORT_DIPSETTING( 0xc0, "3" )
	PORT_DIPSETTING( 0x80, "4" )
	PORT_DIPSETTING( 0x00, "5" )

	PORT_START("IN2")
	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) // IN0 connects here
	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) // IN1 connects here
	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 )
	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 )
	PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:5,6")
	PORT_DIPSETTING( 0xc0, DEF_STR( 2C_1C ) )
	PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
	PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
	PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )

	PORT_START("DIAL1")
	PORT_BIT( 0xff, 0x00, IPT_DIAL_V ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(1)

	PORT_START("DIAL2")
	PORT_BIT( 0xff, 0x00, IPT_DIAL_V ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_PLAYER(2)

	PORT_START("P1")
	PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Player 1 Gear 1") PORT_PLAYER(1)
	PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Player 1 Gear 2") PORT_PLAYER(1)
	PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Player 1 Gear 3") PORT_PLAYER(1)
	PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Player 1 Gear 4") PORT_PLAYER(1)
	PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Player 1 Neutral") PORT_PLAYER(1)

	PORT_START("P2")
	PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Player 2 Gear 1") PORT_PLAYER(2)
	PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Player 2 Gear 2") PORT_PLAYER(2)
	PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Player 2 Gear 3") PORT_PLAYER(2)
	PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("Player 2 Gear 4") PORT_PLAYER(2)
	PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Player 2 Neutral") PORT_PLAYER(2)

	PORT_START("MOTOR1")
	PORT_ADJUSTER( 81, "Motor 1 RPM" )

	PORT_START("MOTOR2")
	PORT_ADJUSTER( 85, "Motor 2 RPM" )
INPUT_PORTS_END


static const gfx_layout dragrace_tile_layout1 =
{
	16, 16,   // width, height
	0x40,     // total
	1,        // planes
	{ 0 },    // plane offsets
	{
		0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
		0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87
	},
	{
		0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38,
		0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78
	},
	0x100      // increment
};


static const gfx_layout dragrace_tile_layout2 =
{
	16, 16,   // width, height
	0x20,     // total
	2,        // planes
	{         // plane offsets
		0x0000, 0x2000
	},
	{
		0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
		0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87
	},
	{
		0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38,
		0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78
	},
	0x100      // increment
};


static GFXDECODE_START( gfx_dragrace )
	GFXDECODE_ENTRY( "tiles_2c", 0, dragrace_tile_layout1, 0, 4 )
	GFXDECODE_ENTRY( "tiles_4c", 0, dragrace_tile_layout2, 8, 2 )
GFXDECODE_END


void dragrace_state::palette(palette_device &palette) const
{
	palette.set_pen_color(0, rgb_t(0xff, 0xff, 0xff));   // 2 color tiles
	palette.set_pen_color(1, rgb_t(0x00, 0x00, 0x00));
	palette.set_pen_color(2, rgb_t(0x00, 0x00, 0x00));
	palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff));
	palette.set_pen_color(4, rgb_t(0x00, 0x00, 0x00));
	palette.set_pen_color(5, rgb_t(0x00, 0x00, 0x00));
	palette.set_pen_color(6, rgb_t(0xff, 0xff, 0xff));
	palette.set_pen_color(7, rgb_t(0xff, 0xff, 0xff));
	palette.set_pen_color(8, rgb_t(0xff, 0xff, 0xff));   // 4 color tiles
	palette.set_pen_color(9, rgb_t(0xb0, 0xb0, 0xb0));
	palette.set_pen_color(10,rgb_t(0x5f, 0x5f, 0x5f));
	palette.set_pen_color(11,rgb_t(0x00, 0x00, 0x00));
	palette.set_pen_color(12,rgb_t(0xff, 0xff, 0xff));
	palette.set_pen_color(13,rgb_t(0x5f, 0x5f, 0x5f));
	palette.set_pen_color(14,rgb_t(0xb0, 0xb0, 0xb0));
	palette.set_pen_color(15,rgb_t(0x00, 0x00, 0x00));
}


void dragrace_state::machine_start()
{
	m_gear_sel.resolve();
	m_tacho_sel.resolve();

	m_scan_timer = timer_alloc(FUNC(dragrace_state::scanline_irq), this);
	m_irq_off_timer = timer_alloc(FUNC(dragrace_state::irq_off), this);
	m_scan_timer->adjust(m_screen->time_until_pos(64));

	save_item(NAME(m_gear));
}

void dragrace_state::machine_reset()
{
	m_gear[0] = 0;
	m_gear[1] = 0;
}

void dragrace_state::dragrace(machine_config &config)
{
	// basic machine hardware
	M6800(config, m_maincpu, 12.096_MHz_XTAL / 12);
	m_maincpu->set_addrmap(AS_PROGRAM, &dragrace_state::main_map);

	WATCHDOG_TIMER(config, m_watchdog).set_vblank_count("screen", 8);

	TIMER(config, "frame_timer").configure_periodic(FUNC(dragrace_state::frame_callback), attotime::from_hz(60));

	// video hardware
	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
	m_screen->set_raw(12.096_MHz_XTAL / 2, 384, 0, 256, 262, 0, 240); // vertical timings determined by sync PROM
	m_screen->set_screen_update(FUNC(dragrace_state::screen_update));
	m_screen->set_palette("palette");

	GFXDECODE(config, m_gfxdecode, "palette", gfx_dragrace);
	PALETTE(config, "palette", FUNC(dragrace_state::palette), 16);

	// sound hardware
	SPEAKER(config, "lspeaker").front_left();
	SPEAKER(config, "rspeaker").front_right();

	DISCRETE(config, m_discrete, dragrace_discrete);
	m_discrete->add_route(0, "lspeaker", 1.0);
	m_discrete->add_route(1, "rspeaker", 1.0);

	f9334_device &latch_f5(F9334(config, "latch_f5")); // F5
	latch_f5.parallel_out_cb().set(FUNC(dragrace_state::speed1_w)).mask(0x1f); // set 3SPEED1-7SPEED1
	latch_f5.q_out_cb<5>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_EXPLODE1_EN>)); // Explosion1 enable
	latch_f5.q_out_cb<6>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_SCREECH1_EN>)); // Screech1 enable

	f9334_device &latch_a5(F9334(config, "latch_a5")); // A5
	latch_a5.q_out_cb<1>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_KLEXPL1_EN>)); // KLEXPL1 enable
	latch_a5.q_out_cb<3>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_MOTOR1_EN>)); // Motor1 enable
	latch_a5.q_out_cb<4>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_ATTRACT_EN>)); // Attract enable
	latch_a5.q_out_cb<5>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_LOTONE_EN>)); // LoTone enable
	latch_a5.q_out_cb<7>().set_output("led0"); // Player 1 Start Lamp

	f9334_device &latch_h5(F9334(config, "latch_h5")); // H5
	latch_h5.parallel_out_cb().set(FUNC(dragrace_state::speed2_w)).mask(0x1f); // set 3SPEED2-7SPEED2
	latch_h5.q_out_cb<5>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_EXPLODE2_EN>)); // Explosion2 enable
	latch_h5.q_out_cb<6>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_SCREECH2_EN>)); // Screech2 enable

	f9334_device &latch_e5(F9334(config, "latch_e5")); // E5
	latch_e5.q_out_cb<1>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_KLEXPL2_EN>)); // KLEXPL2 enable
	latch_e5.q_out_cb<3>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_MOTOR2_EN>)); // Motor2 enable
	latch_e5.q_out_cb<5>().set(m_discrete, FUNC(discrete_device::write_line<DRAGRACE_HITONE_EN>)); // HiTone enable
	latch_e5.q_out_cb<7>().set_output("led1"); // Player 2 Start Lamp
}


ROM_START( dragrace )
	ROM_REGION( 0x10000, "maincpu", 0 )
	ROM_LOAD( "8513.c1", 0x1000, 0x0800, CRC(543bbb30) SHA1(646a41d1124c8365f07a93de38af007895d7d263) )
	ROM_LOAD( "8514.a1", 0x1800, 0x0800, CRC(ad218690) SHA1(08ba5f4fa4c75d8dad1a7162888d44b3349cbbe4) )
	ROM_RELOAD(          0xf800, 0x0800 )

	ROM_REGION( 0x800, "tiles_2c", 0 )   // 2 color tiles
	ROM_LOAD( "8519dr.j0", 0x000, 0x200, CRC(aa221ba0) SHA1(450acbf349d77a790a25f3e303c31b38cc426a38) )
	ROM_LOAD( "8521dr.k0", 0x200, 0x200, CRC(0cb33f12) SHA1(d50cb55391aec03e064eecad1624d50d4c30ccab) )
	ROM_LOAD( "8520dr.r0", 0x400, 0x200, CRC(ee1ae6a7) SHA1(83491095260c8b7c616ff17ec1e888d05620f166) )

	ROM_REGION( 0x800, "tiles_4c", 0 )   // 4 color tiles
	ROM_LOAD( "8515dr.e0", 0x000, 0x200, CRC(9510a59e) SHA1(aea0782b919279efe55a07007bd55a16f7f59239) )
	ROM_LOAD( "8517dr.h0", 0x200, 0x200, CRC(8b5bff1f) SHA1(fdcd719c66bff7c4b9f3d56d1e635259dd8add61) )
	ROM_LOAD( "8516dr.l0", 0x400, 0x200, CRC(d1e74af1) SHA1(f55a3bfd7d152ac9af128697f55c9a0c417779f5) )
	ROM_LOAD( "8518dr.n0", 0x600, 0x200, CRC(b1369028) SHA1(598a8779982d532c9f34345e793a79fcb29cac62) )

	ROM_REGION( 0x100, "sync", 0 )  // sync prom located at L8, it's a 82s129
	ROM_LOAD( "l8.bin", 0x000, 0x100, CRC(3610b453) SHA1(9e33ee04f22a9174c29fafb8e71781fa330a7a08) )
ROM_END

} // anonymous namespace


GAMEL( 1977, dragrace, 0, dragrace, dragrace, dragrace_state, empty_init, 0, "Atari (Kee Games)", "Drag Race", MACHINE_SUPPORTS_SAVE, layout_dragrace )
*/ /* */ /* 26 May 2001 - changed galxwars input port so the new sets work */ /* */ /* 30 Jul 2001 - added sstrngr2 */ /* */ /* 17 Jul 2006 - schaser - connect up prom - fix dipswitches */ /* schasrcv (schasercv) - allow bottom line to show on screen */ /* */ /* */ /* 10 Sep 2006 - invadpt2 - add name reset button */ /* spcewars - add bitstream circuit, fix dipswitches */ /* */ /* */ /* 13 Dec 2006 - add PRELIMINARY sound support and documentation to: */ /* rollingc, spcenctr, gunfight, m4, gmissile, */ /* schasrcv (schasercv), 280zzzap, lagunar, lupin3, phantom2, */ /* blueshrk, desertgu, ballbomb, yosakdon/yosakdoa (yosakdona)*/ /* shuttlei, invrvnge/invrvnga (invrvngea). */ /* Documented indianbt sound. Removed NO_SOUND flag from */ /* cosmo and dogpatch as the sound was already working. */ /* [Robert] */ /* */ /* 02 May 2007 - Major clean-up of driver and video system */ /* */ /****************************************************************************/ #include "emu.h" #include "cpu/m6800/m6800.h" #include "cpu/i8085/i8085.h" #include "machine/mb14241.h" #include "sound/speaker.h" #include "includes/8080bw.h" #include "invrvnge.lh" #include "shuttlei.lh" #include "cosmicm.lh" /*******************************************************/ /* */ /* Games with additional sound / video hardware */ /* */ /*******************************************************/ static MACHINE_START( extra_8080bw ) { MACHINE_START_CALL(extra_8080bw_sh); MACHINE_START_CALL(extra_8080bw_vh); MACHINE_START_CALL(mw8080bw); } /*******************************************************/ /* */ /* Space Invaders CV Version (Taito) */ /* */ /*******************************************************/ static INPUT_PORTS_START( sicv ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(invaders_in1_control_r, NULL) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("IN2") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_DIPLOCATION("SW1:3") PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x08, "1000" ) PORT_DIPSETTING( 0x00, "1500" ) /* SW1:5,6,7: In OFF, PL2 can have no control of joystick, going auto left/right and other problems like no laser gun. Be sure these are always ON */ PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(invaders_in2_control_r, NULL) PORT_DIPLOCATION("SW1:5,6,7") /* Labeled as "FACTORY" */ PORT_DIPNAME( 0x80, 0x00, "Coin Info" ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) /* Dummy controls port, P1 */ INVADERS_CONTROL_PORT_P1 /* Dummy controls port, P2 */ INVADERS_CONTROL_PORT_P2 /* Dummy port for cocktail mode */ INVADERS_CAB_TYPE_PORT INPUT_PORTS_END /*******************************************************/ /* */ /* Space Invaders TV Version (Taito) */ /* */ /*******************************************************/ /* same as the CV version with a test mode switch */ static INPUT_PORTS_START( sitv ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN0") PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END /*******************************************************/ /* */ /* Alien Invasion */ /* */ /*******************************************************/ static INPUT_PORTS_START( alieninv ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPNAME( 0x02, 0x02, "Pence Coinage" ) PORT_DIPLOCATION("SW1:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_DIPLOCATION("SW1:3") /* Pence Coin */ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" ) /* Not bonus */ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_DIPLOCATION("SW1:5") PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:6") PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:7") PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, "2C/1C 50p/3C (+ Bonus Life)" ) PORT_DIPSETTING( 0x80, "1C/1C 50p/5C" ) /* Dummy port for cocktail mode */ INVADERS_CAB_TYPE_PORT INPUT_PORTS_END /*******************************************************/ /* */ /* Space Invaders Model Racing */ /* */ /*******************************************************/ static INPUT_PORTS_START( invadrmr ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, "1500" ) PORT_DIPSETTING( 0x08, "3000" ) /* This is different to invaders */ INPUT_PORTS_END /*******************************************************/ /* */ /* Midway "Space Invaders Part II" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( invadpt2_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(invadpt2_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END static INPUT_PORTS_START( invadpt2 ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN0") // Name Reset - if name of high scorer was rude, owner can press this button PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Name Reset") PORT_CODE(KEYCODE_F1) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) /* SW1:2 doesn't seem to work? */ PORT_DIPNAME( 0x02, 0x00, "Rotate Images" ) PORT_DIPLOCATION("SW1:2") /* "When ON, the images on screen will be rotated. Default is ON." */ PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, "Preset Mode" ) PORT_DIPLOCATION("SW1:4") /* Preset Mode: "Switch for checking, when OFF checking can be done." */ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) INPUT_PORTS_END /* same as regular invaders, but with a color board added */ static MACHINE_CONFIG_DERIVED_CLASS( invadpt2, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(invadpt2_io_map) MCFG_MACHINE_START(extra_8080bw) /* 60 Hz signal clocks two LS161. Ripple carry will */ /* reset circuit, if LS161 not cleared before. */ MCFG_WATCHDOG_VBLANK_INIT(255) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(invadpt2) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Space Wars (Sanritsu) */ /* */ /*******************************************************/ static ADDRESS_MAP_START( spcewars_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(spcewars_sh_port_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) ADDRESS_MAP_END static INPUT_PORTS_START( spcewars ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, "1500" ) PORT_DIPSETTING( 0x08, "2000" ) /* Dummy port for cocktail mode (not used) */ PORT_MODIFY(INVADERS_CAB_TYPE_PORT_TAG) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( spcewars, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(spcewars_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) /* extra audio channel */ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Astro Sidam? */ /* */ /*******************************************************/ static ADDRESS_MAP_START( astropal_io_map, AS_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0x7) AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_READ_PORT("IN1") AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN3") AM_RANGE(0x03, 0x03) AM_DEVWRITE("discrete", invaders_audio_1_w) AM_RANGE(0x05, 0x05) AM_DEVWRITE("discrete", invaders_audio_2_w) AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END static INPUT_PORTS_START( astropal ) PORT_START("IN0") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_DIPSETTING( 0x03, "5" ) PORT_BIT( 0xfc, IP_ACTIVE_LOW, IPT_UNUSED ) /* never read */ PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* PORT_START("IN2") - never read */ PORT_START("IN3") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) /* Dummy port for cocktail mode (not used) */ INVADERS_CAB_TYPE_PORT PORT_MODIFY(INVADERS_CAB_TYPE_PORT_TAG) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED( astropal, invaders ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(astropal_io_map) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Cosmo */ /* */ /*******************************************************/ static ADDRESS_MAP_START( cosmo_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) AM_RANGE(0x4000, 0x57ff) AM_ROM AM_RANGE(0x5c00, 0x5fff) AM_RAM AM_BASE_MEMBER(_8080bw_state, m_colorram) ADDRESS_MAP_END /* at least one of these MWA8_NOPs must be sound related */ static ADDRESS_MAP_START( cosmo_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITENOP AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_WRITENOP AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITENOP AM_RANGE(0x03, 0x03) AM_WRITE(invadpt2_sh_port_1_w) AM_RANGE(0x05, 0x05) AM_WRITE(cosmo_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) AM_RANGE(0x07, 0x07) AM_WRITENOP ADDRESS_MAP_END static INPUT_PORTS_START( cosmo ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" ) PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" ) /* must be HIGH normally or the joystick won't work */ INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( cosmo, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(cosmo_map) MCFG_CPU_IO_MAP(cosmo_io_map) MCFG_MACHINE_START(extra_8080bw) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(cosmo) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* ?????? "Super Earth Invasion" */ /* */ /*******************************************************/ static INPUT_PORTS_START( searthin ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPNAME( 0x02, 0x02, "Pence Coinage" ) PORT_DIPLOCATION("SW1:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_DIPLOCATION("SW1:3") /* Pence Coin */ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW1:4" ) /* Not bonus */ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, "2C/1C 50p/3C (+ Bonus Life)" ) PORT_DIPSETTING( 0x80, "1C/1C 50p/5C" ) INPUT_PORTS_END /*******************************************************/ /* */ /* ?????? "Space Attack II" */ /* */ /*******************************************************/ static INPUT_PORTS_START( spaceatt ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x00, "SW1:5" ) PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x00, "SW1:6" ) PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x00, "SW1:7" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) /* Dummy port for cocktail mode (not used) */ PORT_MODIFY(INVADERS_CAB_TYPE_PORT_TAG) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END /*******************************************************/ /* */ /* Zenitone Microsec "Invaders Revenge" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( invrvnge_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(invrvnge_sh_port_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) ADDRESS_MAP_END static INPUT_PORTS_START( invrvnge ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_DIPLOCATION("SW1:3") PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_DIPLOCATION("SW1:5") PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:6") PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:7") PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) /* Dummy port for cocktail mode */ INVADERS_CAB_TYPE_PORT INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( invrvnge, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(invrvnge_io_map) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Space Laser" */ /* */ /*******************************************************/ static INPUT_PORTS_START( spclaser ) PORT_INCLUDE( invrvnge ) PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) //PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2) /* This is not 2 Player ??? */ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // PORT_START("IN2") /* referenced by invaders_io_map, used in several drivers; this is fairly hacky */ // PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x00, "SW1:1" ) PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x00, "SW1:2" ) PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR(Coinage) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, "1 Coin/1 Or 2 Players" ) PORT_DIPSETTING( 0x80, "1 Coin/1 Player 2 Coins/2 Players" ) /* Irrelevant, causes bugs */ /* Dummy port for cocktail mode (not used) */ PORT_MODIFY(CABINET_PORT_TAG) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END /*******************************************************/ /* */ /* Taito "Galaxy Wars" */ /* */ /*******************************************************/ static INPUT_PORTS_START( galxwars ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN0") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* must be IP_ACTIVE_LOW for Universal Sets */ PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_DIPSETTING( 0x03, "5" ) PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, "3000" ) PORT_DIPSETTING( 0x08, "5000" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) INPUT_PORTS_END /*******************************************************/ /* */ /* Taito "Lunar Rescue" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( lrescue_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(lrescue_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(lrescue_sh_port_2_w) ADDRESS_MAP_END static INPUT_PORTS_START( lrescue ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") /* SW1:3-8 Unused according to manual: "Factory Adjustments". Default is ON. */ PORT_DIPUNUSED_DIPLOC( 0x08, 0x00, "SW1:4" ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( lrescue, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(lrescue_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(invadpt2) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SAMPLES_ADD("samples", lrescue_samples_interface) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) /* extra audio channel */ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Universal "Cosmic Monsters" */ /* */ /*******************************************************/ static INPUT_PORTS_START( cosmicmo ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_DIPSETTING( 0x03, "5" ) PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) INPUT_PORTS_END /*******************************************************/ /* */ /* Sidam "Invasion" */ /* */ /*******************************************************/ static INPUT_PORTS_START( invasion ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_MODIFY("IN2") /* SW1:5-8 Unused according to manual. */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:4,3") /* Default is OFF, OFF (6) */ PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW1:8" ) /* Default OFF */ PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:2") /* Default is ON (2500) */ PORT_DIPSETTING( 0x08, "1500" ) PORT_DIPSETTING( 0x00, "2500" ) /* SW1:5,6,7 Default ON */ PORT_DIPNAME( 0x80, 0x80, "Laser Bonus Info" ) PORT_DIPLOCATION("SW1:1") /* Default is OFF (Info on) */ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END /*******************************************************/ /* */ /* bootleg "Super Invaders" */ /* */ /*******************************************************/ static INPUT_PORTS_START( superinv ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x08, "1500" ) PORT_DIPSETTING( 0x00, "2500" ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END /*******************************************************/ /* */ /* Nichibutsu "Rolling Crash" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( rollingc_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) AM_RANGE(0x4000, 0x5fff) AM_ROM AM_RANGE(0xa000, 0xbfff) AM_MIRROR(0x00e0) AM_RAM AM_BASE_MEMBER(_8080bw_state, m_colorram) AM_RANGE(0xe400, 0xffff) AM_RAM ADDRESS_MAP_END static ADDRESS_MAP_START( rollingc_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(rollingc_sh_port_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) ADDRESS_MAP_END static INPUT_PORTS_START( rollingc ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN0") /* Duplicate control required (both must be mapped to same key for input to work for game select and in-game) */ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) /* Game Select */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) /* Game Select */ PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" ) /* Dummy port for cocktail mode (not used) */ PORT_MODIFY(CABINET_PORT_TAG) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( rollingc, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(rollingc_map) MCFG_CPU_IO_MAP(rollingc_io_map) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(rollingc) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Space Chaser" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( schaser_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) AM_RANGE(0x4000, 0x5fff) AM_ROM AM_RANGE(0xc000, 0xdfff) AM_MIRROR(0x0060) AM_RAM AM_BASE_MEMBER(_8080bw_state, m_colorram) ADDRESS_MAP_END static ADDRESS_MAP_START( schaser_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(schaser_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(schaser_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END static INPUT_PORTS_START( schaser ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x00, "SW1:5" ) PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x00, "SW1:7" ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_START("IN2") // port 2 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) // Name Reset - if name of high scorer was rude, owner can press this button PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Name Reset") PORT_CODE(KEYCODE_F1) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT ) PORT_DIPNAME( 0x40, 0x00, "Number Of Controllers" ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x40, "2" ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // port 3 (all 8 bits) connected to custom chip MB14241 driven by out port 2 and 4 // To get cocktail mode, turn this on, and choose 2 controllers. PORT_START(CABINET_PORT_TAG) /* Dummy port for cocktail mode */ PORT_CONFNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_CONFSETTING( 0x00, DEF_STR( Upright ) ) PORT_CONFSETTING( 0x01, DEF_STR( Cocktail ) ) PORT_START("VR1") PORT_ADJUSTER( 70, "VR1 - Music Volume" ) PORT_START("VR2") PORT_ADJUSTER( 90, "VR2 - Explosion/Effect Volume" ) PORT_START("VR3") PORT_ADJUSTER( 70, "VR3 - Dot Volume" ) INPUT_PORTS_END static MACHINE_START( schaser ) { MACHINE_START_CALL(schaser_sh); MACHINE_START_CALL(extra_8080bw_vh); MACHINE_START_CALL(mw8080bw); } static MACHINE_RESET( schaser ) { MACHINE_RESET_CALL(schaser_sh); MACHINE_RESET_CALL(mw8080bw); } static MACHINE_CONFIG_DERIVED_CLASS( schaser, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu",I8080,1996800) /* 19.968MHz / 10 */ MCFG_CPU_PROGRAM_MAP(schaser_map) MCFG_CPU_IO_MAP(schaser_io_map) MCFG_WATCHDOG_VBLANK_INIT(255) MCFG_MACHINE_START(schaser) MCFG_MACHINE_RESET(schaser) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(schaser) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("snsnd", SN76477, 0) MCFG_SOUND_CONFIG(schaser_sn76477_interface) MCFG_SOUND_ROUTE_EX(0, "discrete", 1.0, 0) MCFG_SOUND_ADD("discrete", DISCRETE, 0) MCFG_SOUND_CONFIG_DISCRETE(schaser) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Space Chaser" (CV version) */ /* */ /*******************************************************/ static ADDRESS_MAP_START( schasercv_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(schasercv_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(schasercv_sh_port_2_w) ADDRESS_MAP_END static INPUT_PORTS_START( schasercv ) PORT_INCLUDE( invrvnge ) PORT_MODIFY("IN1") PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_MODIFY("IN2") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:2") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:3") PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_DIPLOCATION("SW1:5") PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:6") PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_PLAYER(2) PORT_DIPLOCATION("SW1:7") PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( schasercv, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(schaser_map) MCFG_CPU_IO_MAP(schasercv_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(schasercv) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Straight Flush" */ /* */ /*******************************************************/ static CUSTOM_INPUT( sflush_80_r ) { return (field.machine().primary_screen->vpos() & 0x80) ? 1 : 0; } static ADDRESS_MAP_START( sflush_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_RAM AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) AM_RANGE(0x8008, 0x8008) AM_READ_PORT("PADDLE") AM_RANGE(0x8009, 0x8009) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_RANGE(0x800a, 0x800a) AM_READ_PORT("IN2") AM_RANGE(0x800b, 0x800b) AM_READ_PORT("IN0") AM_RANGE(0x8018, 0x8018) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x8019, 0x8019) AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x801a, 0x801a) AM_WRITENOP AM_RANGE(0x801c, 0x801c) AM_WRITENOP AM_RANGE(0x801d, 0x801d) AM_WRITENOP AM_RANGE(0xa000, 0xbfff) AM_MIRROR(0x0060) AM_RAM AM_BASE_MEMBER(_8080bw_state, m_colorram) AM_RANGE(0xd800, 0xffff) AM_ROM ADDRESS_MAP_END static INPUT_PORTS_START( sflush ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_TILT ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) ) PORT_DIPSETTING( 0x80, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) PORT_START("IN2") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_DIPNAME( 0x08, 0x00, "Hiscore" ) PORT_DIPSETTING( 0x00, "0" ) PORT_DIPSETTING( 0x08, "30 000" ) PORT_DIPNAME( 0x40, 0x00, "Coinage Display" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(sflush_80_r, NULL) // 128V? PORT_START("PADDLE") PORT_BIT( 0xff, 0x6a, IPT_PADDLE ) PORT_MINMAX(0x16,0xbf) PORT_SENSITIVITY(30) PORT_KEYDELTA(30) PORT_CENTERDELTA(0) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( sflush, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu",M6800,1500000) // ? MCFG_CPU_PROGRAM_MAP(sflush_map) MCFG_CPU_VBLANK_INT("screen",irq0_line_hold) MCFG_MACHINE_START(mw8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(sflush) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Lupin III" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( lupin3_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(lupin3_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(lupin3_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END static INPUT_PORTS_START( lupin3 ) PORT_INCLUDE( invrvnge ) PORT_MODIFY("IN0") PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_MODIFY("IN2") PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3") PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) ) PORT_DIPNAME( 0x08, 0x00, "Bags To Collect" ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x00, "8" ) PORT_DIPUNUSED_DIPLOC( 0x10, 0x00, "SW1:5" ) PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW1:6" ) PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW1:7" ) PORT_DIPNAME(0x80, 0x00, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( lupin3a ) PORT_INCLUDE( invrvnge ) PORT_MODIFY("IN0") //PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* selects color mode (dynamic vs. static) */ //PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* something has to do with sound */ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_COCKTAIL PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_MODIFY("IN2") PORT_DIPNAME( 0x04, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3") PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x04, DEF_STR( Cocktail ) ) PORT_DIPNAME( 0x08, 0x00, "Bags To Collect" ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x00, "8" ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Language ) ) PORT_DIPLOCATION("SW1:5") PORT_DIPSETTING( 0x00, DEF_STR( English ) ) PORT_DIPSETTING( 0x10, DEF_STR( Japanese ) ) PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW1:6" ) PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW1:7" ) PORT_DIPNAME(0x80, 0x00, "Invulnerability (Cheat)") PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( lupin3, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(lupin3_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(indianbt) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED_CLASS( lupin3a, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(schaser_map) MCFG_CPU_IO_MAP(lupin3_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(lupin3) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Polaris" */ /* */ /*******************************************************/ static INTERRUPT_GEN( polaris_interrupt ) { _8080bw_state *state = device->machine().driver_data<_8080bw_state>(); state->m_polaris_cloud_speed++; if (state->m_polaris_cloud_speed >= 4) /* every 4 frames - this was verified against real machine */ { state->m_polaris_cloud_speed = 0; state->m_polaris_cloud_pos++; } } static MACHINE_START( polaris ) { _8080bw_state *state = machine.driver_data<_8080bw_state>(); state->save_item(NAME(state->m_polaris_cloud_speed)); state->save_item(NAME(state->m_polaris_cloud_pos)); MACHINE_START_CALL(mw8080bw); } // Port 5 is used to reset the watchdog timer. // This port is also written to when the boss plane is going up and down. // If you write this value to a note ciruit similar to the music, // you will get a nice sound that accurately follows the plane. // It sounds better then the actual circuit used. // Probably an unfinished feature. static ADDRESS_MAP_START( polaris_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("discrete", polaris_sh_port_1_w) AM_RANGE(0x03, 0x03) AM_DEVREADWRITE("mb14241", mb14241_shift_result_r, mb14241_shift_data_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("discrete", polaris_sh_port_2_w) AM_RANGE(0x05, 0x05) AM_WRITE(watchdog_reset_w) AM_RANGE(0x06, 0x06) AM_DEVWRITE("discrete", polaris_sh_port_3_w) ADDRESS_MAP_END static INPUT_PORTS_START( polaris ) PORT_INCLUDE( schaser ) PORT_MODIFY("IN0") PORT_DIPUNUSED_DIPLOC( 0x01, 0x00, "SW?:1" ) PORT_DIPUNUSED_DIPLOC( 0x02, 0x00, "SW?:2" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_MODIFY("IN2") /* 0x04 should be Cabinet - Upright/Cocktail, but until the cocktail hack is changed, this will have to do. */ PORT_DIPNAME( 0x04, 0x00, "Number Of Controls" ) PORT_DIPLOCATION("SW1:3") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x04, "2" ) PORT_DIPNAME( 0x08, 0x00, "Invincible Test" ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) /* The Demo Sounds dip switch does function. It allows the sonar sounds to play in demo mode. */ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:5") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPUNUSED_DIPLOC( 0x20, 0x00, "SW1:6" ) PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "SW1:7" ) PORT_DIPNAME( 0x80, 0x00, "High Score Preset Mode" ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_MODIFY("VR1") PORT_ADJUSTER( 80, "Sub Volume VR1" ) PORT_MODIFY("VR2") PORT_ADJUSTER( 70, "Sub Volume VR2" ) PORT_MODIFY("VR3") PORT_ADJUSTER( 90, "Sub Volume VR3" ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( polaris, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_REPLACE("maincpu",I8080,1996800) /* 19.968MHz / 10 */ MCFG_CPU_PROGRAM_MAP(schaser_map) MCFG_CPU_IO_MAP(polaris_io_map) MCFG_WATCHDOG_VBLANK_INIT(255) MCFG_CPU_VBLANK_INT("screen", polaris_interrupt) MCFG_MACHINE_START(polaris) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(polaris) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD("discrete", DISCRETE, 0) MCFG_SOUND_CONFIG_DISCRETE(polaris) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Ozma Wars" */ /* */ /*******************************************************/ static INPUT_PORTS_START( ozmawars ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x03, 0x00, "Energy" ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "15000" ) PORT_DIPSETTING( 0x01, "20000" ) PORT_DIPSETTING( 0x02, "25000" ) PORT_DIPSETTING( 0x03, "35000" ) PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPNAME( 0x08, 0x00, "Bonus Energy" ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x00, "15000" ) PORT_DIPSETTING( 0x08, "10000" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) ) INPUT_PORTS_END static INPUT_PORTS_START( spaceph ) PORT_INCLUDE( ozmawars ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END /*******************************************************/ /* */ /* Emag "Super Invaders" */ /* */ /*******************************************************/ static INPUT_PORTS_START( sinvemag ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x08, "2000" ) PORT_DIPSETTING( 0x00, "3000" ) INPUT_PORTS_END /*******************************************************/ /* */ /* Jatre Specter (Taito?) */ /* */ /*******************************************************/ static INPUT_PORTS_START( jspecter ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x00, "SW1:3" ) INPUT_PORTS_END /*******************************************************/ /* */ /* Taito "Balloon Bomber" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( ballbomb_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(ballbomb_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(ballbomb_sh_port_2_w) ADDRESS_MAP_END static INPUT_PORTS_START( ballbomb ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_MODIFY("IN2") PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" ) PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x00, "SW1:8" ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( ballbomb, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(ballbomb_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(ballbomb) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Wing "Yosaku To Donbei" */ /* */ /*******************************************************/ static ADDRESS_MAP_START( yosakdon_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) AM_RANGE(0x4000, 0x43ff) AM_WRITEONLY /* what's this? */ ADDRESS_MAP_END static ADDRESS_MAP_START( yosakdon_io_map, AS_IO, 8 ) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN1") AM_RANGE(0x03, 0x03) AM_WRITE(yosakdon_sh_port_1_w) AM_RANGE(0x05, 0x05) AM_WRITE(yosakdon_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITENOP /* character numbers */ ADDRESS_MAP_END static INPUT_PORTS_START( yosakdon ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(invaders_in1_control_r, NULL) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_START("IN1") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x70, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(invaders_in2_control_r, NULL) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) /* Dummy controls port, P1 */ INVADERS_CONTROL_PORT_P1 /* Dummy port for cocktail mode (not used) */ PORT_START(CABINET_PORT_TAG) PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( yosakdon, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(yosakdon_map) MCFG_CPU_IO_MAP(yosakdon_io_map) MCFG_MACHINE_START(extra_8080bw) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Indian battle" */ /* */ /*******************************************************/ static INPUT_PORTS_START( indianbt ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN2") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "5" ) PORT_DIPSETTING( 0x03, "6" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_DIPNAME( 0x08, 0x00, "Number of Catch Animals" ) PORT_DIPSETTING( 0x00, "6" ) PORT_DIPSETTING( 0x08, "3" ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_DIPNAME(0x80, 0x00, "Invulnerability (Cheat)") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START(CABINET_PORT_TAG) /* Dummy port for cocktail mode */ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END /* Protection / sound hw checks ? ld a ,$b out ($03),a out ($01),a in a,($00) and $f0 cp $10 jp nz,$3000 ld a,$03 out ($03),a out ($01),a in a,($00) jp $5de7 and $f0 jp z,$052b jp $3000 */ static READ8_HANDLER(indianbt_r) { switch(cpu_get_pc(&space->device())) { case 0x5fed: return 0x10; case 0x5ffc: return 0; } logerror("unknown port 0 read @ %x\n",cpu_get_pc(&space->device())); return space->machine().rand(); } static ADDRESS_MAP_START( indianbt_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ(indianbt_r) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN0") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(indianbt_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(indianbt_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITENOP /* sound ? */ AM_RANGE(0x07, 0x07) AM_DEVWRITE("discrete", indianbt_sh_port_3_w) ADDRESS_MAP_END static MACHINE_CONFIG_DERIVED_CLASS( indianbt, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(indianbt_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(indianbt) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MCFG_SOUND_ADD("discrete", DISCRETE, 0) MCFG_SOUND_CONFIG_DISCRETE(indianbt) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_CONFIG_END /*******************************************************/ /* */ /* Taito "Steel Worker" */ /* */ /*******************************************************/ static WRITE8_HANDLER( steelwkr_sh_port_3_w ) { coin_lockout_global_w(space->machine(), !(~data & 0x03)); /* possibly */ } static ADDRESS_MAP_START( steelwkr_io_map, AS_IO, 8 ) AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1") AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_WRITE(invadpt2_sh_port_1_w) AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x05, 0x05) AM_WRITE(invadpt2_sh_port_2_w) AM_RANGE(0x06, 0x06) AM_WRITE(steelwkr_sh_port_3_w) ADDRESS_MAP_END static INPUT_PORTS_START( steelwkr ) /* PORT_START("IN0") - never read */ PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_START("IN2") PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x01, "2" ) PORT_DIPSETTING( 0x02, "3" ) PORT_DIPSETTING( 0x03, "4" ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT ) PORT_DIPLOCATION("SW1:3") PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x00, "SW1:4" ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) /* Dummy port for cocktail mode */ INVADERS_CAB_TYPE_PORT INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( steelwkr, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(steelwkr_io_map) MCFG_MACHINE_START(extra_8080bw) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(invadpt2) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /***************************************************** Omori "Shuttle Invader" ?? 8080 CPU 1x SN76477 g 2x SN75452 4x 8216 RAM 2x TMS4045 RAM 16x MCM4027 RAM 1x empty small socket. maybe (missing) PROM? 1x 8 position dipsw 1x 556 1x 458 1x lm380 (amp chip) xtal 18MHz xtal 5.545MHz ******************************************************/ static INPUT_PORTS_START( shuttlei ) PORT_START("DSW") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPNAME( 0x06, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_DIPSETTING( 0x04, "5" ) PORT_DIPSETTING( 0x06, "6" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("INPUTS") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_VBLANK ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) INPUT_PORTS_END // 'no 1' which is displayed before each player plays actually refers to the wave number, not the player number! static INPUT_PORTS_START( skylove ) PORT_START("DSW") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPNAME( 0x06, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x02, "4" ) PORT_DIPSETTING( 0x04, "5" ) PORT_DIPSETTING( 0x06, "6" ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("INPUTS") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) // must be off to boot PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_VBLANK ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(1) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(1) INPUT_PORTS_END static ADDRESS_MAP_START( shuttlei_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("share1") // shuttlei AM_RANGE(0x6000, 0x63ff) AM_RAM AM_SHARE("share1") // skylove (is it mirrored, or different PCB hookup?) ADDRESS_MAP_END static ADDRESS_MAP_START( shuttlei_io_map, AS_IO, 8 ) AM_RANGE(0xfc, 0xfc) AM_WRITENOP /* game writes 0xAA every so often (perhaps when base hit?) */ AM_RANGE(0xfd, 0xfd) AM_WRITE(shuttlei_sh_port_1_w) AM_RANGE(0xfe, 0xfe) AM_READ_PORT("DSW") AM_WRITE(shuttlei_sh_port_2_w) AM_RANGE(0xff, 0xff) AM_READ_PORT("INPUTS") // port fd (write) is for sound ADDRESS_MAP_END static MACHINE_CONFIG_DERIVED_CLASS( shuttlei, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(shuttlei_map) MCFG_CPU_IO_MAP(shuttlei_io_map) MCFG_MACHINE_START(extra_8080bw) /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1) MCFG_SCREEN_UPDATE_STATIC(shuttlei) /* sound hardware */ MCFG_FRAGMENT_ADD(invaders_samples_audio) MACHINE_CONFIG_END /* ------------------------------------ Darth Vader - Space Invaders bootleg ------------------------------------ Location Device File ID Checksum -------------------------------------------- 0 2708 ROM0 6F9A 1 2708 ROM1 7D2A 2 2708 ROM2 67AA 3 2708 ROM3 7D8D 4 2708 ROM4 493D 5 2708 ROM5 12CE Notes: PCB No. DV-SI-7811M2a CPU - 8080 Another (same checksums) dump came from board labeled SI-7811M-2 */ static MACHINE_START( darthvdr ) { /* do nothing for now - different interrupt system */ } static MACHINE_RESET( darthvdr ) { /* do nothing for now - different interrupt system */ } static ADDRESS_MAP_START( darthvdr_map, AS_PROGRAM, 8 ) AM_RANGE(0x0000, 0x17ff) AM_ROM AM_RANGE(0x1800, 0x1fff) AM_RAM AM_RANGE(0x4000, 0x5fff) AM_RAM AM_BASE_SIZE_MEMBER(_8080bw_state, m_main_ram, m_main_ram_size) ADDRESS_MAP_END static ADDRESS_MAP_START( darthvdr_io_map, AS_IO, 8 ) AM_RANGE(0x00, 0x00) AM_READ_PORT("P1") AM_RANGE(0x01, 0x01) AM_READ_PORT("P2") AM_RANGE(0x00, 0x0f) AM_WRITENOP ADDRESS_MAP_END static INPUT_PORTS_START( darthvdr ) PORT_START("P1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "4" ) PORT_DIPSETTING( 0x80, "6" ) PORT_START("P2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) /* Dummy port for cocktail mode */ INVADERS_CAB_TYPE_PORT INPUT_PORTS_END static MACHINE_CONFIG_DERIVED_CLASS( darthvdr, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(darthvdr_map) MCFG_CPU_IO_MAP(darthvdr_io_map) MCFG_CPU_VBLANK_INT("screen", irq0_line_hold) MCFG_MACHINE_START(darthvdr) MCFG_MACHINE_RESET(darthvdr) MACHINE_CONFIG_END /************************************* * * Vortex (by Zilec AKA Zenitone-Microsec) * Runs on Space Invaders CV (color)/PV (part 2) board with * some color mods, and an epoxy brick for rom encryption * see below for decryption function (A0, A3, A9 invert) * It uses its own I/O function since A9 is inverted (and A9 mirrors A1 for I/O) * *************************************/ static ADDRESS_MAP_START( vortex_io_map, AS_IO, 8 ) // I/O map is same as invaders but with A9 (used as A1 for I/O) inverted ADDRESS_MAP_GLOBAL_MASK(0xFF) AM_RANGE(0x02, 0x02) AM_MIRROR(0x04) AM_READ_PORT("IN0") AM_RANGE(0x03, 0x03) AM_MIRROR(0x04) AM_READ_PORT("IN1") AM_RANGE(0x00, 0x00) AM_MIRROR(0x04) AM_READ_PORT("IN2") AM_RANGE(0x01, 0x01) AM_MIRROR(0x04) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_RANGE(0x00, 0x00) AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x01, 0x01) AM_DEVWRITE("discrete", invaders_audio_1_w) AM_RANGE(0x06, 0x06) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x07, 0x07) AM_DEVWRITE("discrete", invaders_audio_2_w) AM_RANGE(0x04, 0x04) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END static INPUT_PORTS_START( vortex ) PORT_INCLUDE( sicv ) PORT_MODIFY("IN1") PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_MODIFY("IN2") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) INPUT_PORTS_END MACHINE_CONFIG_DERIVED_CLASS( vortex, mw8080bw_root, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(vortex_io_map) MCFG_MACHINE_START(extra_8080bw) MCFG_WATCHDOG_TIME_INIT(attotime::from_usec(255000000 / (MW8080BW_PIXEL_CLOCK / MW8080BW_HTOTAL / MW8080BW_VTOTAL))) /* video hardware */ // TODO: replace with modified invaders color renderer code allowing midscanline color writes MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(invaders) /* add shifter */ MCFG_MB14241_ADD("mb14241") /* audio hardware */ MCFG_FRAGMENT_ADD(invaders_audio) MACHINE_CONFIG_END /* decrypt function for vortex */ static DRIVER_INIT( vortex ) { UINT8 *rom = machine.region("maincpu")->base(); int length = machine.region("maincpu")->bytes(); UINT8 *buf1 = auto_alloc_array(machine, UINT8, length); UINT32 x; for (x = 0; x < length; x++) { UINT32 addr = x; /* A15 A14 A13 A0 A3 A9 0 0 0 I I I 0 0 1 I I I 0 1 0 N N N 0 1 1 N I I 1 0 0 N I I 1 0 1 N I I 1 1 0 N I I 1 1 1 N I I */ switch (x&0xE000) // inputs are A13 A14 A15 { case 0x0000: case 0x2000: // A0 A3 A9 addr ^= 0x0209; break; case 0x4000: // none, but doesn't decode right with none addr ^= 0x0209; // hack: this doesn't match schematic but gets code running. Why does this work? Is there something I'm not undertstanding about how the memory_region maps? or was the zilec/zinitone-microsec epoxy brick simply a bad design which is always stuck on the 0x0000 encryption no matter what? break; case 0x6000: case 0x8000: case 0xa000: case 0xc000: case 0xe000: // A3 and A9 addr ^= 0x0208; break; /* case 0x0000: case 0x2000: // A0 A3 A9 addr ^= 0x0001; break; case 0x4000: addr ^= 0x0208; break; case 0x6000: case 0x8000: case 0xa000: case 0xc000: case 0xe000: break;*/ } buf1[addr] = rom[x]; } memcpy(rom, buf1, length); auto_free(machine, buf1); } /* unknown gun game by Model Racing, possibly Gun Champ? BOARD 1: _________________________________________________________________________________________________________________________________ | 12 13 14 15 16 17 18 19 | | _________ _______ ___ ___ ___ ___ ___ ___ ___ ___ | |___ 11 |74LS241N | |74LS159| |AM9| |AM9| |AM9| |AM9| |AM9| |AM9| |AM9| |AM9| | | _| |_________| |_______| |060| |060| |060| |060| |060| |060| |060| |060| | | _| _____________ |CPC| |CPC| |CPC| |CPC| |CPC| |CPC| |CPC| |CPC| | | _| |258 | | | | | | | | | | | | | | | | | | | _| | | _________ _______ | | | | | | | | | | | | | | | | | | _| 10 | 2708| |74LS241N | |74LS153| | | | | | | | | | | | | | | | | | | _| |_____________| |_________| |_______| | | | | | | | | | | | | | | | | | | _| |___| |___| |___| |___| |___| |___| |___| |___| | | _| _____________ | | _| |257 | _______ _______ | | _| 9 | | |74LS174| |74LS153| __| | _| | 2708| |_______| |_______| ___ ___ ___ ___ ___ ___ ___ ___ | | _| |_____________| |AM9| |AM9| |AM9| |AM9| |AM9| |AM9| |AM9| |AM9| |__ | _| |060| |060| |060| |060| |060| |060| |060| |060| =| | _| _____________ _______ _______ |CPC| |CPC| |CPC| |CPC| |CPC| |CPC| |CPC| |CPC| =| | _| 8 |256 | |74LS174| |74LS153| | | | | | | | | | | | | | | | | =| | _| | | |_______| |_______| | | | | | | | | | | | | | | | | =| | _| | 2708| | | | | | | | | | | | | | | | | =| | _| |_____________| | | | | | | | | | | | | | | | | =| | _| _______ _______ |___| |___| |___| |___| |___| |___| |___| |___| =| |___| 7 _____________ |74LS166| |74LS174| =| | |255 | |_______| |_______| =| | | | =| | | 2708| _______ _______ =| | 6 |_____________| |74LS86 | | 74LS04| =| | |_______| |_______| =| |___ _____________ =| | _| |254 | _______ _______ _______ _______ _______ _______ _______ =| | _| | | |74LS00N| |SN7404N| |74LS74 | |74LS157| |74LS157| |74LS157| |74LS157| 5 =| | _| | 2708| |_______| |_______| |_______| |_______| |_______| |_______| |_______| =| | _| |_____________| =| | _| _________ _________ _______ _______ _______ _______ =| | _| _____________ |74LS244N | |74LS244N | |74161N | |74161N | |74161N | |74161N | 4 __| | _| |253 | |_________| |_________| |_______| |_______| |_______| |_______| | | _| | | |__ | _| | 2708| | | _| |_____________| _______ _______ _______ _______ | | _| |74LS04N| |SN7474N| |74LS04N| |74160N | 3 | | _| _____________ _____________________ |_______| |_______| |_______| |_______| | | _| |252 | | 341 | .XTAL. | | _| | | _______ | INS8080AD | _______ _______ _______ _______ | | _| | 2708| |74LS42 | | C8080A | |74LS00 | |74LS55 | |74LS00 | |74LS42 | 2 | | _| |_____________| |_______| |_____________________| |_______| |_______| |_______| |_______| | | _| | | _| _____________ _______ _______ _______ _______ | | _| |251 | |74LS02N| |74LS20N| |75365N | |SN7474N| 1 | | _| | | |_______| |_______| |_______| |_______| | |___| | 2708| | | |_____________| Model Racing | | CS235 A | | A B C D E F G H | |_________________________________________________________________________________________________________________________________| XTAL=19,66080MHz BOARD 2: _________________________________________________________________________________________________________________________________ | | | _______ _______ _______ _______ _________ | |___ 11 |74LS175| |74LS151| |74LS151| |74LS153| |74LS244N | Model | | _| |_______| |_______| |_______| |_______| |_________| Racing | | _| | | _| CS 238A | | _| _______ _______ _______ _______ | | _| 10 |74LS174| |74LS151| |74LS151| |74LS153| | | _| |_______| |_______| |_______| |_______| | | _| | | _| | | _| _______ _______ _______ _______ ____________ | | _| |74LS174| |74LS151| |74LS151| |74LS153| 9 | | __| | _| |_______| |_______| |_______| |_______| | | | | _| | | |__ | _| | | =| | _| _______ _______ _______ _______ | | =| | _| |74LS174| |74LS151| |74LS151| |74LS153| 8 | | =| | _| |_______| |_______| |_______| |_______| | | =| | _| | | =| | _| | | =| | _| _______ _______ _______ _______ | UNKNOWN | =| |___| |74LS273| |74LS175| |74LS14N| |74LS42N| 7 | | =| | |_______| |_______| |_______| |_______| | | =| | | | =| | | | =| | | | =| | | | _______ =| |___ _______ _______ _______ _________ | | |CA8100 | 6 =| | _| |74LS161| |74LS74A| |74LS161| |74LS374N | 5 | | |_______| =| | _| |_______| |_______| |_______| |_________| | | =| | _| | | =| | _| |____________| =| | _| _______ _______ _______ _________ =| | _| |74LS161| |74LS00 | |74LS161| |74LS374N | 4 =| | _| |_______| |_______| |_______| |_________| =| | _| =| | _| =| | _| _______ _______ ______________ _______ ____ __| | _| 3 |74LS14N| |74LS74A| | SN76477N | |74LS107| |DIP1| | | _| |_______| |_______| | 7923XY | |_______| |____| |__ | _| | SINGAPORE | | | _| |______________| | | _| _______ _______ _______ _______ _______ | | _| 2 |74LS26 | |74LS00N| |CD4016B| |74LS221| |74LS00N| | | _| |_______| |_______| |_______| |_______| |_______| | | _| | | _| NE555P | | _| _______ _______ _______ ___ _______ _______ | |___| 1 |74LS74A| |74LS74A| |74LS74A| | | |74LS90N| |74LS14N| | | |_______| |_______| |_______| |___| |_______| |_______| | | | | P R S T U V W X | |_________________________________________________________________________________________________________________________________| */ // the invaders shifter stuff doesn't seem correct for this, if i hook up the count_w the gfx are corrupt, otherwise they're incorrectly offset? // might need custom implementation static ADDRESS_MAP_START( modelr_io_map, AS_IO, 8 ) // AM_RANGE(0x00, 0x00) AM_DEVWRITE("mb14241", mb14241_shift_count_w) // AM_RANGE(0x01, 0x01) AM_DEVREAD("mb14241", mb14241_shift_result_r) AM_RANGE(0x02, 0x02) AM_DEVWRITE("mb14241", mb14241_shift_data_w) AM_RANGE(0x03, 0x03) AM_DEVREAD("mb14241", mb14241_shift_result_r) // AM_RANGE(0x04, 0x04) AM_DEVWRITE("mb14241", mb14241_shift_count_w) AM_RANGE(0x05, 0x05) AM_WRITE(watchdog_reset_w) ADDRESS_MAP_END MACHINE_CONFIG_DERIVED_CLASS( modelr, invaders, _8080bw_state ) /* basic machine hardware */ MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(modelr_io_map) MACHINE_CONFIG_END /* Taito Galactica / Space Missile This game was officially only distributed in Brazil. Not much information is avaliable. It is speculated that the original is "Space Missile", whose manufacturer was sued by Taito in Japan. Release date is unknown, maybe even before Galaxian?! ROM dump came from a collection of old 5 1/4 disks (Apple II) that used to be in the possession of an arcade operator in the early 80s. TODO sound (currently same as invaders): - sound mutes when a few aliens are left? - port 7 write is used too */ static INPUT_PORTS_START( galactic ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // tilt? PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("IN2") PORT_DIPNAME( 0x03, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, "4000" ) PORT_DIPSETTING( 0x02, "5000" ) PORT_DIPSETTING( 0x03, "7000" ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x08, "6" ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START(CABINET_PORT_TAG) /* Dummy port for cocktail mode */ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) INPUT_PORTS_END ROM_START( searthin ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "earthinv.h", 0x0000, 0x0800, CRC(58a750c8) SHA1(90bfa4ea06f38e67fe4286d37d151632439249d2) ) ROM_LOAD( "earthinv.g", 0x0800, 0x0800, CRC(b91742f1) SHA1(8d9ca92405fbaf1d5a7138d400986616378d061e) ) ROM_LOAD( "earthinv.f", 0x1000, 0x0800, CRC(4acbbc60) SHA1(b8c1efb4251a1e690ff6936ec956d6f66136a085) ) ROM_LOAD( "earthinv.e", 0x1800, 0x0800, CRC(df397b12) SHA1(e7e8c080cb6baf342ec637532e05d38129ae73cf) ) ROM_END ROM_START( searthina ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "unkh.h1", 0x0000, 0x0400, CRC(272b9bf3) SHA1(dd57d6a88d42024a39640931114107b547b4c520) ) ROM_LOAD( "unkg.g1", 0x0400, 0x0400, CRC(61bb6101) SHA1(8fc8bbd8ac93d239e0cf0e4881f709860ec2c973) ) ROM_LOAD( "unkf.f1", 0x0800, 0x0400, CRC(2a8d9cd5) SHA1(7948d79b326e729bcb629607c8797156ff9fb0e8) ) ROM_LOAD( "unke.e1", 0x0c00, 0x0400, CRC(1938d349) SHA1(3bd2a0deb126cf2e22bc3cb53e9a59c3875be260) ) ROM_LOAD( "unkd.d1", 0x1000, 0x0400, CRC(9bc2ab88) SHA1(1e9f3b780135827d16ba25978382b097a8110828) ) ROM_LOAD( "unkc.c1", 0x1400, 0x0400, CRC(d4e2dada) SHA1(e98271212fc89e240fdf97d292edd17dc8dd4191) ) ROM_LOAD( "unkb.b1", 0x1800, 0x0400, CRC(ab645a9c) SHA1(9c286f8a031a8babfb8e9b594e05e133c338b342) ) ROM_LOAD( "unka.a1", 0x1c00, 0x0400, CRC(4b65bd7c) SHA1(3931f9f5b0e3339ab484eee14473d3a474935fd9) ) ROM_END ROM_START( invadrmr ) ROM_REGION( 0x10000, "maincpu", 0 ) /* yes, this rom is really on the PCB twice?! */ ROM_LOAD( "11.1s", 0x0000, 0x0400, CRC(389d44b6) SHA1(5d2581b8bc0da918ce57cf319e06b5b31989c681) ) ROM_LOAD( "11.1t", 0x0000, 0x0400, CRC(389d44b6) SHA1(5d2581b8bc0da918ce57cf319e06b5b31989c681) ) ROM_LOAD( "sv02.1p", 0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) ) ROM_LOAD( "20.1n", 0x0800, 0x0400, CRC(805b04f0) SHA1(209f42dfde1593699ccf3755e9267d425416d910) ) ROM_LOAD( "sv04.1j", 0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) ) ROM_LOAD( "13.1h", 0x1800, 0x0400, CRC(76b4a6ea) SHA1(076f8d12ba7ebe66b83a40d9a848075627776554) ) ROM_LOAD( "sv06.1g", 0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) ) ROM_END ROM_START( modelr ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "251.bin", 0x0000, 0x0400, CRC(f27a8c1e) SHA1(510debd1ac2c0986f99c217e3078208a39d7837c) ) ROM_LOAD( "252.bin", 0x0400, 0x0400, CRC(d53b8f91) SHA1(56919f4c88fb3b5c23b5365f0866698bfceb2762) ) ROM_LOAD( "253.bin", 0x0800, 0x0400, CRC(9ef35c6c) SHA1(95bda3e2cdd50f7ac989c581481bad5f1ef2992f) ) ROM_LOAD( "254.bin", 0x0c00, 0x0400, CRC(ba5b562d) SHA1(47819d7e5ef3700e700a5f2faa9537bc2199561c) ) ROM_LOAD( "255.bin", 0x1000, 0x0400, CRC(00ea8293) SHA1(9c921fa4bafc36fc16a3f5f8588887342936d433) ) ROM_LOAD( "256.bin", 0x1400, 0x0400, CRC(e271150c) SHA1(36d0c0c1335036b4a994e8a38904adcf74161c59) ) ROM_LOAD( "257.bin", 0x1800, 0x0400, CRC(0da5d9ad) SHA1(c87c6ab248bfd2b75f070343a8f7fcbaed13f4e3) ) ROM_LOAD( "258.bin", 0x1c00, 0x0400, CRC(471d4052) SHA1(c8ccda2eba44c2ab49f5fc2874fe70c2bdae35d3) ) ROM_END ROM_START( spaceatt ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "h", 0x0000, 0x0400, CRC(d0c32d72) SHA1(b3bd950b1ba940fbeb5d95e55113ed8f4c311434) ) ROM_LOAD( "sv02.bin", 0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) ) ROM_LOAD( "f", 0x0800, 0x0400, CRC(483e651e) SHA1(ae795ee3bc53ac3936f6cf2c72cca7a890783513) ) ROM_LOAD( "c", 0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) ) ROM_LOAD( "b", 0x1800, 0x0400, CRC(6fc782aa) SHA1(0275adbeec455e146f4443b0b836b1171436b79b) ) ROM_LOAD( "a", 0x1c00, 0x0400, CRC(211ac4a3) SHA1(e08e90a4e77cfa30400626a484c9f37c87ea13f9) ) ROM_END ROM_START( spaceat2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "spaceatt.h", 0x0000, 0x0800, CRC(a31d0756) SHA1(2b76929654ed0b180091348546dac29fc6e5438e) ) ROM_LOAD( "spaceatt.g", 0x0800, 0x0800, CRC(f41241f7) SHA1(d93cead75922510075433849c4f7099279eafc18) ) ROM_LOAD( "spaceatt.f", 0x1000, 0x0800, CRC(4c060223) SHA1(957e75a978aa600627399061cae0a6525e92ad11) ) ROM_LOAD( "spaceatt.e", 0x1800, 0x0800, CRC(7cf6f604) SHA1(469557de15178c4b2d686e5724e1006f7c20d7a4) ) ROM_END ROM_START( sinvzen ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.bin", 0x0000, 0x0400, CRC(9b0da779) SHA1(a52ccdb252eb69c497aa5eafb35d7f25a311b44e) ) ROM_LOAD( "2.bin", 0x0400, 0x0400, CRC(9858ccab) SHA1(5ad8e5ef0d95779f0e513634b97bc330c9269ce4) ) ROM_LOAD( "3.bin", 0x0800, 0x0400, CRC(a1cc38b5) SHA1(45fc9466b548d511b8174f6f3a4783164dd59489) ) ROM_LOAD( "4.bin", 0x0c00, 0x0400, CRC(1f2db7a8) SHA1(354ad155743f724f2bebcab422f1ef96cb57c683) ) ROM_LOAD( "5.bin", 0x1000, 0x0400, CRC(9b505fcd) SHA1(7461b7087d31dbe09f7b3078584ccaa2c9122c95) ) ROM_LOAD( "6.bin", 0x1400, 0x0400, CRC(de0ca0ae) SHA1(a15d1218361839a2a2bf8da3f78d81621251fe1c) ) ROM_LOAD( "7.bin", 0x1800, 0x0400, CRC(25a296f6) SHA1(37df98384c1513f0e33a350dfcaa99655f91c9ba) ) ROM_LOAD( "8.bin", 0x1c00, 0x0400, CRC(f4bc4a98) SHA1(bff3806750a3695a136f398c7dbb69a0b7daa88a) ) ROM_END ROM_START( sinvemag ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sv01.36", 0x0000, 0x0400, CRC(86bb8cb6) SHA1(a75648e7f2446c756d86624b15d387d25ce47b66) ) ROM_LOAD( "emag_si.b", 0x0400, 0x0400, CRC(febe6d1a) SHA1(e1c3a24b4fa5862107ada1f9d7249466e8c3f06a) ) ROM_LOAD( "emag_si.c", 0x0800, 0x0400, CRC(aafb24f7) SHA1(6718cdfae09f77d735be5145b9d202a73d8ed9db) ) ROM_LOAD( "emag_si.d", 0x1400, 0x0400, CRC(68c4b9da) SHA1(8953dc0427b09b71bd763e65caa7deaca09a15da) ) ROM_LOAD( "emag_si.e", 0x1800, 0x0400, CRC(c4e80586) SHA1(3d427d5a2eea3c911ec7bd055e06e6747ce5e84d) ) ROM_LOAD( "emag_si.f", 0x1c00, 0x0400, CRC(077f5ef2) SHA1(625de6839073ac4c904f949efc1b2e0afea5d676) ) ROM_END ROM_START( tst_invd ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "test.h", 0x0000, 0x0800, CRC(f86a2eea) SHA1(4a72ff01f3e6d16bbe9bf7f123cd98895bfbed9a) ) /* The Test ROM */ ROM_LOAD( "invaders.g", 0x0800, 0x0800, CRC(6bfaca4a) SHA1(16f48649b531bdef8c2d1446c429b5f414524350) ) ROM_LOAD( "invaders.f", 0x1000, 0x0800, CRC(0ccead96) SHA1(537aef03468f63c5b9e11dd61e253f7ae17d9743) ) ROM_LOAD( "invaders.e", 0x1800, 0x0800, CRC(14e538b0) SHA1(1d6ca0c99f9df71e2990b610deb9d7da0125e2d8) ) ROM_END ROM_START( alieninv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "alieninv.h", 0x0000, 0x0800, CRC(6ad601c3) SHA1(9fc88698f98ce43992a5044d28d3e19751f82772) ) ROM_LOAD( "alieninv.g", 0x0800, 0x0800, CRC(c6bb6fb3) SHA1(01a12163309f967dcffce19890b1e0d079021fc2) ) ROM_LOAD( "alieninv.f", 0x1000, 0x0800, CRC(1d2ff324) SHA1(209766a981fdd3a68e36da3d8122a244c883cae7) ) ROM_LOAD( "alieninv.e", 0x1800, 0x0800, CRC(2f2e6791) SHA1(08a1f17bcfec598182386f1c43e4fc7b476212de) ) ROM_END ROM_START( alieninvp2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1h.bin", 0x0000, 0x0800, CRC(c46df7f4) SHA1(eec34b3d5585bae03c7b80585daaa05ddfcc2164) ) ROM_LOAD( "1g.bin", 0x0800, 0x0800, CRC(4b1112d6) SHA1(b693667656e5d8f44eeb2ea730f4d4db436da579) ) ROM_LOAD( "1f.bin", 0x1000, 0x0800, CRC(adca18a5) SHA1(7e02651692113db31fd469868ae5ffdb0f941ecf) ) ROM_LOAD( "1e.bin", 0x1800, 0x0800, CRC(0449cb52) SHA1(8adcb7cd4492fa6649d9ee81172d8dff56621d64) ) ROM_END ROM_START( sitv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "tv0h.s1", 0x0000, 0x0800, CRC(fef18aad) SHA1(043edeefe6a6d4934bd384eafea19326de1dbeec) ) ROM_LOAD( "tv02.rp1", 0x0800, 0x0800, CRC(3c759a90) SHA1(d847d592dee592b1d3a575c21d89eaf3f7f6ae1b) ) ROM_LOAD( "tv03.n1", 0x1000, 0x0800, CRC(0ad3657f) SHA1(a501f316535c50f7d7a20ef8e6dede1526a3f2a8) ) ROM_LOAD( "tv04.m1", 0x1800, 0x0800, CRC(cd2c67f6) SHA1(60f9d8fe2d36ff589277b607f07c1edc917c755c) ) ROM_END ROM_START( sicv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cv17.36", 0x0000, 0x0800, CRC(3dfbe9e6) SHA1(26487df7fa0bbd0b9b7f74347c4b9318b0a73b89) ) ROM_LOAD( "cv18.35", 0x0800, 0x0800, CRC(bc3c82bf) SHA1(33e39fc97bd46699be1f9b9741a86f433efdc911) ) ROM_LOAD( "cv19.34", 0x1000, 0x0800, CRC(d202b41c) SHA1(868fe938ef768655c894ec95b7d9a81bf21f69ca) ) ROM_LOAD( "cv20.33", 0x1800, 0x0800, CRC(c74ee7b6) SHA1(4f52db274a2d4433ab67c099ee805e8eb8516c0f) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "cv01.1", 0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) ) ROM_LOAD( "cv02.2", 0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) ) ROM_END ROM_START( sisv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sv01.36", 0x0000, 0x0400, CRC(86bb8cb6) SHA1(a75648e7f2446c756d86624b15d387d25ce47b66) ) ROM_LOAD( "sv02.35", 0x0400, 0x0400, CRC(0e159534) SHA1(94b2015a9d38ca738705b8d024a79fd2f9855b98) ) ROM_LOAD( "sv10.34", 0x0800, 0x0400, CRC(483e651e) SHA1(ae795ee3bc53ac3936f6cf2c72cca7a890783513) ) ROM_LOAD( "sv04.31", 0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) ) ROM_LOAD( "sv09.42", 0x1800, 0x0400, CRC(cd80b13f) SHA1(0f4b9537b99fe3cdeebe525efb1869a1be0bc704) ) ROM_LOAD( "sv06.41", 0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "cv01(__sisv).1", 0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "cv02(__sisv).2", 0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END ROM_START( sisv2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sv01.36", 0x0000, 0x0400, CRC(86bb8cb6) SHA1(a75648e7f2446c756d86624b15d387d25ce47b66) ) ROM_LOAD( "sv11.35", 0x0400, 0x0400, CRC(febe6d1a) SHA1(e1c3a24b4fa5862107ada1f9d7249466e8c3f06a) ) ROM_LOAD( "sv12.34", 0x0800, 0x0400, CRC(a08e7202) SHA1(de9f7c851d1b894915e720cfc5d794cdb31752f6) ) ROM_LOAD( "sv04.31", 0x1400, 0x0400, CRC(1293b826) SHA1(165cd5d08a19eadbe954145b12807f10df9e691a) ) ROM_LOAD( "sv13.42", 0x1800, 0x0400, CRC(a9011634) SHA1(1f1369ecb02078042cfdf17a497b8dda6dd23793) ) ROM_LOAD( "sv14.41", 0x1c00, 0x0400, CRC(58730370) SHA1(13dc806bcecd2d6089a85dd710ac2869413f7475) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "cv01(__sisv).1", 0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "cv02(__sisv).2", 0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END ROM_START( spceking ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "invaders.h", 0x0000, 0x0800, CRC(734f5ad8) SHA1(ff6200af4c9110d8181249cbcef1a8a40fa40b7f) ) ROM_LOAD( "spcekng2", 0x0800, 0x0800, CRC(96dcdd42) SHA1(e18d7ffca92e863ef40e235b2be973d8c5879fdb) ) ROM_LOAD( "spcekng3", 0x1000, 0x0800, CRC(95fc96ad) SHA1(38175edad0e538a1561cec8f7613f15ae274dd14) ) ROM_LOAD( "spcekng4", 0x1800, 0x0800, CRC(54170ada) SHA1(1e8b3774355ec0d448f04805a917f4c1fe64bceb) ) ROM_END ROM_START( spcewars ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sanritsu.1", 0x0000, 0x0400, CRC(ca331679) SHA1(5c362c3d1c721d293bcddbef4033533769c8f0e0) ) ROM_LOAD( "sanritsu.2", 0x0400, 0x0400, CRC(48dc791c) SHA1(91a98205c83ca38961e6ba2ac43a41e6e8bc2675) ) ROM_LOAD( "ic35.bin", 0x0800, 0x0800, CRC(40c2d55b) SHA1(b641b63046d242ad23911143ed840011fc98eaff) ) ROM_LOAD( "sanritsu.5", 0x1000, 0x0400, CRC(77475431) SHA1(15a04a2655847ee462be65d1065d643c872bb47c) ) ROM_LOAD( "sanritsu.6", 0x1400, 0x0400, CRC(392ef82c) SHA1(77c98c11ee727ed3ed6e118f13d97aabdb555540) ) ROM_LOAD( "sanritsu.7", 0x1800, 0x0400, CRC(b3a93df8) SHA1(3afc96814149d4d5343fe06eac09f808384d02c4) ) ROM_LOAD( "sanritsu.8", 0x1c00, 0x0400, CRC(64fdc3e1) SHA1(c3c278bc236ced7fc85e1a9b018e80be6ab33402) ) ROM_LOAD( "sanritsu.9", 0x4000, 0x0400, CRC(b2f29601) SHA1(ce855e312f50df7a74682974803cb4f9b2d184f3) ) ROM_END ROM_START( spacewr3 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ic36.bin", 0x0000, 0x0800, CRC(9e30f88a) SHA1(314dfb2920d9b43b977cc19e40ac315e6933c3b9) ) ROM_LOAD( "ic35.bin", 0x0800, 0x0800, CRC(40c2d55b) SHA1(b641b63046d242ad23911143ed840011fc98eaff) ) ROM_LOAD( "ic34.bin", 0x1000, 0x0800, CRC(b435f021) SHA1(2d0d813b99d571b53770fa878a1f82ca67827caa) ) ROM_LOAD( "ic33.bin", 0x1800, 0x0800, CRC(cbdc6fe8) SHA1(63038ea09d320c54e3d1cf7f043c17bba71bf13c) ) ROM_LOAD( "ic32.bin", 0x4000, 0x0800, CRC(1e5a753c) SHA1(5b7cd7b347203f4edf816f02c366bd3b1b9517c4) ) ROM_END ROM_START( invaderl ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "c01", 0x0000, 0x0400, CRC(499f253a) SHA1(e13353194277f5d35e92db9b11912b5f392f51b7) ) ROM_LOAD( "c02", 0x0400, 0x0400, CRC(2d0b2e1f) SHA1(2e0262d9dba607824fcd720d2995531649bdd03d) ) ROM_LOAD( "c03", 0x0800, 0x0400, CRC(03033dc2) SHA1(87d7838e6a6542c2c5510af593df45137cb397c6) ) ROM_LOAD( "c07", 0x1000, 0x0400, CRC(5a7bbf1f) SHA1(659f2a8c646660d316d6e70f1d9548375f1da63f) ) ROM_LOAD( "c04", 0x1400, 0x0400, CRC(455b1fa7) SHA1(668800a0a3ba18d8b54c2aa4dfd4bd01a667d679) ) ROM_LOAD( "c05", 0x1800, 0x0400, CRC(40cbef75) SHA1(15994ed8bb8ab8faed6198926873851062c9d95f) ) ROM_LOAD( "sv06.bin", 0x1c00, 0x0400, CRC(2c68e0b4) SHA1(a5e5357120102ad32792bf3ef6362f45b7ba7070) ) ROM_END ROM_START( invader4 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "spin4.a", 0x0000, 0x0800, CRC(bb386dfe) SHA1(cc00f3e4f6ca4c05bae038a24ccdb213fb951cfc) ) ROM_LOAD( "spin4.b", 0x0800, 0x0800, CRC(63afa11d) SHA1(d8cedfa010a49237e31f6ebaed35134cb1c3ce68) ) ROM_LOAD( "spin4.c", 0x1000, 0x0800, CRC(22b0317c) SHA1(8fd037bf5f89a7bcb06042697410566d5180912a) ) ROM_LOAD( "spin4.d", 0x1800, 0x0800, CRC(9102fd68) SHA1(3523e69314844fcd1863b1e9a9d7fcebe9ee174b) ) ROM_END ROM_START( jspecter ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "3305.u6", 0x0000, 0x1000, CRC(ab211a4f) SHA1(d675ed29c3479d7318f8559bd56dd619cf631b6a) ) ROM_LOAD( "3306.u7", 0x1400, 0x1000, CRC(0df142a7) SHA1(2f1c32d6fe7eafb7808fef0bdeb69b4909427417) ) ROM_END ROM_START( jspecter2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "unksi.b2", 0x0000, 0x1000, CRC(0584b6c4) SHA1(c130021b878bde2beda4a189f71bbfed61088535) ) ROM_LOAD( "unksi.a2", 0x1400, 0x1000, CRC(58095955) SHA1(545df3bb9ee4ff09f491d7a4b704e31aa311a8d7) ) ROM_END ROM_START( invadpt2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "pv01", 0x0000, 0x0800, CRC(7288a511) SHA1(ff617872784c28ed03591aefa9f0519e5651701f) ) ROM_LOAD( "pv02", 0x0800, 0x0800, CRC(097dd8d5) SHA1(8d68654d54d075c0f0d7f63c87ff4551ce8b7fbf) ) ROM_LOAD( "pv03", 0x1000, 0x0800, CRC(1766337e) SHA1(ea959bf06c9930d83a07559e191a28641efb07ac) ) ROM_LOAD( "pv04", 0x1800, 0x0800, CRC(8f0e62e0) SHA1(a967b155f15f8432222fcc78b23121b00c405c5c) ) ROM_LOAD( "pv05", 0x4000, 0x0800, CRC(19b505e9) SHA1(6a31a37586782ce421a7d2cffd8f958c00b7b415) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "pv06.1", 0x0000, 0x0400, CRC(a732810b) SHA1(a5fabffa73ca740909e23b9530936f9274dff356) ) ROM_LOAD( "pv07.2", 0x0400, 0x0400, CRC(2c5b91cb) SHA1(7fa4d4aef85473b1b4f18734230c164e72be44e7) ) ROM_END ROM_START( invadpt2br ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "pv01", 0x0000, 0x0800, CRC(7288a511) SHA1(ff617872784c28ed03591aefa9f0519e5651701f) ) /* pv01 had weird encryption applied to it, very likely to have been done post-dump. */ // for (offs = 0x4fc; offs < 0x5fc; offs++) // rom[offs] ^= 0x6c; // 0x4fc + 1 * 0x56 // for (offs = 0x54e; offs < 0x552; offs++) // rom[offs] ^= 0x03; // 0x4fc + 2 * 0x56 // for (offs = 0x5a4; offs < 0x5a8; offs++) // rom[offs] ^= 0x01; // 0x4fc + 3 * 0x56 // for (offs = 0x5fa; offs < 0x5fc; offs++) // rom[offs] ^= 0x02; ROM_LOAD( "br_pv02", 0x0800, 0x0800, CRC(420c7c35) SHA1(b51265f4d9e5a8cf9d53099a97cadd25ea0b34ce) ) ROM_LOAD( "br_pv03", 0x1000, 0x0800, CRC(dffd04b9) SHA1(d51a0f27e90b0a49cf2d57ec82a863dcae9f3ea4) ) ROM_LOAD( "br_pv04", 0x1800, 0x0800, CRC(b0626aff) SHA1(b7de6c21030732bd0479228f057ca4c87b913b0a) ) ROM_LOAD( "br_pv05", 0x4000, 0x0800, CRC(84c70bb8) SHA1(75fef3ee6da3e7e01a257629016bc10a23691d62) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 (taken from parent set) */ ROM_LOAD( "pv06.1", 0x0000, 0x0400, CRC(a732810b) SHA1(a5fabffa73ca740909e23b9530936f9274dff356) ) ROM_LOAD( "pv07.2", 0x0400, 0x0400, CRC(2c5b91cb) SHA1(7fa4d4aef85473b1b4f18734230c164e72be44e7) ) ROM_END ROM_START( invaddlx ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "invdelux.h", 0x0000, 0x0800, CRC(e690818f) SHA1(0860fb03a64d34a9704a1459a5e96929eafd39c7) ) ROM_LOAD( "invdelux.g", 0x0800, 0x0800, CRC(4268c12d) SHA1(df02419f01cf0874afd1f1aa16276751acd0604a) ) ROM_LOAD( "invdelux.f", 0x1000, 0x0800, CRC(f4aa1880) SHA1(995d77b67cb4f2f3781c2c8747cb058b7c1b3412) ) ROM_LOAD( "invdelux.e", 0x1800, 0x0800, CRC(408849c1) SHA1(f717e81017047497a2e9f33f0aafecfec5a2ed7d) ) ROM_LOAD( "invdelux.d", 0x4000, 0x0800, CRC(e8d5afcd) SHA1(91fde9a9e7c3dd53aac4770bd169721a79b41ed1) ) ROM_END /* Runs on a Space Invaders Part II boardset with an epoxy module in place of the 8080 CPU */ ROM_START( vortex ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.t36", 0x0000, 0x0800, CRC(577417a6) SHA1(13ed1b989b8ea27cea88be7872921ff9283b5dd6) ) ROM_LOAD( "2.t35", 0x0800, 0x0800, CRC(126d0049) SHA1(4c189a2364bca8682543d605e84d458bf81ee489) ) ROM_LOAD( "3.t34", 0x1000, 0x0800, CRC(4a2510b3) SHA1(1c62583b7baf8ee2b6014a6e5dfc7e2d516886d1) ) ROM_LOAD( "4.t33", 0x1800, 0x0800, CRC(da0274fe) SHA1(b8ab1b16d66700f9ca6a2380a5b6796eaef6e1bd) ) ROM_LOAD( "5.t32", 0x4000, 0x0800, CRC(a3de49d6) SHA1(e302c6fd2705c6e7f9125b52b2dcb034cc88a90e) ) ROM_LOAD( "6.t31", 0x4800, 0x0800, CRC(271085d0) SHA1(a772cec8135bc746f6c56aa294eb22c0604e16f9) ) ROM_END ROM_START( moonbase ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ze3-1.a4", 0x0000, 0x0400, CRC(82dbf2c7) SHA1(c767d8b866db4a5059bd79f962a90ce3a962e1e6) ) ROM_LOAD( "ze3-2.c4", 0x0400, 0x0400, CRC(c867f5b4) SHA1(686318fda6edde297aecaf33f480bfa075fa6eca) ) ROM_LOAD( "ze3-3.e4", 0x0800, 0x0400, CRC(cb23ccc1) SHA1(86be2d14d52b3404e1a25c573bd25b97729d82a1) ) ROM_LOAD( "ze3-4.f4", 0x0c00, 0x0400, CRC(9a11abe2) SHA1(f5337183c7f279d75ddeeab24f4f132aa2ee103b) ) // 'Taito Corp' string hidden in ROM ROM_LOAD( "ze3-5.h4", 0x1000, 0x0400, CRC(2b105ed3) SHA1(fa0767089b3aaec25be39e950e7163ecbdc2f39f) ) ROM_LOAD( "ze3-6.l4", 0x1400, 0x0400, CRC(cb3d6dcb) SHA1(b4923b12a141c76b7d50274f19a3224db26a5669) ) ROM_LOAD( "ze3-7.a5", 0x1800, 0x0400, CRC(774b52c9) SHA1(ddbbba874ac069fb930b364a890c45675ec389f7) ) ROM_LOAD( "ze3-8.c5", 0x1c00, 0x0400, CRC(e88ea83b) SHA1(ef05be4783c860369ee5ecd4844837207e99ad9f) ) ROM_LOAD( "ze3-9.e5", 0x4000, 0x0400, CRC(2dd5adfa) SHA1(62cb98cad1e48de0e0cbf30392d35834b38dadbd) ) ROM_LOAD( "ze3-10.f5", 0x4400, 0x0400, CRC(1e7c22a4) SHA1(b34173375494ffbf5400dd4014a683a9807f4f08) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "cv02.h7", 0x0000, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) /* NEC B406 or compatible BPROM, like the 82S137 */ ROM_LOAD( "cv01.g7", 0x0400, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) /* NEC B406 or compatible BPROM, like the 82S137 */ ROM_END ROM_START( moonbasea ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ze3-1.a4", 0x0000, 0x0400, CRC(82dbf2c7) SHA1(c767d8b866db4a5059bd79f962a90ce3a962e1e6) ) ROM_LOAD( "ze3-2.c4", 0x0400, 0x0400, CRC(c867f5b4) SHA1(686318fda6edde297aecaf33f480bfa075fa6eca) ) ROM_LOAD( "ze3-3.e4", 0x0800, 0x0400, CRC(cb23ccc1) SHA1(86be2d14d52b3404e1a25c573bd25b97729d82a1) ) ROM_LOAD( "ze3-4_alt.f4", 0x0c00, 0x0400, CRC(86a00411) SHA1(f518f5098512d6d23a8887605707844c1b32e54f) ) // 'Nichibutsu' string hidden in ROM ROM_LOAD( "ze3-5.h4", 0x1000, 0x0400, CRC(2b105ed3) SHA1(fa0767089b3aaec25be39e950e7163ecbdc2f39f) ) ROM_LOAD( "ze3-6.l4", 0x1400, 0x0400, CRC(cb3d6dcb) SHA1(b4923b12a141c76b7d50274f19a3224db26a5669) ) ROM_LOAD( "ze3-7.a5", 0x1800, 0x0400, CRC(774b52c9) SHA1(ddbbba874ac069fb930b364a890c45675ec389f7) ) ROM_LOAD( "ze3-8.c5", 0x1c00, 0x0400, CRC(e88ea83b) SHA1(ef05be4783c860369ee5ecd4844837207e99ad9f) ) ROM_LOAD( "ze3-9.e5", 0x4000, 0x0400, CRC(2dd5adfa) SHA1(62cb98cad1e48de0e0cbf30392d35834b38dadbd) ) ROM_LOAD( "ze3-10.f5", 0x4400, 0x0400, CRC(1e7c22a4) SHA1(b34173375494ffbf5400dd4014a683a9807f4f08) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "cv02.h7", 0x0000, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) /* NEC B406 or compatible BPROM, like the 82S137 */ ROM_LOAD( "cv01.g7", 0x0400, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) /* NEC B406 or compatible BPROM, like the 82S137 */ ROM_END ROM_START( invrvnge ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "invrvnge.h", 0x0000, 0x0800, CRC(aca41bbb) SHA1(ca71f792abd6d9a44d15b19d2ccf678e82ccba4f) ) ROM_LOAD( "invrvnge.g", 0x0800, 0x0800, CRC(cfe89dad) SHA1(218b6a0b636c49c4cdc3667e8b1387ef0e257115) ) ROM_LOAD( "invrvnge.f", 0x1000, 0x0800, CRC(e350de2c) SHA1(e845565e2f96f9dec3242ec5ab75910a515428c9) ) ROM_LOAD( "invrvnge.e", 0x1800, 0x0800, CRC(1ec8dfc8) SHA1(fc8fbe1161958f57c9f4ccbcab8a769184b1c562) ) ROM_END ROM_START( invrvngea ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "5m.bin", 0x0000, 0x0800, CRC(b145cb71) SHA1(127eb11de7ab9835f06510fb12838c0b728c0d42) ) ROM_LOAD( "5n.bin", 0x0800, 0x0800, CRC(660e8af3) SHA1(bd52eadf4ee3d717fd5bd7206e1e87d729250c92) ) ROM_LOAD( "5p.bin", 0x1000, 0x0800, CRC(6ec5a9ad) SHA1(d1e84d2d60c6128c092f2cd20a2b87216df3034b) ) ROM_LOAD( "5r.bin", 0x1800, 0x0800, CRC(74516811) SHA1(0f595c7b0fae5f3f83fdd1ffed5a408ee77c9438) ) ROM_END ROM_START( spclaser ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "la01", 0x0000, 0x0800, CRC(bedc0078) SHA1(a5bb0cbbb8e3f27d03beb8101b2be1111d73689d) ) ROM_LOAD( "spcewarl.2", 0x0800, 0x0800, CRC(43bc65c5) SHA1(5f9827c02c2d221e1607359c840374ff7fb92fbf) ) ROM_LOAD( "la03", 0x1000, 0x0800, CRC(1083e9cc) SHA1(7ad45c6230c9e02fcf51e3414c15e2237eebbd7a) ) ROM_LOAD( "la04", 0x1800, 0x0800, CRC(5116b234) SHA1(b165b2574cbcb26a5bb43f91df5f8be5f111f486) ) ROM_END ROM_START( intruder ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "la01-1.36", 0x0000, 0x0800, CRC(bedc0078) SHA1(a5bb0cbbb8e3f27d03beb8101b2be1111d73689d) ) ROM_LOAD( "la02-1.35", 0x0800, 0x0800, CRC(43bc65c5) SHA1(5f9827c02c2d221e1607359c840374ff7fb92fbf) ) ROM_LOAD( "la03-1.34", 0x1000, 0x0800, CRC(278ef9cf) SHA1(74a9c1d3500ea28e50d07363a547c381999c84fa) ) ROM_LOAD( "la04-1.33", 0x1800, 0x0800, CRC(5116b234) SHA1(b165b2574cbcb26a5bb43f91df5f8be5f111f486) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "01.bin", 0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "02.bin", 0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END ROM_START( laser ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.u36", 0x0000, 0x0800, CRC(b44e2c41) SHA1(00e0b2e088495d6f3bc175e8a53dcb3686ea8484) ) ROM_LOAD( "2.u35", 0x0800, 0x0800, CRC(9876f331) SHA1(14e36b26d186d9a195492834ef989ed5664d7b65) ) ROM_LOAD( "3.u34", 0x1000, 0x0800, CRC(ed79000b) SHA1(bfe0407e833ce61aa909f5f1f93c3fc1d46605e9) ) ROM_LOAD( "4.u33", 0x1800, 0x0800, CRC(10a160a1) SHA1(e2d4208af11b65fc42d2856e57ee3c196f89d360) ) ROM_END ROM_START( spcewarl ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "spcewarl.1", 0x0000, 0x0800, CRC(1fcd34d2) SHA1(674139944e0d842a85bd21b326bd735e15453038) ) ROM_LOAD( "spcewarl.2", 0x0800, 0x0800, CRC(43bc65c5) SHA1(5f9827c02c2d221e1607359c840374ff7fb92fbf) ) ROM_LOAD( "spcewarl.3", 0x1000, 0x0800, CRC(7820df3a) SHA1(53315857f4282c68624b338b068d80ee6828af4c) ) ROM_LOAD( "spcewarl.4", 0x1800, 0x0800, CRC(adc05b8d) SHA1(c4acf75537c0662a4785d5d6a90643239a54bf43) ) ROM_END ROM_START( galxwars ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "univgw3.0", 0x0000, 0x0400, CRC(937796f4) SHA1(88e9494cc532498e51e3a68fa1122c40f22b27dd) ) ROM_LOAD( "univgw4.1", 0x0400, 0x0400, CRC(4b86e7a6) SHA1(167f9f7491a2de39d08e3e6f7057cc75b36c9340) ) ROM_LOAD( "univgw5.2", 0x0800, 0x0400, CRC(47a187cd) SHA1(640c896ba25f34d323624005bd676257ad17b687) ) ROM_LOAD( "univgw6.3", 0x0c00, 0x0400, CRC(7b7d22ff) SHA1(74364cf2b04dcfbbc8e0131fa12c0e574f693d34) ) ROM_LOAD( "univgw1.4", 0x4000, 0x0400, CRC(0871156e) SHA1(3726d0bfe153a0afc62ea56737662074986064b0) ) ROM_LOAD( "univgw2.5", 0x4400, 0x0400, CRC(6036d7bf) SHA1(36c2ad2ffdb47bbecc40fd67ced6ab51a5cd2f3e) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ /* !! not dumped yet, these were taken from sisv/intruder */ /* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */ ROM_LOAD( "01.bin", 0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "02.bin", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END ROM_START( galxwars2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "3192.h6", 0x0000, 0x1000, CRC(bde6860b) SHA1(e04b8add32d8f7ea588fae6d6a387f1d40495f1b) ) ROM_LOAD( "3193.h7", 0x4000, 0x1000, CRC(a17cd507) SHA1(554ab0e8bdc0e7af4a30b0ddc8aa053c8e70255c) ) /* 2nd half unused */ ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ /* !! not dumped yet, these were taken from sisv/intruder */ /* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */ ROM_LOAD( "01.bin", 0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "02.bin", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END ROM_START( galxwarst ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "galxwars.0", 0x0000, 0x0400, CRC(608bfe7f) SHA1(a41a40a2f0a1bb61a70b9ff8a7da925ab1db7f74) ) ROM_LOAD( "galxwars.1", 0x0400, 0x0400, CRC(a810b258) SHA1(030a72fffcf240f643bc3006028cb4883cf58bbc) ) ROM_LOAD( "galxwars.2", 0x0800, 0x0400, CRC(74f31781) SHA1(1de70e8ebbb26eea20ffedb7bd0ca051a67f45e7) ) ROM_LOAD( "galxwars.3", 0x0c00, 0x0400, CRC(c88f886c) SHA1(4d705fbb97e3868c3f6c90c5e5753ad17cfbf5d6) ) ROM_LOAD( "galxwars.4", 0x4000, 0x0400, CRC(ae4fe8fb) SHA1(494f44167dc84e4515b769c12f6e24419461dce4) ) ROM_LOAD( "galxwars.5", 0x4400, 0x0400, CRC(37708a35) SHA1(df6fd521ddfa146ef93e390e47741bdbfda1e7ba) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ /* !! not dumped yet, these were taken from sisv/intruder */ /* Or are colormaps generated by a group of TTLs, similar to dai3wksi? */ ROM_LOAD( "01.bin", 0x0000, 0x0400, BAD_DUMP CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "02.bin", 0x0400, 0x0400, BAD_DUMP CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END ROM_START( starw ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "roma", 0x0000, 0x0400, CRC(60e8993c) SHA1(0bdf163ff0f2e6a8771987d4e7ac604c45af21b8) ) ROM_LOAD( "romb", 0x0400, 0x0400, CRC(b8060773) SHA1(92aa358c338ef8f5773bccada8988d068764e7ea) ) ROM_LOAD( "romc", 0x0800, 0x0400, CRC(307ce6b8) SHA1(f4b6f54db3d2377ec27d62d33fa1c4946559a092) ) ROM_LOAD( "romd", 0x1400, 0x0400, CRC(2b0d0a88) SHA1(d079d12b6d4136519ded32415d668a02147b7601) ) ROM_LOAD( "rome", 0x1800, 0x0400, CRC(5b1c3ad0) SHA1(edb42eec59c3dd7e274e2ea08fed0f3e8fc72e9e) ) ROM_LOAD( "romf", 0x1c00, 0x0400, CRC(c8e42d3d) SHA1(841b27af251b9c3a964972e864fb7c88acc742e0) ) ROM_END ROM_START( lrescue ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "lrescue.1", 0x0000, 0x0800, CRC(2bbc4778) SHA1(0167f1ac1501ab0b4c4e555023fa5efed59d56ae) ) ROM_LOAD( "lrescue.2", 0x0800, 0x0800, CRC(49e79706) SHA1(bed675bb97d59ae0132c007ccead0d096ed2ddf1) ) ROM_LOAD( "lrescue.3", 0x1000, 0x0800, CRC(1ac969be) SHA1(67ac47f45b9fa5c530bf6047bb7d5776b52847be) ) ROM_LOAD( "lrescue.4", 0x1800, 0x0800, CRC(782fee3c) SHA1(668295e9d6d99084bb4e7c5491f00fe75f4f5a88) ) ROM_LOAD( "lrescue.5", 0x4000, 0x0800, CRC(58fde8bc) SHA1(663665ac5254204c1eba18357d9867034eae55eb) ) ROM_LOAD( "lrescue.6", 0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) ) ROM_REGION( 0x0800, "proms", 0 ) /* color map */ ROM_LOAD( "7643-1.cpu", 0x0000, 0x0400, CRC(8b2e38de) SHA1(d6a757be31c3a179d31bd3709e71f9e38ec632e9) ) ROM_RELOAD( 0x0400, 0x0400 ) ROM_END /* MOON LANDER Manufacturer: Leisure Time Electronics Year: 1980 Orientation: Vertical B/W Cabinet: Cocktail Leisure Time Electronics produced three games: Astro Laser, Moon Lander, and Space Ranger. The games were designed to be interchangeable with a universal cocktail cabinet which they designed and named "Star Series". The cocktail cabinets share the same artwork with all three games and has a different instruction card for each game. There were no upright or cabaret cabinets. The game ROMs operate on Taito pc boards. Moon Lander is a clone/ripoff of Lunar Rescue/Destination Earth. I do not have a manual or schematics for this pcb although I was able to confirm 5 out of 8 dipswitch settings. I was surprised to hear the sounds effects are almost exactly like when Lunar Rescue used the "invaders" external samples in MAME. The pcb does not play the invader "hit" sound for some reason. I couldn't find anything obviously wrong in the sound section so it must be that it's just not hooked up as-is from the factory. There does not appear to be a sound-in-attract option. CPU - Mitsubishi M5L8080AP X-tal - 19968 mhz (decimal not shown, device stamped very lightly) Sound - discrete, SN76477N I/O board - Taito # CV070001A/CVN00001A label= serial# 172190 CPU board - Taito # AA017757 label= CVN00004 serial# 802868 ROM board - Taito # AA017756A label= CVN00006 serial# 046120 EPROMs - 6x 2716 ML1.u36 checksum 0002CA52 ML2.u35 checksum 0002C999 ML3.u34 checksum 0002BD5C ML4.u33 checksum 000252EE ML5.u32 checksum 00029365 ML6.u31 checksum 0002C624 Dipswitch sw1, 8-bank sw1 - # ships sw2 - # ships sw3 - not used/unknown sw4 - not used/unknown sw5 - ON= enable player2 move right OFF= disabled sw6 - ON= enable player2 move left OFF= disabled sw7 - ON= enable player2 fire/shoot OFF= disabled sw8 - not used/unknown -------------------------------------------------------------------------- 1 2 3 4 5 6 7 8 -------------------------------------------------------------------------- # of player ships - 3 ships on on - 4 ships off on - 5 ships on off - 6 ships off off Maximum Credits= 9 Sound Pots: VR1 = engine sound VR2 = beam gun VR3 = ship explosion sound VR4 = enemy explosion sound (not connected?) VR5 = bonus ship sound VR6 = bonus music, footsteps, and docking sound VR7 = shooting star/ship descending sound VR8 = pot for adjusting total sounds */ ROM_START( mlander ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ml1.u36", 0x0000, 0x0800, CRC(69df529a) SHA1(ded3b4a04e28dc341b1fc5a8880bc48aa332bdb5) ) ROM_LOAD( "ml2.u35", 0x0800, 0x0800, CRC(3b503337) SHA1(d1056c0161d481202996811503e9970d0a0c9147) ) ROM_LOAD( "ml3.u34", 0x1000, 0x0800, CRC(64e53458) SHA1(629f2434eea4d31dc9db0ee7bc8364cd2bf08a04) ) ROM_LOAD( "ml4.u33", 0x1800, 0x0800, CRC(c9a74571) SHA1(b1671d19eff17f7adb274013c8f11eb044ebdd28) ) ROM_LOAD( "ml5.u32", 0x4000, 0x0800, CRC(88291fa2) SHA1(40c4eb51f75b5ca81a62121231d22b9f48d0f628) ) ROM_LOAD( "ml6.u31", 0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) ) ROM_END ROM_START( grescue ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "lrescue.1", 0x0000, 0x0800, CRC(2bbc4778) SHA1(0167f1ac1501ab0b4c4e555023fa5efed59d56ae) ) ROM_LOAD( "lrescue.2", 0x0800, 0x0800, CRC(49e79706) SHA1(bed675bb97d59ae0132c007ccead0d096ed2ddf1) ) ROM_LOAD( "lrescue.3", 0x1000, 0x0800, CRC(1ac969be) SHA1(67ac47f45b9fa5c530bf6047bb7d5776b52847be) ) ROM_LOAD( "grescue.4", 0x1800, 0x0800, CRC(ca412991) SHA1(41b59f338a6c246e0942a8bfa3c0bca2c24c7f81) ) ROM_LOAD( "grescue.5", 0x4000, 0x0800, CRC(a419a4d6) SHA1(8eeeb31cbebffc98d2c6c5b964f9b320fcf303d2) ) ROM_LOAD( "lrescue.6", 0x4800, 0x0800, CRC(bfb0f65d) SHA1(ea0943d764a16094b6e2289f62ef117c9f838c98) ) ROM_REGION( 0x0800, "proms", 0 ) /* color map */ ROM_LOAD( "7643-1.cpu", 0x0000, 0x0400, CRC(8b2e38de) SHA1(d6a757be31c3a179d31bd3709e71f9e38ec632e9) ) ROM_RELOAD( 0x0400, 0x0400 ) ROM_END ROM_START( desterth ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "36_h.bin", 0x0000, 0x0800, CRC(f86923e5) SHA1(d19935ba3d2c1c2553b3779f1a7ad8856c003dae) ) ROM_LOAD( "35_g.bin", 0x0800, 0x0800, CRC(797f440d) SHA1(a96917f2296ae467acc795eacc1533a2a2d2f401) ) ROM_LOAD( "34_f.bin", 0x1000, 0x0800, CRC(993d0846) SHA1(6be0c45add41fa7e43cac96c776cd0ebb45ade7b) ) ROM_LOAD( "33_e.bin", 0x1800, 0x0800, CRC(8d155fc5) SHA1(1ef5e62d71abbf870c027fa1e477121ff124b8da) ) ROM_LOAD( "32_d.bin", 0x4000, 0x0800, CRC(3f531b6f) SHA1(2fc1f4912688986650e20a050a5d63ddecd4267e) ) ROM_LOAD( "31_c.bin", 0x4800, 0x0800, CRC(ab019c30) SHA1(33931510a722168bcf7c30d22eac9345576b6631) ) ROM_LOAD( "42_b.bin", 0x5000, 0x0800, CRC(ed9dbac6) SHA1(4553f445ac32ebb1be490b02df4924f76557e8f9) ) ROM_REGION( 0x0800, "proms", 0 ) /* color map */ ROM_LOAD( "7643-1.cpu", 0x0000, 0x0400, CRC(8b2e38de) SHA1(d6a757be31c3a179d31bd3709e71f9e38ec632e9) ) ROM_RELOAD( 0x0400, 0x0400 ) ROM_END ROM_START( lrescuem ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "48.ic36", 0x0000, 0x0400, CRC(bad5ba48) SHA1(6d8a2df172e058d16f196ad7f29430e9fd1fdaa8) ) ROM_LOAD( "49.ic35", 0x0400, 0x0400, CRC(a6dc23d6) SHA1(76b9105935bf239ae90b47900f64dac3032ceecd) ) ROM_LOAD( "50.ic34", 0x0800, 0x0400, CRC(90179fee) SHA1(35059f7399229b8d9588d34f79073fa4d3301614) ) ROM_LOAD( "51.ic33", 0x0c00, 0x0400, CRC(1d197d87) SHA1(21e049f9c2a0fe1c0403d9d1a2dc695c4ee764f9) ) ROM_LOAD( "52.ic32", 0x1000, 0x0400, CRC(4326d338) SHA1(ac31645bdf292f28dfcfcb9d5e158e5df7a6f95d) ) ROM_LOAD( "53.ic31", 0x1400, 0x0400, CRC(3b272372) SHA1(39b807c810d093d7a34b102eec16f3d9baeb21f1) ) ROM_LOAD( "54.ic42", 0x1800, 0x0400, CRC(a877c5b6) SHA1(862871c3dd18221d5713fe1fd2dc4f5b7cb913c1) ) ROM_LOAD( "55.ic41", 0x1c00, 0x0400, CRC(c9a93407) SHA1(604bcace8e3bec07db6ca8a8918b306b77643e14) ) ROM_LOAD( "56.ic40", 0x4000, 0x0400, CRC(3398798f) SHA1(d7dd9e65a1048df8edd217f4206b19cd01f143f4) ) ROM_LOAD( "57.ic39", 0x4400, 0x0400, CRC(37c5bfc6) SHA1(b0aec85e6f979cdf7a3a985830c8530302804837) ) ROM_LOAD( "58.ic38", 0x4800, 0x0400, CRC(1b7a5644) SHA1(d26530ea11ada86f7c99b11d6faf4416a8f5a9eb) ) ROM_LOAD( "59.ic37", 0x4c00, 0x0400, CRC(c342b907) SHA1(327da029420c4eedabc2a0534199a008a3f341b8) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 - these don't really fit this game, but were on the PCB */ ROM_LOAD( "cv01-7643.2c", 0x0000, 0x0400, CRC(aac24f34) SHA1(ad110e776547fb48baac568bb50d61854537ca34) ) ROM_LOAD( "cv02-7643.1c", 0x0400, 0x0400, CRC(2bdf83a0) SHA1(01ffbd43964c41987e7d44816271308f9a70802b) ) ROM_END /* Cosmo TDS & Mints, 1979/80? Notes: This game runs on modified "original" Taito (3 board) Space Invaders hardware. There are approx. 70 (or more) wires tied to various parts of the boards, plus there is an extra board on top of the sound board with a *HUGE* amount of wires running to it from the main boards. There are 2 EPROMs on the top board that appear to be for use with colour generation or extra sounds(?) The PROMs on the middle board have been removed and in their place are a pile of wires that join to the top board. The remainder of the hardware is just standard Taito Space Invaders..... including a SN76477 and the discrete components for sound generation. Note that the sounds and gameplay of Cosmo are VERY different from Space Invaders. */ ROM_START( cosmo ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.36", 0x0000, 0x0800, CRC(445c9a98) SHA1(89bce80a061e9c12544231f970d9dec801eb1b94) ) ROM_LOAD( "2.35", 0x0800, 0x0800, CRC(df3eb731) SHA1(fb90c1d0f2518195dd49062c9f0fd890536d89f4) ) ROM_LOAD( "3.34", 0x1000, 0x0800, CRC(772c813f) SHA1(a1c0d857c660fb0b838dd0466af7bf5d73bcd55d) ) ROM_LOAD( "4.33", 0x1800, 0x0800, CRC(279f66e6) SHA1(8ce71c08cca0bdde2f2e0ef21622731c4610c030) ) ROM_LOAD( "5.32", 0x4000, 0x0800, CRC(cefb18df) SHA1(bb500cf3f7d1a54045a165d3613a92ab3f11d3e8) ) ROM_LOAD( "6.31", 0x4800, 0x0800, CRC(b037f6c4) SHA1(b9a42948052b8cda8d2e4575e59909589f4e7a8d) ) ROM_LOAD( "7.42", 0x5000, 0x0800, CRC(c3831ea2) SHA1(8c67ef0312656ef0eeff34b8463376c736bd8ea1) ) ROM_REGION( 0x1000, "proms", 0 ) /* color map */ ROM_LOAD( "n-1.7d", 0x0800, 0x0800, CRC(bd8576f1) SHA1(aa5fe0a4d024f21a3bca7a6b3f5022779af6f3f4) ) ROM_LOAD( "n-2.6e", 0x0000, 0x0800, CRC(48f1ade5) SHA1(a1b45f82f3649cde8ae6a2ef494a3a6cdb5e65d0) ) ROM_END ROM_START( cosmicmo ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "cosmicmo.1", 0x0000, 0x0400, CRC(d6e4e5da) SHA1(8b4275a3c71ac3fa80d17237dc04de5f586645f4) ) ROM_LOAD( "cosmicmo.2", 0x0400, 0x0400, CRC(8f7988e6) SHA1(b6a01d5dcab013350f8f7f3e3ebfc986bb939fe0) ) ROM_LOAD( "cosmicmo.3", 0x0800, 0x0400, CRC(2d2e9dc8) SHA1(dd3da4fc752e003e5e7c64bf189288133aed545b) ) ROM_LOAD( "cosmicmo.4", 0x0c00, 0x0400, CRC(26cae456) SHA1(2f2262340c10e5c29d71317f6eb8072c26655563) ) ROM_LOAD( "cosmicmo.5", 0x4000, 0x0400, CRC(b13f228e) SHA1(a0de05aa36435e72c77f5333f3ad964ec448a8f0) ) ROM_LOAD( "cosmicmo.6", 0x4400, 0x0400, CRC(4ae1b9c4) SHA1(8eed87eebe68caa775fa679363b0fe3728d98c34) ) ROM_LOAD( "cosmicmo.7", 0x4800, 0x0400, CRC(6a13b15b) SHA1(dc03a6c3e938cfd08d16bd1660899f951ba72ea2) ) ROM_END ROM_START( cosmicm2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "3907.bin", 0x0000, 0x1000, CRC(bbffede6) SHA1(e7505ee8e3f19557ebbfd0145dc2ae0d1c529eba) ) ROM_LOAD( "3906.bin", 0x4000, 0x1000, CRC(b841f894) SHA1(b1f9e1800969baab14da2fd8873b58d4707b7236) ) ROM_END ROM_START( superinv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "00", 0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) ) ROM_LOAD( "01", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) ) ROM_LOAD( "02", 0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) ) ROM_LOAD( "03", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) ) ROM_LOAD( "04", 0x1800, 0x0400, CRC(68719b30) SHA1(2084bd63cd61ef1d2497c32112cdb42b7b582da4) ) ROM_LOAD( "05", 0x1c00, 0x0400, CRC(8abe2466) SHA1(17494b1e5db207e37a7d28d7c89cbc5f36b7aefc) ) ROM_END ROM_START( invasion ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "10136-0.0k", 0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) ) ROM_LOAD( "10136-1.1k", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) ) ROM_LOAD( "10136-2.2k", 0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) ) ROM_LOAD( "10136-5.5k", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) ) ROM_LOAD( "10136-6.6k", 0x1800, 0x0400, CRC(ff0b0690) SHA1(8547c4b2a228f1690287217a916613c8f0caccf6) ) ROM_LOAD( "10136-7.7k", 0x1c00, 0x0400, CRC(75d7acaf) SHA1(977d146d7df555cea1bb2156d29d88bec9731f98) ) ROM_END ROM_START( invasiona ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "invasiona_0.bin", 0x0000, 0x0400, CRC(c2fe6197) SHA1(823d02c2790711f40c167544a55e1669a97d93b4) ) ROM_LOAD( "invasiona_1.bin", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) ) ROM_LOAD( "invasiona_2.bin", 0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) ) ROM_LOAD( "invasiona_3.bin", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) ) ROM_LOAD( "invasiona_4.bin", 0x1800, 0x0400, CRC(24b39879) SHA1(c93530ac20c412b516fbcba8220d85a9bd4fa804) ) ROM_LOAD( "invasiona_5.bin", 0x1c00, 0x0400, CRC(59134ff8) SHA1(2e6a040066b35b10f867a3e500e3b13922c0eb7a) ) ROM_END ROM_START( invasionb ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "invasionb_0.bin", 0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) ) ROM_LOAD( "invasionb_1.bin", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) ) ROM_LOAD( "invasionb_2.bin", 0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) ) ROM_LOAD( "invasionb_5.bin", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) ) ROM_LOAD( "invasionb_6.bin", 0x1800, 0x0400, CRC(ec0edb4a) SHA1(8c6946b50ba5c319fe03c55b43c4e714387719b8) ) ROM_LOAD( "invasionb_7.bin", 0x1c00, 0x0400, CRC(6aac1281) SHA1(f071a21de72d2c9f7851195592c828fa501197ce) ) ROM_END ROM_START( invasionrz ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rz0.0k", 0x0000, 0x0400, CRC(7a9b4485) SHA1(dde918ec106971972bf7c7e5085c1262522f7e35) ) ROM_LOAD( "rz1.1k", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) ) ROM_LOAD( "rz2.2k", 0x0800, 0x0400, CRC(ccaf38f6) SHA1(8eb0456e8abdba0d1dda20a335a9ecbe7c38f9ed) ) ROM_LOAD( "rz5.5k", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) ) ROM_LOAD( "rz6.6k", 0x1800, 0x0400, CRC(ec0edb4a) SHA1(8c6946b50ba5c319fe03c55b43c4e714387719b8) ) ROM_LOAD( "rz7.7k", 0x1c00, 0x0400, CRC(e4ab9012) SHA1(4f54e3fd3e3835a7b7d3b8d77929f4d9e42a4917) ) ROM_END ROM_START( invasionrza ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rz0-0.9k", 0x0000, 0x0400, CRC(3044806f) SHA1(7eaedd7fd7fcfd421432d5f6970ede12f586f644) ) ROM_LOAD( "rz1-1.8k", 0x0400, 0x0400, CRC(7c86620d) SHA1(9e92ec0aa4eee96a7fa115a14a611c488d13b9dd) ) ROM_LOAD( "rz2-2.7k", 0x0800, 0x0400, CRC(c808e941) SHA1(c17f2171d82df1984c4b048f2664dea5bd9c136b) ) ROM_LOAD( "rz5-5.4k", 0x1400, 0x0400, CRC(8ec9eae2) SHA1(48d7a7dc61e0417ca4093e5c2a36efd96e359233) ) // 2 reads of the bad rom ROM_LOAD( "rz6-6.3k", 0x1800, 0x0400, BAD_DUMP CRC(c48df3ca) SHA1(d92064d171e099a45821c944324b993e39d894f7) ) ROM_LOAD( "rz6-6.3ka", 0x1800, 0x0400, BAD_DUMP CRC(aa51b2c3) SHA1(bb30f3827a66ec3cb8436566f6b865995d702f76) ) ROM_LOAD( "rz7-7.2k", 0x1c00, 0x0400, CRC(27dbea48) SHA1(f0bf5d31424dc72ac2e6fa01c528365efff838d2) ) ROM_END ROM_START( rollingc ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rc01.bin", 0x0000, 0x0400, CRC(66fa50bf) SHA1(7451d4ff8d3b351a324aaecdbdc5b46672f5fdd0) ) ROM_LOAD( "rc02.bin", 0x0400, 0x0400, CRC(61c06ae4) SHA1(7685c806e20e4a4a0508a547ac08ca8f6d75bb79) ) ROM_LOAD( "rc03.bin", 0x0800, 0x0400, CRC(77e39fa0) SHA1(16bf88af1b97c5a2a81e105af08b8d9d1f10dcc8) ) ROM_LOAD( "rc04.bin", 0x0c00, 0x0400, CRC(3fdfd0f3) SHA1(4c5e7136a766f3f16399e61eaaa0e00ef6b619f7) ) ROM_LOAD( "rc05.bin", 0x1000, 0x0400, CRC(c26a8f5b) SHA1(f7a541999cfe04c6d6927d285484f0f81857e04a) ) ROM_LOAD( "rc06.bin", 0x1400, 0x0400, CRC(0b98dbe5) SHA1(33cedab82ddccb4caaf681fce553b5230a8d6f92) ) ROM_LOAD( "rc07.bin", 0x1800, 0x0400, CRC(6242145c) SHA1(b01bb02835dda89dc02604ec52e423167183e8c9) ) ROM_LOAD( "rc08.bin", 0x1c00, 0x0400, CRC(d23c2ef1) SHA1(909e3d53291dbd219f4f9e0047c65317b9f6d5bd) ) ROM_LOAD( "rc09.bin", 0x4000, 0x0800, CRC(2e2c5b95) SHA1(33f4e2789d67e355ccd99d2c0d07301ec2bd3bc1) ) ROM_LOAD( "rc10.bin", 0x4800, 0x0800, CRC(ef94c502) SHA1(07c0504b2ebce0fa6e53e6957e7b6c0e9caab430) ) ROM_LOAD( "rc11.bin", 0x5000, 0x0800, CRC(a3164b18) SHA1(7270af25fa4171f86476f5dc409e658da7fba7fc) ) ROM_LOAD( "rc12.bin", 0x5800, 0x0800, CRC(2052f6d9) SHA1(036702fc40cf133eb374ed674695d7c6c79e8311) ) ROM_END ROM_START( schaser ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rt13.bin", 0x0000, 0x0400, CRC(0dfbde68) SHA1(7367b138ad8448aba9222fed632a892df65cecbd) ) ROM_LOAD( "rt14.bin", 0x0400, 0x0400, CRC(5a508a25) SHA1(c681d0bbf49317e79b596fb094e66b8912f0e409) ) ROM_LOAD( "rt15.bin", 0x0800, 0x0400, CRC(2ac43a93) SHA1(d364f0940681a888c0147e06bcb01f8a0d4a24c8) ) ROM_LOAD( "rt16.bin", 0x0c00, 0x0400, CRC(f5583afc) SHA1(5e8edb43ccb138fd47ac8f3da1af79b4444a4a82) ) ROM_LOAD( "rt17.bin", 0x1000, 0x0400, CRC(51cf1155) SHA1(fd8c82d951602fd7e0ada65fc7cdee9f277c70db) ) ROM_LOAD( "rt18.bin", 0x1400, 0x0400, CRC(3f0fc73a) SHA1(b801c3f1e8e6e41c564432db7c5891f6b27293b2) ) ROM_LOAD( "rt19.bin", 0x1800, 0x0400, CRC(b66ea369) SHA1(d277f572f9c7c4301518546cf60671a6539326ee) ) ROM_LOAD( "rt20.bin", 0x1c00, 0x0400, CRC(e3a7466a) SHA1(2378970f38b0cec066ef853a6540500e468e4ab4) ) ROM_LOAD( "rt21.bin", 0x4000, 0x0400, CRC(b368ac98) SHA1(6860efe0496955db67611183be0efecda92c9c98) ) ROM_LOAD( "rt22.bin", 0x4400, 0x0400, CRC(6e060dfb) SHA1(614e2ecf676c3ea2f9ea869125cfffef2f713684) ) ROM_REGION( 0x0400, "proms", 0 ) /* background color map */ ROM_LOAD( "rt06.ic2", 0x0000, 0x0400, CRC(950cf973) SHA1(d22df09b325835a0057ccd0d54f827b374254ac6) ) ROM_END ROM_START( sflush ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "fr05.sc2", 0xd800, 0x800, CRC(c4f08f9f) SHA1(997f216f5244942fc1a19f5c1988adbfadc301fc) ) ROM_LOAD( "fr04.sc3", 0xe000, 0x800, CRC(87a754a5) SHA1(07c0e2c3cb7aa0086d8f4dd202a452bc6c20d4ee) ) ROM_LOAD( "fr03.sc4", 0xe800, 0x800, CRC(5b12847f) SHA1(4b62342723dd49a387fae6637c331d7c853712a3) ) ROM_LOAD( "fr02.sc5", 0xf000, 0x800, CRC(291c9b1f) SHA1(7e5b3e1605581abf3d8165f4de9d4e32a5ee3bb0) ) ROM_LOAD( "fr01.sc6", 0xf800, 0x800, CRC(55d688c6) SHA1(574a3a2ca73cabb4b8f3444aa4464e6d64daa3ad) ) ROM_END ROM_START( schasercv ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1", 0x0000, 0x0400, CRC(bec2b16b) SHA1(c62210ecb64d7c38e5b63481d7fe04eb59bb1068) ) ROM_LOAD( "2", 0x0400, 0x0400, CRC(9d25e608) SHA1(4cc52a93a3ab96a0ec1d07593e17832fa59b30a1) ) ROM_LOAD( "3", 0x0800, 0x0400, CRC(113d0635) SHA1(ab5e98d0b5fc37d7d69bb5c541681a0f66460440) ) ROM_LOAD( "4", 0x0c00, 0x0400, CRC(f3a43c8d) SHA1(29a7a8b7d1de763a255cfec79157fd95e7bff551) ) ROM_LOAD( "5", 0x1000, 0x0400, CRC(47c84f23) SHA1(61b475fa92b8335f8edd3a128d8ac8561658e464) ) ROM_LOAD( "6", 0x1400, 0x0400, CRC(02ff2199) SHA1(e12c235b2064cb4bb426145172e523256e3c6358) ) ROM_LOAD( "7", 0x1800, 0x0400, CRC(87d06b88) SHA1(2d743161f85e47cb8ee2a600cbee790b1ad7ad99) ) ROM_LOAD( "8", 0x1c00, 0x0400, CRC(6dfaad08) SHA1(2184c4e2f4b6bffdc4fe13e178134331fcd43253) ) ROM_LOAD( "9", 0x4000, 0x0400, CRC(3d1a2ae3) SHA1(672ad6590aebdfebc2748455fa638107f3934c41) ) ROM_LOAD( "10", 0x4400, 0x0400, CRC(037edb99) SHA1(f2fc5e61f962666e7f6bb81753ac24ea0b97e581) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 (not used, but they were on the board) */ ROM_LOAD( "cv01", 0x0000, 0x0400, CRC(037e16ac) SHA1(d585030aaff428330c91ae94d7cd5c96ebdd67dd) ) ROM_LOAD( "cv02", 0x0400, 0x0400, CRC(8263da38) SHA1(2e7c769d129e6f8a1a31eba1e02777bb94ac32b2) ) ROM_END ROM_START( lupin3 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "lp01.36", 0x0000, 0x0800, CRC(fd506ee8) SHA1(67ce62f24892f0eddf3e47913dff541f41493a17) ) ROM_LOAD( "lp02.35", 0x0800, 0x0800, CRC(ec4225f8) SHA1(cd7360b3b339e5050075b498226070914fb7a031) ) ROM_LOAD( "lp03.34", 0x1000, 0x0800, CRC(9307d377) SHA1(081f6c63ff2dcc549e44ab5ff5f5ddf99d544640) ) ROM_LOAD( "lp04.33", 0x1800, 0x0800, CRC(e41e8b2b) SHA1(e67eaa8aeaf13f706afc17074fbbde3ad2cc9548) ) ROM_LOAD( "lp05.32", 0x4000, 0x0800, CRC(f5c2faf4) SHA1(8d056f8c630e4659c02dd5da759dd497e4734292) ) ROM_LOAD( "lp06.31", 0x4800, 0x0800, CRC(66289ab2) SHA1(fc9b4a7b7a08d43f34beaf1a8e68ed0ff6148534) ) ROM_REGION( 0x0800, "proms", 0 ) /* color map */ ROM_LOAD( "lp08.1", 0x0000, 0x0400, CRC(33dbd03a) SHA1(1e0ae1cad1e9a90642886ae2ef726d3f383dd6cf) ) ROM_LOAD( "lp09.2", 0x0400, 0x0400, CRC(9eaee652) SHA1(a4d2d8282ba825f3a8c0cc9bca16e1d36a0d0796) ) ROM_END ROM_START( lupin3a ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "lp12.bin", 0x0000, 0x0800, CRC(68a7f47a) SHA1(dce99b3810331d7603fa468f1dea984e571f709b) ) ROM_LOAD( "lp13.bin", 0x0800, 0x0800, CRC(cae9a17b) SHA1(a333ba7db45325996e3254ab36162bb7577e8a38) ) ROM_LOAD( "lp14.bin", 0x1000, 0x0800, CRC(3553b9e4) SHA1(6affb5b6caf08f365c0dce669e44046295c3df91) ) ROM_LOAD( "lp15.bin", 0x1800, 0x0800, CRC(acbeef64) SHA1(50d78cdc9938285b6bf9fa81fa0f6c30b23e0756) ) ROM_LOAD( "lp16.bin", 0x4000, 0x0800, CRC(19fcdc54) SHA1(2f18ee8158321fff68886ffe793724001e8b18c2) ) ROM_LOAD( "lp17.bin", 0x4800, 0x0800, CRC(66289ab2) SHA1(fc9b4a7b7a08d43f34beaf1a8e68ed0ff6148534) ) ROM_LOAD( "lp18.bin", 0x5000, 0x0800, CRC(2f07b4ba) SHA1(982e4c437b39b45e23d15af1b2fc8c7aa3034559) ) ROM_END ROM_START( polaris ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ps01-1.30", 0x0000, 0x0800, CRC(7d41007c) SHA1(168f002fe997aac6e4141292de826d389859bb04) ) ROM_LOAD( "ps09.36", 0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) ) ROM_LOAD( "ps03-1.31", 0x1000, 0x0800, CRC(21f32415) SHA1(6ac9ae9b55e342729fe260147021ed3911a24dc2) ) ROM_LOAD( "ps04.37", 0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) ) ROM_LOAD( "ps05.32", 0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) ) ROM_LOAD( "ps10.38", 0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) ) ROM_LOAD( "ps26", 0x5000, 0x0800, CRC(9d5c3d50) SHA1(a6acf9ca6e807625156cb1759269014d5830a44f) ) ROM_REGION( 0x0400, "proms", 0 ) /* background color map */ ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */ ROM_REGION( 0x0100, "user1", 0 ) /* cloud graphics */ ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */ ROM_END ROM_START( polarisa ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ps01.30", 0x0000, 0x0800, CRC(c04ce5a9) SHA1(62cc9b3b682ebecfb7600393862c65e26ff5263f) ) ROM_LOAD( "ps09.36", 0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) ) ROM_LOAD( "ps03.31", 0x1000, 0x0800, CRC(8680d7ea) SHA1(7fd4b8a415666c36842fed80d2798b48f8b29d0d) ) ROM_LOAD( "ps04.37", 0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) ) ROM_LOAD( "ps05.32", 0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) ) ROM_LOAD( "ps10.38", 0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) ) ROM_REGION( 0x0400, "proms", 0 ) /* background color map */ ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */ ROM_REGION( 0x0100, "user1", 0 ) /* cloud graphics */ ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */ ROM_END ROM_START( polariso ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "ps01.30", 0x0000, 0x0800, CRC(c04ce5a9) SHA1(62cc9b3b682ebecfb7600393862c65e26ff5263f) ) ROM_LOAD( "ps02.36", 0x0800, 0x0800, CRC(18648e4f) SHA1(9f672e108177d5d9bc004b41eec00dc4d19269ff) ) ROM_LOAD( "ps03.31", 0x1000, 0x0800, CRC(8680d7ea) SHA1(7fd4b8a415666c36842fed80d2798b48f8b29d0d) ) ROM_LOAD( "ps04.37", 0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) ) ROM_LOAD( "ps05.32", 0x4000, 0x0800, CRC(772e31f3) SHA1(fa0b866b6df1a9217e286ca880b3bb3fb0644bf3) ) ROM_LOAD( "ps06.38", 0x4800, 0x0800, CRC(f577cb72) SHA1(7a931b5ebaf0d6941191f21afb9ed670d0251e07) ) ROM_REGION( 0x0400, "proms", 0 ) /* background color map */ ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */ ROM_REGION( 0x0100, "user1", 0 ) /* cloud graphics */ ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */ ROM_END ROM_START( polarisbr ) /* aka Polaris II on flyers? */ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1", 0x0000, 0x0800, CRC(17015f52) SHA1(8beb4d927c08420f9990fac787a81d4bd6dd419c) ) ROM_LOAD( "2", 0x0800, 0x0800, CRC(9a5c8cb2) SHA1(7a8c5d74f8b431072d9476d3ef65a3fe1d639813) ) ROM_LOAD( "3", 0x1000, 0x0800, CRC(60118368) SHA1(e1189fd88b943fcf77a5c41c519cccdb8196910c) ) ROM_LOAD( "4", 0x1800, 0x0800, CRC(65694948) SHA1(de92a7f3e3ef732b573254baa60df60f8e068a5d) ) ROM_LOAD( "5", 0x4000, 0x0800, CRC(6cb21b31) SHA1(f9d435a3aa905f124cb87c139b047e1585d0997b) ) ROM_LOAD( "6", 0x4800, 0x0800, CRC(3df77bac) SHA1(b3275c34b8d42df83df2c404c5b7d220aae651fa) ) ROM_LOAD( "7", 0x5000, 0x0800, CRC(0d811b92) SHA1(09af62997e1e0da0525ab4f6ced775d3673d8f35) ) ROM_REGION( 0x0400, "proms", 0 ) /* background color map */ ROM_LOAD( "ps08.1b", 0x0000, 0x0400, CRC(164aa05d) SHA1(41c699ce45c76a60c71294f25d8df6c6e6c1280a) ) /* NEC B406 or compatible BPROM (82S137) */ ROM_REGION( 0x0100, "user1", 0 ) /* cloud graphics */ ROM_LOAD( "ps07.2c", 0x0000, 0x0100, CRC(2953253b) SHA1(2fb851bc9652ca4e51d473b484ede6dab05f1b51) ) /* MB7052 or compatible BPROM (82S129) */ ROM_END ROM_START( ozmawars ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "mw01", 0x0000, 0x0800, CRC(31f4397d) SHA1(bba9765aadd608d19e2515a5edf8e0eceb70916a) ) ROM_LOAD( "mw02", 0x0800, 0x0800, CRC(d8e77c62) SHA1(84fc81cf9a924ecbb13a008cd7435b7d465bddf6) ) ROM_LOAD( "mw03", 0x1000, 0x0800, CRC(3bfa418f) SHA1(7318878202322a2263551ca463e4c70943401f68) ) ROM_LOAD( "mw04", 0x1800, 0x0800, CRC(e190ce6c) SHA1(120898e9a683f5ce874c6fde761570a26de2fa8c) ) ROM_LOAD( "mw05", 0x4000, 0x0800, CRC(3bc7d4c7) SHA1(b084f8cd2ce0f502c2e915da3eceffcbb448e9c0) ) ROM_LOAD( "mw06", 0x4800, 0x0800, CRC(99ca2eae) SHA1(8d0f220f68043eff0c85d2de7bee7fd4365fb51c) ) ROM_END ROM_START( ozmawars2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "mw01", 0x0000, 0x0800, CRC(31f4397d) SHA1(bba9765aadd608d19e2515a5edf8e0eceb70916a) ) ROM_LOAD( "mw02", 0x0800, 0x0800, CRC(d8e77c62) SHA1(84fc81cf9a924ecbb13a008cd7435b7d465bddf6) ) ROM_LOAD( "oz5", 0x1000, 0x0400, CRC(5597bf52) SHA1(626c7348365ed974d416485d94d057745b5d9b96) ) ROM_LOAD( "oz6", 0x1400, 0x0400, CRC(19b43578) SHA1(3609b7c77f5ee6f10f302892f56fcc8375577f20) ) ROM_LOAD( "oz7", 0x1800, 0x0400, CRC(a285bfde) SHA1(ed7a9fce4d887d3b5d596645893ea87c0bafda02) ) ROM_LOAD( "oz8", 0x1c00, 0x0400, CRC(ae59a629) SHA1(0c9ea67dc35f93ec65ec91e1dab2e4b6212428bf) ) ROM_LOAD( "mw05", 0x4000, 0x0800, CRC(3bc7d4c7) SHA1(b084f8cd2ce0f502c2e915da3eceffcbb448e9c0) ) ROM_LOAD( "oz11", 0x4800, 0x0400, CRC(660e934c) SHA1(1d50ae3a9de041b908e256892203ce1738d588f6) ) ROM_LOAD( "oz12", 0x4c00, 0x0400, CRC(8b969f61) SHA1(6d12cacc73c31a897812ccd8de24725ee56dd975) ) ROM_END ROM_START( solfight ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "solfight.m", 0x0000, 0x0800, CRC(a4f2814e) SHA1(e2437e3543dcc97eeaea32babcd4aec6455581ac) ) ROM_LOAD( "solfight.n", 0x0800, 0x0800, CRC(5657ec07) SHA1(9a2fb398841160f59483bb70060caba37addb8a4) ) ROM_LOAD( "solfight.p", 0x1000, 0x0800, CRC(ef9ce96d) SHA1(96867b4f2d72f3a8827b1eb3a0748922eaa8d608) ) ROM_LOAD( "solfight.r", 0x1800, 0x0800, CRC(4f1ef540) SHA1(a798e57959e72bfb554dd2fed0e37027312f9ed3) ) ROM_LOAD( "mw05", 0x4000, 0x0800, CRC(3bc7d4c7) SHA1(b084f8cd2ce0f502c2e915da3eceffcbb448e9c0) ) ROM_LOAD( "solfight.t", 0x4800, 0x0800, CRC(3b6fb206) SHA1(db631f4a0bd5344d130ff8d723d949e9914b6f92) ) ROM_END ROM_START( spaceph ) /* Also seen in a 6-rom version which matches contents exactly (sv01+sv02, sv03+sv04, etc)*/ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "sv01.bin", 0x0000, 0x0400, CRC(de84771d) SHA1(13a7e5eedb826cca4d59634d38db9fcf5e65b732) ) ROM_LOAD( "sv02.bin", 0x0400, 0x0400, CRC(957fc661) SHA1(ac0edc901d8033619f62967f8eaf53a02947e109) ) ROM_LOAD( "sv03.bin", 0x0800, 0x0400, CRC(dbda38b9) SHA1(73a277616a0c236b07c9ffa66f16a27a78c12d70) ) ROM_LOAD( "sv04.bin", 0x0c00, 0x0400, CRC(f51544a5) SHA1(368411a2dadaebcbb4d5b6cf6c2beec036ce817f) ) ROM_LOAD( "sv05.bin", 0x1000, 0x0400, CRC(98d02683) SHA1(f13958df8d385f532e993e4c34569d992904a4ed) ) ROM_LOAD( "sv06.bin", 0x1400, 0x0400, CRC(4ec390fd) SHA1(ade23efde5d55d282fbb28a5f8a1346601501b79) ) ROM_LOAD( "sv07.bin", 0x1800, 0x0400, CRC(170862fd) SHA1(ac64a97b1510ca81d4ef3a5fcf45b7e6c7414914) ) ROM_LOAD( "sv08.bin", 0x1c00, 0x0400, CRC(511b12cf) SHA1(08ba43024c8574ded11aa457eca24b72984f5ea9) ) ROM_LOAD( "sv09.bin", 0x4000, 0x0400, CRC(af1cd1af) SHA1(286d77e8556e475b291a3b1a53acaca8b7dc3678) ) ROM_LOAD( "sv10.bin", 0x4400, 0x0400, CRC(31b7692e) SHA1(043880750d134d04311eab55e30ee223977d3d17) ) ROM_LOAD( "sv11.bin", 0x4800, 0x0400, CRC(50257351) SHA1(5c3eb29f36f04b7fb8f0351ccf9c8cfc7587f927) ) ROM_LOAD( "sv12.bin", 0x4c00, 0x0400, CRC(a2a3366a) SHA1(87032787450216d378406122effa95ea01145bf7) ) ROM_END ROM_START( ballbomb ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "tn01", 0x0000, 0x0800, CRC(551585b5) SHA1(7c17b046bdfca6ab107b7e68ba9bde6ca590c3d4) ) ROM_LOAD( "tn02", 0x0800, 0x0800, CRC(7e1f734f) SHA1(a15656818cd730d9bc98d00ff1e7fe3f860bd624) ) ROM_LOAD( "tn03", 0x1000, 0x0800, CRC(d93e20bc) SHA1(2bf72f813750cef8fad572a18fb8e9fd5bf38804) ) ROM_LOAD( "tn04", 0x1800, 0x0800, CRC(d0689a22) SHA1(1f6b258431b7eb878853ff979e4d97a05fb6b797) ) ROM_LOAD( "tn05-1", 0x4000, 0x0800, CRC(5d5e94f1) SHA1(b9f8ba38161ef4f0940c274e9d93fed4bb7db017) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "tn06", 0x0000, 0x0400, CRC(7ec554c4) SHA1(b638605ba2043fdca4c5e18755fa5fa81ed3db07) ) ROM_LOAD( "tn07", 0x0400, 0x0400, CRC(deb0ac82) SHA1(839581c4e58cb7b0c2c14cf4f239220017cc26eb) ) ROM_REGION( 0x0100, "user1", 0 ) /* cloud graphics (missing) */ ROM_LOAD( "mb7052.2c", 0x0000, 0x0100, NO_DUMP ) ROM_END ROM_START( yosakdon ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "yd1.bin", 0x0000, 0x0400, CRC(607899c9) SHA1(219c0c99894715818606fba49cc75517f6f43e0c) ) ROM_LOAD( "yd2.bin", 0x0400, 0x0400, CRC(78336df4) SHA1(b0b6254568d191d2d0b9c9280a3ccf2417ef3f38) ) ROM_LOAD( "yd3.bin", 0x0800, 0x0400, CRC(c5af6d52) SHA1(c40af79fe060562c64fc316881b7d0348e11ee3f) ) ROM_LOAD( "yd4.bin", 0x0c00, 0x0400, CRC(dca8064f) SHA1(77a58137cc7f0b5fbe0e9e8deb9c5be88b1ebbcf) ) ROM_LOAD( "yd5.bin", 0x1400, 0x0400, CRC(38804ff1) SHA1(9b7527b9d2b106355f0c8df46666b1e3f286b2e3) ) ROM_LOAD( "yd6.bin", 0x1800, 0x0400, CRC(988d2362) SHA1(deaf864b4e287cbc2585c2a11343b1ae82e15463) ) ROM_LOAD( "yd7.bin", 0x1c00, 0x0400, CRC(2744e68b) SHA1(5ad5a7a615d36f57b6d560425e035c15e25e9005) ) ROM_END ROM_START( yosakdona ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "yosaku1", 0x0000, 0x0400, CRC(d132f4f0) SHA1(373c7ea1bd6debcb3dad5881793b8c31dc7a01e6) ) ROM_LOAD( "yd2.bin", 0x0400, 0x0400, CRC(78336df4) SHA1(b0b6254568d191d2d0b9c9280a3ccf2417ef3f38) ) ROM_LOAD( "yosaku3", 0x0800, 0x0400, CRC(b1a0b3eb) SHA1(4eb80668920b45dc6216424f8ca53d753a35f4f1) ) ROM_LOAD( "yosaku4", 0x0c00, 0x0400, CRC(c06c225e) SHA1(2699e3c13b09b6de16bd3ca3ca2e9d7a91b7e268) ) ROM_LOAD( "yosaku5", 0x1400, 0x0400, CRC(ae422a43) SHA1(5219680f9d6c5d984b29167f85106fa375856121) ) ROM_LOAD( "yosaku6", 0x1800, 0x0400, CRC(26b24a12) SHA1(387589fa4027d41b6fb06555661d4f92fe2f990c) ) ROM_LOAD( "yosaku7", 0x1c00, 0x0400, CRC(878d5a18) SHA1(6adc8763d5644602eed7fe6d9186a48be105aace) ) ROM_END ROM_START( indianbt ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.36", 0x0000, 0x0800, CRC(ddc2b25d) SHA1(120ae17492b79d7d2ad515de9f1e3be7f8b9d4eb) ) ROM_LOAD( "2.35", 0x0800, 0x0800, CRC(6499b062) SHA1(62a301d532b9fc4e7a17cbe8d2061eb0e842bdfa) ) ROM_LOAD( "3.34", 0x1000, 0x0800, CRC(5c51675d) SHA1(1313e8794ee6cd0252452b96d42cff7907eeaa21) ) ROM_LOAD( "4.33", 0x1800, 0x0800, CRC(70ebec95) SHA1(f6e1e7a28033d89e49b88c559ea8926b1b4ff21b) ) ROM_LOAD( "5.32", 0x4000, 0x0800, CRC(7b4022f4) SHA1(10dec8110e8f4bc79764d3183bdfb3c135e27faf) ) ROM_LOAD( "6.31", 0x4800, 0x0800, CRC(89bd6f73) SHA1(5dc63871252c530ef0aae4f4cd02fee44b397815) ) ROM_LOAD( "7.42", 0x5000, 0x0800, CRC(7060ba0b) SHA1(366ce02b7b0a3391afef23b8b41cd98a91034830) ) ROM_LOAD( "8.41", 0x5800, 0x0800, CRC(eaccfc0a) SHA1(c6c2d702243bdd1d2ad5fbaaceadb5a5798577bc) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 */ ROM_LOAD( "mb7054.1", 0x0000, 0x0400, CRC(4acf4db3) SHA1(842a6c9f91806b424b7cc437670b4fe0bd57dff1) ) ROM_LOAD( "mb7054.2", 0x0400, 0x0400, CRC(62cb3419) SHA1(3df65062945589f1df37359dbd3e30ae4b23f469) ) ROM_END ROM_START( shuttlei ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.13c", 0x0000, 0x0400, CRC(b6d4f0cd) SHA1(f855a793e78ff6283288c815b59e6942513ab4f8) ) ROM_LOAD( "2.11c", 0x0400, 0x0400, CRC(168d6138) SHA1(e0e5ba58eb5a3a00802504c48a96d63522f9865f) ) ROM_LOAD( "3.13d", 0x0800, 0x0400, CRC(804bd7fb) SHA1(f019bcc2894f9b819a14c069de8f1a7d228b79eb) ) ROM_LOAD( "4.11d", 0x0c00, 0x0400, CRC(8205b369) SHA1(685dd244881f5762d0f53cbfa935da2b857e3fba) ) ROM_LOAD( "5.13e", 0x1000, 0x0400, CRC(b50df820) SHA1(27a846ac3da4c0890a80f60483ed5750cb0b2476) ) ROM_LOAD( "8.11f", 0x1c00, 0x0400, CRC(4978552b) SHA1(5a6b6e39f57a353580ed9281d7da24950f058426) ) ROM_END ROM_START( skylove ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "01", 0x0000, 0x0400, CRC(391ad7d0) SHA1(73358fff44da5fffd4e08fbb615ccc0245e3365b) ) ROM_LOAD( "02", 0x0400, 0x0400, CRC(365ba070) SHA1(8493bde493ea0d04b3563f9bc752a6ec57022524) ) ROM_LOAD( "03", 0x0800, 0x0400, CRC(47364dad) SHA1(b49704f8d49a0866cb9cd8bb867f30246e3dabc9) ) ROM_LOAD( "04", 0x0c00, 0x0400, CRC(9d76f33d) SHA1(5aa6a081a3609e6c036843049d58cc763a86fedb) ) ROM_LOAD( "05", 0x1000, 0x0400, CRC(09084954) SHA1(f5c826188ffb7a572c45aad94e794f31bebfebe5) ) ROM_LOAD( "06", 0x1400, 0x0400, CRC(6d494e82) SHA1(8e5ee1b842621cd088e80124b92b8a517e8dfbb9) ) ROM_LOAD( "07", 0x1800, 0x0400, CRC(1a9aa4b8) SHA1(0da553c6343a2740312ebafc2b936ffbbf24af04) ) ROM_LOAD( "08", 0x1c00, 0x0400, CRC(ecaacacc) SHA1(b815366d3aaa8ef311cd54a5be9fb4d60324e5a7) ) ROM_END ROM_START( darthvdr ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rom0", 0x0000, 0x0400, CRC(b15785b6) SHA1(f453a006019dc83bd746f3a26736e913186332e6) ) ROM_LOAD( "rom1", 0x0400, 0x0400, CRC(95947743) SHA1(59f414de21f680e0d68ca8c4b6b538c8006cfdd6) ) ROM_LOAD( "rom2", 0x0800, 0x0400, CRC(19b1731f) SHA1(2383c241de8a1ed57f03ecc7ded97585a6c10c91) ) ROM_LOAD( "rom3", 0x0c00, 0x0400, CRC(ca1b5e3c) SHA1(e54ca4a3f36b2ed5e4e42c1e8bbbde43c92796e9) ) ROM_LOAD( "rom4", 0x1000, 0x0400, CRC(eede5f41) SHA1(cd9f023057eb9598bad01b9e9d91bb4866b9bd3b) ) ROM_LOAD( "rom5", 0x1400, 0x0400, CRC(cc52a4bb) SHA1(857b75a8b01fc707db940197d6bf3b0466c4a7b5) ) ROM_END ROM_START( astropal ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "2708.0a", 0x0000, 0x0400, CRC(e6883322) SHA1(05b0ab0dc6297209dcfdd173e762bfae3a720e8d) ) ROM_LOAD( "2708.1a", 0x0400, 0x0400, CRC(4401df1d) SHA1(16f3b957278aa67cb37bcd5defb6e4dd8ccf7d1f) ) ROM_LOAD( "2708.2a", 0x0800, 0x0400, CRC(5bac1ee4) SHA1(8c3e5f882f4798f8ed0523b60a216c989324a7c2) ) ROM_LOAD( "2708.3a", 0x0c00, 0x0400, CRC(a870afad) SHA1(1a256db2bc6baa238ee1df4eff2fdce0888f812c) ) ROM_LOAD( "2708.4a", 0x1000, 0x0400, CRC(8bd2d985) SHA1(3ff9110c1bad7d4562664da772d14750d738c2d6) ) ROM_LOAD( "2708.5a", 0x1400, 0x0400, CRC(5e97a86b) SHA1(f3500d48ecb3969b8aaea9c4e812fbf6cf4170af) ) ROM_LOAD( "2708.6a", 0x1800, 0x0400, CRC(22c354d0) SHA1(c465ca5787ad8de3be97deac1214d3abd0b27e6b) ) ROM_LOAD( "2708.7a", 0x1c00, 0x0400, CRC(aeca51c1) SHA1(767bca1e6bca41327b9ff6c3570edcabe46dec21) ) ROM_END ROM_START( steelwkr ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.36", 0x0000, 0x0400, CRC(5d78873a) SHA1(293cbc067937668148181453877239cb5ed57600) ) ROM_LOAD( "2.35", 0x0400, 0x0400, CRC(99cd70c6) SHA1(a08bf4db6b39d22dfcf052cc6603aab041db0208) ) ROM_LOAD( "3.34", 0x0800, 0x0400, CRC(18103b67) SHA1(45929ea56ab15769fc68873570aab3d403e8e913) ) ROM_LOAD( "4.33", 0x0c00, 0x0400, CRC(c413ae82) SHA1(302b933b45b2aaa515434b5268fd74aec4160e3f) ) ROM_LOAD( "5.32", 0x1000, 0x0400, CRC(ca7b07b5) SHA1(cbea221c4daf84825f99bbef6d731fc2ef88feeb) ) ROM_LOAD( "6.31", 0x1400, 0x0400, CRC(f8181fa0) SHA1(a907611529a1500a2ae118e834c2d4b6d11974f1) ) ROM_LOAD( "7.42", 0x1800, 0x0400, CRC(a35f113e) SHA1(53073037db55c14055810c0bee7b85eb75bbaa72) ) ROM_LOAD( "8.41", 0x1c00, 0x0400, CRC(af208370) SHA1(ccbd002accda26cc0a02987d9801a47e5f49921a) ) ROM_REGION( 0x0800, "proms", 0 ) /* color maps player 1/player 2 (not used, but they were on the board) */ ROM_LOAD( "la05.1", 0x0000, 0x0400, CRC(98f31392) SHA1(ccdd1bd2ddd24bd6b1f8255a87e138f937eaf5b4) ) ROM_LOAD( "la06.2", 0x0400, 0x0400, CRC(98f31392) SHA1(ccdd1bd2ddd24bd6b1f8255a87e138f937eaf5b4) ) ROM_END ROM_START( galactic ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1(__galactic)", 0x0000, 0x0800, CRC(b5098f1e) SHA1(9d1d045d8abeafd4716d3052fe93e52c6b347049) ) ROM_LOAD( "2", 0x0800, 0x0800, CRC(f97410ee) SHA1(47f1f296c905fa13f6c521edc12c10f1f0e42400) ) ROM_LOAD( "3", 0x1000, 0x0800, CRC(c1175feb) SHA1(83bf955ed3a52e1ce8c688d89725d8dee1bcc866) ) ROM_LOAD( "4", 0x1800, 0x0800, CRC(b4451d7c) SHA1(62a18e8e927ef00a7f6cb933cdc5aeae9f074dc0) ) ROM_LOAD( "5", 0x4000, 0x0800, CRC(74c9da61) SHA1(cb98105729f0fa4343b71af3c658b378ade1ed46) ) ROM_LOAD( "6", 0x4800, 0x0800, CRC(5e7c6c44) SHA1(be7eeef10462377909018cf40503766f38466022) ) ROM_LOAD( "7", 0x5000, 0x0800, CRC(02619e18) SHA1(4c59f17fbc96ca08090f08c41ca9fc72c074e9c0) ) ROM_END ROM_START( spacmiss ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1_(__spacmiss)", 0x0000, 0x0800, CRC(e212dc88) SHA1(bc56052bf43d18081f777b936b2be792e91ba842) ) ROM_LOAD( "2", 0x0800, 0x0800, CRC(f97410ee) SHA1(47f1f296c905fa13f6c521edc12c10f1f0e42400) ) ROM_LOAD( "3", 0x1000, 0x0800, CRC(c1175feb) SHA1(83bf955ed3a52e1ce8c688d89725d8dee1bcc866) ) ROM_LOAD( "4", 0x1800, 0x0800, CRC(b4451d7c) SHA1(62a18e8e927ef00a7f6cb933cdc5aeae9f074dc0) ) ROM_LOAD( "5", 0x4000, 0x0800, CRC(74c9da61) SHA1(cb98105729f0fa4343b71af3c658b378ade1ed46) ) ROM_LOAD( "6", 0x4800, 0x0800, CRC(5e7c6c44) SHA1(be7eeef10462377909018cf40503766f38466022) ) ROM_LOAD( "7", 0x5000, 0x0800, CRC(02619e18) SHA1(4c59f17fbc96ca08090f08c41ca9fc72c074e9c0) ) ROM_REGION( 0x0800, "user1", 0 ) ROM_LOAD( "8", 0x0000, 0x0800, CRC(942e5261) SHA1(e8af51d644eab4e7b31c14dc66bb036ad8940c42) ) // ? ROM_END /* board # rom parent machine inp */ /* Taito games */ GAMEL(1978, sitv, invaders, invaders, sitv, 0, ROT270, "Taito", "Space Invaders (TV Version)", GAME_SUPPORTS_SAVE, layout_invaders ) GAME( 1979, sicv, invaders, invadpt2, sicv, 0, ROT270, "Taito", "Space Invaders (CV Version)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) GAME( 1978, sisv, invaders, invadpt2, sicv, 0, ROT270, "Taito", "Space Invaders (SV Version)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) GAME( 1978, sisv2, invaders, invadpt2, sicv, 0, ROT270, "Taito", "Space Invaders (SV Version 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) GAME( 1979, galxwars, 0, invadpt2, galxwars, 0, ROT270, "Universal", "Galaxy Wars (Universal set 1)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) GAME( 1979, galxwars2,galxwars, invadpt2, galxwars, 0, ROT270, "Universal", "Galaxy Wars (Universal set 2)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) GAME( 1979, galxwarst,galxwars, invadpt2, galxwars, 0, ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) /* Copyright Not Displayed */ GAME( 1979, starw, galxwars, invaders, galxwars, 0, ROT270, "bootleg", "Star Wars", GAME_SUPPORTS_SAVE ) GAME( 1979, lrescue, 0, lrescue, lrescue, 0, ROT270, "Taito", "Lunar Rescue", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1980, mlander, lrescue, invaders, lrescue, 0, ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", GAME_SUPPORTS_SAVE ) GAME( 1978, lrescuem, lrescue, lrescue, lrescue, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1979, grescue, lrescue, lrescue, lrescue, 0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1979, desterth, lrescue, lrescue, invrvnge, 0, ROT270, "bootleg", "Destination Earth", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1979, invadpt2, 0, invadpt2, invadpt2, 0, ROT270, "Taito", "Space Invaders Part II (Taito)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1979, invadpt2br,invadpt2,invadpt2, invadpt2, 0, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", GAME_SUPPORTS_SAVE ) GAME( 1980, vortex, 0, vortex, vortex, vortex, ROT270, "Zilec Electronics", "Vortex", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) /* Encrypted 8080/IO */ GAME( 1979, cosmo, 0, cosmo, cosmo, 0, ROT90, "TDS & Mints", "Cosmo", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1979, schaser, 0, schaser, schaser, 0, ROT270, "Taito", "Space Chaser", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_COLORS ) GAME( 1979, schasercv,schaser, schasercv,schasercv,0, ROT270, "Taito", "Space Chaser (CV version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS ) GAME( 1979, sflush, 0, sflush, sflush, 0, ROT270, "Taito", "Straight Flush",GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL) GAME( 1980, lupin3, 0, lupin3, lupin3, 0, ROT270, "Taito", "Lupin III (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, 0, ROT270, "Taito", "Lupin III (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1980, polaris, 0, polaris, polaris, 0, ROT270, "Taito", "Polaris (Latest version)", GAME_SUPPORTS_SAVE ) GAME( 1980, polarisa, polaris, polaris, polaris, 0, ROT270, "Taito", "Polaris (First revision)", GAME_SUPPORTS_SAVE ) GAME( 1980, polariso, polaris, polaris, polaris, 0, ROT270, "Taito", "Polaris (Original version)", GAME_SUPPORTS_SAVE ) GAME( 1981, polarisbr,polaris, polaris, polaris, 0, ROT270, "Taito do Brasil", "Polaris (Brazil)", GAME_SUPPORTS_SAVE ) GAME( 1980, ballbomb, 0, ballbomb, ballbomb, 0, ROT270, "Taito", "Balloon Bomber", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) /* missing clouds */ GAME( 1980, indianbt, 0, indianbt, indianbt, 0, ROT270, "Taito", "Indian Battle", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1980, steelwkr, 0, steelwkr, steelwkr, 0, ROT0 , "Taito", "Steel Worker", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 19??, galactic, 0, invaders, galactic, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // 19?? = 79/80/81, copyright not displayed GAME( 19??, spacmiss, galactic, invaders, galactic, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) /* Misc. manufacturers */ GAMEL(1980, searthin, invaders, invaders, searthin, 0, ROT270, "bootleg", "Super Earth Invasion (set 1)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1980, searthina,invaders, invaders, searthin, 0, ROT270, "bootleg", "Super Earth Invasion (set 2)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1978, invadrmr, invaders, invaders, invadrmr, 0, ROT270, "bootleg? (Model Racing)", "Space Invaders (Model Racing)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1978, spaceatt, invaders, invaders, sicv, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1980, spaceat2, invaders, invaders, spaceatt, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II", GAME_SUPPORTS_SAVE, layout_invaders ) // bootleg of super invaders GAMEL(19??, sinvzen, invaders, invaders, spaceatt, 0, ROT270, "Zenitone-Microsec Ltd", "Super Invaders (Zenitone-Microsec)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, sinvemag, invaders, invaders, sinvemag, 0, ROT270, "bootleg (Emag)", "Super Invaders (Emag)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, tst_invd, invaders, invaders, sicv, 0, ROT0, "<unknown>", "Space Invaders Test ROM", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, alieninv, invaders, invaders, alieninv, 0, ROT270, "bootleg (Margamatics)", "Alien Invasion", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, alieninvp2,invaders,invaders, searthin, 0, ROT270, "bootleg", "Alien Invasion Part II", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1978, spceking, invaders, invaders, sicv, 0, ROT270, "Leijac Corporation","Space King", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1978, spcewars, invaders, spcewars, spcewars, 0, ROT270, "bootleg? (Sanritsu)", "Space War (Sanritsu)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_invaders ) GAME (19??, astropal, 0, astropal, astropal, 0, ROT0, "Sidam?", "Astropal", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAMEL(1978, spacewr3, invaders, spcewars, sicv, 0, ROT270, "bootleg", "Space War Part 3", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1978, invaderl, invaders, invaders, sicv, 0, ROT270, "bootleg? (Logitec)", "Space Invaders (Logitec)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1978, invader4, invaders, invaders, sicv, 0, ROT270, "bootleg", "Space Invaders Part Four", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1979, jspecter, invaders, invaders, jspecter, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 1)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1979, jspecter2,invaders, invaders, jspecter, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 2)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(1979, cosmicmo, invaders, invaders, cosmicmo, 0, ROT270, "Universal", "Cosmic Monsters", GAME_SUPPORTS_SAVE, layout_cosmicm ) GAMEL(1979, cosmicm2, invaders, invaders, cosmicmo, 0, ROT270, "Universal", "Cosmic Monsters 2", GAME_SUPPORTS_SAVE, layout_cosmicm ) GAMEL(19??, superinv, invaders, invaders, superinv, 0, ROT270, "bootleg", "Super Invaders", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, invasion, invaders, invaders, invasion, 0, ROT270, "Sidam", "Invasion (Sidam)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, invasiona,invaders, invaders, invasion, 0, ROT270, "bootleg", "Invasion (bootleg, set 1, normal graphics)", GAME_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX GAMEL(19??, invasionb,invaders, invaders, invasion, 0, ROT270, "bootleg", "Invasion (bootleg, set 2, no copyright)", GAME_SUPPORTS_SAVE, layout_invaders ) GAMEL(19??, invasionrz,invaders,invaders, invasion, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg, set 3, R Z SRL Bologna)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING, layout_invaders ) GAMEL(19??, invasionrza,invaders,invaders,invasion, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg, set 4, R Z SRL Bologna)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING, layout_invaders ) GAME( 19??, darthvdr, invaders, darthvdr, darthvdr, 0, ROT270, "bootleg", "Darth Vader", GAME_SUPPORTS_SAVE | GAME_NO_SOUND ) GAME( 1979, moonbase, invadpt2, invadpt2, invadpt2, 0, ROT270, "Nichibutsu (Taito license?)", "Moon Base (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - how do you get it to display? GAME( 1979, moonbasea,invadpt2, invadpt2, invadpt2, 0, ROT270, "Nichibutsu", "Moon Base (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences GAMEL(19??, invrvnge, 0, invrvnge, invrvnge, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_invrvnge ) GAMEL(19??, invrvngea,invrvnge, invrvnge, invrvnge, 0, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_invrvnge ) GAME( 1980, spclaser, 0, invaders, spclaser, 0, ROT270, "Game Plan (Taito license)", "Space Laser", GAME_SUPPORTS_SAVE ) GAME( 1980, intruder, spclaser, invadpt2, spclaser, 0, ROT270, "Game Plan (Taito license)", "Intruder", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) GAME( 1980, laser, spclaser, invaders, spclaser, 0, ROT270, "bootleg (Leisure Time Electronics Inc.)", "Astro Laser", GAME_SUPPORTS_SAVE ) GAME( 1979, spcewarl, spclaser, invaders, spclaser, 0, ROT270, "Leijac Corporation","Space War (Leijac Corporation)", GAME_SUPPORTS_SAVE ) GAME( 1979, rollingc, 0, rollingc, rollingc, 0, ROT270, "Nichibutsu", "Rolling Crash / Moon Base", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) GAME( 1979, ozmawars, 0, invaders, ozmawars, 0, ROT270, "SNK", "Ozma Wars (set 1)", GAME_SUPPORTS_SAVE ) GAME( 1979, ozmawars2,ozmawars, invaders, ozmawars, 0, ROT270, "SNK", "Ozma Wars (set 2)", GAME_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */ GAME( 1979, solfight, ozmawars, invaders, ozmawars, 0, ROT270, "bootleg", "Solar Fight", GAME_SUPPORTS_SAVE ) GAME( 1979, spaceph, ozmawars, invaders, spaceph, 0, ROT270, "SNK (Zilec Games license?)", "Space Phantoms", GAME_SUPPORTS_SAVE ) // or bootleg? GAME( 1979, yosakdon, 0, yosakdon, yosakdon, 0, ROT270, "Wing", "Yosaku To Donbei (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) /* bootleg? */ GAME( 1979, yosakdona,yosakdon, yosakdon, yosakdon, 0, ROT270, "Wing", "Yosaku To Donbei (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) /* bootleg? */ GAMEL(1979, shuttlei, 0, shuttlei, shuttlei, 0, ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL, layout_shuttlei ) GAMEL(1979, skylove, 0, shuttlei, skylove, 0, ROT270, "Omori Electric Co., Ltd.", "Sky Love", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL, layout_shuttlei ) GAME (19??, modelr, 0, modelr, invadrmr, 0, ROT0, "Model Racing", "unknown Model Racing gun game", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // no titlescreen