1 // license:BSD-3-Clause
2 // copyright-holders:Nicola Salmoria
3 /***************************************************************************
4 
5  Scramble hardware
6 
7 NOTE:  Eventually to be merged into GALAXIAN.C
8 
9 Interesting tidbit:
10 
11 There is a bug in Amidars and Triple Punch. Look at the loop at 0x2715.
12 It expects DE to be saved during the call to 0x2726, but it can be destroyed,
13 causing the loop to read all kinds of bogus memory locations.
14 
15 
16 To Do:
17 
18 - Mariner has discrete sound circuits connected to the 8910's output ports
19 
20 
21 Notes:
22 
23 - While Atlantis has a cabinet switch, it doesn't use the 2nd player controls
24   in cocktail mode.
25 - DIP locations have been verified from manuals for:
26   800fath
27   scramble
28 
29 ***************************************************************************/
30 
31 #include "emu.h"
32 #include "includes/scramble.h"
33 
34 #include "cpu/s2650/s2650.h"
35 #include "cpu/z80/z80.h"
36 #include "machine/gen_latch.h"
37 #include "machine/i8255.h"
38 #include "machine/watchdog.h"
39 #include "sound/ay8910.h"
40 #include "speaker.h"
41 
42 
scramble_map(address_map & map)43 void scramble_state::scramble_map(address_map &map)
44 {
45 	map(0x0000, 0x3fff).rom();
46 	map(0x4000, 0x47ff).ram();
47 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
48 	map(0x4c00, 0x4fff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */
49 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
50 	map(0x5040, 0x505f).ram().share("spriteram");
51 	map(0x5060, 0x507f).ram().share("bulletsram");
52 	map(0x5080, 0x50ff).ram();
53 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
54 	map(0x6802, 0x6802).w(FUNC(scramble_state::galaxold_coin_counter_w));
55 	map(0x6804, 0x6804).w(FUNC(scramble_state::galaxold_stars_enable_w));
56 	map(0x6806, 0x6806).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
57 	map(0x6807, 0x6807).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
58 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
59 	map(0x7800, 0x7800).r("watchdog", FUNC(watchdog_timer_device::reset_r));
60 	map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
61 	map(0x8110, 0x8113).r(m_ppi8255_0, FUNC(i8255_device::read));  /* mirror for Frog */
62 	map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
63 }
64 
scramble_soundram_r(offs_t offset)65 uint8_t scramble_state::scramble_soundram_r(offs_t offset)
66 {
67 	return m_soundram[offset & 0x03ff];
68 }
69 
scramble_soundram_w(offs_t offset,uint8_t data)70 void scramble_state::scramble_soundram_w(offs_t offset, uint8_t data)
71 {
72 	m_soundram[offset & 0x03ff] = data;
73 }
74 
scramble_sound_map(address_map & map)75 void scramble_state::scramble_sound_map(address_map &map)
76 {
77 	map(0x0000, 0x2fff).rom();
78 	map(0x8000, 0x8fff).rw(FUNC(scramble_state::scramble_soundram_r), FUNC(scramble_state::scramble_soundram_w)).share("soundram");
79 	map(0x9000, 0x9fff).nopw(); // w(FUNC(scramble_state::scramble_filter_w)); - scramble doesn't instantiate any RC filters. This is dead code!
80 }
81 
scramble_sound_io_map(address_map & map)82 void scramble_state::scramble_sound_io_map(address_map &map)
83 {
84 	map.global_mask(0xff);
85 	map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w));
86 	map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
87 	map(0x40, 0x40).w("8910.2", FUNC(ay8910_device::address_w));
88 	map(0x80, 0x80).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
89 }
90 
91 
ckongs_map(address_map & map)92 void scramble_state::ckongs_map(address_map &map)
93 {
94 	map(0x0000, 0x5fff).rom();
95 	map(0x6000, 0x6bff).ram();
96 	map(0x7000, 0x7003).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
97 	map(0x7800, 0x7803).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
98 	map(0x9000, 0x93ff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
99 	map(0x9800, 0x983f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
100 	map(0x9840, 0x985f).ram().share("spriteram");
101 	map(0x9860, 0x987f).ram().share("bulletsram");
102 	map(0x9880, 0x98ff).ram();
103 	map(0xa801, 0xa801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
104 	map(0xa802, 0xa802).w(FUNC(scramble_state::galaxold_coin_counter_w));
105 	map(0xa806, 0xa806).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
106 	map(0xa807, 0xa807).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
107 	map(0xb000, 0xb000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
108 }
109 
110 
111 
mars_ppi8255_0_r(offs_t offset)112 uint8_t scramble_state::mars_ppi8255_0_r(offs_t offset)
113 {
114 	return m_ppi8255_0->read(((offset >> 2) & 0x02) | ((offset >> 1) & 0x01));
115 }
116 
mars_ppi8255_1_r(offs_t offset)117 uint8_t scramble_state::mars_ppi8255_1_r(offs_t offset)
118 {
119 	return m_ppi8255_1->read(((offset >> 2) & 0x02) | ((offset >> 1) & 0x01));
120 }
121 
mars_ppi8255_0_w(offs_t offset,uint8_t data)122 void scramble_state::mars_ppi8255_0_w(offs_t offset, uint8_t data)
123 {
124 	m_ppi8255_0->write(((offset >> 2) & 0x02) | ((offset >> 1) & 0x01), data);
125 }
126 
mars_ppi8255_1_w(offs_t offset,uint8_t data)127 void scramble_state::mars_ppi8255_1_w(offs_t offset, uint8_t data)
128 {
129 	m_ppi8255_1->write(((offset >> 2) & 0x02) | ((offset >> 1) & 0x01), data);
130 }
131 
mars_map(address_map & map)132 void scramble_state::mars_map(address_map &map)
133 {
134 	map(0x0000, 0x3fff).rom();
135 	map(0x4000, 0x47ff).ram();
136 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
137 	map(0x4c00, 0x4fff).r(FUNC(scramble_state::galaxold_videoram_r));
138 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
139 	map(0x5040, 0x505f).ram().share("spriteram");
140 	map(0x5060, 0x507f).ram().share("bulletsram");
141 	map(0x5080, 0x50ff).ram();
142 	map(0x6800, 0x6800).w(FUNC(scramble_state::galaxold_coin_counter_1_w));
143 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_stars_enable_w));
144 	map(0x6802, 0x6802).w(FUNC(scramble_state::galaxold_nmi_enable_w));
145 	map(0x6808, 0x6808).w(FUNC(scramble_state::galaxold_coin_counter_0_w));
146 	map(0x6809, 0x6809).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
147 	map(0x680b, 0x680b).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
148 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
149 	map(0x7000, 0x7000).nopr();
150 	map(0x8100, 0x810f).rw(FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w));
151 	map(0x8200, 0x820f).rw(FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w));
152 }
153 
154 
155 
newsin7_map(address_map & map)156 void scramble_state::newsin7_map(address_map &map)
157 {
158 	map(0x0000, 0x3fff).rom();
159 	map(0x4000, 0x47ff).ram();
160 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
161 	map(0x4c00, 0x4fff).r(FUNC(scramble_state::galaxold_videoram_r));
162 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
163 	map(0x5040, 0x505f).ram().share("spriteram");
164 	map(0x5060, 0x507f).ram().share("bulletsram");
165 	map(0x5080, 0x50ff).ram();
166 	map(0x6800, 0x6800).w(FUNC(scramble_state::galaxold_coin_counter_1_w));
167 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_stars_enable_w));
168 	//map(0x6802, 0x6802).w(FUNC(scramble_state::galaxold_nmi_enable_w));
169 	map(0x6808, 0x6808).w(FUNC(scramble_state::galaxold_coin_counter_0_w));
170 	map(0x6809, 0x6809).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
171 	map(0x680b, 0x680b).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
172 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
173 	map(0x8200, 0x820f).rw(FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w));
174 	map(0xa000, 0xafff).rom();
175 	map(0xc100, 0xc10f).rw(FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w));
176 }
177 
178 
179 
mrkougar_map(address_map & map)180 void scramble_state::mrkougar_map(address_map &map)
181 {
182 	map(0x0000, 0x3fff).rom();
183 	map(0x4000, 0x47ff).ram();
184 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
185 	map(0x4c00, 0x4fff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w));
186 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
187 	map(0x5040, 0x505f).ram().share("spriteram");
188 	map(0x5060, 0x507f).ram().share("bulletsram");
189 	map(0x5080, 0x50ff).ram();
190 	map(0x6800, 0x6800).w(FUNC(scramble_state::galaxold_coin_counter_1_w));
191 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
192 	map(0x6808, 0x6808).w(FUNC(scramble_state::galaxold_coin_counter_0_w));
193 	map(0x6809, 0x6809).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
194 	map(0x680b, 0x680b).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
195 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
196 	map(0x8100, 0x810f).rw(FUNC(scramble_state::mars_ppi8255_0_r), FUNC(scramble_state::mars_ppi8255_0_w));
197 	map(0x8200, 0x820f).rw(FUNC(scramble_state::mars_ppi8255_1_r), FUNC(scramble_state::mars_ppi8255_1_w));
198 }
199 
200 
201 
hotshock_map(address_map & map)202 void scramble_state::hotshock_map(address_map &map)
203 {
204 	map(0x0000, 0x3fff).rom();
205 	map(0x4000, 0x47ff).ram();
206 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
207 	map(0x4c00, 0x4fff).r(FUNC(scramble_state::galaxold_videoram_r));
208 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
209 	map(0x5040, 0x505f).ram().share("spriteram");
210 	map(0x5060, 0x507f).ram().share("bulletsram");
211 	map(0x5080, 0x50ff).ram();
212 	map(0x6000, 0x6000).w(FUNC(scramble_state::galaxold_coin_counter_2_w));
213 	map(0x6002, 0x6002).w(FUNC(scramble_state::galaxold_coin_counter_1_w));
214 	map(0x6004, 0x6004).w(FUNC(scramble_state::hotshock_flip_screen_w));
215 	map(0x6005, 0x6005).w(FUNC(scramble_state::galaxold_coin_counter_0_w));
216 	map(0x6006, 0x6006).w(FUNC(scramble_state::galaxold_gfxbank_w));
217 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
218 	map(0x7000, 0x7000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
219 	map(0x8000, 0x8000).portr("IN0").w(m_soundlatch, FUNC(generic_latch_8_device::write));
220 	map(0x8001, 0x8001).portr("IN1");
221 	map(0x8002, 0x8002).portr("IN2");
222 	map(0x8003, 0x8003).portr("IN3");
223 	map(0x9000, 0x9000).w(FUNC(scramble_state::hotshock_sh_irqtrigger_w));
224 }
225 
226 
227 
hunchbks_map(address_map & map)228 void scramble_state::hunchbks_map(address_map &map)
229 {
230 	map(0x0000, 0x0fff).rom();
231 	map(0x1210, 0x1213).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
232 	map(0x1400, 0x143f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
233 	map(0x1440, 0x145f).ram().share("spriteram");
234 	map(0x1460, 0x147f).ram().share("bulletsram");
235 	map(0x1480, 0x14ff).ram();
236 	map(0x1500, 0x1503).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
237 	map(0x1606, 0x1606).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
238 	map(0x1607, 0x1607).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
239 	map(0x1680, 0x1680).r("watchdog", FUNC(watchdog_timer_device::reset_r));
240 	map(0x1780, 0x1780).r("watchdog", FUNC(watchdog_timer_device::reset_r));
241 	map(0x1800, 0x1bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
242 	map(0x1c00, 0x1fff).ram();
243 	map(0x2000, 0x2fff).rom();
244 	map(0x3000, 0x3fff).rw(FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w));
245 	map(0x4000, 0x4fff).rom();
246 	map(0x5000, 0x5fff).rw(FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w));
247 	map(0x6000, 0x6fff).rom();
248 	map(0x7000, 0x7fff).rw(FUNC(scramble_state::hunchbks_mirror_r), FUNC(scramble_state::hunchbks_mirror_w));
249 }
250 
251 
252 
mimonscr_map(address_map & map)253 void scramble_state::mimonscr_map(address_map &map)
254 {
255 	map(0x0000, 0x3fff).rom();
256 	map(0x4000, 0x47ff).ram();
257 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
258 	map(0x4c00, 0x4fff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */
259 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
260 	map(0x5040, 0x505f).ram().share("spriteram");
261 	map(0x5060, 0x507f).ram().share("bulletsram");
262 	map(0x5080, 0x50ff).ram();
263 	map(0x6800, 0x6802).w(FUNC(scramble_state::galaxold_gfxbank_w));
264 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
265 	map(0x6806, 0x6806).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
266 	map(0x6807, 0x6807).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
267 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
268 	map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
269 	map(0x8200, 0x8203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
270 	map(0xc000, 0xffff).rom();
271 }
272 
273 
274 
ad2083_map(address_map & map)275 void scramble_state::ad2083_map(address_map &map)
276 {
277 	map(0x0000, 0x3fff).rom();
278 	map(0x4000, 0x47ff).ram();
279 	map(0x4800, 0x4bff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
280 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
281 	map(0x5040, 0x505f).ram().share("spriteram");
282 	map(0x5060, 0x507f).ram().share("bulletsram");
283 	map(0x6004, 0x6004).w(FUNC(scramble_state::hotshock_flip_screen_w));
284 	map(0x6800, 0x6800).w(FUNC(scramble_state::galaxold_coin_counter_2_w));
285 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
286 	map(0x6802, 0x6802).w(FUNC(scramble_state::galaxold_coin_counter_0_w));
287 	map(0x6803, 0x6803).w(FUNC(scramble_state::scrambold_background_blue_w));
288 	map(0x6805, 0x6805).w(FUNC(scramble_state::galaxold_coin_counter_1_w));
289 	map(0x6806, 0x6806).w(FUNC(scramble_state::scrambold_background_red_w));
290 	map(0x6807, 0x6807).w(FUNC(scramble_state::scrambold_background_green_w));
291 	map(0x8000, 0x8000).w(m_soundlatch, FUNC(generic_latch_8_device::write));
292 	map(0x9000, 0x9000).w(FUNC(scramble_state::hotshock_sh_irqtrigger_w));
293 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
294 	map(0x8000, 0x8000).portr("IN0");
295 	map(0x8001, 0x8001).portr("IN1");
296 	map(0x8002, 0x8002).portr("IN2");
297 	map(0x8003, 0x8003).portr("IN3");
298 	map(0xa000, 0xdfff).rom();
299 	map(0xe800, 0xebff).ram();
300 }
301 
302 
303 
triplep_map(address_map & map)304 void scramble_state::triplep_map(address_map &map)
305 {
306 	map(0x0000, 0x3fff).rom();
307 	map(0x4000, 0x47ff).ram();
308 	map(0x4800, 0x4bff).ram().w(FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
309 	map(0x4c00, 0x4fff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); /* mirror address */
310 	map(0x5000, 0x503f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
311 	map(0x5040, 0x505f).ram().share("spriteram");
312 	map(0x5060, 0x507f).ram().share("bulletsram");
313 	map(0x5080, 0x50ff).ram();
314 	map(0x5800, 0x67ff).rom();
315 	map(0x6801, 0x6801).w(FUNC(scramble_state::galaxold_nmi_enable_w));
316 	map(0x6802, 0x6802).w(FUNC(scramble_state::galaxold_coin_counter_w));
317 	map(0x6804, 0x6804).w(FUNC(scramble_state::galaxold_stars_enable_w));
318 	map(0x6806, 0x6806).w(FUNC(scramble_state::galaxold_flip_screen_x_w));
319 	map(0x6807, 0x6807).w(FUNC(scramble_state::galaxold_flip_screen_y_w));
320 	map(0x7000, 0x7000).r("watchdog", FUNC(watchdog_timer_device::reset_r));
321 	map(0x8100, 0x8103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
322 }
323 
triplep_io_map(address_map & map)324 void scramble_state::triplep_io_map(address_map &map)
325 {
326 	map.global_mask(0xff);
327 	map(0x00, 0x01).w("8910.1", FUNC(ay8910_device::data_address_w));
328 	map(0x01, 0x01).r("8910.1", FUNC(ay8910_device::data_r));
329 	map(0x02, 0x02).r(FUNC(scramble_state::triplep_pip_r));
330 	map(0x03, 0x03).r(FUNC(scramble_state::triplep_pap_r));
331 }
332 
hotshock_sound_io_map(address_map & map)333 void scramble_state::hotshock_sound_io_map(address_map &map)
334 {
335 	map.global_mask(0xff);
336 	map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w));
337 	map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
338 	map(0x40, 0x40).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
339 	map(0x80, 0x80).w("8910.2", FUNC(ay8910_device::address_w));
340 }
341 
342 
343 
hncholms_prot_r()344 uint8_t scramble_state::hncholms_prot_r()
345 {
346 	if(m_maincpu->pc() == 0x2b || m_maincpu->pc() == 0xa27)
347 		return 1;
348 	else
349 		return 0;
350 }
351 
hunchbks_readport(address_map & map)352 void scramble_state::hunchbks_readport(address_map &map)
353 {
354 	map(0x00, 0x00).r(FUNC(scramble_state::hncholms_prot_r));
355 }
356 
357 
358 // Harem
359 
harem_map(address_map & map)360 void scramble_state::harem_map(address_map &map)
361 {
362 	map(0x0000, 0x1fff).rom();
363 
364 	map(0x2000, 0x27ff).ram();
365 
366 	map(0x4000, 0x403f).ram().w(FUNC(scramble_state::galaxold_attributesram_w)).share("attributesram");
367 	map(0x4040, 0x405f).ram().share("spriteram");
368 	map(0x4060, 0x407f).ram().share("bulletsram");
369 	map(0x4080, 0x47ff).ram();
370 
371 	map(0x4800, 0x4bff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)).share("videoram");
372 	map(0x4c00, 0x4fff).rw(FUNC(scramble_state::galaxold_videoram_r), FUNC(scramble_state::galaxold_videoram_w)); // mirror address
373 
374 	map(0x5000, 0x5000).ram().w(FUNC(scramble_state::racknrol_tiles_bank_w)).share("racknrol_tbank"); // high bits of tiles, 1 bit every 4 columns
375 	map(0x5800, 0x5800).r("watchdog", FUNC(watchdog_timer_device::reset_r)).w(FUNC(scramble_state::galaxold_nmi_enable_w));
376 
377 	map(0x5801, 0x5801).w(FUNC(scramble_state::harem_decrypt_clk_w));          // run-time bitswap selection
378 	map(0x5802, 0x5802).w(FUNC(scramble_state::harem_decrypt_bit_w));
379 	map(0x5803, 0x5803).w(FUNC(scramble_state::harem_decrypt_rst_w));
380 
381 	map(0x5804, 0x5804).w(FUNC(scramble_state::galaxold_coin_counter_w));
382 	map(0x5805, 0x5805).w(FUNC(scramble_state::galaxold_gfxbank_w));           // bit 0 = sprite tiles high bit
383 	map(0x5806, 0x5806).w(FUNC(scramble_state::galaxold_flip_screen_x_w));     // maybe (0 at boot)
384 	map(0x5807, 0x5807).w(FUNC(scramble_state::galaxold_flip_screen_y_w));     // ""
385 
386 	map(0x6100, 0x6103).rw(m_ppi8255_0, FUNC(i8255_device::read), FUNC(i8255_device::write));
387 	map(0x6200, 0x6203).rw(m_ppi8255_1, FUNC(i8255_device::read), FUNC(i8255_device::write));
388 
389 	map(0x8000, 0x9fff).bankr("rombank");                  // bitswapped rom
390 }
391 
decrypted_opcodes_map(address_map & map)392 void scramble_state::decrypted_opcodes_map(address_map &map)
393 {
394 	map(0x0000, 0x1fff).rom().region("maincpu", 0);
395 	map(0x8000, 0x9fff).bankr("rombank_decrypted");
396 }
397 
harem_sound_map(address_map & map)398 void scramble_state::harem_sound_map(address_map &map)
399 {
400 	map(0x0000, 0x2fff).rom();
401 	map(0x6000, 0x6000).r(FUNC(scramble_state::harem_digitalker_intr_r));
402 	map(0x8000, 0x83ff).ram();
403 	map(0xa000, 0xafff).nopw(); // w(FUNC(scramble_state::scramble_filter_w)); - scramble/harem don't instantiate any RC filters. This is dead code!
404 }
405 
harem_sound_io_map(address_map & map)406 void scramble_state::harem_sound_io_map(address_map &map)
407 {
408 	map.global_mask(0xff);
409 
410 	// ports->speech:
411 	map(0x04, 0x04).w("8910.3", FUNC(ay8910_device::address_w));
412 	map(0x08, 0x08).rw("8910.3", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
413 	// same as scramble:
414 	map(0x10, 0x10).w("8910.1", FUNC(ay8910_device::address_w));
415 	map(0x20, 0x20).rw("8910.1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
416 	map(0x40, 0x40).w("8910.2", FUNC(ay8910_device::address_w));
417 	map(0x80, 0x80).rw("8910.2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));  // read soundlatch
418 }
419 
420 
421 
422 /**************************************************************************/
423 
424 static INPUT_PORTS_START( scramble )
425 	PORT_START("IN0")
426 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
427 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
428 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
429 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
430 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
431 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
432 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
433 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
434 
435 	PORT_START("IN1")
DEF_STR(Lives)436 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:2,1")
437 	PORT_DIPSETTING(    0x00, "3" )
438 	PORT_DIPSETTING(    0x01, "4" )
439 	PORT_DIPSETTING(    0x02, "5" )
440 	PORT_DIPSETTING(    0x03, DEF_STR( Free_Play ) )
441 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
442 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
443 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
444 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
445 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
446 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
447 
448 	PORT_START("IN2")
449 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
450 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:5,4")
451 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
452 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
453 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
454 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_4C ) )
455 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:3")
456 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
457 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
458 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
459 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM )    /* protection bit */
460 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
461 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM )    /* protection bit */
462 INPUT_PORTS_END
463 
464 static INPUT_PORTS_START( 800fath )
465 	PORT_START("IN0")
466 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
467 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
468 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
469 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
470 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
471 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
472 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
473 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
474 
475 	PORT_START("IN1")
476 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
477 	PORT_DIPSETTING(    0x00, "3" )
478 	PORT_DIPSETTING(    0x01, "4" )
479 	PORT_DIPSETTING(    0x02, "5" )
480 	PORT_DIPSETTING(    0x03, DEF_STR( Free_Play ) )
481 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
482 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
483 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
484 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
485 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
486 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
487 
488 	PORT_START("IN2")
489 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
490 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,3")
491 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
492 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
493 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_3C ) )
494 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_4C ) )
495 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:4")
496 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
497 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
498 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
499 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_CUSTOM )    /* protection bit */
500 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
501 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_CUSTOM )    /* protection bit */
502 INPUT_PORTS_END
503 
504 static INPUT_PORTS_START( triplep )
505 	PORT_START("IN0")
506 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
507 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
508 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
509 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
510 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
511 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
512 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
513 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
514 
515 	PORT_START("IN1")
516 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
517 	PORT_DIPSETTING(    0x00, "3" )
518 	PORT_DIPSETTING(    0x01, "4" )
519 	PORT_DIPSETTING(    0x02, "5" )
520 	PORT_DIPSETTING(    0x03, "256 (Cheat)")
521 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
522 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
523 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
524 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
525 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
526 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
527 
528 	PORT_START("IN2")
529 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
530 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
531 	PORT_DIPSETTING(    0x02, "A 1/2 B 1/1 C 1/2" )
532 	PORT_DIPSETTING(    0x04, "A 1/3 B 3/1 C 1/3" )
533 	PORT_DIPSETTING(    0x00, "A 1/1 B 2/1 C 1/1" )
534 	PORT_DIPSETTING(    0x06, "A 1/4 B 4/1 C 1/4" )
535 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
536 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
537 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
538 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
539 	PORT_SERVICE( 0x20, IP_ACTIVE_HIGH )
540 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
541 	PORT_DIPNAME( 0x80, 0x00, "Rack Test (Cheat)" ) PORT_CODE(KEYCODE_F1)
542 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
543 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
544 INPUT_PORTS_END
545 
546 static INPUT_PORTS_START( knockoutb )
547 	PORT_INCLUDE(triplep)
548 
549 	PORT_MODIFY("IN1")
550 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
551 	PORT_DIPSETTING(    0x00, "1" )
552 	PORT_DIPSETTING(    0x01, "2" )
553 	PORT_DIPSETTING(    0x02, "3" )
554 	PORT_DIPSETTING(    0x03, "256 (Cheat)")
555 INPUT_PORTS_END
556 
557 /* ckongs coinage DIPs are spread across two input ports */
558 template <int Mask>
559 READ_LINE_MEMBER(scramble_state::ckongs_coinage_r)
560 {
561 	return (ioport("FAKE")->read() & Mask) ? 1 : 0;
562 }
563 
564 static INPUT_PORTS_START( ckongs )
565 	PORT_START("IN0")
566 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
567 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
568 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
569 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
570 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
571 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
572 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
573 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
574 
575 	PORT_START("IN1")
576 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(scramble_state, ckongs_coinage_r<0x01>)
577 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(scramble_state, ckongs_coinage_r<0x02>)
578 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
579 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
580 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
581 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
582 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
583 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
584 
585 	PORT_START("IN2")
586 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
587 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
588 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
589 	PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
590 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Lives ) )
591 	PORT_DIPSETTING(    0x04, "3" )
592 	PORT_DIPSETTING(    0x00, "4" )
593 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(scramble_state, ckongs_coinage_r<0x04>)
594 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
595 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
596 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
597 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* probably unused */
598 
599 	PORT_START("FAKE")
600 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
601 	PORT_DIPSETTING(    0x00, DEF_STR( 5C_1C ) )
602 	PORT_DIPSETTING(    0x01, DEF_STR( 4C_1C ) )
603 	PORT_DIPSETTING(    0x04, DEF_STR( 3C_1C ) )
604 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_1C ) )
605 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) )
606 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
607 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ) )
608 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_4C ) )
609 INPUT_PORTS_END
610 
611 static INPUT_PORTS_START( mars )
612 	PORT_START("IN0")
613 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY PORT_PLAYER(2)
614 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
615 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY
616 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY
617 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY
618 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY
619 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
620 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
621 
622 	PORT_START("IN1")
623 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coin_B ) )
624 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_3C ) )
625 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_5C ) )
626 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coin_A ) )
627 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
628 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
629 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_8WAY PORT_PLAYER(2)
630 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_8WAY PORT_PLAYER(2)
631 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_8WAY PORT_PLAYER(2)
632 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_8WAY PORT_PLAYER(2)
633 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
634 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
635 
636 	PORT_START("IN2")
637 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY PORT_PLAYER(2)  /* this also control cocktail mode */
638 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
639 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
640 	PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
641 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
642 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
643 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
644 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) )
645 	PORT_DIPSETTING(    0x08, "3" )
646 	PORT_DIPSETTING(    0x00, "255 (Cheat)")
647 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_8WAY
648 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY
649 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_8WAY
650 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY
651 
652 	PORT_START("IN3")
653 	PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNKNOWN )
654 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_8WAY PORT_PLAYER(2)
655 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
656 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_8WAY PORT_PLAYER(2)
657 INPUT_PORTS_END
658 
659 static INPUT_PORTS_START( devilfsh )
660 	PORT_START("IN0")
661 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
662 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
663 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
664 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
665 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
666 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
667 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
668 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
669 
670 	PORT_START("IN1")
671 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Bonus_Life ) )
672 	PORT_DIPSETTING(    0x00, "10000" )
673 	PORT_DIPSETTING(    0x01, "15000" )
674 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
675 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
676 	PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
677 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
678 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
679 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
680 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
681 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
682 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
683 
684 	PORT_START("IN2")
685 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
686 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) )
687 	PORT_DIPSETTING(    0x00, "4" )
688 	PORT_DIPSETTING(    0x02, "5" )
689 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Coin_A ) )
690 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
691 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_1C ) )
692 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coin_B ) )
693 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
694 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
695 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
696 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
697 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
698 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
699 INPUT_PORTS_END
700 
701 static INPUT_PORTS_START( newsin7 )
702 	PORT_START("IN0")
703 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
704 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
705 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
706 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
707 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
708 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
709 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
710 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
711 
712 	PORT_START("IN1")
713 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
714 	PORT_DIPSETTING(    0x03, " A 1C/1C  B 2C/1C" )
715 	PORT_DIPSETTING(    0x01, " A 1C/3C  B 3C/1C" )
716 	PORT_DIPSETTING(    0x02, " A 1C/2C  B 1C/1C" )
717 	PORT_DIPSETTING(    0x00, " A 1C/4C  B 4C/1C" )
718 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
719 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
720 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
721 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
722 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
723 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
724 
725 	PORT_START("IN2")   /* IN2 */
726 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
727 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) )
728 	PORT_DIPSETTING(    0x02, DEF_STR( Upright ) )
729 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
730 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )  /* difficulty? */
731 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
732 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
733 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) )
734 	PORT_DIPSETTING(    0x00, "3" )
735 	PORT_DIPSETTING(    0x08, "5" )
736 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
737 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
738 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
739 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
740 INPUT_PORTS_END
741 
742 static INPUT_PORTS_START( mrkougar )
743 	PORT_START("IN0")
744 	PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNKNOWN )
745 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
746 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
747 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
748 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
749 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
750 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
751 
752 	PORT_START("IN1")
753 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coin_B ) )
754 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_3C ) )
755 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_5C ) )
756 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coin_A ) )
757 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
758 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
759 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
760 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
761 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
762 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
763 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
764 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
765 
766 	PORT_START("IN2")
767 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
768 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Cabinet ) )
769 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
770 	PORT_DIPSETTING(    0x02, DEF_STR( Cocktail ) )
771 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) )
772 	PORT_DIPSETTING(    0x00, "3" )
773 	PORT_DIPSETTING(    0x04, "5" )
774 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Difficulty ) )
775 	PORT_DIPSETTING(    0x00, DEF_STR( Hard ) )
776 	PORT_DIPSETTING(    0x08, DEF_STR( Easy ) )
777 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNKNOWN )
778 INPUT_PORTS_END
779 
780 static INPUT_PORTS_START( hotshock )
781 	PORT_START("IN0")
782 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
783 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
784 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
785 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
786 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
787 	PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
788 
789 	PORT_START("IN1")
790 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
791 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
792 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 )
793 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
794 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 )
795 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* pressing this disables the coins */
796 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
797 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
798 
799 	PORT_START("IN2")
800 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_B ) )
801 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
802 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_2C ) )
803 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
804 	PORT_DIPSETTING(    0x0a, DEF_STR( 2C_3C ) )
805 	PORT_DIPSETTING(    0x0b, DEF_STR( 2C_4C ) )
806 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
807 	PORT_DIPSETTING(    0x0c, DEF_STR( 2C_5C ) )
808 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_6C ) )
809 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
810 	PORT_DIPSETTING(    0x0e, DEF_STR( 2C_7C ) )
811 	PORT_DIPSETTING(    0x0f, DEF_STR( 2C_8C ) )
812 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
813 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
814 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
815 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_7C ) )
816 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_8C ) )
817 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_A ) )
818 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
819 	PORT_DIPSETTING(    0x90, DEF_STR( 2C_2C ) )
820 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
821 	PORT_DIPSETTING(    0xa0, DEF_STR( 2C_3C ) )
822 	PORT_DIPSETTING(    0xb0, DEF_STR( 2C_4C ) )
823 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
824 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_5C ) )
825 	PORT_DIPSETTING(    0xd0, DEF_STR( 2C_6C ) )
826 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_3C ) )
827 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_7C ) )
828 	PORT_DIPSETTING(    0xf0, DEF_STR( 2C_8C ) )
829 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
830 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) )
831 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
832 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_7C ) )
833 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_8C ) )
834 
835 	PORT_START("IN3")
836 	PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
837 	PORT_DIPSETTING(    0x00, "2" )
838 	PORT_DIPSETTING(    0x01, "3" )
839 	PORT_DIPSETTING(    0x02, "4" )
840 	PORT_DIPSETTING(    0x03, "5" )
841 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Language ) )
842 	PORT_DIPSETTING(    0x04, DEF_STR( English ) )
843 	PORT_DIPSETTING(    0x00, DEF_STR( Italian ) )
844 	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Bonus_Life ) )
845 	PORT_DIPSETTING(    0x00, "75000" )
846 	PORT_DIPSETTING(    0x08, "150000" )
847 	PORT_DIPSETTING(    0x10, "200000" )
848 	PORT_DIPSETTING(    0x18, DEF_STR( None ) )
849 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
850 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
851 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
852 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
853 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
854 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
855 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) )
856 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
857 	PORT_DIPSETTING(    0x80, DEF_STR( Cocktail ) )
858 INPUT_PORTS_END
859 
860 static INPUT_PORTS_START( hunchbks )
861 	PORT_START("IN0")
862 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
863 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
864 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
865 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
866 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
867 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
868 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
869 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
870 
871 	PORT_START("IN1")
872 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
873 	PORT_DIPSETTING(    0x01, "3" )
874 	PORT_DIPSETTING(    0x00, "5" )
875 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
876 	PORT_DIPSETTING(    0x02, "A 2/1 B 1/3" )
877 	PORT_DIPSETTING(    0x00, "A 1/1 B 1/5" )
878 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
879 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
880 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
881 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
882 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
883 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
884 
885 	PORT_START("IN2")
886 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
887 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Bonus_Life ) )
888 	PORT_DIPSETTING(    0x00, "10000" )
889 	PORT_DIPSETTING(    0x02, "20000" )
890 	PORT_DIPSETTING(    0x04, "40000" )
891 	PORT_DIPSETTING(    0x06, "80000" )
892 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
893 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
894 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
895 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
896 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* protection check? */
897 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
898 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* protection check? */
899 INPUT_PORTS_END
900 
901 static INPUT_PORTS_START( hncholms )
902 	PORT_START("IN0")
903 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
904 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
905 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
906 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
907 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
908 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
909 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
910 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
911 
912 	PORT_START("IN1")
913 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) )
914 	PORT_DIPSETTING(    0x01, "3" )
915 	PORT_DIPSETTING(    0x00, "5" )
916 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coinage ) )
917 	PORT_DIPSETTING(    0x00, "A 2/1 B 1/3" )
918 	PORT_DIPSETTING(    0x02, "A 1/1 B 1/5" )
919 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
920 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
921 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
922 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
923 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
924 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
925 
926 	PORT_START("IN2")
927 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
928 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Bonus_Life ) )
929 	PORT_DIPSETTING(    0x00, "10000" )
930 	PORT_DIPSETTING(    0x02, "20000" )
931 	PORT_DIPSETTING(    0x04, "40000" )
932 	PORT_DIPSETTING(    0x06, "80000" )
933 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
934 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
935 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
936 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
937 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* protection check? */
938 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
939 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* protection check? */
940 INPUT_PORTS_END
941 
942 static INPUT_PORTS_START( cavelon )
943 	PORT_START("IN0")
944 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
945 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
946 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* force UR controls in CK mode? */
947 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
948 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
949 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
950 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
951 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
952 
953 	PORT_START("IN1")
954 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
955 	PORT_DIPSETTING(    0x01, DEF_STR( Upright ) )
956 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
957 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Coinage ) )
958 	PORT_DIPSETTING(    0x00, "A 1/1 B 1/6" )
959 	PORT_DIPSETTING(    0x02, "A 2/1 B 1/3" )
960 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
961 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
962 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
963 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
964 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
965 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
966 
967 	PORT_START("IN2")
968 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
969 	PORT_DIPNAME( 0x06, 0x02, DEF_STR( Lives ) )
970 	PORT_DIPSETTING(    0x00, "5" )
971 	PORT_DIPSETTING(    0x04, "4" )
972 	PORT_DIPSETTING(    0x02, "3" )
973 	PORT_DIPSETTING(    0x06, "2" )
974 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown) )
975 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
976 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
977 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
978 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* protection check? */
979 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
980 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )    /* protection check? */
981 INPUT_PORTS_END
982 
983 /* Same as 'mimonkey' (scobra.cpp driver) */
984 static INPUT_PORTS_START( mimonscr )
985 	PORT_START("IN0")
986 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
987 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
988 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
989 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
990 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
991 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
992 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
993 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
994 
995 	PORT_START("IN1")
996 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
997 	PORT_DIPSETTING(    0x00, "3" )
998 	PORT_DIPSETTING(    0x01, "4" )
999 	PORT_DIPSETTING(    0x02, "5" )
1000 	PORT_DIPSETTING(    0x03, "6" )
1001 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1002 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1003 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
1004 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
1005 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1006 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1007 
1008 	PORT_START("IN2")
1009 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
1010 	PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
1011 	PORT_DIPSETTING(    0x06, DEF_STR( 3C_1C ) )
1012 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
1013 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1014 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
1015 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
1016 	PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
1017 	PORT_DIPSETTING(    0x08, DEF_STR( Cocktail ) )
1018 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
1019 	PORT_DIPNAME( 0x20, 0x00, "Infinite Lives (Cheat)")
1020 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1021 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1022 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
1023 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )   /* used, something to do with the bullets */
1024 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1025 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1026 INPUT_PORTS_END
1027 
1028 static INPUT_PORTS_START( ad2083 )
1029 	/* There are no Player 2 controls for this game:
1030 	 * Dipswitch is read upon startup. If Cabinet = Cocktail, a 1 is stored @400F.
1031 	 * 400F in turn is only read just before Player 2 turn. If 400F=1 then flip line
1032 	 * is set. That is all. If there is a dedicated player 2 input,
1033 	 * it must be multiplexed by flip line. */
1034 	PORT_START("IN0")
1035 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
1036 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON2 )
1037 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
1038 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON1 )
1039 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
1040 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
1041 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1042 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1043 
1044 	PORT_START("IN1")
1045 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1046 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
1047 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN2 )
1048 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 )
1049 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE1 )
1050 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // if ON it doesn't accept any COIN
1051 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 )
1052 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START1 )
1053 
1054 	PORT_START("IN2")
1055 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
1056 	PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
1057 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_2C ) )
1058 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1059 	PORT_DIPSETTING(    0x0a, DEF_STR( 2C_3C ) )
1060 	PORT_DIPSETTING(    0x0b, DEF_STR( 2C_4C ) )
1061 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
1062 	PORT_DIPSETTING(    0x0c, DEF_STR( 2C_5C ) )
1063 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_6C ) )
1064 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_3C ) )
1065 	PORT_DIPSETTING(    0x0e, DEF_STR( 2C_7C ) )
1066 	PORT_DIPSETTING(    0x0f, DEF_STR( 2C_8C ) )
1067 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_4C ) )
1068 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1069 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_6C ) )
1070 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_7C ) )
1071 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_8C ) )
1072 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
1073 	PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
1074 	PORT_DIPSETTING(    0x90, DEF_STR( 2C_2C ) )
1075 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
1076 	PORT_DIPSETTING(    0xa0, DEF_STR( 2C_3C ) )
1077 	PORT_DIPSETTING(    0xb0, DEF_STR( 2C_4C ) )
1078 	PORT_DIPSETTING(    0x10, DEF_STR( 1C_2C ) )
1079 	PORT_DIPSETTING(    0xc0, DEF_STR( 2C_5C ) )
1080 	PORT_DIPSETTING(    0xd0, DEF_STR( 2C_6C ) )
1081 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_3C ) )
1082 	PORT_DIPSETTING(    0xe0, DEF_STR( 2C_7C ) )
1083 	PORT_DIPSETTING(    0xf0, DEF_STR( 2C_8C ) )
1084 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_4C ) )
1085 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_5C ) )
1086 	PORT_DIPSETTING(    0x50, DEF_STR( 1C_6C ) )
1087 	PORT_DIPSETTING(    0x60, DEF_STR( 1C_7C ) )
1088 	PORT_DIPSETTING(    0x70, DEF_STR( 1C_8C ) )
1089 
1090 	PORT_START("IN3")
1091 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
1092 	PORT_DIPSETTING(    0x03, "2" )
1093 	PORT_DIPSETTING(    0x02, "3" )
1094 	PORT_DIPSETTING(    0x01, "4" )
1095 	PORT_DIPSETTING(    0x00, "5" )
1096 	PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
1097 	PORT_DIPSETTING(    0x0c, DEF_STR( None ) )
1098 	PORT_DIPSETTING(    0x04, "150000" )
1099 	PORT_DIPSETTING(    0x08, "100000" )
1100 	PORT_DIPSETTING(    0x00, "200000" )
1101 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
1102 	PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
1103 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
1104 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Allow_Continue ) )
1105 	PORT_DIPSETTING(    0x20, DEF_STR( No ) )
1106 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
1107 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
1108 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1109 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
1110 	PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) )
1111 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1112 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1113 INPUT_PORTS_END
1114 
1115 
1116 static INPUT_PORTS_START( harem ) /* Switch 8 doesn't appear to mapped (just like Scorpion) */
1117 	PORT_START("IN0")   // $6100 - PPI0 Port A
1118 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )        /* Same hardware as Scorpion: P2 Up in Cocktail - Not Used */
1119 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
1120 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1121 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1122 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
1123 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
1124 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
1125 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
1126 
1127 	PORT_START("IN1")   // $6101 - PPI0 Port B
1128 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:1,2")
1129 	PORT_DIPSETTING(    0x03, "2" )
1130 	PORT_DIPSETTING(    0x02, "3" )
1131 	PORT_DIPSETTING(    0x01, "4" )
1132 	PORT_DIPSETTING(    0x00, DEF_STR( Infinite ) )
1133 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )        /* Same hardware as Scorpion: P2 Button2 in Cocktail - Not Used */
1134 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )        /* Same hardware as Scorpion: P2 Button1 in Cocktail - Not Used */
1135 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )        /* Same hardware as Scorpion: P2 Right in Cocktail - Not Used */
1136 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )        /* Same hardware as Scorpion: P2 Left in Cocktail - Not Used */
1137 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
1138 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
1139 
1140 	PORT_START("IN2")   // $6102 - PPI0 Port C
1141 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )        /* Same hardware as Scorpion: P2 Down in Cocktail */
1142 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5")
1143 	PORT_DIPSETTING(    0x02, DEF_STR( Normal ) )
1144 	PORT_DIPSETTING(    0x00, DEF_STR( Hard ) )
1145 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:3,4")
1146 	PORT_DIPSETTING(    0x0c, DEF_STR( 2C_1C ) )
1147 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_1C ) )
1148 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
1149 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_3C ) )
1150 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
1151 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
1152 	PORT_DIPNAME( 0xa0, 0xa0, "Initial Bonus Points" ) PORT_DIPLOCATION("SW1:6,7")
1153 	PORT_DIPSETTING(    0xa0, "500" )
1154 	PORT_DIPSETTING(    0x80, "850" )
1155 	PORT_DIPSETTING(    0x20, "1150" )
1156 	PORT_DIPSETTING(    0x00, "1350" )
1157 INPUT_PORTS_END
1158 
1159 
1160 
1161 /**************************************************************************/
1162 
1163 static const gfx_layout scramble_charlayout =
1164 {
1165 	8,8,
1166 	RGN_FRAC(1,2),
1167 	2,
1168 	{ RGN_FRAC(0,2), RGN_FRAC(1,2) },
1169 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1170 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1171 	8*8
1172 };
1173 static const gfx_layout scramble_spritelayout =
1174 {
1175 	16,16,
1176 	RGN_FRAC(1,2),
1177 	2,
1178 	{ RGN_FRAC(0,2), RGN_FRAC(1,2) },
1179 	{ 0, 1, 2, 3, 4, 5, 6, 7,
1180 			8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
1181 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1182 			16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
1183 	32*8
1184 };
1185 
1186 static const gfx_layout devilfsh_charlayout =
1187 {
1188 	8,8,    /* 8*8 characters */
1189 	256,    /* 256 characters */
1190 	2,  /* 2 bits per pixel */
1191 	{ 0, 2*256*8*8 },   /* the bitplanes are separated */
1192 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1193 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1194 	8*8 /* every char takes 8 consecutive bytes */
1195 };
1196 static const gfx_layout devilfsh_spritelayout =
1197 {
1198 	16,16,  /* 16*16 sprites */
1199 	64, /* 64 sprites */
1200 	2,  /* 2 bits per pixel */
1201 	{ 0, 2*64*16*16 },  /* the bitplanes are separated */
1202 	{ 0, 1, 2, 3, 4, 5, 6, 7,
1203 			8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
1204 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1205 			16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
1206 	32*8    /* every sprite takes 32 consecutive bytes */
1207 };
1208 static const gfx_layout newsin7_charlayout =
1209 {
1210 	8,8,    /* 8*8 characters */
1211 	256,    /* 256 characters */
1212 	3,  /* 3 bits per pixel */
1213 	{ 2*2*256*8*8, 0, 2*256*8*8 },  /* the bitplanes are separated */
1214 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1215 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1216 	8*8 /* every char takes 8 consecutive bytes */
1217 };
1218 static const gfx_layout newsin7_spritelayout =
1219 {
1220 	16,16,  /* 16*16 sprites */
1221 	64, /* 64 sprites */
1222 	3,  /* 3 bits per pixel */
1223 	{ 2*2*64*16*16, 0, 2*64*16*16 },    /* the bitplanes are separated */
1224 	{ 0, 1, 2, 3, 4, 5, 6, 7,
1225 			8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
1226 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1227 			16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
1228 	32*8    /* every sprite takes 32 consecutive bytes */
1229 };
1230 
1231 static const gfx_layout mrkougar_charlayout =
1232 {
1233 	8,8,
1234 	256,
1235 	2,
1236 	{ 0, 4 },
1237 	{ 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
1238 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1239 	16*8
1240 };
1241 static const gfx_layout mrkougar_spritelayout =
1242 {
1243 	16,16,
1244 	64,
1245 	2,
1246 	{ 0, 4 },
1247 	{ 8*8+0, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3,
1248 		24*8+0, 24*8+1, 24*8+2, 24*8+3, 16*8+0, 16*8+1, 16*8+2, 16*8+3 },
1249 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1250 		32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
1251 	64*8
1252 };
1253 
1254 static const gfx_layout ad2083_charlayout =
1255 {
1256 	8,8,    /* 8*8 characters */
1257 	RGN_FRAC(1,2),
1258 	2,  /* 2 bits per pixel */
1259 	{ RGN_FRAC(0,2), RGN_FRAC(1,2) },   /* the two bitplanes are separated */
1260 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
1261 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
1262 	8*8 /* every char takes 8 consecutive bytes */
1263 };
1264 static const gfx_layout ad2083_spritelayout =
1265 {
1266 	16,16,  /* 16*16 sprites */
1267 	RGN_FRAC(1,2),
1268 	2,  /* 2 bits per pixel */
1269 	{ RGN_FRAC(0,2), RGN_FRAC(1,2) },   /* the two bitplanes are separated */
1270 	{ 0, 1, 2, 3, 4, 5, 6, 7,
1271 			8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
1272 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
1273 			16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
1274 	32*8    /* every sprite takes 32 consecutive bytes */
1275 };
1276 
1277 static GFXDECODE_START( gfx_scramble )
1278 	GFXDECODE_ENTRY( "gfx1", 0x0000, scramble_charlayout,   0, 8 )
1279 	GFXDECODE_ENTRY( "gfx1", 0x0000, scramble_spritelayout, 0, 8 )
1280 GFXDECODE_END
1281 
GFXDECODE_START(gfx_devilfsh)1282 static GFXDECODE_START( gfx_devilfsh )
1283 	GFXDECODE_ENTRY( "gfx1", 0x0000, devilfsh_charlayout,   0, 8 )
1284 	GFXDECODE_ENTRY( "gfx1", 0x0800, devilfsh_spritelayout, 0, 8 )
1285 GFXDECODE_END
1286 
1287 static GFXDECODE_START( gfx_newsin7 )
1288 	GFXDECODE_ENTRY( "gfx1", 0x0000, newsin7_charlayout,   0, 4 )
1289 	GFXDECODE_ENTRY( "gfx1", 0x0800, newsin7_spritelayout, 0, 4 )
1290 GFXDECODE_END
1291 
1292 static GFXDECODE_START( gfx_mrkougar )
1293 	GFXDECODE_ENTRY( "gfx1", 0x0000, mrkougar_charlayout,   0, 8 )
1294 	GFXDECODE_ENTRY( "gfx1", 0x0000, mrkougar_spritelayout, 0, 8 )
1295 GFXDECODE_END
1296 
1297 static GFXDECODE_START( gfx_ad2083 )
1298 	GFXDECODE_ENTRY( "gfx1", 0x0000, ad2083_charlayout,    0, 8 )
1299 	GFXDECODE_ENTRY( "gfx1", 0x0000, ad2083_spritelayout,  0, 8 )
1300 GFXDECODE_END
1301 
1302 
1303 /**************************************************************************/
1304 
1305 void scramble_state::scramble(machine_config &config)
1306 {
1307 	/* basic machine hardware */
1308 	Z80(config, m_maincpu, 18432000/6);    /* 3.072 MHz */
1309 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::scramble_map);
1310 
1311 	Z80(config, m_audiocpu, 14318000/8);   /* 1.78975 MHz */
1312 	m_audiocpu->set_addrmap(AS_PROGRAM, &scramble_state::scramble_sound_map);
1313 	m_audiocpu->set_addrmap(AS_IO, &scramble_state::scramble_sound_io_map);
1314 	m_audiocpu->set_irq_acknowledge_callback(FUNC(scramble_state::scramble_sh_irq_callback));
1315 
1316 	ttl7474_device &ttl7474_9m_1(TTL7474(config, "7474_9m_1", 0));
1317 	ttl7474_9m_1.output_cb().set(FUNC(scramble_state::galaxold_7474_9m_1_callback));
1318 
1319 	ttl7474_device &ttl7474_9m_2(TTL7474(config, "7474_9m_2", 0));
1320 	ttl7474_9m_2.comp_output_cb().set(FUNC(scramble_state::galaxold_7474_9m_2_q_callback));
1321 
1322 	ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
1323 	konami_7474.comp_output_cb().set(FUNC(scramble_state::scramble_sh_7474_q_callback));
1324 
1325 	TIMER(config, "int_timer").configure_generic(FUNC(scramble_state::galaxold_interrupt_timer));
1326 
1327 	WATCHDOG_TIMER(config, "watchdog");
1328 
1329 	MCFG_MACHINE_RESET_OVERRIDE(scramble_state,scramble)
1330 
1331 	I8255A(config, m_ppi8255_0);
1332 	m_ppi8255_0->in_pa_callback().set_ioport("IN0");
1333 	m_ppi8255_0->in_pb_callback().set_ioport("IN1");
1334 	m_ppi8255_0->in_pc_callback().set_ioport("IN2");
1335 
1336 	I8255A(config, m_ppi8255_1);
1337 	m_ppi8255_1->out_pa_callback().set(m_soundlatch, FUNC(generic_latch_8_device::write));
1338 	m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::scramble_sh_irqtrigger_w));
1339 
1340 	/* video hardware */
1341 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1342 	m_screen->set_refresh_hz(16000.0/132/2);
1343 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
1344 	m_screen->set_size(32*8, 32*8);
1345 	m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
1346 	m_screen->set_screen_update(FUNC(scramble_state::screen_update_galaxold));
1347 	m_screen->set_palette(m_palette);
1348 
1349 	GFXDECODE(config, "gfxdecode", m_palette, gfx_scramble);
1350 	PALETTE(config, m_palette, FUNC(scramble_state::scrambold_palette), 32+64+2+1); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1351 
1352 	MCFG_VIDEO_START_OVERRIDE(scramble_state,scrambold)
1353 
1354 	/* sound hardware */
1355 	SPEAKER(config, "mono").front_center();
1356 
1357 	GENERIC_LATCH_8(config, m_soundlatch);
1358 
1359 	AY8910(config, "8910.1", 14318000/8).add_route(ALL_OUTPUTS, "mono", 0.16);
1360 
1361 	ay8910_device &ay2(AY8910(config, "8910.2", 14318000/8));
1362 	ay2.port_a_read_callback().set(m_soundlatch, FUNC(generic_latch_8_device::read));
1363 	ay2.port_b_read_callback().set(FUNC(scramble_state::scramble_portB_r));
1364 	ay2.add_route(ALL_OUTPUTS, "mono", 0.16);
1365 }
1366 
mars(machine_config & config)1367 void scramble_state::mars(machine_config &config)
1368 {
1369 	scramble(config);
1370 
1371 	/* basic machine hardware */
1372 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mars_map);
1373 
1374 	m_ppi8255_1->out_pa_callback().set(m_soundlatch, FUNC(generic_latch_8_device::write));
1375 	m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::scramble_sh_irqtrigger_w));
1376 	m_ppi8255_1->in_pc_callback().set_ioport("IN3");
1377 
1378 	/* video hardware */
1379 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1380 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1381 }
1382 
devilfsh(machine_config & config)1383 void scramble_state::devilfsh(machine_config &config)
1384 {
1385 	scramble(config);
1386 
1387 	/* basic machine hardware */
1388 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mars_map);
1389 
1390 	/* video hardware */
1391 	subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_devilfsh);
1392 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1393 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1394 }
1395 
newsin7(machine_config & config)1396 void scramble_state::newsin7(machine_config &config)
1397 {
1398 	scramble(config);
1399 
1400 	/* basic machine hardware */
1401 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::newsin7_map);
1402 	m_maincpu->set_vblank_int("screen", FUNC(scramble_state::irq0_line_hold)); // newsin7a has a corrupt opcode at 0x67, the irq routine instead of NMI avoids it by jumping to 0x68 after doing some other things, probably intentional. newsin7 has this fixed, maybe a bootleg?
1403 
1404 	/* video hardware */
1405 	subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_newsin7);
1406 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1407 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1408 	MCFG_VIDEO_START_OVERRIDE(scramble_state,newsin7)
1409 }
1410 
mrkougb(machine_config & config)1411 void scramble_state::mrkougb(machine_config &config)
1412 {
1413 	scramble(config);
1414 
1415 	/* basic machine hardware */
1416 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mrkougar_map);
1417 
1418 	m_ppi8255_1->out_pa_callback().set(m_soundlatch, FUNC(generic_latch_8_device::write));
1419 	m_ppi8255_1->out_pb_callback().set(FUNC(scramble_state::mrkougar_sh_irqtrigger_w));
1420 	m_ppi8255_1->in_pc_callback().set_constant(0);
1421 
1422 	/* video hardware */
1423 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1424 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1425 }
1426 
mrkougar(machine_config & config)1427 void scramble_state::mrkougar(machine_config &config)
1428 {
1429 	mrkougb(config);
1430 
1431 	/* video hardware */
1432 	subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_mrkougar);
1433 }
1434 
ckongs(machine_config & config)1435 void scramble_state::ckongs(machine_config &config)
1436 {
1437 	scramble(config);
1438 
1439 	/* basic machine hardware */
1440 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::ckongs_map);
1441 
1442 	/* video hardware */
1443 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1444 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1445 	MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs)
1446 }
1447 
hotshock(machine_config & config)1448 void scramble_state::hotshock(machine_config &config)
1449 {
1450 	scramble(config);
1451 
1452 	/* basic machine hardware */
1453 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::hotshock_map);
1454 
1455 	config.device_remove( "ppi8255_0" );
1456 	config.device_remove( "ppi8255_1" );
1457 
1458 	m_audiocpu->set_addrmap(AS_IO, &scramble_state::hotshock_sound_io_map);
1459 
1460 	MCFG_MACHINE_RESET_OVERRIDE(scramble_state,galaxold)
1461 
1462 	/* video hardware */
1463 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1464 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1465 	MCFG_VIDEO_START_OVERRIDE(scramble_state,pisces)
1466 
1467 	subdevice<ay8910_device>("8910.1")->reset_routes().add_route(ALL_OUTPUTS, "mono", 0.33);
1468 
1469 	subdevice<ay8910_device>("8910.2")->port_a_read_callback().set(FUNC(scramble_state::hotshock_soundlatch_r));
1470 	subdevice<ay8910_device>("8910.2")->reset_routes().add_route(ALL_OUTPUTS, "mono", 0.33);
1471 }
1472 
cavelon(machine_config & config)1473 void scramble_state::cavelon(machine_config &config)
1474 {
1475 	scramble(config);
1476 
1477 	/* basic machine hardware */
1478 
1479 	/* video hardware */
1480 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets, 0/1 for background
1481 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1482 	MCFG_VIDEO_START_OVERRIDE(scramble_state,ckongs)
1483 }
1484 
mimonscr(machine_config & config)1485 void scramble_state::mimonscr(machine_config &config)
1486 {
1487 	scramble(config);
1488 
1489 	/* basic machine hardware */
1490 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::mimonscr_map);
1491 
1492 	/* video hardware */
1493 	MCFG_VIDEO_START_OVERRIDE(scramble_state,mimonkey)
1494 }
1495 
1496 /* Triple Punch and Mariner are different - only one CPU, one 8910 */
triplep(machine_config & config)1497 void scramble_state::triplep(machine_config &config)
1498 {
1499 	scramble(config);
1500 
1501 	/* basic machine hardware */
1502 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::triplep_map);
1503 	m_maincpu->set_addrmap(AS_IO, &scramble_state::triplep_io_map);
1504 
1505 	config.device_remove("audiocpu");
1506 	config.device_remove("ppi8255_1");
1507 	config.device_remove("konami_7474");
1508 
1509 	/* video hardware */
1510 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets
1511 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1512 
1513 	/* sound hardware */
1514 	subdevice<ay8910_device>("8910.1")->set_clock(18432000/12); // triple punch/knock out ay clock is 1.535MHz, derived from main cpu xtal; verified on hardware
1515 	subdevice<ay8910_device>("8910.1")->reset_routes().add_route(ALL_OUTPUTS, "mono", 1.0);
1516 
1517 	config.device_remove("8910.2");
1518 }
1519 
mariner(machine_config & config)1520 void scramble_state::mariner(machine_config &config)
1521 {
1522 	triplep(config);
1523 
1524 	/* video hardware */
1525 	m_palette->set_entries(32+64+2+16); // 32 for characters, 64 for stars, 2 for bullets, 16 for background
1526 	m_palette->set_init(FUNC(scramble_state::mariner_palette));
1527 
1528 	MCFG_VIDEO_START_OVERRIDE(scramble_state,mariner)
1529 }
1530 
1531 /* Hunchback replaces the Z80 with a S2650 CPU */
hunchbks(machine_config & config)1532 void scramble_state::hunchbks(machine_config &config)
1533 {
1534 	scramble(config);
1535 
1536 	/* basic machine hardware */
1537 	s2650_device &maincpu(S2650(config.replace(), m_maincpu, 18432000/6));
1538 	maincpu.set_addrmap(AS_PROGRAM, &scramble_state::hunchbks_map);
1539 	maincpu.set_addrmap(AS_IO, &scramble_state::hunchbks_readport);
1540 	maincpu.sense_handler().set("screen", FUNC(screen_device::vblank));
1541 	maincpu.intack_handler().set_constant(0x03);
1542 	maincpu.set_vblank_int("screen", FUNC(scramble_state::hunchbks_vh_interrupt));
1543 
1544 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
1545 
1546 	/* video hardware */
1547 	m_palette->set_entries(32+64+2+0); // 32 for characters, 64 for stars, 2 for bullets
1548 	m_palette->set_init(FUNC(scramble_state::galaxold_palette));
1549 }
1550 
hncholms(machine_config & config)1551 void scramble_state::hncholms(machine_config &config)
1552 {
1553 	hunchbks(config);
1554 
1555 	/* basic machine hardware */
1556 	m_maincpu->set_clock(18432000/6/2/2);
1557 
1558 	MCFG_VIDEO_START_OVERRIDE(scramble_state,scorpion)
1559 }
1560 
ad2083(machine_config & config)1561 void scramble_state::ad2083(machine_config &config)
1562 {
1563 	/* basic machine hardware */
1564 	Z80(config, m_maincpu, 18432000/6);    /* 3.072 MHz */
1565 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::ad2083_map);
1566 
1567 	ttl7474_device &ttl7474_9m_1(TTL7474(config, "7474_9m_1", 0));
1568 	ttl7474_9m_1.output_cb().set(FUNC(scramble_state::galaxold_7474_9m_1_callback));
1569 
1570 	ttl7474_device &ttl7474_9m_2(TTL7474(config, "7474_9m_2", 0));
1571 	ttl7474_9m_2.comp_output_cb().set(FUNC(scramble_state::galaxold_7474_9m_2_q_callback));
1572 
1573 	ttl7474_device &konami_7474(TTL7474(config, "konami_7474", 0));
1574 	konami_7474.comp_output_cb().set(FUNC(scramble_state::scramble_sh_7474_q_callback));
1575 
1576 	TIMER(config, "int_timer").configure_generic(FUNC(scramble_state::galaxold_interrupt_timer));
1577 
1578 	WATCHDOG_TIMER(config, "watchdog");
1579 
1580 	MCFG_MACHINE_RESET_OVERRIDE(scramble_state,galaxold)
1581 
1582 	/* video hardware */
1583 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
1584 	m_screen->set_refresh_hz(16000.0/132/2);
1585 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
1586 	m_screen->set_size(32*8, 32*8);
1587 	m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
1588 	m_screen->set_screen_update(FUNC(scramble_state::screen_update_galaxold));
1589 	m_screen->set_palette(m_palette);
1590 
1591 	GFXDECODE(config, "gfxdecode", m_palette, gfx_ad2083);
1592 	PALETTE(config, m_palette, FUNC(scramble_state::turtles_palette), 32+64+2+8); // 32 for characters, 64 for stars, 2 for bullets, 8 for background
1593 
1594 	MCFG_VIDEO_START_OVERRIDE(scramble_state,ad2083)
1595 
1596 	/* sound hardware */
1597 
1598 	ad2083_audio(config);
1599 
1600 }
1601 
1602 
harem(machine_config & config)1603 void scramble_state::harem(machine_config &config)
1604 {
1605 	scramble(config);
1606 
1607 	/* basic machine hardware */
1608 	m_maincpu->set_addrmap(AS_PROGRAM, &scramble_state::harem_map);
1609 	m_maincpu->set_addrmap(AS_OPCODES, &scramble_state::decrypted_opcodes_map);
1610 
1611 	m_audiocpu->set_addrmap(AS_PROGRAM, &scramble_state::harem_sound_map);
1612 	m_audiocpu->set_addrmap(AS_IO, &scramble_state::harem_sound_io_map);
1613 
1614 	MCFG_VIDEO_START_OVERRIDE(scramble_state,harem)
1615 
1616 	/* extra AY8910 with I/O ports */
1617 	ay8910_device &ay3(AY8910(config, "8910.3", 14318000/8));
1618 	ay3.add_route(ALL_OUTPUTS, "mono", 0.16);
1619 	ay3.port_a_write_callback().set(m_digitalker, FUNC(digitalker_device::digitalker_data_w));
1620 	ay3.port_b_write_callback().set(FUNC(scramble_state::harem_digitalker_control_w));
1621 
1622 	DIGITALKER(config, m_digitalker, 4000000).add_route(ALL_OUTPUTS, "mono", 0.16);
1623 }
1624 
1625 /***************************************************************************
1626 
1627   Game driver(s)
1628 
1629 ***************************************************************************/
1630 
1631 ROM_START( triplep )
1632 	ROM_REGION( 0x10000, "maincpu", 0 )
1633 	ROM_LOAD( "triplep.2g",   0x0000, 0x1000, CRC(c583a93d) SHA1(2bd4a02f945d64ef3ff814d0b8cbf32380d3f790) )
1634 	ROM_LOAD( "triplep.2h",   0x1000, 0x1000, CRC(c03ddc49) SHA1(5a2fba848c4ddf2ef0bb0f00e93dbd88e939441a) )
1635 	ROM_LOAD( "triplep.2k",   0x2000, 0x1000, CRC(e83ca6b5) SHA1(b16690cfe6fb45cf7b9a9cfa22822ba947c0e432) )
1636 	ROM_LOAD( "triplep.2l",   0x3000, 0x1000, CRC(982cc3b9) SHA1(28bb08679126e5aa8bd0b8f387b881fe799fb009) )
1637 
1638 	ROM_REGION( 0x1000, "gfx1", 0 )
1639 	ROM_LOAD( "triplep.5f",   0x0000, 0x0800, CRC(d51cbd6f) SHA1(c3766a69a4599e54b8d7fb893e45802ec8bf6713) )
1640 	ROM_LOAD( "triplep.5h",   0x0800, 0x0800, CRC(f21c0059) SHA1(b1ba87f13908e3e662de8bf444f59bd5c2009720) )
1641 
1642 	ROM_REGION( 0x0020, "proms", 0 )
1643 	ROM_LOAD( "tripprom.6e",  0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
1644 ROM_END
1645 
1646 ROM_START( knockout )
1647 	ROM_REGION( 0x10000, "maincpu", 0 )
1648 	ROM_LOAD( "knockout.2h",  0x0000, 0x1000, CRC(eaaa848e) SHA1(661026567db87206200ee610c3d5f5eb725aeec9) )
1649 	ROM_LOAD( "knockout.2k",  0x1000, 0x1000, CRC(bc26d2c0) SHA1(b9934ddb2918f6c4123dafd07cc39ae31d7e28e9) )
1650 	ROM_LOAD( "knockout.2l",  0x2000, 0x1000, CRC(02025c10) SHA1(16ffc7681d949172034b8c85dc72c1a528309abf) )
1651 	ROM_LOAD( "knockout.2m",  0x3000, 0x1000, CRC(e9abc42b) SHA1(93b9c55a76e273b4709ee65870c0848a0d3db7cc) )
1652 
1653 	ROM_REGION( 0x1000, "gfx1", 0 )
1654 	ROM_LOAD( "triplep.5f",   0x0000, 0x0800, CRC(d51cbd6f) SHA1(c3766a69a4599e54b8d7fb893e45802ec8bf6713) )
1655 	ROM_LOAD( "triplep.5h",   0x0800, 0x0800, CRC(f21c0059) SHA1(b1ba87f13908e3e662de8bf444f59bd5c2009720) )
1656 
1657 	ROM_REGION( 0x0020, "proms", 0 )
1658 	ROM_LOAD( "tripprom.6e",  0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
1659 ROM_END
1660 
1661 /***************************************************************************
1662 Triple Punch
1663 (C)1982 KKI
1664 
1665 board silkscreend       PCO-008-01
1666 
1667 Empty 24 pin socket at 2E
1668 Empty 40 pin socket at 0A
1669 
1670 .2h 2732    stickered   TD4
1671 .2k 2732    stickered   TC3
1672 .2l 2732    stickered   TE2
1673 .2m 2732    stickered   TD1
1674 .5h 2716    stickered   TA7
1675 .5f 2716    stickered   TA6
1676 .6e 82s123  stickered   TA
1677 ***************************************************************************/
1678 
1679 ROM_START( triplepa )
1680 	ROM_REGION( 0x10000, "maincpu", 0 )
1681 	ROM_LOAD( "td4.2h", 0x0000, 0x1000, CRC(15a6d46a) SHA1(a76d97876268d303bc18bf6f18f05227a6689b9d) )
1682 	ROM_LOAD( "tc3.2k", 0x1000, 0x1000, CRC(bc26d2c0) SHA1(b9934ddb2918f6c4123dafd07cc39ae31d7e28e9) )
1683 	ROM_LOAD( "te2.2l", 0x2000, 0x1000, CRC(02025c10) SHA1(16ffc7681d949172034b8c85dc72c1a528309abf) )
1684 	ROM_LOAD( "td1.2m", 0x3000, 0x1000, CRC(e9abc42b) SHA1(93b9c55a76e273b4709ee65870c0848a0d3db7cc) )
1685 
1686 	ROM_REGION( 0x1000, "gfx1", 0 )
1687 	ROM_LOAD( "ta6.5f", 0x0000, 0x0800, CRC(d51cbd6f) SHA1(c3766a69a4599e54b8d7fb893e45802ec8bf6713) )
1688 	ROM_LOAD( "ta7.5h", 0x0800, 0x0800, CRC(f21c0059) SHA1(b1ba87f13908e3e662de8bf444f59bd5c2009720) )
1689 
1690 	ROM_REGION( 0x0020, "proms", 0 )
1691 	ROM_LOAD( "ta.6e", 0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
1692 ROM_END
1693 
1694 ROM_START( knockoutb )
1695 	ROM_REGION( 0x10000, "maincpu", 0 )
1696 	ROM_LOAD( "k1-2h.bin", 0x0000, 0x1000, CRC(f16bdd40) SHA1(e14aad2f2820f643f32e1ee4dbb78cd469367498) )
1697 	ROM_LOAD( "k2-2k.bin", 0x1000, 0x1000, CRC(fa6214ef) SHA1(5e569b2a4eaf5e4f033cf2375d607c54fb96b1f8) )
1698 	ROM_LOAD( "k3-2l.bin", 0x2000, 0x1000, CRC(9f734d29) SHA1(430c53b9c3fa888fe45f9feeb4ad8f92011adc05) )
1699 	ROM_LOAD( "k4-2m.bin", 0x3000, 0x1000, CRC(1809ec77) SHA1(97d575f47f861a572a483559790e271c21775ac5) )
1700 	ROM_LOAD( "k5-2p.bin", 0x6000, 0x0800, CRC(60c1aa52) SHA1(f0598be70cfca8651edb7bb3c58f01368d6965ce) )
1701 	ROM_CONTINUE(             0x5800, 0x0800             )
1702 
1703 	ROM_REGION( 0x1000, "gfx1", 0 )
1704 	ROM_LOAD( "ta6.5f", 0x0000, 0x0800, CRC(d51cbd6f) SHA1(c3766a69a4599e54b8d7fb893e45802ec8bf6713) )
1705 	ROM_LOAD( "ta7.5h", 0x0800, 0x0800, CRC(f21c0059) SHA1(b1ba87f13908e3e662de8bf444f59bd5c2009720) )
1706 
1707 	ROM_REGION( 0x0020, "proms", 0 )
1708 	ROM_LOAD( "ta.6e", 0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
1709 ROM_END
1710 
1711 ROM_START( knockoutc )
1712 	ROM_REGION( 0x10000, "maincpu", 0 )
1713 	ROM_LOAD( "1.bin", 0x0000, 0x1000, CRC(7c386d1e) SHA1(e846a70bebd41b240758ffb2c7801fa7260b314e) )
1714 	ROM_LOAD( "2.bin", 0x1000, 0x1000, CRC(85dc1d78) SHA1(61e82cfb5b0f0da6413713293c382ea57074e801) )
1715 	ROM_LOAD( "3.bin", 0x2000, 0x1000, CRC(9f734d29) SHA1(430c53b9c3fa888fe45f9feeb4ad8f92011adc05) )
1716 	ROM_LOAD( "4.bin", 0x3000, 0x1000, CRC(48e2d6cd) SHA1(7eea464b8cfef84dbad66e33dffaba9515605da6) )
1717 	ROM_LOAD( "5.bin", 0x6000, 0x0800, CRC(26ac55ba) SHA1(876b8bf2ddb0ffb6256d1447408c8b7f7d048d9f) )
1718 	ROM_CONTINUE(             0x5800, 0x0800             )
1719 
1720 	ROM_REGION( 0x1000, "gfx1", 0 )
1721 	ROM_LOAD( "6.bin", 0x0000, 0x0800, CRC(d51cbd6f) SHA1(c3766a69a4599e54b8d7fb893e45802ec8bf6713) )
1722 	ROM_LOAD( "7.bin", 0x0800, 0x0800, CRC(f21c0059) SHA1(b1ba87f13908e3e662de8bf444f59bd5c2009720) )
1723 
1724 	ROM_REGION( 0x0020, "proms", 0 )
1725 	ROM_LOAD( "ta.6e", 0x0000, 0x0020, CRC(624f75df) SHA1(0e9a7c48dd976af1dca1d5351236d4d5bf7a9dc8) )
1726 ROM_END
1727 
1728 ROM_START( mariner )
1729 	ROM_REGION( 0x10000, "maincpu", 0 )
1730 	ROM_LOAD( "tp1.2h",       0x0000, 0x1000, CRC(dac1dfd0) SHA1(57b9106bb7452640544ba0ab2d2ba290cccb45f0) )
1731 	ROM_LOAD( "tm2.2k",       0x1000, 0x1000, CRC(efe7ca28) SHA1(496f8eb2ebc9edeed5b19d87f437f23bbeb2a007) )
1732 	ROM_LOAD( "tm3.2l",       0x2000, 0x1000, CRC(027881a6) SHA1(47953aa5140a157ade484341609d477510e8342b) )
1733 	ROM_LOAD( "tm4.2m",       0x3000, 0x1000, CRC(a0fde7dc) SHA1(ea6700520b1bd31e6c6bfac6f067bbf652676eef) )
1734 	ROM_LOAD( "tm5.2p",       0x6000, 0x0800, CRC(d7ebcb8e) SHA1(bddefdc5f04c2f940e08a6968fbd6f930d16b8e4) )
1735 	ROM_CONTINUE(             0x5800, 0x0800             )
1736 
1737 	ROM_REGION( 0x2000, "gfx1", 0 )
1738 	ROM_LOAD( "tm8.5f",       0x0000, 0x1000, CRC(70ae611f) SHA1(2686dc6d3910bd58b290d6296f30c552686709f5) )
1739 	ROM_LOAD( "tm9.5h",       0x1000, 0x1000, CRC(8e4e999e) SHA1(195e6896ca2f3175137d8c92777ba32c41e835d3) )
1740 
1741 	ROM_REGION( 0x0020, "proms", 0 )
1742 	ROM_LOAD( "t4.6e",        0x0000, 0x0020, CRC(ca42b6dd) SHA1(d1e224e788e3dcf57249e72f03f9fe3fd71e6c12) )
1743 
1744 	ROM_REGION( 0x0100, "user1", 0 )
1745 	ROM_LOAD( "t6.6p",        0x0000, 0x0100, CRC(ad208ccc) SHA1(66a4122e46467344a7f3ddcc953a5f7f451411fa) )    /* background color prom */
1746 
1747 	ROM_REGION( 0x0020, "user2", 0 )
1748 	ROM_LOAD( "t5.7p",        0x0000, 0x0020, CRC(1bd88cff) SHA1(8d1620386ef654d99c51e489c822eeb2e8a4fe76) )    /* char banking and star placement */
1749 ROM_END
1750 
1751 ROM_START( 800fath )
1752 	ROM_REGION( 0x10000, "maincpu", 0 )
1753 	ROM_LOAD( "tu1.2h",       0x0000, 0x1000, CRC(5dd3d42f) SHA1(887403c385897044e1cb9709ab2b6ff5abdf9eb4) )
1754 	ROM_LOAD( "tm2.2k",       0x1000, 0x1000, CRC(efe7ca28) SHA1(496f8eb2ebc9edeed5b19d87f437f23bbeb2a007) )
1755 	ROM_LOAD( "tm3.2l",       0x2000, 0x1000, CRC(027881a6) SHA1(47953aa5140a157ade484341609d477510e8342b) )
1756 	ROM_LOAD( "tm4.2m",       0x3000, 0x1000, CRC(a0fde7dc) SHA1(ea6700520b1bd31e6c6bfac6f067bbf652676eef) )
1757 	ROM_LOAD( "tu5.2p",       0x6000, 0x0800, CRC(f864a8a6) SHA1(bd0c84284d13d099da4e139db7c9948a074d6774) )
1758 	ROM_CONTINUE(             0x5800, 0x0800             )
1759 
1760 	ROM_REGION( 0x2000, "gfx1", 0 )
1761 	ROM_LOAD( "tm8.5f",       0x0000, 0x1000, CRC(70ae611f) SHA1(2686dc6d3910bd58b290d6296f30c552686709f5) )
1762 	ROM_LOAD( "tm9.5h",       0x1000, 0x1000, CRC(8e4e999e) SHA1(195e6896ca2f3175137d8c92777ba32c41e835d3) )
1763 
1764 	ROM_REGION( 0x0020, "proms", 0 )
1765 	ROM_LOAD( "t4.6e",        0x0000, 0x0020, CRC(ca42b6dd) SHA1(d1e224e788e3dcf57249e72f03f9fe3fd71e6c12) )
1766 
1767 	ROM_REGION( 0x0100, "user1", 0 )
1768 	ROM_LOAD( "t6.6p",        0x0000, 0x0100, CRC(ad208ccc) SHA1(66a4122e46467344a7f3ddcc953a5f7f451411fa) )    /* background color prom */
1769 
1770 	ROM_REGION( 0x0020, "user2", 0 )
1771 	ROM_LOAD( "t5.7p",        0x0000, 0x0020, CRC(1bd88cff) SHA1(8d1620386ef654d99c51e489c822eeb2e8a4fe76) )    /* char banking and star placement */
1772 ROM_END
1773 
1774 ROM_START( 800fatha )
1775 	ROM_REGION( 0x10000, "maincpu", 0 )
1776 	ROM_LOAD( "tq1.2h",       0x0000, 0x1000, CRC(d858c242) SHA1(3f236ae6ac60067eec4f5df0746435e6dfde0401) ) /* older based on letter revision, Q vs U */
1777 	ROM_LOAD( "tm2.2k",       0x1000, 0x1000, CRC(efe7ca28) SHA1(496f8eb2ebc9edeed5b19d87f437f23bbeb2a007) )
1778 	ROM_LOAD( "tm3.2l",       0x2000, 0x1000, CRC(027881a6) SHA1(47953aa5140a157ade484341609d477510e8342b) )
1779 	ROM_LOAD( "tm4.2m",       0x3000, 0x1000, CRC(a0fde7dc) SHA1(ea6700520b1bd31e6c6bfac6f067bbf652676eef) )
1780 	ROM_LOAD( "tm5.2p",       0x6000, 0x0800, CRC(d7ebcb8e) SHA1(bddefdc5f04c2f940e08a6968fbd6f930d16b8e4) )
1781 	ROM_CONTINUE(             0x5800, 0x0800             )
1782 
1783 	ROM_REGION( 0x2000, "gfx1", 0 )
1784 	ROM_LOAD( "tm8.5f",       0x0000, 0x1000, CRC(70ae611f) SHA1(2686dc6d3910bd58b290d6296f30c552686709f5) )
1785 	ROM_LOAD( "tm9.5h",       0x1000, 0x1000, CRC(8e4e999e) SHA1(195e6896ca2f3175137d8c92777ba32c41e835d3) )
1786 
1787 	ROM_REGION( 0x0020, "proms", 0 )
1788 	ROM_LOAD( "t4.6e",        0x0000, 0x0020, CRC(ca42b6dd) SHA1(d1e224e788e3dcf57249e72f03f9fe3fd71e6c12) )
1789 
1790 	ROM_REGION( 0x0100, "user1", 0 )
1791 	ROM_LOAD( "t6.6p",        0x0000, 0x0100, CRC(ad208ccc) SHA1(66a4122e46467344a7f3ddcc953a5f7f451411fa) )    /* background color prom */
1792 
1793 	ROM_REGION( 0x0020, "user2", 0 )
1794 	ROM_LOAD( "t5.7p",        0x0000, 0x0020, CRC(1bd88cff) SHA1(8d1620386ef654d99c51e489c822eeb2e8a4fe76) )    /* char banking and star placement */
1795 ROM_END
1796 
1797 ROM_START( ckongs )
1798 	ROM_REGION( 0x10000, "maincpu", 0 )
1799 	ROM_LOAD( "vid_2c.bin",   0x0000, 0x1000, CRC(49a8c234) SHA1(91d8da03a76094b6fed4bf1d9a3943dee72bf039) )
1800 	ROM_LOAD( "vid_2e.bin",   0x1000, 0x1000, CRC(f1b667f1) SHA1(c09e0f3b70afd5a4b6ec47ac9237f278dff75783) )
1801 	ROM_LOAD( "vid_2f.bin",   0x2000, 0x1000, CRC(b194b75d) SHA1(514b195dd02a7324e439dd63ae654af117e0c70d) )
1802 	ROM_LOAD( "vid_2h.bin",   0x3000, 0x1000, CRC(2052ba8a) SHA1(e4200219d1a142a4aba8ef21ae1dd806400f4422) )
1803 	ROM_LOAD( "vid_2j.bin",   0x4000, 0x1000, CRC(b377afd0) SHA1(8e42e7623a1749cea1c9861cd7dfa9b97571dc8b) )
1804 	ROM_LOAD( "vid_2l.bin",   0x5000, 0x1000, CRC(fe65e691) SHA1(736fe70c9adc6d2c142fa876f1a1e3c6879eccd8) )
1805 
1806 	ROM_REGION( 0x10000, "audiocpu", 0 )
1807 	ROM_LOAD( "turt_snd.5c",  0x0000, 0x1000, CRC(f0c30f9a) SHA1(5621f336e9be8acf986a34bbb8855ed5d45c28ef) )
1808 	ROM_LOAD( "snd_5d.bin",   0x1000, 0x1000, CRC(892c9547) SHA1(c3ec98049b560eb0ddefdb1e1b2d551b418b9a1c) )
1809 
1810 	ROM_REGION( 0x2000, "gfx1", 0 )
1811 	ROM_LOAD( "vid_5f.bin",   0x0000, 0x1000, CRC(7866d2cb) SHA1(62dd8b80bc0459c7337d8a8cb83e53b999e7f4a9) )
1812 	ROM_LOAD( "vid_5h.bin",   0x1000, 0x1000, CRC(7311a101) SHA1(49d54c8b94cae4ba81d7a7684eaa4e87815bb4da) )
1813 
1814 	ROM_REGION( 0x0020, "proms", 0 )
1815 	ROM_LOAD( "vid_6e.bin",   0x0000, 0x0020, CRC(5039af97) SHA1(b1a5b32b8c944bf19d9d97aaf678726df003c194) )
1816 ROM_END
1817 
1818 ROM_START( mars )
1819 	ROM_REGION( 0x10000, "maincpu", 0 )
1820 	ROM_LOAD( "u26.3",        0x0000, 0x0800, CRC(2f88892c) SHA1(580c7b502321868f63d9e67286e63b5c5268827c) )
1821 	ROM_LOAD( "u56.4",        0x0800, 0x0800, CRC(9e6bcbf7) SHA1(c3acdba073a1f3703776a7905867d81acf328f37) )
1822 	ROM_LOAD( "u69.5",        0x1000, 0x0800, CRC(df496e6e) SHA1(b597e996ac797a239e4bc8f242f59c98a850723c) )
1823 	ROM_LOAD( "u98.6",        0x1800, 0x0800, CRC(75f274bb) SHA1(2eb83ccc8404c69ab262bf680dce892c23c94f39) )
1824 	ROM_LOAD( "u114.7",       0x2000, 0x0800, CRC(497fd8d0) SHA1(545aaf1d68ff727df356bbcf8ddd23df75b5ce97) )
1825 	ROM_LOAD( "u133.8",       0x2800, 0x0800, CRC(3d4cd59f) SHA1(da96d96a40a896e1272700c50cc34f91ac9f7a23) )
1826 
1827 	ROM_REGION( 0x10000, "audiocpu", 0 )
1828 	ROM_LOAD( "u39.9",        0x0000, 0x0800, CRC(bb5968b9) SHA1(8bc57fd80da7aff294e12e991e9acf60c1ab2893) )
1829 	ROM_LOAD( "u51.10",       0x0800, 0x0800, CRC(75fd7720) SHA1(3ee4ca0d85ffacf0388cada17581da0cdaaf83ef) )
1830 	ROM_LOAD( "u78.11",       0x1000, 0x0800, CRC(72a492da) SHA1(a272f72378850f7ecf52498746c2015f6dad3ab9) )
1831 
1832 	ROM_REGION( 0x1000, "gfx1", 0 )
1833 	ROM_LOAD( "u72.1",        0x0000, 0x0800, CRC(279789d0) SHA1(3ccf39da252df8b3605efc26299831279d697dd8) )
1834 	ROM_LOAD( "u101.2",       0x0800, 0x0800, CRC(c5dc627f) SHA1(529307238707d0676d1cae508f4eb66bbdd623d7) )
1835 
1836 	ROM_REGION( 0x0020, "proms", 0 )
1837 	ROM_LOAD( "c01s.6e",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
1838 ROM_END
1839 
1840 ROM_START( devilfsh )
1841 	ROM_REGION( 0x10000, "maincpu", 0 )
1842 	ROM_LOAD( "u26.1",        0x0000, 0x0800, CRC(ec047d71) SHA1(c35555010fe239213e92946b65a54612d5a23399) )
1843 	ROM_LOAD( "u56.2",        0x0800, 0x0800, CRC(0138ade9) SHA1(8c75572fa0a5d0665cc46b1c0080192bb0148df9) )
1844 	ROM_LOAD( "u69.3",        0x1000, 0x0800, CRC(5dd0b3fc) SHA1(cf19193986920853d93e4ff38b70dcd46b42276b) )
1845 	ROM_LOAD( "u98.4",        0x1800, 0x0800, CRC(ded0b745) SHA1(2a3c741f11d211b4ec8dfa2dd2b3ae0c0a2d9590) )
1846 	ROM_LOAD( "u114.5",       0x2000, 0x0800, CRC(5fd40176) SHA1(536dd870057c48591f0bee468325c8780afb7026) )
1847 	ROM_LOAD( "u133.6",       0x2800, 0x0800, CRC(03538336) SHA1(66cffcbc53e42c626880151a62721ef3e6bf90bc) )
1848 	ROM_LOAD( "u143.7",       0x3000, 0x0800, CRC(64676081) SHA1(6ae628ad582680d6a825238b60d1195990dbb56f) )
1849 	ROM_LOAD( "u163.8",       0x3800, 0x0800, CRC(bc3d6770) SHA1(ac8803520a668b1759acba23f06ba7a6c5792cbd) )
1850 
1851 	ROM_REGION( 0x10000, "audiocpu", 0 )
1852 	ROM_LOAD( "u39.9",        0x0000, 0x0800, CRC(09987e2e) SHA1(6b0d8413a137726a67ceedeacfc0c48b058698f1) )
1853 	ROM_LOAD( "u51.10",       0x0800, 0x0800, CRC(1e2b1471) SHA1(3ba33b26a5bff21b9ddc34e0a468db7b89361314) )
1854 	ROM_LOAD( "u78.11",       0x1000, 0x0800, CRC(45279aaa) SHA1(20aca9bcfa1010311290cb3d8e4fb548182dcd4b) )
1855 
1856 	ROM_REGION( 0x2000, "gfx1", 0 )
1857 	ROM_LOAD( "u72.12",       0x0000, 0x1000, CRC(5406508e) SHA1(1d01a796c3ac22e3fddd1ec2103ef5bd8c409278) )
1858 	ROM_LOAD( "u101.13",      0x1000, 0x1000, CRC(8c4018b6) SHA1(83c4f73a3e40fa6ecece38404fa5f64ab59d7b4e) )
1859 
1860 	ROM_REGION( 0x0020, "proms", 0 )
1861 	ROM_LOAD( "c01s.6e",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
1862 ROM_END
1863 
1864 ROM_START( newsin7 )
1865 	ROM_REGION( 0x10000, "maincpu", 0 )
1866 	ROM_LOAD( "newsin.1",     0x0000, 0x1000, CRC(e6c23fe0) SHA1(b15c56ca7868be0f038c246f29ba54f41b5cb755) )
1867 	ROM_LOAD( "newsin.2",     0x1000, 0x1000, CRC(3d477b5f) SHA1(9e22f7262077ce6b00b2efbba0e13dcec143d122) )
1868 	ROM_LOAD( "newsin.3",     0x2000, 0x1000, CRC(7dfa9af0) SHA1(8cbbfff22a3c6429f7ab22d86c8d760b08871bac) )
1869 	ROM_LOAD( "newsin.4",     0x3000, 0x1000, CRC(d1b0ba19) SHA1(66c128bc9b306aa6470de5d413f782ae17e78b14) )
1870 	ROM_LOAD( "newsin.5",     0xa000, 0x1000, CRC(06275d59) SHA1(a5a5436c0b014af06181eeb044d8c4e3188414ea) )
1871 
1872 	ROM_REGION( 0x10000, "audiocpu", 0 )
1873 	ROM_LOAD( "newsin.13",    0x0000, 0x0800, CRC(d88489a2) SHA1(ab10fd4862129824301a0a847de298f1826aa03e) )
1874 	ROM_LOAD( "newsin.12",    0x0800, 0x0800, CRC(b154a7af) SHA1(91ca28b2530f22786ff581e5710b40f0cf99f516) )
1875 	ROM_LOAD( "newsin.11",    0x1000, 0x0800, CRC(7ade709b) SHA1(bda1401172139cd6e3e03424c56e4f59e5afebd5) )
1876 
1877 	ROM_REGION( 0x3000, "gfx1", 0 )
1878 	ROM_LOAD( "newsin.7",     0x2000, 0x1000, CRC(6bc5d64f) SHA1(4f52224a4d5294a7487a1fc55eba13cf0b5fb6af) )
1879 	ROM_LOAD( "newsin.8",     0x1000, 0x1000, CRC(0c5b895a) SHA1(994ad7f051b30a3045ffc08ac8d9d7092fbadef3) )
1880 	ROM_LOAD( "newsin.9",     0x0000, 0x1000, CRC(6b87adff) SHA1(c0943832e498ab04978b11b163ba951d4a7e2e60) )
1881 
1882 	ROM_REGION( 0x0020, "proms", 0 )
1883 	ROM_LOAD( "newsin.6",     0x0000, 0x0020, CRC(5cf2cd8d) SHA1(0c85737add75545ab11aaf64fe37c7bd078308c9) )
1884 ROM_END
1885 
1886 ROM_START( newsin7a )
1887 	ROM_REGION( 0x10000, "maincpu", 0 )
1888 	ROM_LOAD( "epr2732-1.u26",   0x0000, 0x1000, CRC(67bd4b05) SHA1(a3e397fe0b9baba48fa876c9cf53319f5c7c73f6) )
1889 	ROM_LOAD( "epr2732-2.u56",   0x1000, 0x1000, CRC(93ac59de) SHA1(8eed2bab741ca3d0deeeaede22547ebe90b46a46) )
1890 	ROM_LOAD( "epr2732-3.u69",   0x2000, 0x1000, CRC(6a778d95) SHA1(bf94017f06e7029a8a70e7b7ae741f7eac9d3e07) )
1891 	ROM_LOAD( "epr2732-4.u98",   0x3000, 0x1000, CRC(7f351640) SHA1(5db70661c75f125eb531e84df66d0127c29cb821) )
1892 	ROM_LOAD( "epr2732-5.u114",  0xa000, 0x1000, CRC(06275d59) SHA1(a5a5436c0b014af06181eeb044d8c4e3188414ea) )
1893 
1894 	ROM_REGION( 0x10000, "audiocpu", 0 )
1895 	ROM_LOAD( "epr2716.u39",     0x0000, 0x0800, CRC(d88489a2) SHA1(ab10fd4862129824301a0a847de298f1826aa03e) )
1896 	ROM_LOAD( "epr2716.u51",     0x0800, 0x0800, CRC(b154a7af) SHA1(91ca28b2530f22786ff581e5710b40f0cf99f516) )
1897 	ROM_LOAD( "epr2716.u78",     0x1000, 0x0800, CRC(7ade709b) SHA1(bda1401172139cd6e3e03424c56e4f59e5afebd5) ) /* u78 socket was empty, using the newsin7 one */
1898 
1899 	ROM_REGION( 0x3000, "gfx1", 0 )
1900 	ROM_LOAD( "epr2732-7.db",    0x2000, 0x1000, CRC(6bc5d64f) SHA1(4f52224a4d5294a7487a1fc55eba13cf0b5fb6af) )
1901 	ROM_LOAD( "epr2732-6.u133",  0x1000, 0x1000, CRC(0c5b895a) SHA1(994ad7f051b30a3045ffc08ac8d9d7092fbadef3) )
1902 	ROM_LOAD( "epr2732-8.db",    0x0000, 0x1000, CRC(6b87adff) SHA1(c0943832e498ab04978b11b163ba951d4a7e2e60) )
1903 
1904 	ROM_REGION( 0x0020, "proms", 0 )
1905 	ROM_LOAD( "prom.u59",        0x0000, 0x0020, CRC(16cb5f4e) SHA1(36753611808d245d4f3ee55f71394297dd2afc09) ) /* Slightly different color prom */
1906 ROM_END
1907 
1908 ROM_START( mrkougar )
1909 	ROM_REGION( 0x10000, "maincpu", 0 )
1910 	ROM_LOAD( "2732-7.bin",   0x0000, 0x1000, CRC(fd060ffb) SHA1(b3bee6fe879f13f3178bef3b2dff3041e698f061) )
1911 	ROM_LOAD( "2732-6.bin",   0x1000, 0x1000, CRC(9e05d868) SHA1(802514f5de347913f0315b42b3689baa37030141) )
1912 	ROM_LOAD( "2732-5.bin",   0x2000, 0x1000, CRC(cbc7c536) SHA1(b959c29bb7ab81ee123ba2f397eef1e32656b441) )
1913 
1914 	ROM_REGION( 0x10000, "audiocpu", 0 )
1915 	ROM_LOAD( "atw-6w-2.bin", 0x0000, 0x1000, CRC(af42a371) SHA1(edacbb29df34fdf400a5c726d851af1479a34c70) )
1916 	ROM_LOAD( "atw-6y-3.bin", 0x1000, 0x1000, CRC(862b8902) SHA1(91dcbc634f7c7ed78dfbd0be5cf1e0631429cfbf) )
1917 	ROM_LOAD( "atw-6z-4.bin", 0x2000, 0x1000, CRC(a0396cc8) SHA1(c8266b58b144a4bc564f3a2503d5b953c0ba6ca7) )
1918 
1919 	ROM_REGION( 0x1000, "gfx1", 0 )
1920 	ROM_LOAD( "2732-1.bin",   0x0000, 0x1000, CRC(60ef1d43) SHA1(ab42fa98350051526fcc4bfe35ebed3d6daf424f) )
1921 
1922 	ROM_REGION( 0x0020, "proms", 0 )
1923 	ROM_LOAD( "c01s.6e",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
1924 ROM_END
1925 
1926 ROM_START( mrkougar2 )
1927 	ROM_REGION( 0x10000, "maincpu", 0 )
1928 	ROM_LOAD( "atw-7l-7.bin", 0x0000, 0x1000, CRC(7b34b198) SHA1(c7793c49c5bd1360ef2d419bc4710b35f0a02760) )
1929 	ROM_LOAD( "atw-7k-6.bin", 0x1000, 0x1000, CRC(fbca23c7) SHA1(da24a01d83174bad36072d4bf6764c5a3e242561) )
1930 	ROM_LOAD( "atw-7h-5.bin", 0x2000, 0x1000, CRC(05b257a2) SHA1(728df1f1cb726d333818db8fedb27bf537be8a36) )
1931 
1932 	ROM_REGION( 0x10000, "audiocpu", 0 )
1933 	ROM_LOAD( "atw-6w-2.bin", 0x0000, 0x1000, CRC(af42a371) SHA1(edacbb29df34fdf400a5c726d851af1479a34c70) )
1934 	ROM_LOAD( "atw-6y-3.bin", 0x1000, 0x1000, CRC(862b8902) SHA1(91dcbc634f7c7ed78dfbd0be5cf1e0631429cfbf) )
1935 	ROM_LOAD( "atw-6z-4.bin", 0x2000, 0x1000, CRC(a0396cc8) SHA1(c8266b58b144a4bc564f3a2503d5b953c0ba6ca7) )
1936 
1937 	ROM_REGION( 0x1000, "gfx1", 0 )
1938 	ROM_LOAD( "atw-1h-1.bin", 0x0000, 0x1000, CRC(38fdfb63) SHA1(9fc4eafd6d106ffe35c179e59a234c706c489f8c) )
1939 
1940 	ROM_REGION( 0x0020, "proms", 0 )
1941 	ROM_LOAD( "atw-prom.bin", 0x0000, 0x0020, CRC(c65db188) SHA1(90f0a5f22bb761693ab5895da08b20821e79ba65) )
1942 ROM_END
1943 
1944 ROM_START( mrkougb )
1945 	ROM_REGION( 0x10000, "maincpu", 0 )
1946 	ROM_LOAD( "p01.bin",      0x0000, 0x0800, CRC(dea0cde1) SHA1(aaf9c622b86d475a90f91628d033989e72dda361) )
1947 	ROM_LOAD( "p02.bin",      0x0800, 0x0800, CRC(c8017751) SHA1(021bd6a6efb90119767162a5847b4bbbc47f321e) )
1948 	ROM_LOAD( "p03.bin",      0x1000, 0x0800, CRC(b8921984) SHA1(1adccd2bad8f748995f844183cac487ad00dd71e) )
1949 	ROM_LOAD( "p04.bin",      0x1800, 0x0800, CRC(b3c9754c) SHA1(16a162a19079125fa01f49d90dbf8cd61b9b4833) )
1950 	ROM_LOAD( "p05.bin",      0x2000, 0x0800, CRC(8d94adbc) SHA1(ac5932c84864e08c6b7937ef20d5bdceb48e2d24) )
1951 	ROM_LOAD( "p06.bin",      0x2800, 0x0800, CRC(acc921ff) SHA1(f75158c62c6b9871ef05a6a97542469698100eb0) )
1952 
1953 	ROM_REGION( 0x10000, "audiocpu", 0 )
1954 	ROM_LOAD( "atw-6w-2.bin", 0x0000, 0x1000, CRC(af42a371) SHA1(edacbb29df34fdf400a5c726d851af1479a34c70) )
1955 	ROM_LOAD( "atw-6y-3.bin", 0x1000, 0x1000, CRC(862b8902) SHA1(91dcbc634f7c7ed78dfbd0be5cf1e0631429cfbf) )
1956 	ROM_LOAD( "atw-6z-4.bin", 0x2000, 0x1000, CRC(a0396cc8) SHA1(c8266b58b144a4bc564f3a2503d5b953c0ba6ca7) )
1957 
1958 	ROM_REGION( 0x1000, "gfx1", 0 )
1959 	ROM_LOAD( "g07.bin",      0x0000, 0x0800, CRC(0ecfd116) SHA1(0ea173c4f7f2613ef71ee5dcd52c4c6f640020b7) )
1960 	ROM_LOAD( "g08.bin",      0x0800, 0x0800, CRC(00bfa3c6) SHA1(57a7fc48ec740b72baece96d50380dbbc826af77) )
1961 
1962 	ROM_REGION( 0x0020, "proms", 0 )
1963 	ROM_LOAD( "atw-prom.bin", 0x0000, 0x0020, CRC(c65db188) SHA1(90f0a5f22bb761693ab5895da08b20821e79ba65) )
1964 ROM_END
1965 
1966 ROM_START( mrkougb2 )
1967 	ROM_REGION( 0x10000, "maincpu", 0 )
1968 	ROM_LOAD( "mrk1.bin",     0x0000, 0x0800, CRC(fc93acb9) SHA1(e53373d47959a99f0b6574654d198f43b493c20f) )
1969 	ROM_LOAD( "p02.bin",      0x0800, 0x0800, CRC(c8017751) SHA1(021bd6a6efb90119767162a5847b4bbbc47f321e) )
1970 	ROM_LOAD( "p03.bin",      0x1000, 0x0800, CRC(b8921984) SHA1(1adccd2bad8f748995f844183cac487ad00dd71e) )
1971 	ROM_LOAD( "p04.bin",      0x1800, 0x0800, CRC(b3c9754c) SHA1(16a162a19079125fa01f49d90dbf8cd61b9b4833) )
1972 	ROM_LOAD( "p05.bin",      0x2000, 0x0800, CRC(8d94adbc) SHA1(ac5932c84864e08c6b7937ef20d5bdceb48e2d24) )
1973 	ROM_LOAD( "p06.bin",      0x2800, 0x0800, CRC(acc921ff) SHA1(f75158c62c6b9871ef05a6a97542469698100eb0) )
1974 
1975 	ROM_REGION( 0x10000, "audiocpu", 0 )
1976 	ROM_LOAD( "atw-6w-2.bin", 0x0000, 0x1000, CRC(af42a371) SHA1(edacbb29df34fdf400a5c726d851af1479a34c70) )
1977 	ROM_LOAD( "atw-6y-3.bin", 0x1000, 0x1000, CRC(862b8902) SHA1(91dcbc634f7c7ed78dfbd0be5cf1e0631429cfbf) )
1978 	ROM_LOAD( "atw-6z-4.bin", 0x2000, 0x1000, CRC(a0396cc8) SHA1(c8266b58b144a4bc564f3a2503d5b953c0ba6ca7) )
1979 
1980 	ROM_REGION( 0x1000, "gfx1", 0 )
1981 	ROM_LOAD( "g07.bin",      0x0000, 0x0800, CRC(0ecfd116) SHA1(0ea173c4f7f2613ef71ee5dcd52c4c6f640020b7) )
1982 	ROM_LOAD( "g08.bin",      0x0800, 0x0800, CRC(00bfa3c6) SHA1(57a7fc48ec740b72baece96d50380dbbc826af77) )
1983 
1984 	ROM_REGION( 0x0020, "proms", 0 )
1985 	ROM_LOAD( "atw-prom.bin", 0x0000, 0x0020, CRC(c65db188) SHA1(90f0a5f22bb761693ab5895da08b20821e79ba65) )
1986 ROM_END
1987 
1988 ROM_START( troopy )
1989 	ROM_REGION( 0x10000, "maincpu", 0 )
1990 	ROM_LOAD( "ic2cb.bin",   0x0000, 0x1000, CRC(a1798961) SHA1(45a1f6183016229fced3b459c95c99d83408151a) )
1991 	ROM_LOAD( "ic2eb.bin",   0x1000, 0x1000, CRC(7f3572f9) SHA1(2f89f743a32378ed4ac4184627ed9be007c3334a) )
1992 	ROM_LOAD( "ic2fb.bin",   0x2000, 0x1000, CRC(42e666fd) SHA1(caa6a2b07098ef1d6203309ddd3a591194b4ac70) )
1993 
1994 	ROM_REGION( 0x10000, "audiocpu", 0 )
1995 	ROM_LOAD( "ic5c.bin", 0x0000, 0x1000, CRC(af42a371) SHA1(edacbb29df34fdf400a5c726d851af1479a34c70) )
1996 	ROM_LOAD( "ic5d.bin", 0x1000, 0x1000, CRC(862b8902) SHA1(91dcbc634f7c7ed78dfbd0be5cf1e0631429cfbf) )
1997 	ROM_LOAD( "ic5e.bin", 0x2000, 0x1000, CRC(a0396cc8) SHA1(c8266b58b144a4bc564f3a2503d5b953c0ba6ca7) )
1998 
1999 	ROM_REGION( 0x1000, "gfx1", 0 )
2000 	ROM_LOAD( "ic5h_neu.bin",      0x0000, 0x0800, CRC(0f4a2394) SHA1(a6c309ca6afa59fbe6549d6fd282902f018a1a48) )
2001 	ROM_LOAD( "ic5f_neu.bin",      0x0800, 0x0800, CRC(cbbfefc2) SHA1(2378949275b8d3fc69551b00d9b2c654b91fd780) )
2002 
2003 	ROM_REGION( 0x0020, "proms", 0 )
2004 	ROM_LOAD( "82s123", 0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2005 ROM_END
2006 
2007 ROM_START( hotshock )
2008 	ROM_REGION( 0x10000, "maincpu", 0 )
2009 	ROM_LOAD( "0d.l10", 0x0000, 0x1000, CRC(3e8aeaeb) SHA1(0572623928d36d106c9d8028d92fbd02375291a5) )
2010 	ROM_LOAD( "1d.l9",  0x1000, 0x1000, CRC(0eab3246) SHA1(fac21e341186a7b70893c48cc00b1209dc31bcca) )
2011 	ROM_LOAD( "2d.l8",  0x2000, 0x1000, CRC(e646bde3) SHA1(a0349a096ea00c077d162a945e4797e164a1508f) )
2012 	ROM_LOAD( "3d.l7",  0x3000, 0x1000, CRC(5bde9312) SHA1(d3ba06790c8210f41902bb8ad27a1e5abafccb33) )
2013 
2014 	ROM_REGION( 0x10000, "audiocpu", 0 )
2015 	ROM_LOAD( "6d.b3",  0x0000, 0x1000, CRC(c5e02651) SHA1(105b28d28cad2cddfc0a32b5dec1d21d1ef3f663) )
2016 	ROM_LOAD( "7d.b4",  0x1000, 0x1000, CRC(49dc113d) SHA1(c59642d6cbd6e9c54c9802b8ec550b106e6a3ec3) )
2017 
2018 	ROM_REGION( 0x2000, "gfx1", 0 )
2019 	ROM_LOAD( "4d.h3",  0x0000, 0x1000, CRC(751c850e) SHA1(067aaea400bbbcb0819d74a24fba5d7e035c2466) )
2020 	ROM_LOAD( "5d.h5",  0x1000, 0x1000, CRC(fc74282e) SHA1(9a7df0a972cba4ee3c317ef3617b1d69d516bebb) )
2021 
2022 	ROM_REGION( 0x0020, "proms", 0 )
2023 	ROM_LOAD( "18s030.1k",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2024 ROM_END
2025 
2026 ROM_START( hotshockb )
2027 	ROM_REGION( 0x10000, "maincpu", 0 )
2028 	ROM_LOAD( "hotshock.l10", 0x0000, 0x1000, CRC(401078f7) SHA1(d4415a41eba1d3a2dcbb119f3136c177b02d1fb6) )
2029 	ROM_LOAD( "hotshock.l9",  0x1000, 0x1000, CRC(af76c237) SHA1(bb54e1652a2d2e56731434ed85b40dab4aad91c9) )
2030 	ROM_LOAD( "hotshock.l8",  0x2000, 0x1000, CRC(30486031) SHA1(bed06cb62afee6b000a0e21927559ac5d3538b38) )
2031 	ROM_LOAD( "hotshock.l7",  0x3000, 0x1000, CRC(5bde9312) SHA1(d3ba06790c8210f41902bb8ad27a1e5abafccb33) )
2032 
2033 	ROM_REGION( 0x10000, "audiocpu", 0 )
2034 	ROM_LOAD( "hotshock.b3",  0x0000, 0x1000, CRC(0092f0e2) SHA1(d85b05370fa0ce4ba27fd331bb6a7fae067ce83b) )
2035 	ROM_LOAD( "hotshock.b4",  0x1000, 0x1000, CRC(c2135a44) SHA1(809cf305b1f43f99f2248020c369fb5f1d7c5c44) )
2036 
2037 	ROM_REGION( 0x2000, "gfx1", 0 )
2038 	ROM_LOAD( "hotshock.h4",  0x0000, 0x1000, CRC(60bdaea9) SHA1(fd10109803661dc1ce72e1291e3721bdb2bb159f) )
2039 	ROM_LOAD( "hotshock.h5",  0x1000, 0x1000, CRC(4ef17453) SHA1(7dc58456b2f25775c85b3ae92f605d69bb68d590) )
2040 
2041 	ROM_REGION( 0x0020, "proms", 0 )
2042 	ROM_LOAD( "c01s.6e",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2043 ROM_END
2044 
2045 /*
2046 
2047 Conqueror (c) ???? ????
2048 ROM data reveals that it's a space shooter, based on Domino's Hot Shocker, >=1982.
2049 
2050 CPU: Z80 (x2)
2051 Sound: AY-3-8910 (x2)
2052 RAM: 74S201 (x5), 2114 (x8), Mostek MN4801AN-3IRL
2053 X1: ??
2054 
2055 Notes: Has a very crude, homemade looking potted module which crumbled apart when handled.
2056 Contained two 20-pin DIP chips with no markings. Could be PROMs, PLDs or TTL
2057 
2058 */
2059 
2060 ROM_START( conquer )
2061 	ROM_REGION( 0x10000, "maincpu", 0 )
2062 	ROM_LOAD( "conquer3.l10",       0x0000, 0x1000, BAD_DUMP CRC(a33a824f) SHA1(787ac1f1942ba97c64317b9455d6788281c02f60) )
2063 	ROM_LOAD( "conquer2.l9",        0x1000, 0x1000, CRC(3ffa8285) SHA1(a110e52fe5f637606c1be3a9e290fc6625b9aa48) )
2064 	ROM_LOAD( "conquer1.l8",        0x2000, 0x1000, CRC(9ded2dff) SHA1(9364195d3f86e55df5ecf90d53041517c3658388) )
2065 
2066 	ROM_REGION( 0x10000, "audiocpu", 0 )    /* 64k for sound code */
2067 	ROM_LOAD( "conquer6.b3",       0x0000, 0x1000, CRC(d363b2ea) SHA1(ca4887d51eee4053cd981b4a97fb8a29eecd14e9) )
2068 	ROM_LOAD( "conquer7.b4",       0x1000, 0x1000, CRC(e6a63d71) SHA1(84e199cd214046829f038bc9f151373e9ced575c) )
2069 
2070 	ROM_REGION( 0x2000, "gfx1", 0 )
2071 	ROM_LOAD( "conquer4.h3",       0x0000, 0x1000, CRC(ac533893) SHA1(bb1fee3ec1b856423aa032a905c90a62f405bba8) )
2072 	ROM_LOAD( "conquer5.h5",       0x1000, 0x1000, CRC(d884fd49) SHA1(108ed4a1aebd20b2c44e0bf07c2144b9b58dbda1) ) // data unused? (hotshock gfx still intact)
2073 
2074 	ROM_REGION( 0x0020, "proms", 0 )
2075 	ROM_LOAD( "c01s.6e",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2076 ROM_END
2077 
2078 ROM_START( hunchbks )
2079 	ROM_REGION( 0x8000, "maincpu", 0 )
2080 	ROM_LOAD( "2c_hb01.bin",  0x0000, 0x0800, CRC(8bebd834) SHA1(08f2ce732d2d8754bf559260e1f656a33e2a06a5) )
2081 	ROM_LOAD( "2e_hb02.bin",  0x0800, 0x0800, CRC(07de4229) SHA1(9f333509ae3d6c579f6d96caa172a0abe9eefb30) )
2082 	ROM_LOAD( "2f_hb03.bin",  0x2000, 0x0800, CRC(b75a0dfc) SHA1(c60c833f28c6de027d46f5a2a54ad5646ec58453) )
2083 	ROM_LOAD( "2h_hb04.bin",  0x2800, 0x0800, CRC(f3206264) SHA1(36a614db3fda4f97cc085d84bd13ea44969de95b) )
2084 	ROM_LOAD( "2j_hb05.bin",  0x4000, 0x0800, CRC(1bb78728) SHA1(aebfca355d937825217d069689f9b4d7a113b10a) )
2085 	ROM_LOAD( "2l_hb06.bin",  0x4800, 0x0800, CRC(f25ed680) SHA1(7854e4975a4f75916f60749ac24147c335927394) )
2086 	ROM_LOAD( "2m_hb07.bin",  0x6000, 0x0800, CRC(c72e0e17) SHA1(90da1e375733873bc592e11980bdaf8168bd5aea) )
2087 	ROM_LOAD( "2p_hb08.bin",  0x6800, 0x0800, CRC(412087b0) SHA1(4d6f343577ae73031f32cda8903c74e5a840e71d) )
2088 
2089 	ROM_REGION( 0x10000, "audiocpu", 0 )
2090 	ROM_LOAD( "11d_snd.bin",  0x0000, 0x0800, CRC(88226086) SHA1(fe2da172313063e5b056fc8c8d8b2a5c64db5179) )
2091 
2092 	ROM_REGION( 0x1000, "gfx1", 0 )
2093 	ROM_LOAD( "5f_hb09.bin",  0x0000, 0x0800, CRC(db489c3d) SHA1(df08607ad07222c1c1c4b3589b50b785bdeefbf2) )
2094 	ROM_LOAD( "5h_hb10.bin",  0x0800, 0x0800, CRC(3977650e) SHA1(1de05d6ceed3f2ed0925caa8235b63a93f03f61e) )
2095 
2096 	ROM_REGION( 0x0020, "proms", 0 )
2097 	ROM_LOAD( "6e_prom.bin",  0x0000, 0x0020, CRC(01004d3f) SHA1(e53cbc54ea96e846481a67bbcccf6b1726e70f9c) )
2098 ROM_END
2099 
2100 ROM_START( hunchbks2 )
2101 	ROM_REGION( 0x8000, "maincpu", 0 )
2102 	ROM_LOAD( "hb01.bin",     0x0000, 0x0800, CRC(fec3466a) SHA1(d8ec3b432f7037e99bf1ac1ba7911a34eff6869d) )
2103 	ROM_LOAD( "2e_hb02.bin",  0x0800, 0x0800, CRC(07de4229) SHA1(9f333509ae3d6c579f6d96caa172a0abe9eefb30) )
2104 	ROM_LOAD( "2f_hb03.bin",  0x2000, 0x0800, CRC(b75a0dfc) SHA1(c60c833f28c6de027d46f5a2a54ad5646ec58453) )
2105 	ROM_LOAD( "hb04.bin",     0x2800, 0x0800, CRC(731e349b) SHA1(cfa1ac322cdfe1d4d112b0a4dd85d3552a6e33d0) )
2106 	ROM_LOAD( "2j_hb05.bin",  0x4000, 0x0800, CRC(1bb78728) SHA1(aebfca355d937825217d069689f9b4d7a113b10a) )
2107 	ROM_LOAD( "2l_hb06.bin",  0x4800, 0x0800, CRC(f25ed680) SHA1(7854e4975a4f75916f60749ac24147c335927394) )
2108 	ROM_LOAD( "2m_hb07.bin",  0x6000, 0x0800, CRC(c72e0e17) SHA1(90da1e375733873bc592e11980bdaf8168bd5aea) )
2109 	ROM_LOAD( "2p_hb08.bin",  0x6800, 0x0800, CRC(412087b0) SHA1(4d6f343577ae73031f32cda8903c74e5a840e71d) )
2110 
2111 	ROM_REGION( 0x10000, "audiocpu", 0 )
2112 	ROM_LOAD( "11d_snd.bin",  0x0000, 0x0800, CRC(88226086) SHA1(fe2da172313063e5b056fc8c8d8b2a5c64db5179) )
2113 
2114 	ROM_REGION( 0x1000, "gfx1", 0 )
2115 	ROM_LOAD( "5f_hb09.bin",  0x0000, 0x0800, CRC(db489c3d) SHA1(df08607ad07222c1c1c4b3589b50b785bdeefbf2) )
2116 	ROM_LOAD( "5h_hb10.bin",  0x0800, 0x0800, CRC(3977650e) SHA1(1de05d6ceed3f2ed0925caa8235b63a93f03f61e) )
2117 
2118 	ROM_REGION( 0x0020, "proms", 0 )
2119 	ROM_LOAD( "6e_prom.bin",  0x0000, 0x0020, CRC(01004d3f) SHA1(e53cbc54ea96e846481a67bbcccf6b1726e70f9c) )
2120 ROM_END
2121 
2122 
2123 ROM_START( hncholms )
2124 	ROM_REGION( 0x8000, "maincpu", 0 )
2125 	ROM_LOAD( "hncholym.2d",  0x0000, 0x0800, CRC(fb453f9c) SHA1(e4c059b10af1aa8405958c0fd139fb84d08ec9f3) )
2126 	ROM_LOAD( "hncholym.2e",  0x0800, 0x0800, CRC(b1429420) SHA1(9e393750e5651c8b14acc11e3591db0a0a599a4d) )
2127 	ROM_LOAD( "hncholym.2f",  0x2000, 0x0800, CRC(afc98e28) SHA1(efc7918a95d9011cbc0c5fbaee3793d95ecbcf89) )
2128 	ROM_LOAD( "hncholym.2h",  0x2800, 0x0800, CRC(6785bf17) SHA1(e0dadda7d55d2046312a87ed700654952662a6b3) )
2129 	ROM_LOAD( "hncholym.2j",  0x4000, 0x0800, CRC(0e1e4133) SHA1(84c3b8e3e81f6ef3311f1272ee6633cec10b796e) )
2130 	ROM_LOAD( "hncholym.2l",  0x4800, 0x0800, CRC(6e982609) SHA1(2d2aa16ad27f6de486eebfd82b23f7ac706faee5) )
2131 	ROM_LOAD( "hncholym.2m",  0x6000, 0x0800, CRC(b9141914) SHA1(955f7b909b3ec27a07817d031fcbb4029e1cff81) )
2132 	ROM_LOAD( "hncholym.2p",  0x6800, 0x0800, CRC(ca37b55b) SHA1(cb423c1aac91654657e72d0a0cbc311cffc9df0c) )
2133 
2134 	ROM_REGION( 0x10000, "audiocpu", 0 )
2135 	ROM_LOAD( "hncholym.5c",  0x0000, 0x0800, CRC(e7758775) SHA1(3ca843e7519d7f38812e6e2e7b5bb78ac3c02676) )
2136 
2137 	ROM_REGION( 0x2000, "gfx1", 0 )
2138 	ROM_LOAD( "hncholym.5f",  0x0000, 0x1000, CRC(75ad3542) SHA1(1094a30861c68c1f4fc85fbfd5606c5feec3843b) )
2139 	ROM_LOAD( "hncholym.5h",  0x1000, 0x1000, CRC(6fec9dd3) SHA1(2366b10e8f9ba58a565ef2e1a6eddf7c4b51fe79) )
2140 
2141 	ROM_REGION( 0x0020, "proms", 0 )
2142 	ROM_LOAD( "prom.6e",      0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2143 
2144 	ROM_REGION( 0x0200, "user1", 0 ) /* unknown - from the custom module */
2145 	ROM_LOAD( "82s147.1a",    0x0000, 0x0200, CRC(d461a48b) SHA1(832fc1de4875d5f19e53d72ccf5dcdb5bcbee1af) )
2146 ROM_END
2147 
2148 ROM_START( cavelon )
2149 	ROM_REGION( 0x14000, "maincpu", 0 ) /* 64k + 16K banked for code */
2150 	ROM_LOAD( "2.bin",       0x00000, 0x2000, CRC(a3b353ac) SHA1(1d5cc402f83c410f2ccd186dafb8bf16a7778fb0) )
2151 	ROM_LOAD( "1.bin",       0x02000, 0x2000, CRC(3f62efd6) SHA1(b03a46f8478f499812c5d9c11816ee28d67fb77b) )
2152 	ROM_RELOAD(              0x12000, 0x2000)
2153 	ROM_LOAD( "3.bin",       0x10000, 0x2000, CRC(39d74e4e) SHA1(4789eab2741555f59a97ef5a10b0500f6b64a6ce) )
2154 
2155 	ROM_REGION( 0x10000, "audiocpu", 0 )
2156 	ROM_LOAD( "1c_snd.bin",   0x0000, 0x0800, CRC(f58dcf55) SHA1(517dab8684109188d7d78c8a2cf94a4fac17d40c) )
2157 
2158 	ROM_REGION( 0x2000, "gfx1", 0 )
2159 	ROM_LOAD( "h.bin",        0x0000, 0x1000, CRC(d44fcd6f) SHA1(c275741bb1d876e7308e131cac2f1fee249613c7) )
2160 	ROM_LOAD( "k.bin",        0x1000, 0x1000, CRC(59bc7f9e) SHA1(4374955d0fdfbba57ba432da22b0d94b66832fb8) )
2161 
2162 	ROM_REGION( 0x0020, "proms", 0 )
2163 	ROM_LOAD( "cavelon.clr",  0x0000, 0x0020, CRC(d133356b) SHA1(58db4013a9ad77107f0d462c96363d7c38d86fa2) )
2164 ROM_END
2165 
2166 ROM_START( mimonscr )
2167 	ROM_REGION( 0x10000, "maincpu", 0 )
2168 	ROM_LOAD( "mm1",          0x0000, 0x1000, CRC(0399a0c4) SHA1(8314124f9b535ce531663625d19cd3a76782ed3b) )
2169 	ROM_LOAD( "mm2",          0x1000, 0x1000, CRC(2c5e971e) SHA1(39f979b99566e30a19c63115c936bb11fae4c609) )
2170 	ROM_LOAD( "mm3",          0x2000, 0x1000, CRC(24ce1ce3) SHA1(ae5ba6913cabab2152bf48c0c0d5983ecbe5c700) )
2171 	ROM_LOAD( "mm4",          0x3000, 0x1000, CRC(c83fb639) SHA1(38ddd80b25cc0707b9e53396c322fe731ea8bc3e) )
2172 	ROM_LOAD( "mm5",          0xc000, 0x1000, CRC(a9f12dfc) SHA1(c279e3ac84194cc83642a2c330fd869eaae8f063) )
2173 	ROM_LOAD( "mm6",          0xd000, 0x1000, CRC(e492a40c) SHA1(d01d6f9c18821fd8c7ed11d65d13bd0c9595881f) )
2174 	ROM_LOAD( "mm7",          0xe000, 0x1000, CRC(5339928d) SHA1(7c28516fb7d762e2f77d0ed3dc56a57d0213dbf9) )
2175 	ROM_LOAD( "mm8",          0xf000, 0x1000, CRC(eee7a12e) SHA1(bde6bfe98b15215c48c85a22615b0242ea4f0224) )
2176 
2177 	ROM_REGION( 0x10000, "audiocpu", 0 )
2178 	ROM_LOAD( "mmsound1",     0x0000, 0x1000, CRC(2d14c527) SHA1(062414ce0415b6c471149319ecae22f465df3a4f) )
2179 	ROM_LOAD( "mmsnd2a",      0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) )
2180 
2181 	ROM_REGION( 0x4000, "gfx1", 0 )
2182 	ROM_LOAD( "mmgfx1",       0x0000, 0x2000, CRC(4af47337) SHA1(225f7bcfbb61e3a163ecaed675d4c81b3609562f) )
2183 	ROM_LOAD( "mmgfx2",       0x2000, 0x2000, CRC(def47da8) SHA1(8e62e5dc5c810efaa204d0fcb3d02bc84f61ba35) )
2184 
2185 	ROM_REGION( 0x0020, "proms", 0 )
2186 	ROM_LOAD( "c01s.6e",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2187 ROM_END
2188 
2189 
2190 ROM_START( mimonscra )
2191 	ROM_REGION( 0x10000, "maincpu", 0 )
2192 	ROM_LOAD( "1.c2",          0x0000, 0x1000, CRC(cfff26f3) SHA1(6e611e370ce5a93099bdcdb3b34b86c9c6d49180) )
2193 	ROM_LOAD( "2.e2",          0x1000, 0x1000, CRC(1fca805f) SHA1(eb85d3c08b141d8bd85da38936a5fafcdd2ff709) )
2194 	ROM_LOAD( "3.f2",          0x2000, 0x1000, CRC(24ce1ce3) SHA1(ae5ba6913cabab2152bf48c0c0d5983ecbe5c700) )
2195 	ROM_LOAD( "4.h2",          0x3000, 0x1000, CRC(c83fb639) SHA1(38ddd80b25cc0707b9e53396c322fe731ea8bc3e) )
2196 	ROM_LOAD( "5.j2",          0xc000, 0x1000, CRC(a9f12dfc) SHA1(c279e3ac84194cc83642a2c330fd869eaae8f063) )
2197 	ROM_LOAD( "6.l2",          0xd000, 0x1000, CRC(e492a40c) SHA1(d01d6f9c18821fd8c7ed11d65d13bd0c9595881f) )
2198 	ROM_LOAD( "7.m2",          0xe000, 0x1000, CRC(5339928d) SHA1(7c28516fb7d762e2f77d0ed3dc56a57d0213dbf9) )
2199 	ROM_LOAD( "8.p2",          0xf000, 0x1000, CRC(0b9915b8) SHA1(bb5155eede699d0b612cae458499bd245ab44b4d) )
2200 
2201 	ROM_REGION( 0x10000, "audiocpu", 0 )
2202 	ROM_LOAD( "2732.c5",      0x0000, 0x1000, CRC(5995f24b) SHA1(e3cad71006346e6ca6579c09e65195718687dca1) )
2203 	ROM_LOAD( "2732.d5",      0x1000, 0x1000, CRC(35ed0f96) SHA1(5aaacae5c2acf97540b72491f71ea823f5eeae1a) )
2204 
2205 	ROM_REGION( 0x4000, "gfx1", 0 )
2206 	ROM_LOAD( "top.g5",      0x0000, 0x1000, CRC(f73a8412) SHA1(9baf4336cceb9b039372b0a1c733910aeab5ec6d) )
2207 	ROM_LOAD( "bottom.g5",   0x1000, 0x1000, CRC(3828c9db) SHA1(eaf9e81c803ad2be6c2db3104f07f80788378286) )
2208 	ROM_LOAD( "top.f5",      0x2000, 0x1000, CRC(9e0e9289) SHA1(79d412dbceb364bc798feda658b15792feb63338) )
2209 	ROM_LOAD( "bottom.f5",   0x3000, 0x1000, CRC(92085b0c) SHA1(a791703fa9f17e42450c871d902430fc3c6b10ef) )
2210 
2211 	ROM_REGION( 0x0020, "proms", 0 )
2212 	ROM_LOAD( "mb7051.e6",    0x0000, 0x0020, CRC(4e3caeab) SHA1(a25083c3e36d28afdefe4af6e6d4f3155e303625) )
2213 ROM_END
2214 
2215 ROM_START( ad2083 )
2216 	ROM_REGION( 0x10000, "maincpu", 0 )
2217 	ROM_LOAD( "ad0.10o",      0x0000, 0x2000, CRC(4d34325a) SHA1(4a0eb1cd94382c44ab2642d734d3da9025872eba) )
2218 	ROM_LOAD( "ad1.9o",       0x2000, 0x2000, CRC(0f37134b) SHA1(a935ae013e9fb26b5ef44f7ebd2a043763b146db) )
2219 	ROM_LOAD( "ad2.8o",       0xa000, 0x2000, CRC(bcfa655f) SHA1(6a552c67f48e9ece6c6d38b4151ff6f3dbfd8dcb) )
2220 	ROM_LOAD( "ad3.7o",       0xc000, 0x2000, CRC(60655225) SHA1(628796b23ad66f8f7b2c160d923ecbea10fd7553) )
2221 
2222 	ROM_REGION( 0x10000, "audiocpu", 0 )
2223 	ROM_LOAD( "ad1s.3d",      0x0000, 0x2000, CRC(80f39b0f) SHA1(35671eaf6fc7643ad691414349f1b2772d020e9a) )
2224 	ROM_LOAD( "ad2s.4d",      0x2000, 0x1000, CRC(5177fe2b) SHA1(9aee953ae43131c4db9db71ca69a8ce9ad62ff05) )
2225 
2226 	ROM_REGION( 0x4000, "gfx1", 0 )
2227 	ROM_LOAD( "ad4.5k",       0x0000, 0x2000, CRC(388cdd21) SHA1(52f97d8e4f7c7f45a2875f03eadc622b540693e7) )
2228 	ROM_LOAD( "ad5.3k",       0x2000, 0x2000, CRC(f53f3449) SHA1(0711f2e47504f256d46eea1e225e35f9bde8b9fb) )
2229 
2230 	ROM_REGION( 0x2000, "tmsprom", 0 ) /* data for the TMS5110 speech chip */
2231 	ROM_LOAD( "ad1v.9a",      0x0000, 0x1000, CRC(4cb93fff) SHA1(2cc686a9a58a85f2bb04fb6ced4626e9952635bb) )
2232 	ROM_LOAD( "ad2v.10a",     0x1000, 0x1000, CRC(4b530ea7) SHA1(8793b3497b598f33b34bf9524e360c6c62e8001d) )
2233 
2234 	ROM_REGION( 0x0020, "proms", 0 )
2235 	ROM_LOAD( "prom-am27s19dc.1m", 0x0000, 0x0020, CRC(2759aebd) SHA1(644fd2c95ca49cbbc0ee1b88ca2563451ddd4fe0) )
2236 
2237 	ROM_REGION( 0x0020, "5110ctrl", 0 ) /* data to program TMS5110 speech chip 3x Reset 1x speak */
2238 	ROM_LOAD( "prom-sn74s188.8a",  0x0000, 0x0020, BAD_DUMP CRC(c58a4f6a) SHA1(35ef244b3e94032df2610aa594ea5670b91e1449) )
2239 ROM_END
2240 
2241 
2242 ROM_START( harem ) /* Main PCB version similar to Scorpion (also developed by I.G.R), sound PCB is identical to Scorpion */
2243 	ROM_REGION( 0x10000, "maincpu", 0 )
2244 	ROM_LOAD( "harem_prom0.ic85", 0x0000, 0x2000, CRC(4521b753) SHA1(9033f9c3be8fec1e5ff251e9f60faaf3848a1a1e) )
2245 	ROM_LOAD( "harem_prom1.ic87", 0x8000, 0x2000, CRC(3cc5d1e8) SHA1(827e2d20de2a00ec016ead249ed3afdccd0c856c) ) // encrypted
2246 
2247 	ROM_REGION( 0x10000, "audiocpu", 0 )
2248 	ROM_LOAD( "harem_sound1.ic12", 0x0000, 0x2000, CRC(b54799dd) SHA1(b6aeb010257cba48a52afd33b4f8031c7d99550c) )
2249 	ROM_LOAD( "harem_sound2.ic13", 0x2000, 0x1000, CRC(2d5573a4) SHA1(1fdcd99d89e078509634742b2116a35bb199fe4b) )
2250 
2251 	ROM_REGION( 0x2000, "digitalker", 0 ) // DigiTalker ROM (same exact sound PCB as Scorpion (galaxian.cpp))
2252 	ROM_LOAD( "harem_h1+h2.ic25",  0x0000, 0x2000, CRC(279f923a) SHA1(166b1b625997766f0de7cc18af52c42268022fcb) )
2253 
2254 	ROM_REGION( 0x4000, "gfx1", 0 )
2255 	ROM_LOAD( "harem_mask1.ic37", 0x0000, 0x2000, CRC(cb0324fb) SHA1(61612f683810339d5d5f31daa4c475d0338d446f) )
2256 	ROM_LOAD( "harem_mask0.ic36", 0x2000, 0x2000, CRC(64b3c6d6) SHA1(e71092585f7ffdae85b2a4c9add1bc71e5a608a8) )
2257 
2258 	ROM_REGION( 0x0020, "proms", 0 )
2259 	ROM_LOAD( "74s288.ic46", 0x0000, 0x0020, CRC(c9a2bf73) SHA1(dad65ebf43a5df147e334afd552e67f5fcd26df7) ) /* BPROM type is 74S288 */
2260 ROM_END
2261 
2262 
2263 GAME( 1982, triplep,  0,        triplep,  triplep,  scramble_state, init_scramble_ppi, ROT90, "K.K. International",  "Triple Punch (set 1)",              MACHINE_SUPPORTS_SAVE )
2264 GAME( 1982, triplepa, triplep,  triplep,  triplep,  scramble_state, init_scramble_ppi, ROT90, "K.K. International",  "Triple Punch (set 2)",              MACHINE_SUPPORTS_SAVE )
2265 GAME( 1982, knockout, triplep,  triplep,  triplep,  scramble_state, init_scramble_ppi, ROT90, "bootleg? (KKK)",      "Knock Out!! (bootleg, set 1)",      MACHINE_SUPPORTS_SAVE )
2266 GAME( 1982, knockoutb,triplep,  triplep,  knockoutb,scramble_state, init_scramble_ppi, ROT90, "bootleg",             "Knock Out!! (bootleg, set 2)",      MACHINE_SUPPORTS_SAVE )
2267 GAME( 1982, knockoutc,triplep,  triplep,  knockoutb,scramble_state, init_scramble_ppi, ROT90, "bootleg (ESG)",       "Knock Out!! (bootleg, set 3)",      MACHINE_SUPPORTS_SAVE ) // ESG = Elektronik Spiel Gerate
2268 
2269 GAME( 1981, mariner,  0,        mariner,  scramble, scramble_state, init_mariner,      ROT90, "Amenip",              "Mariner",                            MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
2270 GAME( 1981, 800fath,  mariner,  mariner,  800fath,  scramble_state, init_mariner,      ROT90, "Amenip (US Billiards Inc. license)", "800 Fathoms",         MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
2271 GAME( 1981, 800fatha, mariner,  mariner,  800fath,  scramble_state, init_mariner,      ROT90, "Amenip (US Billiards Inc. license)", "800 Fathoms (older)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
2272 
2273 GAME( 1981, ckongs,   ckong,    ckongs,   ckongs,   scramble_state, empty_init,        ROT90, "bootleg",             "Crazy Kong (Scramble hardware)",     MACHINE_SUPPORTS_SAVE )
2274 
2275 GAME( 1981, mars,     0,        mars,     mars,     scramble_state, init_mars,         ROT90, "Artic",               "Mars",                               MACHINE_SUPPORTS_SAVE )
2276 
2277 GAME( 1982, devilfsh, 0,        devilfsh, devilfsh, scramble_state, init_devilfsh,     ROT90, "Artic",               "Devil Fish",                         MACHINE_SUPPORTS_SAVE )
2278 
2279 GAME( 1983, newsin7,  0,        newsin7,  newsin7,  scramble_state, init_mars,         ROT90, "ATW USA, Inc.",       "New Sinbad 7 (set 1)",               MACHINE_SUPPORTS_SAVE )
2280 GAME( 1982, newsin7a, newsin7,  newsin7,  newsin7,  scramble_state, init_newsin7a,     ROT90, "ATW USA, Inc",        "New Sinbad 7 (set 2)",               MACHINE_SUPPORTS_SAVE )
2281 
2282 GAME( 1984, mrkougar, 0,        mrkougar, mrkougar, scramble_state, init_mrkougar,     ROT90, "ATW",                 "Mr. Kougar",                         MACHINE_SUPPORTS_SAVE )
2283 GAME( 1983, mrkougar2,mrkougar, mrkougar, mrkougar, scramble_state, init_mrkougar,     ROT90, "ATW",                 "Mr. Kougar (earlier)",               MACHINE_SUPPORTS_SAVE )
2284 GAME( 1984, mrkougb,  mrkougar, mrkougb,  mrkougar, scramble_state, empty_init,        ROT90, "bootleg (Gross)",     "Mr. Kougar (German bootleg)",        MACHINE_SUPPORTS_SAVE )
2285 GAME( 1983, mrkougb2, mrkougar, mrkougb,  mrkougar, scramble_state, empty_init,        ROT90, "bootleg",             "Mr. Kougar (bootleg)",               MACHINE_SUPPORTS_SAVE )
2286 GAME( 1984, troopy,   mrkougar, mrkougb,  mrkougar, scramble_state, init_mrkougar,     ROT90, "bootleg",             "Troopy (bootleg of Mr. Kougar)",     MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // wrong loading / decoding or bad GFX ROMs?
2287 
2288 GAME( 1982, hotshock, 0,        hotshock, hotshock, scramble_state, init_hotshock,     ROT90, "E.G. Felaco (Domino license)", "Hot Shocker",               MACHINE_SUPPORTS_SAVE )
2289 GAME( 1982, hotshockb,hotshock, hotshock, hotshock, scramble_state, init_hotshock,     ROT90, "E.G. Felaco",         "Hot Shocker (early revision?)",      MACHINE_SUPPORTS_SAVE ) // has "Dudley presents" (protagonist of the game), instead of Domino
2290 
2291 GAME( 198?, conquer,  0,        hotshock, hotshock, scramble_state, empty_init,        ROT90, "<unknown>",           "Conqueror",                          MACHINE_NOT_WORKING )
2292 
2293 GAME( 1983, hunchbks, hunchbak, hunchbks, hunchbks, scramble_state, init_scramble_ppi, ROT90, "Century Electronics", "Hunchback (Scramble hardware)",           MACHINE_SUPPORTS_SAVE )
2294 GAME( 1983, hunchbks2,hunchbak, hunchbks, hunchbks, scramble_state, init_scramble_ppi, ROT90, "bootleg (Sig)",       "Hunchback (Scramble hardware, bootleg)",  MACHINE_SUPPORTS_SAVE )
2295 
2296 GAME( 1984, hncholms, huncholy, hncholms, hncholms, scramble_state, init_scramble_ppi, ROT90, "Century Electronics / Seatongrove Ltd", "Hunchback Olympic (Scramble hardware)", MACHINE_SUPPORTS_SAVE )
2297 
2298 GAME( 1983, cavelon,  0,        cavelon,  cavelon,  scramble_state, init_cavelon,      ROT90, "Jetsoft",             "Cavelon",                            MACHINE_SUPPORTS_SAVE )
2299 
2300 GAME( 1982, mimonscr, mimonkey, mimonscr, mimonscr, scramble_state, init_mimonscr,     ROT90, "bootleg",              "Mighty Monkey (bootleg on Scramble hardware)",              MACHINE_SUPPORTS_SAVE )
2301 GAME( 1982, mimonscra,mimonkey, mimonscr, mimonscr, scramble_state, init_mimonscr,     ROT90, "bootleg (Kaina Games)","Mighty Monkey (Kaina Games, bootleg on Scramble hardware)", MACHINE_SUPPORTS_SAVE )
2302 
2303 GAME( 1983, ad2083,   0,        ad2083,   ad2083,   scramble_state, init_ad2083,       ROT90, "Midcoin",             "A. D. 2083",                         MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
2304 
2305 GAME( 1983, harem,    0,        harem,    harem,    scramble_state, init_harem,        ROT90, "I.G.R.",              "Harem",                              MACHINE_SUPPORTS_SAVE )
2306