1 // license:BSD-3-Clause
2 // copyright-holders:Luca Elia, David Haywood
3 /***************************************************************************
4 
5                           -= Newer Seta Hardware =-
6 
7                     driver by   Luca Elia (l.elia@tin.it)
8 
9 
10 CPU    :    TMP68301*
11             or ColdFire + H8/3007 + PIC12C508 (for EVA2 & EVA3 PCBs)
12 
13 Video  :    DX-101 or X1-020 (for P0-113A & P0-121A PCBs, compatible?)
14             DX-102 x3
15 
16 Sound  :    X1-010
17             or OKI M9810 (for EVA2 & EVA3 PCBs)
18 
19 OSC    :    50.00000MHz
20             32.53047MHz
21 
22 *   The Toshiba TMP68301 is a 68HC000 + serial I/O, parallel I/O,
23     3 timers, address decoder, wait generator, interrupt controller,
24     all integrated in a single chip.
25 
26 -------------------------------------------------------------------------------------------
27 Ordered by Board        Year    Game                                    By
28 -------------------------------------------------------------------------------------------
29 P-FG01-1 (also P0-113A) 1995    Guardians / Denjin Makai II             Banpresto
30 P0-113A                 1994    Mobile Suit Gundam EX Revue             Banpresto
31 P0-121A ; 2MP1-E00 (Ss) 1996    TelePachi Fever Lion                    Sunsoft
32 P0-123A                 1996    Wakakusamonogatari Mahjong Yonshimai    Maboroshi Ware
33 P0-125A ; KE (Namco)    1996    Kosodate Quiz My Angel                  Namco
34 P0-130B ; M-133 (Namco) 1997    Star Audition                           Namco
35 P0-136A ; KL (Namco)    1997    Kosodate Quiz My Angel 2                Namco
36 P-FG-02                 1997    Reel'N Quake                            <unknown>
37 P-FG-03                 ????    Endless Riches                          E.N.Tiger
38 P0-140B                 2000    Funcube                                 Namco
39 P0-140B                 2000    Namco Stars                             Namco
40 P0-142A                 1999    Puzzle De Bowling                       MOSS / Nihon System
41 P0-142A + extra parts   2000    Penguin Brothers / A-Blast              Subsino
42 B0-003A (or B0-003B)    2000    Deer Hunting USA                        Sammy
43 B0-003A (or B0-003B)    2001    Turkey Hunting USA                      Sammy
44 B0-006B                 2001-2  Funcube 2 - 5                           Namco
45 B0-010A                 2001    Wing Shooting Championship              Sammy
46 B0-010A                 2002    Trophy Hunting - Bear & Moose           Sammy
47 P0-145-1                2002    Trophy Hunting - Bear & Moose (test)    Sammy
48 -------------------------------------------------------------------------------------------
49 
50 TODO:
51 
52 - Proper emulation of the TMP68301 CPU, in a core file.
53 - Proper emulation of the ColdFire CPU, in a core file.
54 - improvements to Flip screen / Zooming support. (Flip Screen is often done with 'negative zoom value')
55 - Fix some graphics imperfections (e.g. color depth selection, "tilemap" sprites) [all done? - NS]
56 - I added a kludge involving a -0x10 yoffset, this fixes the lifeline in myangel.
57   I didn't find a better way to do it without breaking pzlbowl's title screen.
58 - Background color is not verified
59 
60 gundamex:
61 - slowdowns, music tempo is incorrect
62 
63 mj4simai:
64 - test mode doesn't work correctly, the grid is ok but when you press a key to go to the
65   next screen (input test) it stays up a second and then drops back into the game
66 
67 myangel:
68 - some gfx at the end of the game (rays just before fireworks, and the border during
69   the wedding) have wrong colors. You can see the rays red, green and yellow because
70   that's how the palette is preinitialized by MAME, but the game never sets up those
71   palette entries. The game selects color depth "1", whose meaning is uncertain, and
72   color code 0 so I see no way to point to a different section of palette RAM.
73 - there are glitches in the bg horizontal scroll in the wedding sequence at the end of
74   the game. It looks like "scrollx" should be delayed one frame wrt "xoffs".
75 - there's a 4 pixel gap at the top of the title screen since clipping was reimplemented.
76 
77 myangel2:
78 - before each level, the background image is shown with completely wrong colors. It
79   corrects itself when the level starts.
80 
81 wschampb:
82 - dumps of the program ROMs matched the hand written checksum for each chip, but
83   the boot screen reports NG for both ROMs. - Is this correct and a bug from the
84   original release? Is that why the next bug fix release is v1.01? IE: such a
85   a minor increase in the version number.
86 
87 funcube series:
88 - Hacked to run, as they use a ColdFire CPU.
89 - Pay-out key causes "unknown error" after coin count reaches 0.
90 
91 ***************************************************************************/
92 
93 #include "emu.h"
94 #include "includes/seta2.h"
95 
96 #include "cpu/h8/h83006.h"
97 #include "cpu/m68000/m68000.h"
98 #include "machine/mcf5206e.h"
99 #include "machine/nvram.h"
100 #include "machine/ticket.h"
101 #include "machine/watchdog.h"
102 
103 #include "diserial.h"
104 #include "speaker.h"
105 
106 
107 /***************************************************************************
108 
109 
110                             Memory Maps - Main CPU
111 
112 
113 ***************************************************************************/
114 
machine_start()115 void seta2_state::machine_start()
116 {
117 	if (memregion( "x1snd" ) != nullptr)
118 	{
119 		uint32_t const max = memregion( "x1snd" )->bytes() / 0x20000;
120 		for (int i = 0; i < 8; i++)
121 		{
122 			if (m_x1_bank[i] != nullptr)
123 			{
124 				uint32_t ind = 0;
125 				while (ind < 256)
126 				{
127 					m_x1_bank[i]->configure_entries(ind, max, memregion( "x1snd" )->base(), 0x20000); // TODO : Mirrored?
128 					ind += max;
129 				}
130 			}
131 		}
132 	}
133 
134 	m_leds.resolve();
135 	m_lamps.resolve();
136 }
137 
sound_bank_w(offs_t offset,uint8_t data)138 void seta2_state::sound_bank_w(offs_t offset, uint8_t data)
139 {
140 	m_x1_bank[offset & 7]->set_entry(data);
141 }
142 
x1_map(address_map & map)143 void seta2_state::x1_map(address_map &map)
144 {
145 	map(0x00000, 0x1ffff).bankr("x1_bank_1");
146 	map(0x20000, 0x3ffff).bankr("x1_bank_2");
147 	map(0x40000, 0x5ffff).bankr("x1_bank_3");
148 	map(0x60000, 0x7ffff).bankr("x1_bank_4");
149 	map(0x80000, 0x9ffff).bankr("x1_bank_5");
150 	map(0xa0000, 0xbffff).bankr("x1_bank_6");
151 	map(0xc0000, 0xdffff).bankr("x1_bank_7");
152 	map(0xe0000, 0xfffff).bankr("x1_bank_8");
153 }
154 
155 
156 /***************************************************************************
157                                 Guardians
158 ***************************************************************************/
159 
grdians_lockout_w(uint8_t data)160 void seta2_state::grdians_lockout_w(uint8_t data)
161 {
162 	// initially 0, then either $25 (coin 1) or $2a (coin 2)
163 	machine().bookkeeping().coin_counter_w(0,data & 0x01);   // or 0x04
164 	machine().bookkeeping().coin_counter_w(1,data & 0x02);   // or 0x08
165 //  popmessage("%04X", data & 0xff);
166 }
167 
grdians_map(address_map & map)168 void seta2_state::grdians_map(address_map &map)
169 {
170 	map(0x000000, 0x1fffff).rom();                             // ROM
171 	map(0x200000, 0x20ffff).ram();                             // RAM
172 	map(0x304000, 0x30ffff).ram();                             // ? seems tile data
173 	map(0x600000, 0x600001).portr("DSW1");               // DSW 1
174 	map(0x600002, 0x600003).portr("DSW2");               // DSW 2
175 	map(0x700000, 0x700001).portr("P1");                 // P1
176 	map(0x700002, 0x700003).portr("P2");                 // P2
177 	map(0x700004, 0x700005).portr("SYSTEM");             // Coins
178 	map(0x70000c, 0x70000d).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
179 	map(0x800001, 0x800001).w(FUNC(seta2_state::grdians_lockout_w));
180 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
181 	map(0xc00000, 0xc3ffff).ram().w(FUNC(seta2_state::spriteram_w)).share("spriteram");    // Sprites
182 	map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
183 	map(0xc50000, 0xc5ffff).ram();                             // cleared
184 	map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");  // Video Registers
185 	map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);       // Samples Banks
186 }
187 
188 /***************************************************************************
189                         Mobile Suit Gundam EX Revue
190 ***************************************************************************/
191 
gundamex_eeprom_r()192 uint16_t seta2_state::gundamex_eeprom_r()
193 {
194 	return ((m_eeprom->do_read() & 1)) << 3;
195 }
196 
gundamex_eeprom_w(uint16_t data)197 void seta2_state::gundamex_eeprom_w(uint16_t data)
198 {
199 	m_eeprom->clk_write((data & 0x2) ? ASSERT_LINE : CLEAR_LINE);
200 	m_eeprom->di_write(data & 0x1);
201 	m_eeprom->cs_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
202 }
203 
gundamex_map(address_map & map)204 void seta2_state::gundamex_map(address_map &map)
205 {
206 	map(0x000000, 0x1fffff).rom();                             // ROM
207 	map(0x200000, 0x20ffff).ram();                             // RAM
208 	map(0x500000, 0x57ffff).rom();                             // ROM
209 	map(0x600000, 0x600001).portr("DSW1");               // DSW 1
210 	map(0x600002, 0x600003).portr("DSW2");               // DSW 2
211 	map(0x700000, 0x700001).portr("P1");                 // P1
212 	map(0x700002, 0x700003).portr("P2");                 // P2
213 	map(0x700004, 0x700005).portr("SYSTEM");             // Coins
214 	map(0x700008, 0x700009).portr("IN0");                // P1
215 	map(0x70000a, 0x70000b).portr("IN1");                // P2
216 	map(0x70000c, 0x70000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
217 	map(0x800000, 0x800001).w(FUNC(seta2_state::grdians_lockout_w));
218 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
219 	map(0xc00000, 0xc3ffff).ram().share("spriteram");   // Sprites
220 	map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
221 	map(0xc50000, 0xc5ffff).ram();                             // cleared
222 	map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");  // Video Registers
223 	map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);       // Samples Banks
224 }
225 
226 
227 /***************************************************************************
228                       Wakakusamonogatari Mahjong Yonshimai
229 ***************************************************************************/
230 
machine_start()231 void mj4simai_state::machine_start()
232 {
233 	seta2_state::machine_start();
234 	save_item(NAME(m_keyboard_row));
235 }
236 
mj4simai_p1_r()237 uint16_t seta2_state::mj4simai_p1_r()
238 {
239 	switch (m_keyboard_row)
240 	{
241 		case 0x01: return ioport("P1_KEY0")->read();
242 		case 0x02: return ioport("P1_KEY1")->read();
243 		case 0x04: return ioport("P1_KEY2")->read();
244 		case 0x08: return ioport("P1_KEY3")->read();
245 		case 0x10: return ioport("P1_KEY4")->read();
246 		default:   logerror("p1_r with keyboard_row = %02x\n", m_keyboard_row); return 0xffff;
247 	}
248 }
249 
mj4simai_p2_r()250 uint16_t seta2_state::mj4simai_p2_r()
251 {
252 	switch (m_keyboard_row)
253 	{
254 		case 0x01: return ioport("P2_KEY0")->read();
255 		case 0x02: return ioport("P2_KEY1")->read();
256 		case 0x04: return ioport("P2_KEY2")->read();
257 		case 0x08: return ioport("P2_KEY3")->read();
258 		case 0x10: return ioport("P2_KEY4")->read();
259 		default:   logerror("p2_r with keyboard_row = %02x\n", m_keyboard_row); return 0xffff;
260 	}
261 }
262 
mj4simai_map(address_map & map)263 void seta2_state::mj4simai_map(address_map &map)
264 {
265 	map(0x000000, 0x1fffff).rom();                             // ROM
266 	map(0x200000, 0x20ffff).ram();                             // RAM
267 	map(0x600000, 0x600001).r(FUNC(seta2_state::mj4simai_p1_r));             // P1
268 	map(0x600002, 0x600003).r(FUNC(seta2_state::mj4simai_p2_r));             // P2
269 	map(0x600005, 0x600005).lw8(NAME([this] (u8 data){ m_keyboard_row = data; }));      // select keyboard row to read
270 	map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
271 	map(0x600100, 0x600101).portr("SYSTEM");             //
272 	map(0x600200, 0x600201).nopw();                        // Leds? Coins?
273 	map(0x600300, 0x600301).portr("DSW1");               // DSW 1
274 	map(0x600302, 0x600303).portr("DSW2");               // DSW 2
275 	map(0x600300, 0x60030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);       // Samples Banks
276 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
277 	map(0xc00000, 0xc3ffff).ram().share("spriteram");   // Sprites
278 	map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
279 	map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");  // Video Registers
280 }
281 
282 
283 /***************************************************************************
284                             Kosodate Quiz My Angel
285 ***************************************************************************/
286 
myangel_map(address_map & map)287 void seta2_state::myangel_map(address_map &map)
288 {
289 	map(0x000000, 0x1fffff).rom();                             // ROM
290 	map(0x200000, 0x20ffff).ram();                             // RAM
291 	map(0x700000, 0x700001).portr("P1");                 // P1
292 	map(0x700002, 0x700003).portr("P2");                 // P2
293 	map(0x700004, 0x700005).portr("SYSTEM");             // Coins
294 	map(0x700006, 0x700007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
295 	map(0x700200, 0x700201).nopw();                        // Leds? Coins?
296 	map(0x700300, 0x700301).portr("DSW1");               // DSW 1
297 	map(0x700302, 0x700303).portr("DSW2");               // DSW 2
298 	map(0x700310, 0x70031f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);       // Samples Banks
299 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
300 	map(0xc00000, 0xc3ffff).ram().share("spriteram");       // Sprites
301 	map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
302 	map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");              // Video Registers
303 }
304 
305 
306 /***************************************************************************
307                             Kosodate Quiz My Angel 2
308 ***************************************************************************/
309 
myangel2_map(address_map & map)310 void seta2_state::myangel2_map(address_map &map)
311 {
312 	map(0x000000, 0x1fffff).rom();                             // ROM
313 	map(0x200000, 0x20ffff).ram();                             // RAM
314 	map(0x600000, 0x600001).portr("P1");                 // P1
315 	map(0x600002, 0x600003).portr("P2");                 // P2
316 	map(0x600004, 0x600005).portr("SYSTEM");             // Coins
317 	map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
318 	map(0x600200, 0x600201).nopw();                        // Leds? Coins?
319 	map(0x600300, 0x600301).portr("DSW1");               // DSW 1
320 	map(0x600302, 0x600303).portr("DSW2");               // DSW 2
321 	map(0x600300, 0x60030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);       // Samples Banks
322 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
323 	map(0xd00000, 0xd3ffff).ram().share("spriteram");       // Sprites
324 	map(0xd40000, 0xd4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
325 	map(0xd60000, 0xd6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");          // Video Registers
326 }
327 
328 
329 /***************************************************************************
330                                 Puzzle De Bowling
331 ***************************************************************************/
332 
333 /*  The game checks for a specific value read from the ROM region.
334     The offset to use is stored in RAM at address 0x20BA16 */
pzlbowl_protection_r(address_space & space)335 uint16_t seta2_state::pzlbowl_protection_r(address_space &space)
336 {
337 	uint32_t address = (space.read_word(0x20ba16) << 16) | space.read_word(0x20ba18);
338 	return memregion("maincpu")->base()[address - 2];
339 }
340 
pzlbowl_coins_r()341 uint8_t seta2_state::pzlbowl_coins_r()
342 {
343 	return ioport("SYSTEM")->read() | (machine().rand() & 0x80 );
344 }
345 
pzlbowl_coin_counter_w(uint8_t data)346 void seta2_state::pzlbowl_coin_counter_w(uint8_t data)
347 {
348 	machine().bookkeeping().coin_counter_w(0,data & 0x10);
349 	machine().bookkeeping().coin_counter_w(1,data & 0x20);
350 }
351 
pzlbowl_map(address_map & map)352 void seta2_state::pzlbowl_map(address_map &map)
353 {
354 	map(0x000000, 0x0fffff).rom();                                 // ROM
355 	map(0x200000, 0x20ffff).ram();                                 // RAM
356 	map(0x400300, 0x400301).portr("DSW1");                   // DSW 1
357 	map(0x400302, 0x400303).portr("DSW2");                   // DSW 2
358 	map(0x400300, 0x40030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);           // Samples Banks
359 	map(0x500000, 0x500001).portr("P1");                     // P1
360 	map(0x500002, 0x500003).portr("P2");                     // P2
361 	map(0x500005, 0x500005).rw(FUNC(seta2_state::pzlbowl_coins_r), FUNC(seta2_state::pzlbowl_coin_counter_w));   // Coins + Protection?
362 	map(0x500006, 0x500007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
363 	map(0x700000, 0x700001).r(FUNC(seta2_state::pzlbowl_protection_r));          // Protection
364 	map(0x800000, 0x83ffff).ram().share("spriteram");       // Sprites
365 	map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
366 	map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");              // Video Registers
367 	map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
368 }
369 
370 
371 /***************************************************************************
372                             Penguin Bros
373 ***************************************************************************/
374 
penbros_base_map(address_map & map)375 void seta2_state::penbros_base_map(address_map &map)
376 {
377 	map(0x000000, 0x0fffff).rom();
378 	map(0x200000, 0x20ffff).ram();
379 	map(0x210000, 0x21ffff).ram(); // zeroed at startup, then never written again on originals, used on the bootleg
380 	map(0x220000, 0x22ffff).ram(); // zeroed at startup, then never written again
381 	map(0x230000, 0x23ffff).ram(); // zeroed at startup, then never written again on originals, used on the bootleg
382 	map(0x600000, 0x600001).portr("P1");
383 	map(0x600002, 0x600003).portr("P2");
384 	map(0x600004, 0x600005).portr("SYSTEM");
385 	map(0x600005, 0x600005).w(FUNC(seta2_state::pzlbowl_coin_counter_w));
386 	map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
387 	map(0xa00000, 0xa03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));
388 	map(0xb00000, 0xb3ffff).ram().share("spriteram");
389 	map(0xb40000, 0xb4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
390 }
391 
penbros_map(address_map & map)392 void seta2_state::penbros_map(address_map &map)
393 {
394 	penbros_base_map(map);
395 	map(0x300000, 0x30ffff).ram();
396 	map(0x500300, 0x500301).portr("DSW1");
397 	map(0x500302, 0x500303).portr("DSW2");
398 	map(0x500300, 0x50030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);
399 	map(0xb60000, 0xb6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");
400 }
401 
ablastb_map(address_map & map)402 void seta2_state::ablastb_map(address_map &map)
403 {
404 	penbros_base_map(map);
405 	map(0x508300, 0x508301).portr("DSW1");
406 	map(0x508302, 0x508303).portr("DSW2");
407 	// TODO: Is there samples banking like in the original?
408 }
409 
410 
411 /***************************************************************************
412                               Reel'N Quake
413 ***************************************************************************/
414 
reelquak_leds_w(offs_t offset,uint16_t data,uint16_t mem_mask)415 void seta2_state::reelquak_leds_w(offs_t offset, uint16_t data, uint16_t mem_mask)
416 {
417 	if (ACCESSING_BITS_0_7)
418 	{
419 		// bit 0 - start
420 		// bit 1 - small
421 		// bit 2 - bet
422 		// bit 3 - big
423 		// bit 4 - double up
424 		// bit 5 - collect
425 		// bit 6 - bet cancel
426 		for (int i = 0; i <= 6; i++)
427 			m_leds[i] = BIT(data, i);
428 	}
429 	if (ACCESSING_BITS_8_15)
430 	{
431 		m_dispenser->motor_w(BIT(data, 8)); // ticket dispenser
432 	}
433 
434 //  popmessage("LED %04X", data);
435 }
436 
reelquak_coin_w(uint8_t data)437 void seta2_state::reelquak_coin_w(uint8_t data)
438 {
439 	machine().bookkeeping().coin_counter_w(0, data & 0x01);  // coin in
440 	machine().bookkeeping().coin_counter_w(1, data & 0x02);  // coin in
441 	machine().bookkeeping().coin_counter_w(2, data & 0x04);  // pay out
442 	machine().bookkeeping().coin_counter_w(3, data & 0x08);  // key in
443 	//                                data & 0x10); // Sound IRQ Ack.? 1->0
444 	//                                data & 0x20); // Vblank IRQ.? 1
445 //  popmessage("COIN %04X", data & 0xff);
446 }
447 
reelquak_map(address_map & map)448 void seta2_state::reelquak_map(address_map &map)
449 {
450 	map(0x000000, 0x0fffff).rom();                             // ROM
451 	map(0x200000, 0x20ffff).ram();                             // RAM
452 	map(0x300000, 0x303fff).ram().share("nvram");           // NVRAM (Battery Backed)
453 	map(0x400000, 0x400001).portr("P1");                 // P1
454 	map(0x400002, 0x400003).portr("TICKET");             // Tickets
455 	map(0x400004, 0x400005).portr("SYSTEM");             // Coins
456 	map(0x400006, 0x400007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
457 	map(0x400201, 0x400201).w(FUNC(seta2_state::reelquak_coin_w));          // Coin Counters / IRQ Ack
458 	map(0x400300, 0x400301).portr("DSW1");               // DSW 1
459 	map(0x400302, 0x400303).portr("DSW2");               // DSW 2
460 	map(0x400300, 0x40030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);       // Samples Banks
461 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
462 	map(0xc00000, 0xc3ffff).ram().share("spriteram");       // Sprites
463 	map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
464 	map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");              // Video Registers
465 }
466 
467 
468 /***************************************************************************
469                                 Namco Stars
470 ***************************************************************************/
471 
472 // To be done:
namcostr_map(address_map & map)473 void seta2_state::namcostr_map(address_map &map)
474 {
475 	map(0x000000, 0x07ffff).rom();                             // ROM
476 	map(0x200000, 0x20ffff).ram();                             // RAM
477 	map(0xc00000, 0xc3ffff).ram().share("spriteram");       // Sprites
478 	map(0xc60000, 0xc6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");  // Video Registers
479 }
480 
481 
482 /***************************************************************************
483                             Sammy Outdoor Shooting
484 ***************************************************************************/
485 
samshoot_coin_w(uint8_t data)486 void seta2_state::samshoot_coin_w(uint8_t data)
487 {
488 	machine().bookkeeping().coin_counter_w(0, data & 0x10);
489 	machine().bookkeeping().coin_counter_w(1, data & 0x20);
490 	// Are these connected? They are set in I/O test
491 	machine().bookkeeping().coin_lockout_w(0,~data & 0x40);
492 	machine().bookkeeping().coin_lockout_w(1,~data & 0x80);
493 //  popmessage("%04x",data);
494 }
495 
samshoot_map(address_map & map)496 void seta2_state::samshoot_map(address_map &map)
497 {
498 	map(0x000000, 0x1fffff).rom();
499 	map(0x200000, 0x20ffff).ram();
500 	map(0x300000, 0x30ffff).ram().share("nvram");
501 
502 	map(0x400000, 0x400001).portr("DSW1");             // DSW 1
503 	map(0x400002, 0x400003).portr("BUTTONS");          // Buttons
504 
505 	map(0x400300, 0x40030f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);    // Samples Banks
506 
507 	map(0x500000, 0x500001).portr("GUN1");             // P1
508 	map(0x580000, 0x580001).portr("GUN2");             // P2
509 
510 	map(0x700000, 0x700001).portr("TRIGGER");          // Trigger
511 	map(0x700002, 0x700003).portr("PUMP");             // Pump
512 	map(0x700004, 0x700005).portr("COIN");  // Coins
513 	map(0x700005, 0x700005).w(FUNC(seta2_state::samshoot_coin_w));  // Coins
514 	map(0x700006, 0x700007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); // Watchdog?
515 
516 	map(0x800000, 0x83ffff).ram().share("spriteram"); // Sprites
517 	map(0x840000, 0x84ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");  // Palette
518 	map(0x860000, 0x86003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs");    // Video Registers
519 
520 	map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
521 }
522 
523 
524 /***************************************************************************
525                               Star Audition
526 ***************************************************************************/
527 
528 // Outputs
529 
staraudi_debug_outputs()530 void staraudi_state::staraudi_debug_outputs()
531 {
532 //  popmessage("L1: %04X L2: %04X CAM: %04X", m_lamps1, m_lamps2, m_cam);
533 }
534 
lamps1_w(offs_t offset,uint8_t data,uint8_t mem_mask)535 void staraudi_state::lamps1_w(offs_t offset, uint8_t data, uint8_t mem_mask)
536 {
537 	COMBINE_DATA(&m_lamps1);
538 	m_leds[0] = BIT(data, 0);  // Lamp 1 |
539 	m_leds[1] = BIT(data, 1);  // Lamp 2 |- Camera Lamps
540 	m_leds[2] = BIT(data, 2);  // Lamp 3 |
541 	//                        data & 0x08 );  // Degauss
542 	staraudi_debug_outputs();
543 }
544 
lamps2_w(offs_t offset,uint8_t data,uint8_t mem_mask)545 void staraudi_state::lamps2_w(offs_t offset, uint8_t data, uint8_t mem_mask)
546 {
547 	COMBINE_DATA(&m_lamps2);
548 	//                        data & 0x20 );  // ? Always On
549 	m_leds[3] = BIT(data, 6);  // 2P Switch Lamp
550 	m_leds[4] = BIT(data, 7);  // 1P Switch Lamp
551 	staraudi_debug_outputs();
552 }
553 
camera_w(offs_t offset,uint8_t data,uint8_t mem_mask)554 void staraudi_state::camera_w(offs_t offset, uint8_t data, uint8_t mem_mask)
555 {
556 	COMBINE_DATA(&m_cam);
557 	//                        data & 0x01 );  // ? Always On
558 	//                        data & 0x02 );  // ? Print Test
559 	//                        data & 0x08 );  // Camera On (Test Mode)
560 	//                        data & 0x20 );  // ?
561 	staraudi_debug_outputs();
562 }
563 
564 // Tile RAM
565 
566 #define TILE0 (0x7c000)
567 #define TILERAM(offset) ((uint16_t*)(memregion("sprites")->base() + TILE0 * 8*8 + (offset * 2 / 0x20000) * 2 + ((offset * 2) % 0x20000) / 2 * 8))
568 
tileram_r(offs_t offset)569 uint16_t staraudi_state::tileram_r(offs_t offset)
570 {
571 	return *TILERAM(offset);
572 }
573 
tileram_w(offs_t offset,uint16_t data,uint16_t mem_mask)574 void staraudi_state::tileram_w(offs_t offset, uint16_t data, uint16_t mem_mask)
575 {
576 	COMBINE_DATA(TILERAM(offset));
577 	int tile = TILE0 + ((offset * 2) % 0x20000) / (8*2);
578 	for (int i = 0; m_gfxdecode->gfx(i); ++i)
579 		m_gfxdecode->gfx(i)->mark_dirty(tile);
580 }
581 
staraudi_map(address_map & map)582 void staraudi_state::staraudi_map(address_map &map)
583 {
584 	map(0x000000, 0x1fffff).rom();                             // ROM
585 	map(0x200000, 0x23ffff).ram();                             // RAM
586 
587 	map(0x400000, 0x45ffff).rw(FUNC(staraudi_state::tileram_r), FUNC(staraudi_state::tileram_w)).share("tileram"); // Tile RAM
588 
589 //  map(0x500000, 0x53ffff).ram();                             // Camera RAM (r8g8)
590 //  map(0x540000, 0x57ffff).ram();                             // Camera RAM (00b8)
591 	map(0x500000, 0x57ffff).ram().share("rgbram");
592 
593 	map(0x600001, 0x600001).w(FUNC(staraudi_state::camera_w));        // Camera Outputs
594 
595 	map(0x700000, 0x700001).portr("P1");                 // P1
596 	map(0x700002, 0x700003).portr("P2");                 // P2
597 	map(0x700004, 0x700005).portr("SYSTEM");             // Coins
598 	map(0x700006, 0x700007).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w));
599 
600 	map(0x700101, 0x700101).w(FUNC(staraudi_state::lamps1_w));        // Lamps 1
601 	map(0x700180, 0x70018f).rw(m_rtc, FUNC(upd4992_device::read), FUNC(upd4992_device::write)).umask16(0x00ff);
602 	map(0x700201, 0x700201).w(FUNC(staraudi_state::lamps2_w));        // Lamps 2
603 	map(0x700300, 0x700301).portr("DSW1");               // DSW 1
604 	map(0x700302, 0x700303).portr("DSW2");               // DSW 2
605 	map(0x700300, 0x70030f).w(FUNC(staraudi_state::sound_bank_w));             // Samples Banks
606 
607 	map(0x800000, 0x9fffff).rw(m_flash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
608 
609 	map(0xb00000, 0xb03fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
610 	map(0xc00000, 0xc3ffff).ram().share("spriteram");       // Sprites
611 	map(0xc40000, 0xc4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
612 	map(0xc50000, 0xc5ffff).ram();                             // cleared
613 	map(0xc60000, 0xc6003f).ram().w(FUNC(staraudi_state::vregs_w)).share("vregs");  // Video Registers
614 }
615 
616 
617 /***************************************************************************
618                             TelePachi Fever Lion
619 ***************************************************************************/
620 
telpacfl_lamp1_w(uint8_t data)621 void seta2_state::telpacfl_lamp1_w(uint8_t data)
622 {
623 	for (int i = 0; i <= 7; i++)
624 		m_lamps[i] = BIT(data, i);
625 
626 //  popmessage("LAMP1 %04X", data);
627 }
628 
telpacfl_lamp2_w(uint8_t data)629 void seta2_state::telpacfl_lamp2_w(uint8_t data)
630 {
631 	m_lamps[8] = BIT(data, 0); // on/off lamp (throughout)
632 	m_lamps[9] = BIT(data, 1); // bet lamp
633 	m_lamps[10] = BIT(data, 2); // payout lamp
634 	m_dispenser->motor_w(       data & 0x08 ); // coin out motor
635 	machine().bookkeeping().coin_counter_w(0,  data & 0x10); // coin out counter
636 	//                          data & 0x20 ); // on credit increase
637 
638 //  popmessage("LAMP2 %04X", data);
639 }
640 
telpacfl_lockout_w(uint8_t data)641 void seta2_state::telpacfl_lockout_w(uint8_t data)
642 {
643 	machine().bookkeeping().coin_counter_w(1,  data & 0x02); // 100yen in
644 	machine().bookkeeping().coin_lockout_w(0, ~data & 0x04); // coin blocker
645 	machine().bookkeeping().coin_lockout_w(1, ~data & 0x08); // 100yen blocker
646 	// bits 0x30 ?
647 
648 //  popmessage("LOCK %04X", data);
649 }
650 
telpacfl_map(address_map & map)651 void seta2_state::telpacfl_map(address_map &map)
652 {
653 	map(0x000000, 0x0fffff).rom();                              // ROM
654 	map(0x200000, 0x20ffff).ram();                              // RAM
655 	map(0x300000, 0x303fff).ram().share("nvram");            // NVRAM (Battery Backed)
656 	map(0x600000, 0x600001).portr("DSW1");                // DSW 1
657 	map(0x600002, 0x600003).portr("DSW2");                // DSW 2
658 	map(0x700000, 0x700001).portr("COIN");                // Coin
659 	map(0x700002, 0x700003).portr("P1");                  // P1 + Dispenser
660 	map(0x700004, 0x700005).portr("SERVICE");             // Service
661 	map(0x700006, 0x700007).portr("UNKNOWN");             // (unused?)
662 	map(0x700009, 0x700009).w(FUNC(seta2_state::telpacfl_lamp1_w));          // Lamps
663 	map(0x70000d, 0x70000d).w(FUNC(seta2_state::telpacfl_lamp2_w));          // ""
664 	map(0x800001, 0x800001).w(FUNC(seta2_state::telpacfl_lockout_w));        // Coin Blockers
665 	map(0x900000, 0x903fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w));   // Sound
666 	map(0xb00000, 0xb3ffff).ram().share("spriteram");        // Sprites
667 	map(0xb40000, 0xb4ffff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");    // Palette
668 	map(0xb60000, 0xb6003f).ram().w(FUNC(seta2_state::vregs_w)).share("vregs"); // Video Registers
669 	map(0xd00006, 0xd00007).r("watchdog", FUNC(watchdog_timer_device::reset16_r));
670 //  map(0xe00000, 0xe00001).w(FUNC(seta2_state::));
671 	map(0xe00010, 0xe0001f).w(FUNC(seta2_state::sound_bank_w)).umask16(0x00ff);              // Samples Banks
672 }
673 
674 
675 /***************************************************************************
676                                Funcube series
677 ***************************************************************************/
678 
679 // Touchscreen
680 
681 class funcube_touchscreen_device : public device_t,
682 									public device_serial_interface
683 {
684 public:
685 	funcube_touchscreen_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
686 
687 	virtual ioport_constructor device_input_ports() const override;
tx_cb()688 	auto tx_cb() { return m_tx_cb.bind(); }
689 
690 protected:
691 	virtual void device_start() override;
692 	virtual void device_reset() override;
693 	virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
694 
695 	virtual void tra_complete() override;
696 	virtual void tra_callback() override;
697 
698 private:
699 	devcb_write_line m_tx_cb;
700 	required_ioport m_x;
701 	required_ioport m_y;
702 	required_ioport m_btn;
703 
704 	uint8_t m_button_state;
705 	int m_serial_pos;
706 	uint8_t m_serial[4];
707 };
708 
709 DEFINE_DEVICE_TYPE(FUNCUBE_TOUCHSCREEN, funcube_touchscreen_device, "funcube_touchscreen", "Funcube Touchscreen")
710 
INPUT_PORTS_START(funcube_touchscreen)711 static INPUT_PORTS_START( funcube_touchscreen )
712 	PORT_START("touch_btn")
713 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME( "Touch Screen" )
714 
715 	PORT_START("touch_x")
716 	PORT_BIT( 0xff, 0x00, IPT_LIGHTGUN_X ) PORT_MINMAX(0,0x5c+1) PORT_CROSSHAIR(X, -(1.0 * 0x05d/0x5c), -1.0/0x5c, 0) PORT_SENSITIVITY(45) PORT_KEYDELTA(5) PORT_REVERSE
717 
718 	PORT_START("touch_y")
719 	PORT_BIT( 0xff, 0x00, IPT_LIGHTGUN_Y ) PORT_MINMAX(0,0x46+1) PORT_CROSSHAIR(Y, -(0xf0-8.0)/0xf0*0x047/0x46, -1.0/0x46, 0) PORT_SENSITIVITY(45) PORT_KEYDELTA(5) PORT_REVERSE
720 INPUT_PORTS_END
721 
722 funcube_touchscreen_device::funcube_touchscreen_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
723 	device_t(mconfig, FUNCUBE_TOUCHSCREEN, tag, owner, clock),
724 	device_serial_interface(mconfig, *this),
725 	m_tx_cb(*this),
726 	m_x(*this, "touch_x"),
727 	m_y(*this, "touch_y"),
728 	m_btn(*this, "touch_btn")
729 {
730 }
731 
device_input_ports() const732 ioport_constructor funcube_touchscreen_device::device_input_ports() const
733 {
734 	return INPUT_PORTS_NAME(funcube_touchscreen);
735 }
736 
device_start()737 void funcube_touchscreen_device::device_start()
738 {
739 	set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1);
740 	set_tra_rate(9600);
741 	m_button_state = 0x00;
742 	emu_timer *tm = timer_alloc(0);
743 	tm->adjust(attotime::from_ticks(1, clock()), 0, attotime::from_ticks(1, clock()));
744 	m_tx_cb.resolve_safe();
745 
746 	save_item(NAME(m_button_state));
747 	save_item(NAME(m_serial_pos));
748 	save_item(NAME(m_serial));
749 }
750 
device_reset()751 void funcube_touchscreen_device::device_reset()
752 {
753 	m_serial_pos = 0;
754 	memset(m_serial, 0, sizeof(m_serial));
755 	m_tx_cb(1);
756 }
757 
device_timer(emu_timer & timer,device_timer_id id,int param,void * ptr)758 void funcube_touchscreen_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
759 {
760 	if(!id) {
761 		uint8_t button_state = m_btn->read();
762 		if(m_button_state != button_state) {
763 			m_button_state = button_state;
764 			m_serial[0] = button_state ? 0xfe : 0xfd;
765 			m_serial[1] = m_x->read();
766 			m_serial[2] = m_y->read();
767 			m_serial[3] = 0xff;
768 			m_serial_pos = 0;
769 			transmit_register_setup(m_serial[m_serial_pos++]);
770 		}
771 	}
772 }
773 
tra_complete()774 void funcube_touchscreen_device::tra_complete()
775 {
776 	if(m_serial_pos != 4)
777 		transmit_register_setup(m_serial[m_serial_pos++]);
778 }
779 
tra_callback()780 void funcube_touchscreen_device::tra_callback()
781 {
782 	m_tx_cb(transmit_register_get_data_bit());
783 }
784 
785 
786 // Bus conversion functions:
787 
788 // RAM shared with the sub CPU
nvram_r(offs_t offset)789 uint32_t funcube_state::nvram_r(offs_t offset)
790 {
791 	uint16_t val = m_nvram[offset];
792 	return ((val & 0xff00) << 8) | (val & 0x00ff);
793 }
794 
nvram_w(offs_t offset,uint32_t data,uint32_t mem_mask)795 void funcube_state::nvram_w(offs_t offset, uint32_t data, uint32_t mem_mask)
796 {
797 	if (ACCESSING_BITS_0_7)
798 	{
799 		m_nvram[offset] = (m_nvram[offset] & 0xff00) | (data & 0x000000ff);
800 	}
801 	if (ACCESSING_BITS_16_23)
802 	{
803 		m_nvram[offset] = (m_nvram[offset] & 0x00ff) | ((data & 0x00ff0000) >> 8);
804 	}
805 }
806 
807 // Main CPU
808 
809 
debug_r()810 uint32_t funcube_state::debug_r()
811 {
812 	uint32_t ret = ioport("DEBUG")->read();
813 
814 	// This bits let you move the crosshair in the inputs / touch panel test with a joystick
815 	if (!(m_screen->frame_number() % 3))
816 		ret |= 0x3f;
817 
818 	return ret;
819 }
820 
funcube_map(address_map & map)821 void funcube_state::funcube_map(address_map &map)
822 {
823 	map(0x00000000, 0x0007ffff).rom();
824 	map(0x00200000, 0x0020ffff).ram();
825 
826 	map(0x00400000, 0x00400003).r(FUNC(funcube_state::debug_r));
827 	map(0x00400004, 0x00400007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw();
828 
829 	map(0x00500001, 0x00500001).rw(m_oki, FUNC(okim9810_device::read_status), FUNC(okim9810_device::write_command));
830 	map(0x00500003, 0x00500003).w(m_oki, FUNC(okim9810_device::write_tmp_register));
831 
832 	map(0x00800000, 0x0083ffff).rw(FUNC(funcube_state::spriteram_r), FUNC(funcube_state::spriteram_w)).share("spriteram");
833 	map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");  // Palette
834 	map(0x00860000, 0x0086003f).ram().w(FUNC(funcube_state::vregs_w)).share("vregs");
835 
836 	map(0x00c00000, 0x00c002ff).rw(FUNC(funcube_state::nvram_r), FUNC(funcube_state::nvram_w));
837 
838 	map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR
839 	map(0xffffe000, 0xffffffff).ram();    // SRAM
840 }
841 
funcube2_map(address_map & map)842 void funcube_state::funcube2_map(address_map &map)
843 {
844 	map(0x00000000, 0x0007ffff).rom();
845 	map(0x00200000, 0x0020ffff).ram();
846 
847 	map(0x00500000, 0x00500003).r(FUNC(funcube_state::debug_r));
848 	map(0x00500004, 0x00500007).r("watchdog", FUNC(watchdog_timer_device::reset32_r)).nopw();
849 
850 	map(0x00600001, 0x00600001).rw(m_oki, FUNC(okim9810_device::read_status), FUNC(okim9810_device::write_command));
851 	map(0x00600003, 0x00600003).w(m_oki, FUNC(okim9810_device::write_tmp_register));
852 
853 	map(0x00800000, 0x0083ffff).rw(FUNC(funcube_state::spriteram_r), FUNC(funcube_state::spriteram_w)).share("spriteram");
854 	map(0x00840000, 0x0084ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette");
855 	map(0x00860000, 0x0086003f).ram().w(FUNC(funcube_state::vregs_w)).share("vregs");
856 
857 	map(0x00c00000, 0x00c002ff).rw(FUNC(funcube_state::nvram_r), FUNC(funcube_state::nvram_w));
858 
859 	map(0xf0000000, 0xf00001ff).rw("maincpu_onboard", FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_r), FUNC(mcf5206e_peripheral_device::seta2_coldfire_regs_w)); // technically this can be moved with MBAR
860 	map(0xffffe000, 0xffffffff).ram();    // SRAM
861 }
862 
863 // Sub CPU
864 
funcube_sub_map(address_map & map)865 void funcube_state::funcube_sub_map(address_map &map)
866 {
867 	map(0x000000, 0x01ffff).rom();
868 	map(0x200000, 0x20017f).ram().share("nvram");
869 }
870 
871 
872 
873 
874 // Simulate coin drop through two sensors
875 
876 #define FUNCUBE_SUB_CPU_CLOCK (XTAL(14'745'600))
877 
coins_r()878 uint16_t funcube_state::coins_r()
879 {
880 	uint8_t ret = ioport("SWITCH")->read();
881 	uint8_t coin_bit0 = 1;    // active low
882 	uint8_t coin_bit1 = 1;
883 
884 	uint8_t hopper_bit = (m_hopper_motor && !(m_screen->frame_number()%20)) ? 1 : 0;
885 
886 	const uint64_t coin_total_cycles = FUNCUBE_SUB_CPU_CLOCK.value() / (1000/10);
887 
888 	if ( m_coin_start_cycles )
889 	{
890 		uint64_t elapsed = m_sub->total_cycles() - m_coin_start_cycles;
891 
892 		if ( elapsed < coin_total_cycles/2 )
893 			coin_bit0 = 0;
894 		else if ( elapsed < coin_total_cycles )
895 			coin_bit1 = 0;
896 		else
897 			m_coin_start_cycles = 0;
898 	}
899 	else
900 	{
901 		if (!(ret & 1))
902 			m_coin_start_cycles = m_sub->total_cycles();
903 	}
904 
905 	return (ret & ~7) | (hopper_bit << 2) | (coin_bit1 << 1) | coin_bit0;
906 }
907 
funcube_debug_outputs()908 void funcube_state::funcube_debug_outputs()
909 {
910 #ifdef MAME_DEBUG
911 //  popmessage("LED: %02x OUT: %02x", (int)*m_funcube_leds, (int)*m_outputs);
912 #endif
913 }
914 
leds_w(uint16_t data)915 void funcube_state::leds_w(uint16_t data)
916 {
917 	*m_funcube_leds = data;
918 
919 	m_leds[0] = BIT(~data, 0); // win lamp (red)
920 	m_leds[1] = BIT(~data, 1); // win lamp (green)
921 
922 	// Set in a moving pattern: 0111 -> 1011 -> 1101 -> 1110
923 	m_leds[2] = BIT(~data, 4);
924 	m_leds[3] = BIT(~data, 5);
925 	m_leds[4] = BIT(~data, 6);
926 	m_leds[5] = BIT(~data, 7);
927 
928 	funcube_debug_outputs();
929 }
930 
outputs_r()931 uint16_t funcube_state::outputs_r()
932 {
933 	// Bits 1,2,3 read
934 	return *m_outputs;
935 }
936 
outputs_w(uint16_t data)937 void funcube_state::outputs_w(uint16_t data)
938 {
939 	*m_outputs = data;
940 
941 	// Bits 0,1,3 written
942 
943 	// Bit 0: hopper motor
944 	m_hopper_motor = (~data) & 0x01;
945 
946 	// Bit 1: high on pay out
947 
948 	// Bit 3: low after coining up, blinks on pay out
949 	m_leds[6] = BIT(~data, 3);
950 
951 	funcube_debug_outputs();
952 }
953 
battery_r()954 uint16_t funcube_state::battery_r()
955 {
956 	return ioport("BATTERY")->read() ? 0x40 : 0x00;
957 }
958 
959 // cabinet linking on sci0
funcube_sub_io(address_map & map)960 void funcube_state::funcube_sub_io(address_map &map)
961 {
962 	map(h8_device::PORT_7, h8_device::PORT_7).r(FUNC(funcube_state::coins_r));
963 	map(h8_device::PORT_4, h8_device::PORT_4).r(FUNC(funcube_state::battery_r));
964 	map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(funcube_state::outputs_r), FUNC(funcube_state::outputs_w)).share("outputs");
965 	map(h8_device::PORT_B, h8_device::PORT_B).w(FUNC(funcube_state::leds_w)).share("funcube_leds");
966 }
967 
funcube2_sub_io(address_map & map)968 void funcube_state::funcube2_sub_io(address_map &map)
969 {
970 	map(h8_device::PORT_7, h8_device::PORT_7).r(FUNC(funcube_state::coins_r));
971 	map(h8_device::PORT_4, h8_device::PORT_4).noprw();  // unused
972 	map(h8_device::PORT_A, h8_device::PORT_A).rw(FUNC(funcube_state::outputs_r), FUNC(funcube_state::outputs_w)).share("outputs");
973 	map(h8_device::PORT_B, h8_device::PORT_B).w(FUNC(funcube_state::leds_w)).share("funcube_leds");
974 }
975 
976 
977 
978 
979 /***************************************************************************
980 
981                                 Input Ports
982 
983 ***************************************************************************/
984 
985 /***************************************************************************
986                         Mobile Suit Gundam EX Revue
987 ***************************************************************************/
988 
989 static INPUT_PORTS_START( gundamex )
990 	PORT_START("DSW1")  // $600000.w
991 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:1")
992 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
993 	PORT_DIPSETTING(      0x0001, DEF_STR( On ) )
994 	PORT_DIPNAME( 0x0006, 0x0006, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:2,3")
995 	PORT_DIPSETTING(      0x0004, DEF_STR( Easy ) )
996 	PORT_DIPSETTING(      0x0006, DEF_STR( Normal ) )
997 	PORT_DIPSETTING(      0x0002, DEF_STR( Hard ) )
998 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
999 	PORT_DIPUNUSED_DIPLOC( 0x0008, 0x0008, "SW1:4" ) /* Listed as "Unused" */
1000 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:5")
1001 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1002 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1003 	PORT_DIPNAME( 0x0020, 0x0020, "Freeze" ) PORT_DIPLOCATION("SW1:6")  /* Listed as "Unused" */
1004 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1005 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1006 	PORT_DIPNAME( 0x0040, 0x0040, "Show Targets" ) PORT_DIPLOCATION("SW1:7") /* Listed as "Unused" */
1007 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1008 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1009 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW1:8" )
1010 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1011 
1012 	PORT_START("DSW2")  // $600002.w
1013 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3")
1014 	PORT_DIPSETTING(      0x0000, DEF_STR( 4C_1C ) )
1015 	PORT_DIPSETTING(      0x0001, DEF_STR( 3C_1C ) )
1016 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
1017 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
1018 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
1019 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
1020 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_4C ) )
1021 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_5C ) )
1022 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:4,5,6")
1023 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
1024 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_3C ) )
1025 	PORT_DIPSETTING(      0x0000, "3 Coins/5 Credits" )
1026 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
1027 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_5C ) )
1028 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
1029 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_4C ) )
1030 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_5C ) )
1031 	PORT_DIPNAME( 0x0040, 0x0040, "Debug Mode" ) PORT_DIPLOCATION("SW2:7")
1032 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1033 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1034 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW2:8")
1035 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1036 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1037 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1038 
1039 	PORT_START("P1")    // $700000.w
1040 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
1041 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1042 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
1043 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
1044 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1045 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1046 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1047 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START1 )
1048 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1049 
1050 	PORT_START("P2")    // $700002.w
1051 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1052 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1053 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1054 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1055 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1056 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1057 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1058 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START2 )
1059 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1060 
1061 	PORT_START("SYSTEM")    // $700004.w
1062 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1063 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
1064 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1065 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1066 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) //jumper pad
1067 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Language ) )          //jumper pad
1068 	PORT_DIPSETTING(      0x0020, DEF_STR( English ) )
1069 	PORT_DIPSETTING(      0x0000, DEF_STR( Japanese ) )
1070 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1071 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1072 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1073 
1074 	PORT_START("IN0")   // $700008.w
1075 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1076 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1077 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1078 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1079 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1080 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1081 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1082 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1083 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1084 
1085 	PORT_START("IN1")   // $70000a.w
1086 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1087 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1088 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1089 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1090 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1091 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1092 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1093 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1094 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1095 INPUT_PORTS_END
1096 
1097 /***************************************************************************
1098                                 Guardians
1099 ***************************************************************************/
1100 
1101 static INPUT_PORTS_START( grdians )
1102 	PORT_START("DSW1")  // $600000.w
1103 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2")
1104 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy )    )  // 0
1105 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal )  )  // 1
1106 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard )    )  // 2
1107 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )  // 3
1108 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
1109 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1110 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1111 	PORT_DIPNAME( 0x0008, 0x0008, "Title" ) PORT_DIPLOCATION("SW1:4")
1112 	PORT_DIPSETTING(      0x0008, "Guardians" )
1113 	PORT_DIPSETTING(      0x0000, "Denjin Makai II" )
1114 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
1115 	PORT_DIPSETTING(      0x0020, "1" )
1116 	PORT_DIPSETTING(      0x0030, "2" )
1117 	PORT_DIPSETTING(      0x0010, "3" )
1118 	PORT_DIPSETTING(      0x0000, "4" )
1119 	PORT_SERVICE_DIPLOC(  0x0040, IP_ACTIVE_LOW, "SW1:7" ) /* NOTE: Test mode shows player 3 & 4 controls, but it's a two player game */
1120 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:8")
1121 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1122 	PORT_DIPSETTING(      0x0080, DEF_STR( On ) )
1123 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1124 
1125 	PORT_START("DSW2")  // $600002.w
1126 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
1127 	PORT_DIPSETTING(      0x0002, DEF_STR( 4C_1C ) )
1128 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
1129 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
1130 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
1131 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_3C ) )
1132 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
1133 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_4C ) )
1134 	PORT_DIPSETTING(      0x0007, DEF_STR( 2C_3C ) )
1135 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_2C ) )
1136 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
1137 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_3C ) )
1138 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_4C ) )
1139 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_5C ) )
1140 	PORT_DIPSETTING(      0x000a, DEF_STR( 1C_6C ) )
1141 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
1142 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
1143 	PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW2:5,6,7,8")
1144 	PORT_DIPSETTING(      0x0020, DEF_STR( 4C_1C ) )
1145 	PORT_DIPSETTING(      0x0050, DEF_STR( 3C_1C ) )
1146 	PORT_DIPSETTING(      0x0080, DEF_STR( 2C_1C ) )
1147 	PORT_DIPSETTING(      0x0040, DEF_STR( 3C_2C ) )
1148 	PORT_DIPSETTING(      0x0010, DEF_STR( 4C_3C ) )
1149 	PORT_DIPSETTING(      0x00f0, DEF_STR( 1C_1C ) )
1150 	PORT_DIPSETTING(      0x0030, DEF_STR( 3C_4C ) )
1151 	PORT_DIPSETTING(      0x0070, DEF_STR( 2C_3C ) )
1152 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_2C ) )
1153 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_5C ) )
1154 	PORT_DIPSETTING(      0x00d0, DEF_STR( 1C_3C ) )
1155 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_4C ) )
1156 	PORT_DIPSETTING(      0x00b0, DEF_STR( 1C_5C ) )
1157 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_6C ) )
1158 	PORT_DIPSETTING(      0x0090, DEF_STR( 1C_7C ) )
1159 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
1160 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1161 
1162 	PORT_START("P1")    // $700000.w
1163 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
1164 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1165 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
1166 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
1167 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1168 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1169 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1170 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START1 )
1171 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1172 
1173 	PORT_START("P2")    // $700002.w
1174 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1175 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1176 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1177 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1178 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1179 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1180 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1181 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START2 )
1182 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1183 
1184 	PORT_START("SYSTEM")    // $700004.w
1185 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1186 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
1187 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1188 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1)
1189 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1190 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1191 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1192 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1193 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1194 INPUT_PORTS_END
1195 
1196 
1197 /***************************************************************************
1198                       Wakakusamonogatari Mahjong Yonshimai
1199 ***************************************************************************/
1200 
1201 static INPUT_PORTS_START( mj4simai )
1202 	PORT_START("DSW1")  // $600300.w
1203 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3")
1204 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
1205 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
1206 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
1207 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_1C ) )
1208 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
1209 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
1210 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
1211 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
1212 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
1213 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1214 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
1215 	PORT_DIPNAME( 0x0010, 0x0010, "Tumo Pin" ) PORT_DIPLOCATION("SW1:5")
1216 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1217 	PORT_DIPSETTING(      0x0010, DEF_STR( On ) )
1218 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:6")
1219 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1220 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1221 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW1:7")
1222 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1223 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1224 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW1:8" )
1225 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1226 
1227 	PORT_START("DSW2")  // $600302.w
1228 	PORT_DIPNAME( 0x0007, 0x0004, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2,3")
1229 	PORT_DIPSETTING(      0x0004, "0" )
1230 	PORT_DIPSETTING(      0x0003, "1" )
1231 	PORT_DIPSETTING(      0x0002, "2" )
1232 	PORT_DIPSETTING(      0x0001, "3" )
1233 	PORT_DIPSETTING(      0x0000, "4" )
1234 	PORT_DIPSETTING(      0x0007, "5" )
1235 	PORT_DIPSETTING(      0x0006, "6" )
1236 	PORT_DIPSETTING(      0x0005, "7" )
1237 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:4")
1238 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
1239 	PORT_DIPSETTING(      0x0008, DEF_STR( Yes ) )
1240 	PORT_DIPNAME( 0x0010, 0x0000, "Select Girl" ) PORT_DIPLOCATION("SW2:5")
1241 	PORT_DIPSETTING(      0x0010, DEF_STR( No ) )
1242 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
1243 	PORT_DIPNAME( 0x0020, 0x0000, "Com Put" ) PORT_DIPLOCATION("SW2:6")
1244 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1245 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1246 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
1247 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1248 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1249 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
1250 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1251 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1252 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1253 
1254 	PORT_START("SYSTEM")    // $600100.w
1255 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1256 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
1257 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1258 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
1259 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1260 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1261 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1262 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1263 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1264 
1265 	PORT_START("P1_KEY0")   // $600000(0)
1266 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A )
1267 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E )
1268 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I )
1269 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M )
1270 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
1271 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START1  )
1272 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1273 
1274 	PORT_START("P1_KEY1")   // $600000(1)
1275 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B )
1276 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F )
1277 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J )
1278 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N )
1279 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
1280 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET )
1281 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
1282 
1283 	PORT_START("P1_KEY2")   // $600000(2)
1284 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C )
1285 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G )
1286 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K )
1287 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
1288 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
1289 	PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1290 
1291 	PORT_START("P1_KEY3")   // $600000(3)
1292 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D )
1293 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H )
1294 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L )
1295 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
1296 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1297 
1298 	PORT_START("P1_KEY4")   // $600000(4)
1299 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE )
1300 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE )
1301 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP )
1302 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP )
1303 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_BIG )
1304 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL )
1305 	PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
1306 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1307 
1308 	PORT_START("P2_KEY0")   // $600000(0)
1309 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2)
1310 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2)
1311 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2)
1312 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2)
1313 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2)
1314 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2  )
1315 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1316 
1317 	PORT_START("P2_KEY1")   // $600000(1)
1318 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2)
1319 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2)
1320 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2)
1321 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2)
1322 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2)
1323 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2)
1324 	PORT_BIT( 0xffc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
1325 
1326 	PORT_START("P2_KEY2")   // $600000(2)
1327 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2)
1328 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2)
1329 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2)
1330 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2)
1331 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2)
1332 	PORT_BIT( 0xffe0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1333 
1334 	PORT_START("P2_KEY3")   // $600000(3)
1335 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2)
1336 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2)
1337 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2)
1338 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2)
1339 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1340 
1341 	PORT_START("P2_KEY4")   // $600000(4)
1342 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2)
1343 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2)
1344 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2)
1345 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2)
1346 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2)
1347 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2)
1348 	PORT_BIT( 0x00c0, IP_ACTIVE_LOW, IPT_UNUSED )
1349 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1350 INPUT_PORTS_END
1351 
1352 
1353 /***************************************************************************
1354                             Kosodate Quiz My Angel
1355 ***************************************************************************/
1356 
1357 static INPUT_PORTS_START( myangel )
1358 	PORT_START("DSW1")  // $700300.w
1359 	PORT_SERVICE_DIPLOC(  0x0001, IP_ACTIVE_LOW, "SW1:1" )
1360 	PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "SW1:2" ) /* Listed as "Unused" */
1361 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" ) /* Listed as "Unused" */
1362 	PORT_DIPNAME( 0x0008, 0x0008, "Increase Lives While Playing" ) PORT_DIPLOCATION("SW1:4")
1363 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
1364 	PORT_DIPSETTING(      0x0008, DEF_STR( Yes ) )
1365 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
1366 	PORT_DIPSETTING(      0x0020, "2" )
1367 	PORT_DIPSETTING(      0x0030, "3" )
1368 	PORT_DIPSETTING(      0x0010, "4" )
1369 	PORT_DIPSETTING(      0x0000, "5" )
1370 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1371 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1372 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
1373 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:8")
1374 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1375 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1376 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1377 
1378 	PORT_START("DSW2")  // $700302.w
1379 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
1380 	PORT_DIPSETTING(      0x0002, DEF_STR( 4C_1C ) )
1381 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
1382 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
1383 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
1384 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_3C ) )
1385 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
1386 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_4C ) )
1387 	PORT_DIPSETTING(      0x0007, DEF_STR( 2C_3C ) )
1388 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_2C ) )
1389 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
1390 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_3C ) )
1391 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_4C ) )
1392 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_5C ) )
1393 	PORT_DIPSETTING(      0x000a, DEF_STR( 1C_6C ) )
1394 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
1395 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
1396 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:5" ) /* Listed as "Unused" */
1397 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
1398 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
1399 	PORT_DIPNAME( 0x0080, 0x0080, "Push Start To Freeze (Cheat)") PORT_DIPLOCATION("SW2:8")
1400 	PORT_DIPSETTING(      0x0080, DEF_STR( No ) )
1401 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
1402 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1403 
1404 	PORT_START("P1") //$700000.w
1405 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
1406 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1407 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1408 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1409 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1410 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1411 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1412 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START1  )
1413 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1414 
1415 	PORT_START("P2") //$700002.w
1416 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
1417 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1418 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1419 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1420 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1421 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1422 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1423 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START2  )
1424 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1425 
1426 	PORT_START("SYSTEM") //$700004.w
1427 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1428 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
1429 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1430 	PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
1431 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1432 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1433 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1434 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1435 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1436 INPUT_PORTS_END
1437 
1438 
1439 /***************************************************************************
1440                             Kosodate Quiz My Angel 2
1441 ***************************************************************************/
1442 
1443 static INPUT_PORTS_START( myangel2 )
1444 	PORT_START("DSW1") //$600300.w
1445 	PORT_SERVICE_DIPLOC(  0x0001, IP_ACTIVE_LOW, "SW1:1" )
1446 	PORT_DIPUNUSED_DIPLOC( 0x0002, 0x0002, "SW1:2" ) /* Listed as "Unused" */
1447 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" ) /* Listed as "Unused" */
1448 	PORT_DIPNAME( 0x0008, 0x0008, "Increase Lives While Playing" ) PORT_DIPLOCATION("SW1:4")
1449 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
1450 	PORT_DIPSETTING(      0x0008, DEF_STR( Yes ) )
1451 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:5,6")
1452 	PORT_DIPSETTING(      0x0020, "2" )
1453 	PORT_DIPSETTING(      0x0030, "3" )
1454 	PORT_DIPSETTING(      0x0010, "4" )
1455 	PORT_DIPSETTING(      0x0000, "5" )
1456 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7")
1457 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1458 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
1459 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:8")
1460 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1461 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1462 	PORT_BIT(     0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1463 
1464 	PORT_START("DSW2") //$600302.w
1465 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
1466 	PORT_DIPSETTING(      0x0002, DEF_STR( 4C_1C ) )
1467 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
1468 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
1469 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
1470 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_3C ) )
1471 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
1472 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_4C ) )
1473 	PORT_DIPSETTING(      0x0007, DEF_STR( 2C_3C ) )
1474 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_2C ) )
1475 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
1476 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_3C ) )
1477 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_4C ) )
1478 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_5C ) )
1479 	PORT_DIPSETTING(      0x000a, DEF_STR( 1C_6C ) )
1480 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
1481 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
1482 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW2:5" ) /* Listed as "Unused" */
1483 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" ) /* Listed as "Unused" */
1484 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" ) /* Listed as "Unused" */
1485 	PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "SW2:8" ) /* Listed as "Unused" */
1486 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1487 
1488 	PORT_START("P1") //$600000.w
1489 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
1490 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1491 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1492 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1)
1493 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1494 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1495 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1496 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START1  )
1497 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1498 
1499 	PORT_START("P2") //$600002.w
1500 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
1501 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
1502 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
1503 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2)
1504 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1505 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1506 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1507 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START2  )
1508 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1509 
1510 	PORT_START("SYSTEM") //$600004.w
1511 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1512 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
1513 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1514 	PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
1515 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1516 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1517 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1518 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1519 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1520 INPUT_PORTS_END
1521 
1522 
1523 /***************************************************************************
1524                                 Puzzle De Bowling
1525 ***************************************************************************/
1526 
1527 static INPUT_PORTS_START( pzlbowl )
1528 	PORT_START("DSW1") //$400300.w
1529 	PORT_SERVICE_DIPLOC(  0x0001, IP_ACTIVE_LOW, "SW1:1" )
1530 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:2")
1531 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1532 	PORT_DIPSETTING(      0x0002, DEF_STR( On ) )
1533 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:3")
1534 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1535 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1536 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:4,5,6")
1537 	PORT_DIPSETTING(      0x0030, DEF_STR( Easiest ) )
1538 	PORT_DIPSETTING(      0x0028, DEF_STR( Easier ) )
1539 	PORT_DIPSETTING(      0x0020, DEF_STR( Easy ) )
1540 	PORT_DIPSETTING(      0x0038, DEF_STR( Normal ) )
1541 	PORT_DIPSETTING(      0x0018, DEF_STR( Hard ) )
1542 	PORT_DIPSETTING(      0x0010, DEF_STR( Harder ) )
1543 	PORT_DIPSETTING(      0x0008, DEF_STR( Very_Hard ) )
1544 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
1545 	PORT_DIPNAME( 0x00c0, 0x00c0, "Winning Rounds (Player VS Player)" ) PORT_DIPLOCATION("SW1:7,8")
1546 	PORT_DIPSETTING(      0x0040, "1" )
1547 	PORT_DIPSETTING(      0x00c0, "2" )     /* This setting is not defined in the manual */
1548 	PORT_DIPSETTING(      0x0080, "3" )
1549 	PORT_DIPSETTING(      0x0000, "5" )
1550 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1551 
1552 	PORT_START("DSW2") //$400302.w
1553 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW2:1,2,3,4")
1554 	PORT_DIPSETTING(      0x0005, DEF_STR( 3C_1C ) )
1555 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
1556 	PORT_DIPSETTING(      0x0004, DEF_STR( 3C_2C ) )
1557 //  PORT_DIPSETTING(      0x0002, DEF_STR( 1C_1C ) )        /* This setting is not defined in the manual */
1558 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
1559 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_4C ) )
1560 	PORT_DIPSETTING(      0x0007, DEF_STR( 2C_3C ) )
1561 	PORT_DIPSETTING(      0x000e, DEF_STR( 1C_2C ) )
1562 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
1563 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_3C ) )
1564 //  PORT_DIPSETTING(      0x0001, DEF_STR( 1C_3C ) )        /* This setting is not defined in the manual */
1565 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_4C ) )
1566 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_5C ) )
1567 	PORT_DIPSETTING(      0x000a, DEF_STR( 1C_6C ) )
1568 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
1569 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
1570 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5")
1571 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
1572 	PORT_DIPSETTING(      0x0010, DEF_STR( Yes ) )
1573 	PORT_DIPNAME( 0x0020, 0x0020, "Join In" ) PORT_DIPLOCATION("SW2:6")
1574 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
1575 	PORT_DIPSETTING(      0x0020, DEF_STR( Yes ) )
1576 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW2:7" )
1577 	PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Language ) ) PORT_DIPLOCATION("SW2:8")
1578 	PORT_DIPSETTING(      0x0000, DEF_STR( English ) )
1579 	PORT_DIPSETTING(      0x0080, DEF_STR( Japanese ) )
1580 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1581 
1582 	PORT_START("P1") //$500000.w
1583 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
1584 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1585 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
1586 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
1587 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1588 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1589 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
1590 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START1 )
1591 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1592 
1593 	PORT_START("P2") //$500002.w
1594 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1595 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1596 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1597 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1598 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1599 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1600 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
1601 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START2 )
1602 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1603 
1604 	PORT_START("SYSTEM") //$500004.w
1605 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1606 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)   // unused, test mode shows it
1607 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1608 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1)
1609 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1610 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1611 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1612 	PORT_BIT(  0x0080, IP_ACTIVE_HIGH, IPT_CUSTOM )    // Protection?
1613 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1614 INPUT_PORTS_END
1615 
1616 
1617 /***************************************************************************
1618                             Penguin Bros
1619 ***************************************************************************/
1620 
1621 static INPUT_PORTS_START( penbros )
1622 	PORT_START("DSW1") //$500300.w
1623 	PORT_SERVICE_DIPLOC(  0x0001, IP_ACTIVE_LOW, "SW1:1" )
1624 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:2")
1625 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1626 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1627 	PORT_DIPUNUSED_DIPLOC( 0x0004, 0x0004, "SW1:3" )
1628 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
1629 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1630 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
1631 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
1632 	PORT_DIPSETTING(      0x0020, DEF_STR( 3C_1C ) )
1633 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
1634 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
1635 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_2C ) )
1636 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")
1637 	PORT_DIPSETTING(      0x0080, DEF_STR( 3C_1C ) )
1638 	PORT_DIPSETTING(      0x0040, DEF_STR( 2C_1C ) )
1639 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
1640 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_2C ) )
1641 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1642 
1643 	PORT_START("DSW2") //$500302.w
1644 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:1,2")
1645 	PORT_DIPSETTING(      0x0002, DEF_STR( Easy ) )
1646 	PORT_DIPSETTING(      0x0003, DEF_STR( Normal ) )
1647 	PORT_DIPSETTING(      0x0001, DEF_STR( Hard ) )
1648 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
1649 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:3,4")
1650 	PORT_DIPSETTING(      0x0000, "2" )
1651 	PORT_DIPSETTING(      0x000c, "3" )
1652 	PORT_DIPSETTING(      0x0004, "4" )
1653 	PORT_DIPSETTING(      0x0008, "5" )
1654 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:5,6")
1655 	PORT_DIPSETTING(      0x0010, "150k and 500k" )
1656 	PORT_DIPSETTING(      0x0030, "200k and 700k" )
1657 	PORT_DIPSETTING(      0x0000, "Every 250k" )    // no extra life after the one at 1500k
1658 	PORT_DIPSETTING(      0x0020, DEF_STR( None ) )
1659 	PORT_DIPNAME( 0x00c0, 0x00c0, "Winning Rounds (Player VS Player)" ) PORT_DIPLOCATION("SW2:7,8")
1660 	PORT_DIPSETTING(      0x00c0, "2" )
1661 	PORT_DIPSETTING(      0x0040, "3" )
1662 	PORT_DIPSETTING(      0x0080, "4" )
1663 	PORT_DIPSETTING(      0x0000, "5" )
1664 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1665 
1666 	PORT_START("P1") //$600000.w
1667 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
1668 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1669 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
1670 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
1671 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
1672 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
1673 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Player 1 button 3 is unused */
1674 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START1 )
1675 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1676 
1677 	PORT_START("P2") //$600002.w
1678 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
1679 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1680 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
1681 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
1682 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
1683 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
1684 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* Player 2 button 3 is unused */
1685 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_START2 )
1686 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1687 
1688 	PORT_START("SYSTEM") //$600004.w
1689 	PORT_BIT(  0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
1690 	PORT_BIT(  0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)   // unused, test mode shows it
1691 	PORT_BIT(  0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1692 	PORT_BIT(  0x0008, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1)
1693 	PORT_BIT(  0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
1694 	PORT_BIT(  0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
1695 	PORT_BIT(  0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
1696 	PORT_BIT(  0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
1697 	PORT_BIT(  0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1698 INPUT_PORTS_END
1699 
1700 
1701 /***************************************************************************
1702                               Reel'N Quake
1703 ***************************************************************************/
1704 
1705 static INPUT_PORTS_START( reelquak )
1706 	PORT_START("DSW1")  // $400300.w
1707 	PORT_DIPNAME( 0x0001, 0x0001, "Game Style" ) PORT_DIPLOCATION("SW1:1")
1708 	PORT_DIPSETTING(      0x0001, DEF_STR( Standard ) )
1709 	PORT_DIPSETTING(      0x0000, "Redemption" )
1710 	PORT_DIPNAME( 0x000e, 0x000e, "Key-In Credits" ) PORT_DIPLOCATION("SW1:2,3,4")
1711 	PORT_DIPSETTING(      0x000c, "1 Turn / 2 Credits" )
1712 	PORT_DIPSETTING(      0x000a, "1 Turn / 3 Credits" )
1713 	PORT_DIPSETTING(      0x0008, "1 Turn / 5 Credits" )
1714 	PORT_DIPSETTING(      0x000e, "1 Turn / 10 Credits" )
1715 	PORT_DIPSETTING(      0x0006, "1 Turn / 20 Credits" )
1716 	PORT_DIPSETTING(      0x0004, "1 Turn / 25 Credits" )
1717 	PORT_DIPSETTING(      0x0002, "1 Turn / 50 Credits" )
1718 	PORT_DIPSETTING(      0x0000, "1 Turn / 100 Credits" )
1719 	PORT_DIPNAME( 0x0030, 0x0030, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:5,6")
1720 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_1C ) )
1721 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
1722 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_5C ) )
1723 	PORT_DIPSETTING(      0x0000, "1 Coin/10 Credits" )
1724 	PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:7,8")   // bit 7 tested according to game style
1725 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_1C ) )
1726 	PORT_DIPSETTING(      0x0080, DEF_STR( 1C_2C ) )
1727 	PORT_DIPSETTING(      0x0040, DEF_STR( 1C_5C ) )
1728 	PORT_DIPSETTING(      0x0000, "1 Coin/10 Credits" )
1729 
1730 	PORT_START("DSW2")  // $400302.w
1731 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1")  // used
1732 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1733 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1734 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:2")
1735 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1736 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1737 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:3")
1738 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
1739 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1740 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:4")
1741 	PORT_DIPSETTING(      0x0008, DEF_STR( Off ) )
1742 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1743 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:5")
1744 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1745 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1746 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:6")
1747 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
1748 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1749 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:7")
1750 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1751 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1752 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:8")
1753 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1754 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1755 
1756 	PORT_START("P1")    // $400001.b
1757 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_POKER_CANCEL  )                    // bet cancel
1758 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE   )                    // collect
1759 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP   )                    // double up
1760 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH   ) PORT_NAME("Big")   // big
1761 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_GAMBLE_BET    )                    // bet
1762 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_GAMBLE_LOW    ) PORT_NAME("Small") // small
1763 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START1        )                    // start
1764 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1765 
1766 	PORT_START("TICKET")    // $400003.b
1767 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_CUSTOM       ) PORT_READ_LINE_DEVICE_MEMBER("dispenser", ticket_dispenser_device, line_r)    // ticket sensor
1768 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1769 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1770 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_NAME("Knock Down")    // knock down
1771 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE2      ) PORT_NAME("Ticket Clear")  // ticket clear
1772 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_SERVICE3      ) PORT_NAME("Ticket Resume") // ticket resume
1773 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN  )                            // key in
1774 	PORT_SERVICE_NO_TOGGLE(0x0080, IP_ACTIVE_LOW       )                            // test mode
1775 
1776 	PORT_START("SYSTEM")    // $400005.b
1777 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1         ) PORT_IMPULSE(5)    // coin a
1778 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2         ) PORT_IMPULSE(5)    // coin b
1779 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1      )                    // service
1780 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK   )                    // diagnostic
1781 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1782 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1783 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1784 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN       )
1785 INPUT_PORTS_END
1786 
1787 
1788 /***************************************************************************
1789                               Endless Riches
1790 ***************************************************************************/
1791 
1792 static INPUT_PORTS_START( endrichs )
1793 	PORT_INCLUDE(reelquak)
1794 
1795 	PORT_MODIFY("DSW1")  // $400300.w
1796 	PORT_DIPNAME( 0x0001, 0x0001, "Payout Style" ) PORT_DIPLOCATION("SW1:1")
1797 	PORT_DIPSETTING(      0x0001, "Normal Payout" )
1798 	PORT_DIPSETTING(      0x0000, "Ticket Payout" ) // Ticket Printer?
1799 
1800 	PORT_MODIFY("DSW2")  // $400302.w
1801 	PORT_DIPUNUSED_DIPLOC( 0x0001, IP_ACTIVE_LOW, "SW2:1" ) // DSW2 unpopulated
1802 	PORT_DIPUNUSED_DIPLOC( 0x0002, IP_ACTIVE_LOW, "SW2:2" )
1803 	PORT_DIPUNUSED_DIPLOC( 0x0004, IP_ACTIVE_LOW, "SW2:3" )
1804 	PORT_DIPUNUSED_DIPLOC( 0x0008, IP_ACTIVE_LOW, "SW2:4" )
1805 	PORT_DIPUNUSED_DIPLOC( 0x0010, IP_ACTIVE_LOW, "SW2:5" )
1806 	PORT_DIPUNUSED_DIPLOC( 0x0020, IP_ACTIVE_LOW, "SW2:6" )
1807 	PORT_DIPUNUSED_DIPLOC( 0x0040, IP_ACTIVE_LOW, "SW2:7" )
1808 	PORT_DIPUNUSED_DIPLOC( 0x0080, IP_ACTIVE_LOW, "SW2:8" )
1809 INPUT_PORTS_END
1810 
1811 /***************************************************************************
1812                               Star Audition
1813 ***************************************************************************/
1814 
1815 // To activate ROM HACK items, use the debugger memory viewer:
1816 // patch offsets 1E60,1E62,1E64 of the ':maincpu' region with 4E71
1817 
1818 static INPUT_PORTS_START( staraudi )
1819 	PORT_START("DSW1")  // $700300.w
1820 	PORT_DIPUNKNOWN_DIPLOC(0x0001, IP_ACTIVE_LOW, "SW1:1" )
1821 	PORT_DIPNAME( 0x0002, 0x0002, "Monitor Sync (ROM HACK)" ) PORT_DIPLOCATION("SW1:2")
1822 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1823 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1824 	PORT_DIPUNKNOWN_DIPLOC(0x0004, IP_ACTIVE_LOW, "SW1:3" )
1825 	PORT_DIPUNKNOWN_DIPLOC(0x0008, IP_ACTIVE_LOW, "SW1:4" )
1826 	PORT_DIPNAME( 0x0010, 0x0010, "Show Camera Variables" ) PORT_DIPLOCATION("SW1:5")   // camera test in service mode
1827 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
1828 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1829 	PORT_DIPNAME( 0x0020, 0x0000, "Parallel/Serial" ) PORT_DIPLOCATION("SW1:6") // activates parallel / serial reading (ERROR if not active)
1830 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1831 	PORT_DIPSETTING(      0x0020, DEF_STR( On ) )
1832 	PORT_DIPUNKNOWN_DIPLOC(0x0040, IP_ACTIVE_LOW, "SW1:7" )
1833 	PORT_SERVICE_DIPLOC(   0x0080, IP_ACTIVE_LOW, "SW1:8" ) // service mode
1834 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1835 
1836 	PORT_START("DSW2")  // $700302.w
1837 	PORT_DIPUNKNOWN_DIPLOC(0x0001, IP_ACTIVE_LOW, "SW2:1" ) // ?
1838 	PORT_DIPUNKNOWN_DIPLOC(0x0002, IP_ACTIVE_LOW, "SW2:2" )
1839 	PORT_DIPUNKNOWN_DIPLOC(0x0004, IP_ACTIVE_LOW, "SW2:3" )
1840 	PORT_DIPUNKNOWN_DIPLOC(0x0008, IP_ACTIVE_LOW, "SW2:4" )
1841 	PORT_DIPUNKNOWN_DIPLOC(0x0010, IP_ACTIVE_LOW, "SW2:5" )
1842 	PORT_DIPUNKNOWN_DIPLOC(0x0020, IP_ACTIVE_LOW, "SW2:6" )
1843 	PORT_DIPNAME( 0x0040, 0x0040, "Show Game Variables (ROM HACK)" ) PORT_DIPLOCATION("SW2:7")
1844 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1845 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1846 	PORT_DIPNAME( 0x0080, 0x0080, "? (ROM HACK)" ) PORT_DIPLOCATION("SW2:8")
1847 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
1848 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1849 	PORT_BIT(             0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1850 
1851 	PORT_START("P1") // $700000.w
1852 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(1)
1853 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
1854 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(1)
1855 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(1)
1856 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(1)
1857 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Camera Variables? (Cheat)")
1858 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Flip Screen / Monitor Sync (Cheat)")   // keep pressed during boot / press together with up
1859 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("Reset Monitor Sync (Cheat)")
1860 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1861 
1862 	PORT_START("P2") // $700002.w
1863 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(2)
1864 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
1865 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(2)
1866 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(2)
1867 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(2)
1868 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("Slow Motion (Cheat)")
1869 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("Pause (Cheat)")    // something in monitor sync menu too
1870 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) // unused?
1871 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1872 
1873 	PORT_START("SYSTEM") // $700004.w
1874 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1    ) PORT_IMPULSE(5)
1875 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Degauss")
1876 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin
1877 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE3 ) PORT_NAME("Reset")
1878 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_SERVICE4 ) // unused?
1879 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START2   ) // something (flash activity)
1880 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_START3   ) // unused?
1881 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM   ) PORT_VBLANK("screen")
1882 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_START4   ) // unused?
1883 INPUT_PORTS_END
1884 
1885 
1886 /***************************************************************************
1887                             Sammy Outdoor Shooting
1888 ***************************************************************************/
1889 
1890 static INPUT_PORTS_START( deerhunt )
1891 	PORT_START("DSW1") // $400000.w
1892 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3")
1893 	PORT_DIPSETTING(      0x0005, DEF_STR( 4C_1C ) )
1894 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_1C ) )
1895 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
1896 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_2C ) )
1897 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_3C ) )
1898 	PORT_DIPSETTING(      0x0002, DEF_STR( 1C_4C ) )
1899 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_5C ) )
1900 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
1901 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:4,5,6")
1902 	PORT_DIPSETTING(      0x0028, DEF_STR( 4C_1C ) )
1903 	PORT_DIPSETTING(      0x0030, DEF_STR( 2C_1C ) )
1904 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
1905 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_2C ) )
1906 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_3C ) )
1907 	PORT_DIPSETTING(      0x0010, DEF_STR( 1C_4C ) )
1908 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_5C ) )
1909 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
1910 	PORT_DIPNAME( 0x0040, 0x0040, "Discount To Continue" ) PORT_DIPLOCATION("SW1:7")
1911 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
1912 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1913 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW1:8" )
1914 	PORT_BIT(     0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1915 
1916 	PORT_START("DSW2") // fffd0a.w
1917 	PORT_DIPNAME( 0x0001, 0x0001, "Vert. Flip Screen" ) PORT_DIPLOCATION("SW2:1")
1918 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
1919 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1920 	PORT_DIPNAME( 0x0002, 0x0002, "Horiz. Flip Screen" ) PORT_DIPLOCATION("SW2:2")
1921 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
1922 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
1923 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:3")
1924 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
1925 	PORT_DIPSETTING(      0x0004, DEF_STR( On ) )
1926 	PORT_DIPNAME( 0x0018, 0x0018, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:4,5")
1927 	PORT_DIPSETTING(      0x0010, DEF_STR( Easy ) )
1928 	PORT_DIPSETTING(      0x0018, DEF_STR( Normal ) )
1929 	PORT_DIPSETTING(      0x0008, DEF_STR( Hard ) )
1930 	PORT_DIPSETTING(      0x0000, DEF_STR( Hardest ) )
1931 	PORT_DIPNAME( 0x0020, 0x0020, "Blood Color" ) PORT_DIPLOCATION("SW2:6")
1932 	PORT_DIPSETTING(      0x0020, "Red" )
1933 	PORT_DIPSETTING(      0x0000, "Yellow" )
1934 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7")
1935 	PORT_DIPSETTING(      0x0040, "3" )
1936 	PORT_DIPSETTING(      0x0000, "4" )
1937 	PORT_DIPNAME( 0x0080, 0x0080, "Gun Type" ) PORT_DIPLOCATION("SW2:8")
1938 	PORT_DIPSETTING(      0x0080, "Pump Action" )
1939 	PORT_DIPSETTING(      0x0000, "Hand Gun" )
1940 	PORT_BIT(     0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
1941 
1942 	PORT_START("GUN1") // $500000
1943 	PORT_BIT( 0x00ff, 0x0080, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1, 0, 0) PORT_MINMAX(0x0025,0x00c5) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(1)
1944 	PORT_BIT( 0xff00, 0x8000, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1, 0, 0) PORT_MINMAX(0x0800,0xf800) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(1)
1945 
1946 	PORT_START("GUN2")  // $580000.b
1947 	PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )  // P2 gun, read but not used
1948 
1949 	PORT_START("TRIGGER")   // $700000
1950 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_CUSTOM )  // trigger
1951 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1  )
1952 	PORT_BIT( 0xff3f, IP_ACTIVE_LOW, IPT_UNKNOWN )
1953 
1954 	PORT_START("PUMP")  // $700003.b
1955 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_CUSTOM )  // pump
1956 	PORT_BIT( 0xffbf, IP_ACTIVE_LOW, IPT_UNKNOWN )
1957 
1958 	PORT_START("COIN")  // $700005.b
1959 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
1960 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
1961 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
1962 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 )
1963 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
1964 
1965 	PORT_START("BUTTONS")   // $400002
1966 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 )  // trigger
1967 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 )  // pump
1968 	PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN )
1969 INPUT_PORTS_END
1970 
1971 
1972 static INPUT_PORTS_START( turkhunt )
1973 	PORT_INCLUDE(deerhunt)
1974 
1975 	PORT_MODIFY("DSW2") // fffd0a.w
1976 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7")
1977 	PORT_DIPSETTING(      0x0040, "2" )
1978 	PORT_DIPSETTING(      0x0000, "3" )
1979 INPUT_PORTS_END
1980 
1981 
1982 static INPUT_PORTS_START( wschamp )
1983 	PORT_INCLUDE(deerhunt)
1984 
1985 	PORT_MODIFY("DSW1") // $400000.w
1986 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
1987 	PORT_DIPSETTING(      0x0009, "4 Coins Start, 4 Coins Continue" )
1988 	PORT_DIPSETTING(      0x0008, "4 Coins Start, 3 Coins Continue" )
1989 	PORT_DIPSETTING(      0x0007, "4 Coins Start, 2 Coins Continue" )
1990 	PORT_DIPSETTING(      0x0006, "4 Coins Start, 1 Coin Continue" )
1991 	PORT_DIPSETTING(      0x000c, "3 Coins Start, 3 Coins Continue" )
1992 	PORT_DIPSETTING(      0x000b, "3 Coins Start, 2 Coins Continue" )
1993 	PORT_DIPSETTING(      0x000a, "3 Coins Start, 1 Coin Continue" )
1994 	PORT_DIPSETTING(      0x000e, "2 Coins Start, 2 Coins Continue" )
1995 	PORT_DIPSETTING(      0x000d, "2 Coins Start, 1 Coin Continue" )
1996 	PORT_DIPSETTING(      0x000f, "1 Coin Start, 1 Coin Continue" )
1997 	PORT_DIPSETTING(      0x0005, "1 Coin 2 Credits, 1 Credit Start & Continue" )
1998 	PORT_DIPSETTING(      0x0004, "1 Coin 3 Credits, 1 Credit Start & Continue" )
1999 	PORT_DIPSETTING(      0x0003, "1 Coin 4 Credits, 1 Credit Start & Continue" )
2000 	PORT_DIPSETTING(      0x0002, "1 Coin 5 Credits, 1 Credit Start & Continue" )
2001 	PORT_DIPSETTING(      0x0001, "1 Coin 6 Credits, 1 Credit Start & Continue" )
2002 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
2003 	PORT_DIPUNUSED_DIPLOC( 0x0010, 0x0010, "SW1:5" )
2004 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW1:6" )
2005 	PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "SW1:7" )
2006 	PORT_SERVICE_DIPLOC(  0x0080, IP_ACTIVE_LOW, "SW1:8" )
2007 	PORT_BIT(     0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
2008 
2009 	PORT_MODIFY("DSW2") // fffd0a.w
2010 	PORT_DIPUNUSED_DIPLOC( 0x0020, 0x0020, "SW2:6" )
2011 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:7")
2012 	PORT_DIPSETTING(      0x0040, "2" )
2013 	PORT_DIPSETTING(      0x0000, "3" )
2014 
2015 	PORT_MODIFY("GUN2") // $580000
2016 	PORT_BIT( 0x00ff, 0x0080, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1, 0, 0) PORT_MINMAX(0x0025,0x00c5) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(2)
2017 	PORT_BIT( 0xff00, 0x8000, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1, 0, 0) PORT_MINMAX(0x0800,0xf800) PORT_SENSITIVITY(35) PORT_KEYDELTA(10) PORT_PLAYER(2)
2018 
2019 	PORT_MODIFY("TRIGGER")  // $700000
2020 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_CUSTOM )  // trigger P2
2021 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_CUSTOM )  // trigger P1
2022 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1  )
2023 	PORT_BIT( 0xff1f, IP_ACTIVE_LOW, IPT_UNKNOWN )
2024 
2025 	PORT_MODIFY("PUMP") // $700003.b
2026 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_CUSTOM )  // pump P2
2027 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_CUSTOM )  // pump P1
2028 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2  )
2029 	PORT_BIT( 0xff1f, IP_ACTIVE_LOW, IPT_UNKNOWN )
2030 
2031 	PORT_MODIFY("COIN") // $700005.b
2032 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
2033 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
2034 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
2035 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 )
2036 	PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNKNOWN )
2037 
2038 	PORT_MODIFY("BUTTONS")  // $400002
2039 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 )  // trigger P1
2040 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2 )  // pump P1
2041 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )  PORT_PLAYER(2)  // trigger P2
2042 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )  PORT_PLAYER(2)  // pump P2
2043 	PORT_BIT( 0xffcc, IP_ACTIVE_LOW, IPT_UNKNOWN )
2044 INPUT_PORTS_END
2045 
2046 static INPUT_PORTS_START( trophyh )
2047 	PORT_INCLUDE(wschamp)
2048 
2049 	PORT_MODIFY("DSW2") // fffd0a.w
2050 	PORT_DIPNAME( 0x0020, 0x0020, "Blood Color" ) PORT_DIPLOCATION("SW2:6") /* WSChamp doesn't use Blood Color, so add it back in */
2051 	PORT_DIPSETTING(      0x0020, "Red" )
2052 	PORT_DIPSETTING(      0x0000, "Yellow" )
2053 INPUT_PORTS_END
2054 
2055 static INPUT_PORTS_START( trophyht )
2056 	PORT_INCLUDE(wschamp)
2057 
2058 	PORT_MODIFY("DSW2") // fffd0a.w
2059 	PORT_DIPNAME( 0x0020, 0x0020, "Blood Color" ) PORT_DIPLOCATION("SW2:6") /* WSChamp doesn't use Blood Color, so add it back in */
2060 	PORT_DIPSETTING(      0x0020, "Red" )
2061 	PORT_DIPSETTING(      0x0000, "Yellow" )
2062 	PORT_DIPNAME( 0x0080, 0x0000, "Gun Type (Leave on Hand Gun)" ) PORT_DIPLOCATION("SW2:8")
2063 	PORT_DIPSETTING(      0x0080, "Pump Action" )
2064 	PORT_DIPSETTING(      0x0000, "Hand Gun" )
2065 
2066 	PORT_MODIFY("TRIGGER")  // $700000
2067 	PORT_BIT( 0xff3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PCB only allows for two 4 pin gun connections - trigger p1
2068 
2069 	PORT_MODIFY("PUMP") // $700003.b
2070 	PORT_BIT( 0xff3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PCB only allows for two 4 pin gun connections - trigger p2
2071 
2072 	PORT_MODIFY("BUTTONS")  // $400002
2073 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1 )  // trigger P1
2074 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 )  PORT_PLAYER(2)  // trigger P2
2075 	PORT_BIT( 0xfffc, IP_ACTIVE_LOW, IPT_UNKNOWN )
2076 INPUT_PORTS_END
2077 
2078 
2079 /***************************************************************************
2080                             TelePachi Fever Lion
2081 ***************************************************************************/
2082 
2083 static INPUT_PORTS_START( telpacfl )
2084 	PORT_START("DSW1")  // $600001.b ($200020.b)
2085 	PORT_DIPNAME( 0x0001, 0x0001, "Clear NVRAM" )          PORT_DIPLOCATION("SW1:1")
2086 	PORT_DIPSETTING(      0x0001, DEF_STR( Off ) )
2087 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2088 	PORT_DIPNAME( 0x0002, 0x0002, "Use Medal Sensor" )     PORT_DIPLOCATION("SW1:2")
2089 	PORT_DIPSETTING(      0x0000, DEF_STR( No ) )
2090 	PORT_DIPSETTING(      0x0002, DEF_STR( Yes ) )
2091 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )     PORT_DIPLOCATION("SW1:3") // used
2092 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
2093 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2094 	PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:4")
2095 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
2096 	PORT_DIPSETTING(      0x0008, DEF_STR( On ) )
2097 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )     PORT_DIPLOCATION("SW1:5") // read but unsed?
2098 	PORT_DIPSETTING(      0x0010, DEF_STR( Off ) )
2099 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2100 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )     PORT_DIPLOCATION("SW1:6")
2101 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
2102 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2103 	PORT_DIPNAME( 0x0040, 0x0040, "Force Hopper?" )        PORT_DIPLOCATION("SW1:7")
2104 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
2105 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2106 	PORT_DIPNAME( 0x0080, 0x0080, "Freeze Screen" )        PORT_DIPLOCATION("SW1:8")
2107 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
2108 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
2109 
2110 	PORT_START("DSW2")  // $600003.b ($200021.b)
2111 	PORT_DIPNAME( 0x000f, 0x000f, "Bonus Multiplier? (Low Hex Digit)" ) PORT_DIPLOCATION("SW2:1,2,3,4")
2112 	PORT_DIPSETTING(      0x000f, "0" )
2113 	PORT_DIPSETTING(      0x000e, "1" )
2114 	PORT_DIPSETTING(      0x000d, "2" )
2115 	PORT_DIPSETTING(      0x000c, "3" )
2116 	PORT_DIPSETTING(      0x000b, "4" )
2117 	PORT_DIPSETTING(      0x000a, "5" )
2118 	PORT_DIPSETTING(      0x0009, "6" )
2119 	PORT_DIPSETTING(      0x0008, "7" )
2120 	PORT_DIPSETTING(      0x0007, "8" )
2121 	PORT_DIPSETTING(      0x0006, "9" )
2122 	PORT_DIPSETTING(      0x0005, "A" )
2123 	PORT_DIPSETTING(      0x0004, "B" )
2124 	PORT_DIPSETTING(      0x0003, "C" )
2125 	PORT_DIPSETTING(      0x0002, "D" )
2126 	PORT_DIPSETTING(      0x0001, "E" )
2127 	PORT_DIPSETTING(      0x0000, "F" )
2128 	PORT_DIPNAME( 0x0070, 0x0070, "Bonus Multiplier? (High Hex Digit)" ) PORT_DIPLOCATION("SW2:5,6,7")
2129 	PORT_DIPSETTING(      0x0070, "0" )
2130 	PORT_DIPSETTING(      0x0060, "1" )
2131 	PORT_DIPSETTING(      0x0050, "2" )
2132 	PORT_DIPSETTING(      0x0040, "3" )
2133 	PORT_DIPSETTING(      0x0030, "4" )
2134 	PORT_DIPSETTING(      0x0020, "5" )
2135 	PORT_DIPSETTING(      0x0010, "6" )
2136 	PORT_DIPSETTING(      0x0000, "7" )
2137 	PORT_DIPNAME( 0x0080, 0x0080, "Use Bonus Multiplier?" ) PORT_DIPLOCATION("SW2:8")
2138 	PORT_DIPSETTING(      0x0080, DEF_STR( No ) )
2139 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
2140 
2141 	PORT_START("COIN")    // $700000.w
2142 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2143 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_OTHER         ) // coin1 connection
2144 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE2      ) PORT_NAME("Reset") // reset switch (clear errors, play sound in sound test)
2145 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH,IPT_OTHER         ) // empty switch (out of medals error when low i.e. メダル切れ)
2146 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_OTHER         ) // coin2 connection
2147 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_OTHER         ) // coin3 connection
2148 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_OTHER         ) // coin4 connection
2149 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) // pay out switch
2150 
2151 	PORT_START("P1")    // $700002.w
2152 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1       ) PORT_NAME("Bet") // bet switch (converts credits into balls)
2153 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2154 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_GAMBLE_DOOR   ) // door switch
2155 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_CUSTOM       ) PORT_READ_LINE_DEVICE_MEMBER("dispenser", ticket_dispenser_device, line_r) // coin out switch (medals jam error when stuck i.e. メダルづまり)
2156 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2157 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2158 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2159 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH,IPT_BUTTON2       ) PORT_NAME("Stop") // stop switch (active high)
2160 
2161 	PORT_START("SERVICE")    // $700004.w
2162 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1         ) PORT_IMPULSE(5) // coin in switch
2163 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2         ) PORT_IMPULSE(5) // 100yen in switch
2164 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1      ) // service switch (next item in service mode)
2165 	PORT_SERVICE_NO_TOGGLE(0x0008, IP_ACTIVE_LOW       ) // test switch
2166 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2167 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2168 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2169 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_OTHER         ) // (freezes the game if high, eventually triggering the watchdog)
2170 
2171 	PORT_START("UNKNOWN")    // $700006.w
2172 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2173 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2174 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2175 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2176 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2177 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2178 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2179 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN       ) // -
2180 
2181 	PORT_START("KNOB")    // $fffd0a (parallel port read)
2182 	PORT_BIT( 0xff, 0x00, IPT_PADDLE ) PORT_MINMAX(0,0xff) PORT_SENSITIVITY(15) PORT_KEYDELTA(15) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_LEFT) PORT_CODE_INC(KEYCODE_RIGHT)
2183 INPUT_PORTS_END
2184 
2185 
2186 /***************************************************************************
2187                                Funcube series
2188 ***************************************************************************/
2189 
2190 static INPUT_PORTS_START( funcube )
2191 	PORT_START("SWITCH")    // c00030.l
2192 	PORT_BIT(     0x01, IP_ACTIVE_LOW,  IPT_COIN1    ) PORT_IMPULSE(1)  // coin solenoid 1
2193 	PORT_BIT(     0x02, IP_ACTIVE_HIGH, IPT_CUSTOM  )                  // coin solenoid 2
2194 	PORT_BIT(     0x04, IP_ACTIVE_HIGH, IPT_CUSTOM  )                  // hopper sensor
2195 	PORT_BIT(     0x08, IP_ACTIVE_LOW,  IPT_BUTTON2  )                  // game select
2196 	PORT_BIT(     0x10, IP_ACTIVE_LOW,  IPT_GAMBLE_PAYOUT )
2197 	PORT_BIT(     0x20, IP_ACTIVE_LOW,  IPT_SERVICE1 ) PORT_NAME( "Reset Key" )
2198 	PORT_SERVICE( 0x40, IP_ACTIVE_LOW   )
2199 	PORT_SERVICE( 0x80, IP_ACTIVE_LOW   )
2200 
2201 	PORT_START("BATTERY")
2202 	PORT_DIPNAME( 0x10, 0x10, "Battery" )
2203 	PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
2204 	PORT_DIPSETTING( 0x10, DEF_STR( On ) )
2205 
2206 	PORT_START("DEBUG")
2207 	// 500002.w
2208 	PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    ) PORT_PLAYER(2)
2209 	PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  ) PORT_PLAYER(2)
2210 	PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
2211 	PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  ) PORT_PLAYER(2)
2212 	PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_BUTTON1        ) PORT_PLAYER(2)
2213 	PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_BUTTON2        ) PORT_PLAYER(2)
2214 
2215 	// 500000.w
2216 	PORT_DIPNAME(    0x00010000, 0x00000000, "Debug 0" )
2217 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2218 	PORT_DIPSETTING( 0x00010000, DEF_STR( On ) )
2219 	PORT_DIPNAME(    0x00020000, 0x00000000, "Debug 1" )
2220 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2221 	PORT_DIPSETTING( 0x00020000, DEF_STR( On ) )
2222 	PORT_DIPNAME(    0x00040000, 0x00000000, "Debug 2" )    // Touch-Screen
2223 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2224 	PORT_DIPSETTING( 0x00040000, DEF_STR( On ) )
2225 	PORT_DIPNAME(    0x00080000, 0x00000000, "Debug 3" )
2226 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2227 	PORT_DIPSETTING( 0x00080000, DEF_STR( On ) )
2228 	PORT_DIPNAME(    0x00100000, 0x00000000, "Debug 4" )
2229 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2230 	PORT_DIPSETTING( 0x00100000, DEF_STR( On ) )
2231 	PORT_DIPNAME(    0x00200000, 0x00000000, "Debug 5" )
2232 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2233 	PORT_DIPSETTING( 0x00200000, DEF_STR( On ) )
2234 	PORT_DIPNAME(    0x00400000, 0x00000000, "Debug 6" )
2235 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2236 	PORT_DIPSETTING( 0x00400000, DEF_STR( On ) )
2237 	PORT_DIPNAME(    0x00800000, 0x00000000, "Debug 7" )
2238 	PORT_DIPSETTING( 0x00000000, DEF_STR( Off ) )
2239 	PORT_DIPSETTING( 0x00800000, DEF_STR( On ) )
2240 INPUT_PORTS_END
2241 
2242 
2243 /***************************************************************************
2244 
2245 
2246                             Graphics Layouts
2247 
2248 
2249 ***************************************************************************/
2250 
2251 static const gfx_layout tile_layout =
2252 {
2253 	8,8,
2254 	RGN_FRAC(1,1),
2255 	8,
2256 	{ STEP8(7*8, -8) },
2257 	{ STEP8(0, 1) },
2258 	{ STEP8(0, 8*8) },
2259 	8*8*8
2260 };
2261 
2262 
2263 /*  Tiles are 8bpp, but the hardware is additionally able to discard
2264     some bitplanes and use the low 4 bits only, or the high 4 bits only */
2265 static GFXDECODE_START( gfx_seta2 )
2266 	GFXDECODE_ENTRY( "sprites", 0, tile_layout, 0, 0x8000/16 )   // 8bpp, but 4bpp color granularity
2267 GFXDECODE_END
2268 
2269 /***************************************************************************
2270 
2271                                 Machine Drivers
2272 
2273 ***************************************************************************/
2274 
INTERRUPT_GEN_MEMBER(seta2_state::seta2_interrupt)2275 INTERRUPT_GEN_MEMBER(seta2_state::seta2_interrupt)
2276 {
2277 	/* VBlank is connected to INT0 (external interrupts pin 0) */
2278 	downcast<tmp68301_device &>(*m_maincpu).external_interrupt_0();
2279 }
2280 
INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt)2281 INTERRUPT_GEN_MEMBER(seta2_state::samshoot_interrupt)
2282 {
2283 	downcast<tmp68301_device &>(*m_maincpu).external_interrupt_2();   // to do: hook up x1-10 interrupts
2284 }
2285 
seta2(machine_config & config)2286 void seta2_state::seta2(machine_config &config)
2287 {
2288 	TMP68301(config, m_maincpu, XTAL(50'000'000)/3);   // Verified on some PCBs
2289 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::mj4simai_map);
2290 	m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt));
2291 
2292 	WATCHDOG_TIMER(config, "watchdog");
2293 
2294 	// video hardware
2295 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2296 	m_screen->set_refresh_hz(60);
2297 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));
2298 	m_screen->set_size(0x200, 0x100);
2299 	m_screen->set_visarea(0x00, 0x180-1, 0x00, 0xf0-1);
2300 	m_screen->set_screen_update(FUNC(seta2_state::screen_update));
2301 	m_screen->screen_vblank().set(FUNC(seta2_state::screen_vblank));
2302 	m_screen->set_palette(m_palette);
2303 	//m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE);
2304 
2305 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2);
2306 	PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0);    // extra 0xf0 because we might draw 256-color object with 16-color granularity
2307 
2308 	// sound hardware
2309 	SPEAKER(config, "mono").front_center();
2310 
2311 	x1_010_device &x1snd(X1_010(config, "x1snd", XTAL(50'000'000)/3));   // Verified on some PCBs
2312 	x1snd.add_route(ALL_OUTPUTS, "mono", 1.0);
2313 	x1snd.set_addrmap(0, &seta2_state::x1_map);
2314 }
2315 
2316 
2317 /*
2318     P0-113A PCB has different sound/cpu input clock (32.53047MHz / 2, common input clock is 50MHz / 3)
2319     and/or some PCB variant has uses this input clock?
2320     reference:
2321     https://youtu.be/6f-znVzcrmg, https://youtu.be/zJi_d463UQE (gundamex)
2322     https://youtu.be/Ung9XeLisV0 (grdiansa)
2323 */
seta2_32m(machine_config & config)2324 void seta2_state::seta2_32m(machine_config &config)
2325 {
2326 	m_maincpu->set_clock(XTAL(32'530'470)/2);
2327 	subdevice<x1_010_device>("x1snd")->set_clock(XTAL(32'530'470)/2);
2328 }
2329 
2330 
gundamex(machine_config & config)2331 void seta2_state::gundamex(machine_config &config)
2332 {
2333 	seta2(config);
2334 	seta2_32m(config);
2335 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::gundamex_map);
2336 
2337 	downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_r));
2338 	downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::gundamex_eeprom_w));
2339 
2340 	EEPROM_93C46_16BIT(config, "eeprom");
2341 
2342 	// video hardware
2343 	m_screen->set_visarea(0x00, 0x180-1, 0x000, 0x0e0-1);
2344 }
2345 
2346 // run in P-FG01-1 PCB, uses common input clock for sound/cpu - 32.53047MHz XTAL not populated
2347 // reference: https://youtu.be/qj-TyKyAAVY
grdians(machine_config & config)2348 void seta2_state::grdians(machine_config &config)
2349 {
2350 	seta2(config);
2351 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::grdians_map);
2352 
2353 	// video hardware
2354 	m_screen->set_visarea(0x00, 0x130-1, 0x00, 0xe8 -1);
2355 }
2356 
2357 // run in P0-113A PCB, different sound/cpu input clock compared to P-FG01-1 PCB, same as gundamex?
grdiansa(machine_config & config)2358 void seta2_state::grdiansa(machine_config &config)
2359 {
2360 	grdians(config);
2361 	seta2_32m(config);
2362 }
2363 
2364 
myangel(machine_config & config)2365 void seta2_state::myangel(machine_config &config)
2366 {
2367 	seta2(config);
2368 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::myangel_map);
2369 
2370 	// video hardware
2371 	m_screen->set_visarea(0, 0x178-1, 0x00, 0xf0-1);
2372 }
2373 
2374 
myangel2(machine_config & config)2375 void seta2_state::myangel2(machine_config &config)
2376 {
2377 	seta2(config);
2378 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::myangel2_map);
2379 
2380 	// video hardware
2381 	m_screen->set_visarea(0, 0x178-1, 0x00, 0xf0-1);
2382 }
2383 
2384 
pzlbowl(machine_config & config)2385 void seta2_state::pzlbowl(machine_config &config)
2386 {
2387 	seta2(config);
2388 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::pzlbowl_map);
2389 
2390 	// video hardware
2391 	m_screen->set_visarea(0x00, 0x180-1, 0x00, 0xf0-1);
2392 }
2393 
2394 
penbros(machine_config & config)2395 void seta2_state::penbros(machine_config &config)
2396 {
2397 	seta2(config);
2398 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::penbros_map);
2399 
2400 	// video hardware
2401 	m_screen->set_visarea(0, 0x140-1, 0x00, 0xe0-1);
2402 }
2403 
ablastb(machine_config & config)2404 void seta2_state::ablastb(machine_config &config)
2405 {
2406 	penbros(config);
2407 	M68000(config.replace(), m_maincpu, XTAL(16'000'000)); // TMP68HC000P-16
2408 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::ablastb_map);
2409 	m_maincpu->set_vblank_int("screen", FUNC(seta2_state::irq2_line_hold));
2410 }
2411 
reelquak(machine_config & config)2412 void seta2_state::reelquak(machine_config &config)
2413 {
2414 	seta2(config);
2415 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::reelquak_map);
2416 
2417 	downcast<tmp68301_device &>(*m_maincpu).out_parallel_callback().set(FUNC(seta2_state::reelquak_leds_w));
2418 
2419 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
2420 	TICKET_DISPENSER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2421 
2422 	m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1);
2423 }
2424 
2425 
samshoot(machine_config & config)2426 void seta2_state::samshoot(machine_config &config)
2427 {
2428 	seta2(config);
2429 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::samshoot_map);
2430 	m_maincpu->set_periodic_int(FUNC(seta2_state::samshoot_interrupt), attotime::from_hz(60));
2431 
2432 	downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("DSW2");
2433 
2434 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
2435 
2436 	m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1);
2437 }
2438 
2439 
staraudi(machine_config & config)2440 void staraudi_state::staraudi(machine_config &config)
2441 {
2442 	seta2(config);
2443 	m_maincpu->set_addrmap(AS_PROGRAM, &staraudi_state::staraudi_map);
2444 
2445 	SHARP_LH28F016S_16BIT(config, "flash");
2446 	UPD4992(config, m_rtc, 32'768);
2447 
2448 	// video hardware
2449 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));  // not accurate
2450 	m_screen->set_visarea(0x00, 0x140-1, 0x000, 0x0f0-1);
2451 
2452 	m_gfxdecode->set_info(gfx_seta2);
2453 }
2454 
2455 
telpacfl(machine_config & config)2456 void seta2_state::telpacfl(machine_config &config)
2457 {
2458 	seta2(config);
2459 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::telpacfl_map);
2460 
2461 	downcast<tmp68301_device &>(*m_maincpu).in_parallel_callback().set_ioport("KNOB");
2462 
2463 	EEPROM_93C46_16BIT(config, "eeprom"); // not hooked up, seems unused
2464 
2465 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
2466 	HOPPER(config, m_dispenser, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2467 
2468 	// video hardware
2469 	m_screen->set_visarea(0x0, 0x180-1, 0x00, 0xf0-1); // still off by 1 because of different CRTC regs?
2470 }
2471 
2472 
2473 /***************************************************************************
2474                                Funcube series
2475 ***************************************************************************/
2476 
TIMER_DEVICE_CALLBACK_MEMBER(funcube_state::funcube_interrupt)2477 TIMER_DEVICE_CALLBACK_MEMBER(funcube_state::funcube_interrupt)
2478 {
2479 	int scanline = param;
2480 
2481 	if(scanline == 368)
2482 		m_maincpu->set_input_line(1, HOLD_LINE);
2483 
2484 	if(scanline == 0)
2485 		m_maincpu->set_input_line(2, HOLD_LINE);
2486 }
2487 
machine_start()2488 void funcube_state::machine_start()
2489 {
2490 	seta2_state::machine_start();
2491 	save_item(NAME(m_coin_start_cycles));
2492 	save_item(NAME(m_hopper_motor));
2493 }
2494 
machine_reset()2495 void funcube_state::machine_reset()
2496 {
2497 	m_coin_start_cycles = 0;
2498 	m_hopper_motor = 0;
2499 }
2500 
funcube(machine_config & config)2501 void funcube_state::funcube(machine_config &config)
2502 {
2503 	MCF5206E(config, m_maincpu, XTAL(25'447'000));
2504 	m_maincpu->set_addrmap(AS_PROGRAM, &funcube_state::funcube_map);
2505 	TIMER(config, "scantimer").configure_scanline(FUNC(funcube_state::funcube_interrupt), "screen", 0, 1);
2506 
2507 	H83007(config, m_sub, FUNCUBE_SUB_CPU_CLOCK);
2508 	m_sub->set_addrmap(AS_PROGRAM, &funcube_state::funcube_sub_map);
2509 	m_sub->set_addrmap(AS_IO, &funcube_state::funcube_sub_io);
2510 
2511 	MCF5206E_PERIPHERAL(config, "maincpu_onboard", 0);
2512 
2513 	FUNCUBE_TOUCHSCREEN(config, "touchscreen", 200).tx_cb().set(":sub:sci1", FUNC(h8_sci_device::rx_w));
2514 
2515 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
2516 
2517 	WATCHDOG_TIMER(config, "watchdog");
2518 
2519 	// video hardware
2520 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2521 	m_screen->set_refresh_hz(60);
2522 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500));  // not accurate
2523 	m_screen->set_size(0x200, 0x200);
2524 	m_screen->set_visarea(0x0+1, 0x140-1+1, 0x00, 0xf0-1);
2525 	m_screen->set_screen_update(FUNC(funcube_state::screen_update));
2526 	m_screen->screen_vblank().set(FUNC(funcube_state::screen_vblank));
2527 	m_screen->set_palette(m_palette);
2528 
2529 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2);
2530 	PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0);    // extra 0xf0 because we might draw 256-color object with 16-color granularity
2531 
2532 	// sound hardware
2533 	SPEAKER(config, "lspeaker").front_left();
2534 	SPEAKER(config, "rspeaker").front_right();
2535 
2536 	OKIM9810(config, m_oki, XTAL(4'096'000));
2537 	m_oki->add_route(0, "lspeaker", 0.80);
2538 	m_oki->add_route(1, "rspeaker", 0.80);
2539 }
2540 
2541 
funcube2(machine_config & config)2542 void funcube_state::funcube2(machine_config &config)
2543 {
2544 	funcube(config);
2545 	m_maincpu->set_addrmap(AS_PROGRAM, &funcube_state::funcube2_map);
2546 
2547 	m_sub->set_addrmap(AS_IO, &funcube_state::funcube2_sub_io);
2548 
2549 	// video hardware
2550 	m_screen->set_visarea(0x0, 0x140-1, 0x00, 0xf0-1);
2551 }
2552 
2553 
funcube3(machine_config & config)2554 void funcube_state::funcube3(machine_config &config)
2555 {
2556 	funcube2(config);
2557 	// video hardware
2558 	m_screen->set_visarea(0x0, 0x140-1, 0x00, 0xf0-1);
2559 }
2560 
2561 
namcostr(machine_config & config)2562 void seta2_state::namcostr(machine_config &config)
2563 {
2564 	TMP68301(config, m_maincpu, XTAL(50'000'000)/3);   // !! TMP68301 !!
2565 	m_maincpu->set_addrmap(AS_PROGRAM, &seta2_state::namcostr_map);
2566 	m_maincpu->set_vblank_int("screen", FUNC(seta2_state::seta2_interrupt));
2567 	// does this have a ticket dispenser?
2568 
2569 	// video hardware
2570 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
2571 	m_screen->set_refresh_hz(60);
2572 	m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
2573 	m_screen->set_size(0x200, 0x200);
2574 	m_screen->set_visarea(0x40, 0x1c0-1, 0x00, 0xf0-1);
2575 	m_screen->set_screen_update(FUNC(seta2_state::screen_update));
2576 	m_screen->screen_vblank().set(FUNC(seta2_state::screen_vblank));
2577 	m_screen->set_palette(m_palette);
2578 
2579 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_seta2);
2580 	PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 0x8000+0xf0);    // extra 0xf0 because we might draw 256-color object with 16-color granularity
2581 
2582 	// sound hardware
2583 	SPEAKER(config, "lspeaker").front_left();
2584 	SPEAKER(config, "rspeaker").front_right();
2585 
2586 	OKIM9810(config, m_oki, XTAL(4'096'000));
2587 	m_oki->add_route(0, "lspeaker", 0.80);
2588 	m_oki->add_route(1, "rspeaker", 0.80);
2589 }
2590 
2591 
2592 /***************************************************************************
2593 
2594                                 ROMs Loading
2595 
2596 ***************************************************************************/
2597 
2598 /***************************************************************************
2599 
2600 FUNCUBE
2601 EVA2E PCB
2602 
2603 It's the same PCB as Namco Stars (P0-140B). It's a lot more complicated to dump
2604 than the others because there are several surface mounted flash ROMs spread across
2605 multiple daughterboards instead of simple socketed 32M DIP42 mask roms all on one PCB.
2606 
2607 ***************************************************************************/
2608 
2609 ROM_START( funcube )
2610 	ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2611 	ROM_LOAD( "fcu1_prg0-f.u08", 0x00000, 0x80000, CRC(57f4f340) SHA1(436fc66409b254aba68ae33fc994bc270ce803a6) )
2612 
2613 	ROM_REGION( 0x20000, "sub", 0 )     // H8/3007 Code
2614 	ROM_LOAD( "fcu_0_iopr-0b.1b", 0x00000, 0x20000, CRC(87e3690f) SHA1(1b9dc573de31543884678df2dba2d6a74d6a2496) )
2615 
2616 	ROM_REGION( 0x800000, "sprites", 0 )
2617 	ROM_LOAD32_BYTE( "fcu1_obj-0a.u12", 0x000000, 0x200000, CRC(908b6baf) SHA1(cb5aa8c9b16abb17d8cc16d0d3b2f690a48ee503) )
2618 	ROM_LOAD32_BYTE( "fcu1_obj-0a.u13", 0x000001, 0x200000, CRC(8c31ca21) SHA1(e497ab1d7d30b41928a0c3db1ea7c3420376ad8c) )
2619 	ROM_LOAD32_BYTE( "fcu1_obj-0a.u14", 0x000002, 0x200000, CRC(4298d599) SHA1(d245206bc78de5f17da85ae6063b662cf9cf67aa) )
2620 	ROM_LOAD32_BYTE( "fcu1_obj-0a.u15", 0x000003, 0x200000, CRC(0669c78e) SHA1(0158fc4f90efa12d795b97873b8646c352864c69) )
2621 
2622 	ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2623 	ROM_LOAD( "fcu1_snd-0a.u40", 0x000000, 0x200000, CRC(448539bc) SHA1(9e53bd5e29d1a88bf634e58bfeebccd3a1c2d866) )
2624 ROM_END
2625 
2626 /***************************************************************************
2627 
2628               FUNCUBE (BET) Series PCB for chapters 2 through 5
2629 
2630 PCB Number: B0-006B (also known as EVA3_A system and is non-JAMMA)
2631 +------------------------------------------------+
2632 |+--+ S +---+ +---+                CN5           |
2633 ||  | W |   | |   |                          CN6?|
2634 ||  | 4 | U | | U |                              |
2635 ||  |   | 4 | | 4 |     +---+                CN2?|
2636 ||  |   | 2 | | 3 |     |DX |                    |
2637 ||  |   |   | |   |     |102|                    |
2638 ||C |   |   | |   |     +---+                    |
2639 ||N |   +---+ +---+                              |
2640 ||4 |                                            |
2641 ||  |      +----------+   M1                     |
2642 ||  |  M3  |          |                        C |
2643 ||  |      |   NEC    |   M1                   N |
2644 ||  |  M3  |  DX-101  |                        3 |
2645 ||  |      |          |                          |
2646 ||  |      |          |   50MHz                  |
2647 |+--+      +----------+                          |
2648 | PIC  25.447MHz         +-----------+           |
2649 |  CN7                   |    U47    |           |
2650 |                        +-----------+           |
2651 |          +-----------+  +---+ +---+       D    |
2652 |          |     U3    |  |OKI| |DX |       S    |
2653 |    M2    +-----------+  |   | |102|       W    |
2654 |                         +---+ +---+       1    |
2655 |                 ispLSI2032                     |
2656 |    M1                      +---+               |
2657 |          +----------+      |IDT|           +--+|
2658 |          |          |  C   |   |           |  ||
2659 | C        | ColdFire |  N   +---+           |  ||
2660 | N  M2    | XCF5206E |  8                   |  ||
2661 | 1        |          |        +---+         |C ||
2662 |          |          |        |H8 |         |N ||
2663 |    M1    +----------+        +---+      D  |9 ||
2664 |                         14.7456MHz      S  |  ||
2665 |                            +-----------+W  |  ||
2666 |            SW1      BAT1   |    U49    |2  +--+|
2667 |                            +-----------+       |
2668 +------------------------------------------------+
2669 
2670    CPU: ColdFire XCF5206EFT54 (160 Pin PQFP)
2671         Hitachi H8/3007 (64130007F20) used for touch screen I/O
2672  Video: NEC DX-101 (240 Pin PQFP)
2673         NEC DX-102 (52 Pin PQFP x2)
2674  Sound: OKI MSM9810B 8-Channel Mixing ADPCM Type Voice Synthesis LSI
2675    OSC: 50MHz, 25.447MHz & 14.7456MHz
2676  Other: Lattice ispLSI2032 - stamped "EVA3A"
2677         BAT1 - CR2032 3Volt
2678 
2679 ColdFire XCF5206EFT54:
2680   68K/ColdFire V2 core family
2681   8K internal SRAM
2682   54MHz (max) Bus Frequency
2683   32bit External Bus Width
2684   2 UART Serial Interfaces
2685   2 Timer Channels
2686 
2687 PIC - PIC12C508 MCU used for security
2688        Labeled FC21A for Funcube 2
2689        Labeled FC41A for Funcube 4
2690 
2691 Ram M1 are Toshiba TC55257DFL-70L
2692 Ram M2 are NEC D43001GU-70L
2693 Ram M3 are ISSI IS62C1024L-70Q
2694 IDT - IDT 7130 64-pin TQFP High-speed 1K x 8 Dual-Port Static RAM
2695 
2696 CN1 - Unused 64 pin double row connecter
2697 CN2?  2x2 connecter
2698 CN3 - Unused 50 pin double row connecter
2699 CN4 - 96 pin triple row connecter
2700 CN5 - 2x3 pin connecter
2701 CN6?  3x3 connecter
2702 CN7 - Unused 20 pin connecter
2703 CN8 - 8 pin single row connecter
2704 CN9 - 40 pin double row connecter
2705 
2706 DSW1 - 8 position dipswitch
2707 DSW2 - 2 position dipswitch
2708 SW1  - Pushbutton
2709 SW4  - Single position slider switch
2710 
2711 U3  - Is a 27C4002 EPROM
2712 U49 - Is a 27C1001 EPROM
2713 U42, U43 & U47 are mask ROMs read as 27C322
2714 
2715 The same H8/3007 code "FC21 IOPR-0" at U49 is used for FUNCUBE 2,3,4 & 5
2716 
2717 ***************************************************************************/
2718 
ROM_START(funcube2)2719 ROM_START( funcube2 )
2720 	ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2721 	ROM_LOAD( "fc21_prg-0b.u3", 0x00000, 0x80000, CRC(add1c8a6) SHA1(bf91518da659098a4bad4e756533525fcc910570) )
2722 
2723 	ROM_REGION( 0x20000, "sub", 0 )     // H8/3007 Code
2724 	ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2725 
2726 	ROM_REGION( 0x300, "pic", 0 )       // PIC12C508? Code
2727 	ROM_LOAD( "fc21a.u57", 0x000, 0x300, NO_DUMP )
2728 
2729 	ROM_REGION( 0x800000, "sprites", 0 )
2730 	ROM_LOAD32_WORD( "fc21_obj-0.u43", 0x000000, 0x400000, CRC(08cfe6d9) SHA1(d10f362dcde01f7a9855d8f76af3084b5dd1573a) )
2731 	ROM_LOAD32_WORD( "fc21_obj-1.u42", 0x000002, 0x400000, CRC(4c1fbc20) SHA1(ff83691c19ce3600b31c494eaec26d2ac79e0028) )
2732 
2733 	ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2734 	ROM_LOAD( "fc21_voi0.u47", 0x000000, 0x200000, CRC(4a49370a) SHA1(ac10e2c25626965b49475767ef5a0ec3ba9a2d01) )
2735 ROM_END
2736 
2737 ROM_START( funcube3 )
2738 	ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2739 	ROM_LOAD( "fc31_prg-0a.u4", 0x00000, 0x80000, CRC(ed7d70dd) SHA1(4ebfca9e60ab5e8de22821f0475abf515c83ce53) )
2740 
2741 	ROM_REGION( 0x20000, "sub", 0 )     // H8/3007 Code
2742 	ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2743 
2744 	ROM_REGION( 0x400, "pic", 0 )       // PIC12C508? Code
2745 	ROM_LOAD( "fc31a.u57", 0x000, 0x400, NO_DUMP )
2746 
2747 	ROM_REGION( 0x800000, "sprites", 0 )
2748 	ROM_LOAD32_WORD( "fc31_obj-0.u43", 0x000000, 0x400000, CRC(08c5eb6f) SHA1(016d8f3067db487ccd47188142743897c9722b1f) )
2749 	ROM_LOAD32_WORD( "fc31_obj-1.u42", 0x000002, 0x400000, CRC(4dadc76e) SHA1(cf82296b38dc22a618fd178816316af05f2459b3) )
2750 
2751 	ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2752 	ROM_LOAD( "fc31_snd-0.u47", 0x000000, 0x200000, CRC(36b03769) SHA1(20e583359421e0933c781a487fe5f7220052a6d4) )
2753 ROM_END
2754 
2755 ROM_START( funcube4 )
2756 	ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2757 	ROM_LOAD( "fc41_prg-0.u3", 0x00000, 0x80000, CRC(ef870874) SHA1(dcb8dc3f780ca135df55e4b4f3c95620597ad28f) )
2758 
2759 	ROM_REGION( 0x20000, "sub", 0 )     // H8/3007 Code
2760 	ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2761 
2762 	ROM_REGION( 0x300, "pic", 0 )       // PIC12C508? Code
2763 	ROM_LOAD( "fc41a", 0x000, 0x300, NO_DUMP )
2764 
2765 	ROM_REGION( 0x800000, "sprites", 0 )
2766 	ROM_LOAD32_WORD( "fc41_obj-0.u43", 0x000000, 0x400000, CRC(9ff029d5) SHA1(e057f4929aa745ecaf9d4ff7e39974c82e440146) )
2767 	ROM_LOAD32_WORD( "fc41_obj-1.u42", 0x000002, 0x400000, CRC(5ab7b087) SHA1(c600158b2358cdf947357170044dda2deacd4f37) )
2768 
2769 	ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2770 	ROM_LOAD( "fc41_snd0.u47", 0x000000, 0x200000, CRC(e6f7d2bc) SHA1(638c73d439eaaff8097cb0aa2684f9f7111bcade) )
2771 ROM_END
2772 
2773 ROM_START( funcube5 )
2774 	ROM_REGION( 0x80000, "maincpu", 0 ) // XCF5206 Code
2775 	ROM_LOAD( "fc51_prg-0.u4", 0x00000, 0x80000, CRC(4e34c2d8) SHA1(1ace4f6edab291e69e5c36b15193fba62f4a6773) )
2776 
2777 	ROM_REGION( 0x20000, "sub", 0 )     // H8/3007 Code
2778 	ROM_LOAD( "fc21_iopr-0.u49", 0x00000, 0x20000, CRC(314555ef) SHA1(b17e3926c8ef7f599856c198c330d2051aae13ad) )
2779 
2780 	ROM_REGION( 0x300, "pic", 0 )       // PIC12C508? Code
2781 	ROM_LOAD( "fc51a.u57", 0x000, 0x300, NO_DUMP )
2782 
2783 	ROM_REGION( 0x800000, "sprites", 0 )
2784 	ROM_LOAD32_WORD( "fc51_obj-0.u43", 0x000000, 0x400000, CRC(116624b3) SHA1(c0b3dbe0ea4a0808222616c3ef77b2d1194a970a) )
2785 	ROM_LOAD32_WORD( "fc51_obj-1.u42", 0x000002, 0x400000, CRC(35c6ec61) SHA1(424c9b66a2cdd5217d8a577d0179d1228112ee5b) )
2786 
2787 	ROM_REGION( 0x1000000, "oki", ROMREGION_ERASE00 )
2788 	ROM_LOAD( "fc51_snd-0.u47", 0x000000, 0x200000, CRC(2a504fe1) SHA1(911ad650bf48aa78d9cb3c64284aa526ceb519ba) )
2789 ROM_END
2790 
2791 void funcube_state::init_funcube()
2792 {
2793 	uint32_t *main_cpu = (uint32_t *) memregion("maincpu")->base();
2794 
2795 	main_cpu[0x064/4] = 0x0000042a; // PIC protection?
2796 }
2797 
init_funcube2()2798 void funcube_state::init_funcube2()
2799 {
2800 	uint32_t *main_cpu = (uint32_t *) memregion("maincpu")->base();
2801 
2802 	main_cpu[0xa5c/4] = 0x4e713e3c;       // PIC protection?
2803 	main_cpu[0xa74/4] = 0x4e713e3c;
2804 	main_cpu[0xa8c/4] = 0x4e7141f9;
2805 
2806 }
2807 
init_funcube3()2808 void funcube_state::init_funcube3()
2809 {
2810 	uint32_t *main_cpu = (uint32_t *) memregion("maincpu")->base();
2811 
2812 	main_cpu[0x008bc/4] = 0x4a804e71;
2813 	main_cpu[0x19f0c/4] = 0x4e714e71;
2814 	main_cpu[0x19fb8/4] = 0x4e714e71;
2815 
2816 }
2817 
2818 /***************************************************************************
2819 
2820 Guardians
2821 Banpresto, 1995
2822 
2823    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
2824  Video: NEC DX-101 (240 Pin PQFP, @ U10)
2825         NEC DX-102 (52 Pin PQFP x2, @ U28 & U45)
2826  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
2827    OSC: 50MHz
2828  Other: 8 Position Dipswitch x 2
2829         GAL 16V8 at U38
2830 
2831 Memory:
2832 M1 are HM628128LFP-10L at U42 & U43
2833 M2 is  W2465K-70LL at U27
2834 M3 are LH5168D-10L at U8 & U9
2835 M4 are CXK58257AM-10L at U6, U7, U13 & U14
2836 
2837 PCB Number: P-FG01-1
2838 +-----------------------------------------------------------+
2839 |             +------+      U  U             CN4*           |
2840 | VOL         |Seta  |   M  5  5            +--------------+|
2841 |             |X1-010|   2  8  7    +-+  M  |      U16     ||
2842 |             +------+      *  *    | |  1  +--------------+|
2843 +-+                                 |U|     +--------------+|
2844   |  +-++-++-++-+                   |3|     |      U20     ||
2845 +-+  | || || || |      M            |2|  M  +--------------+|
2846 |    |U||U||U||U| M M  4            | |  1  +--------------+|
2847 |J   |3||5||2||4| 3 3               +-+     |      U15     ||
2848 |A   | || || || |      M                    +--------------+|
2849 |M   +-++-++-++-+      4                    +--------------+|
2850 |M                                          |      U19     ||
2851 |A                                          +--------------+|
2852 |                                           +--------------+|
2853 |C                                          |      U18     ||
2854 |o                           +----------+   +--------------+|
2855 |n          +-------+        |          |   +--------------+|
2856 |n          |Toshiba|        |   NEC    |   |      U22     ||
2857 |e          |  TMP  |        |  DX-101  |   +--------------+|
2858 |c          | 68301 |        |          |   +--------------+|
2859 |t        U +-------+        |          |   |      U17     ||
2860 |e        5                  +----------+   +--------------+|
2861 |r        6                                 +--------------+|
2862 |         *                                 |      U21     ||
2863 +-+            +---+       U                +--------------+|
2864   |            |DX |       3  50MHz 32MHz*                  |
2865   |            |102|       8                                |
2866 +-+            +---+                    M  M   +---+        |
2867 |       SW1*   D D                      4  4   |DX |        |
2868 |              S S                             |102|        |
2869 |              W W                             +---+        |
2870 |              2 1                                          |
2871 +-----------------------------------------------------------+
2872 
2873 U56 is unpopulated 93C45 EEPROM
2874 SW1 is unpopulated Reset push button
2875 CN4 - 96 pin connector (3 rows by 32 pins)
2876 * Denotes not populated.
2877 
2878 Notes:
2879       HSync: 15.23kHz
2880       VSync: 58.5Hz
2881 
2882 NOTE:  There is known to exist an undumped version of Guardians on the
2883        P-FG01-1 PCB half as many but larger ROMs.
2884 
2885   The following sockets have double size ROMS:
2886    U4 & U5 - program ROMs
2887    U15, U16, U17 & U18 - graphics ROMS
2888   The following sockets are unpopulated:
2889    U2 & U3 - program ROMs
2890    U19, U20, U21 & U22 - graphics ROMS
2891 **********************************************************
2892 
2893 
2894  P0-113A PCB with P1-106-1 & P1-107-1 duaghtercards
2895 
2896  program ROMs verified to match the P-FG01-1 set
2897 
2898    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
2899  Video: Allumer X1-020 (208 Pin PQFP)
2900  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
2901    OSC: 50MHz, 32.530MHz
2902  Other: 8 Position Dipswitch x 2
2903         Reset Push Button at SW1
2904         93C46 EEPROM
2905 
2906 Memory:
2907 M1 are TC551001BFL-70L at U56 & U57
2908 M2 is  CY7C185-25PC at U27
2909 M3 are N341256P-20
2910 
2911 PCB Number: P0-113A  BP49KA
2912 +---------------------------------------------------------------+
2913 |             +------+            +---+                         |
2914 | VOL         |Seta  |          M |   |        +---------------+|
2915 |             |X1-010|          2 | U |     M  |KA2-001-014 U19||
2916 |             +------+            | 2 |     1  +---------------+|
2917 +-+                               | 8 |        +---------------+|
2918   |  +-++-+   +-++-+              |   |        |KA2-001-013 U17||
2919 +-+  | || |   | || |              +---+     M  +---------------+|
2920 |    |U||U| M |U||U| M                      1  +---------------+|
2921 |J   |3||5| 3 |2||4| 3                         |      U15      ||
2922 |A   | || |   | || |                           +---------------+|
2923 |M   +-++-+   +-++-+                           +---------------+|
2924 |M                                             |KA2-001-011 U20||
2925 |A                              +----------+   +---------------+|
2926 |                               |          |   +---------------+|
2927 |C                              | ALLUMER  |   |KA2-001-010 U18||
2928 |o     +---+                    | X1-020   |   +---------------+|
2929 |n     |   |  +-------+         |          |   +---------------+|
2930 |n     | U |  |Toshiba|         | 9426HK003|   |       U16*    ||
2931 |e C   | 7 |  |  TMP  |         +----------+   +---------------+|
2932 |c N   | 7 |  | 68301 |                        +---------------+|
2933 |t 2   |   |  +-------+                        |KA2-001-008 U23||
2934 |e     +---+                                   +---------------+|
2935 |r          93C46                              +---------------+|
2936 |                                              |KA2-001-007 U22||
2937 +-+                           50MHz 32.530MHz  +---------------+|
2938   |                                            +---------------+|
2939   |                    P P                     |      U21*     ||
2940 +-+  C                 A A       M M           +---------------+|
2941 |    N    DSW1         L L       3 3                            |
2942 |    1    DSW2 SW1     2 1                                      |
2943 +---------------------------------------------------------------+
2944 
2945 U2 is KA2 001 001 EPROM
2946 U4 is KA2 001 002 EPROM
2947 U5 is KA2 001 003 EPROM
2948 U3 is KA2 001 004 EPROM
2949 U28 is KA2-001-015 mask ROM (silkscreened SOUND ROM)
2950 U15 is socketted to receive P1-106-1 daughtercard
2951 U77 is socketted to receive P1-107-1 daughtercard
2952 CN2 - 5 Pin header
2953 CN1 - 10 Pin header
2954 PAL1 at U51 is KA-201  GAL16V8B
2955 PAL2 at U52 is KA-102  GAL16V8B
2956 * Denotes not populated.
2957 
2958 Notes:
2959       HSync: 15.19kHz
2960       VSync: 58.27Hz
2961 
2962 The daughtercards below are NOT to scale with the above main board.
2963 
2964 P1-107-1  (additional RAM)
2965 +-------------------------------+
2966 | 74LS32             JP5 JP6 JP7|
2967 | CXK58257AM-10L CXK58257AM-10L |
2968 |   +-----------------------+   |
2969 |   |U7 42 pin header to U77|   |
2970 |   +-----------------------+   |
2971 +-------------------------------+
2972 
2973 JP5 - JP7 single wire connections for power
2974 
2975 
2976 P1-106-1
2977 +-------------------------------+
2978 |  HD74HC373P       HD74HC373P  |
2979 |   +-----------------------+   |
2980 |   |U3 42 pin header to U15|   |
2981 |   +-----------------------+   |
2982 |   +-----------------------+   |
2983 |   |    KA2-001-017  U2    |   |
2984 |   +-----------------------+   |
2985 |   +-----------------------+   |
2986 |   |    KA2-001-016  U1    |   |
2987 |   +-----------------------+   |
2988 |JP1 JP2 JP3 JP4        74LS00  |
2989 +-------------------------------+
2990 
2991 JP1 - JP4 single wire connections for power
2992 
2993 ***************************************************************************/
2994 
2995 ROM_START( grdians ) /* P-FG01-1 PCB */
2996 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
2997 	ROM_LOAD16_BYTE( "u2.bin", 0x000000, 0x080000, CRC(36adc6f2) SHA1(544e87f88179fe1342e7a06a8948ac1828e85108) )
2998 	ROM_LOAD16_BYTE( "u3.bin", 0x000001, 0x080000, CRC(2704f416) SHA1(9081a12cbb9927d36e1c50b52aa2c6003810ee42) )
CRC(bb52447b)2999 	ROM_LOAD16_BYTE( "u4.bin", 0x100000, 0x080000, CRC(bb52447b) SHA1(61433f683210ab2bc2cf1cc4b5b7a39cc5b6493d) )
3000 	ROM_LOAD16_BYTE( "u5.bin", 0x100001, 0x080000, CRC(9c164a3b) SHA1(6d688c7af9e7e8e8d54b2e4dfbf41f59c79242eb) )
3001 
3002 	ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE)  // Sprites
3003 	ROM_LOAD64_WORD( "u16.bin",  0x0000000, 0x400000, CRC(6a65f265) SHA1(6cad11f718f8bbcff464d41eb4717460769237ed) )
3004 	ROM_LOAD64_WORD( "u15.bin",  0x0000002, 0x400000, CRC(01672dcd) SHA1(f61f60e3343cc5b6ccee391ee529966a141566db) )
3005 	ROM_LOAD64_WORD( "u18.bin",  0x0000004, 0x400000, CRC(967babf4) SHA1(42a6311576417c44aeaceb8ba6bb3cd7794e4882) )
3006 	ROM_LOAD64_WORD( "u17.bin",  0x0000006, 0x400000, CRC(0fad0629) SHA1(1bdc8e7c5e39e83d327f14a672ec81b049112da6) )
3007 	ROM_LOAD64_WORD( "u20.bin",  0x1800000, 0x200000, CRC(a7226ab7) SHA1(408580dd35c568ffef1ebbd87359e3ec1f867020) )
3008 	ROM_CONTINUE(                0x1000000, 0x200000 )
3009 	ROM_LOAD64_WORD( "u19.bin",  0x1800002, 0x200000, CRC(c0c998a0) SHA1(498fb1877527ed37412537f06a2c39ff0c60f146) )
3010 	ROM_CONTINUE(                0x1000002, 0x200000 )
3011 	ROM_LOAD64_WORD( "u22.bin",  0x1800004, 0x200000, CRC(6239997a) SHA1(87b6d6f30f152f625f82fd858c1290176c7e156e) )
3012 	ROM_CONTINUE(                0x1000004, 0x200000 )
3013 	ROM_LOAD64_WORD( "u21.bin",  0x1800006, 0x200000, CRC(6f95e466) SHA1(28482fad16a3ac9302f152d81552e6f84a44f3e4) )
3014 	ROM_CONTINUE(                0x1000006, 0x200000 )
3015 
3016 	ROM_REGION( 0x100000, "x1snd", 0 )  // Samples
3017 	ROM_LOAD( "u32.bin", 0x000000, 0x100000, CRC(cf0f3017) SHA1(8376d3a674f71aec72f52c72758fbc53d9feb1a1) )
3018 ROM_END
3019 
3020 ROM_START( grdiansa ) /* P0-113A PCB */
3021 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
3022 	ROM_LOAD16_BYTE( "ka2_001_001.u2", 0x000000, 0x080000, CRC(36adc6f2) SHA1(544e87f88179fe1342e7a06a8948ac1828e85108) ) // same program code as P-FG01-1 PCB above
3023 	ROM_LOAD16_BYTE( "ka2_001_004.u3", 0x000001, 0x080000, CRC(2704f416) SHA1(9081a12cbb9927d36e1c50b52aa2c6003810ee42) )
3024 	ROM_LOAD16_BYTE( "ka2_001_002.u4", 0x100000, 0x080000, CRC(bb52447b) SHA1(61433f683210ab2bc2cf1cc4b5b7a39cc5b6493d) )
3025 	ROM_LOAD16_BYTE( "ka2_001_003.u5", 0x100001, 0x080000, CRC(9c164a3b) SHA1(6d688c7af9e7e8e8d54b2e4dfbf41f59c79242eb) )
3026 
3027 	ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE)  // Sprites
3028 	ROM_LOAD64_WORD( "ka2-001-010.u18",  0x0800000, 0x200000, CRC(b3e6e95f) SHA1(c61d3def136f4bb6c5857740b0fbea64a98dd1dc) )
3029 	ROM_LOAD64_WORD( "ka2-001-013.u17",  0x0800002, 0x200000, CRC(9f7feb13) SHA1(0b3010faf87fb5bfe55101e5eabecec6107bf42f) )
3030 	ROM_LOAD64_WORD( "ka2-001-007.u22",  0x0800004, 0x200000, CRC(d1035051) SHA1(0bc8871b91e777009002e340e1cef92487234271) )
3031 	ROM_LOAD64_WORD( "ka2-001-016.u1",   0x0800006, 0x200000, CRC(99fc8efa) SHA1(eeaabb3b8d6c99a16c922a2b6ff0973935fd74bd) ) // located on P1-106-1 daughtercard
3032 	ROM_LOAD64_WORD( "ka2-001-011.u20",  0x1000000, 0x200000, CRC(676edca6) SHA1(32bb507d000e19b004251d24c5fe61a09486cdd1) )
3033 	ROM_LOAD64_WORD( "ka2-001-014.u19",  0x1000002, 0x200000, CRC(5465ef1b) SHA1(d1f0ff1950672444ece2fd86285a4051ea66f7bb) )
3034 	ROM_LOAD64_WORD( "ka2-001-008.u23",  0x1000004, 0x200000, CRC(b2c94f31) SHA1(09891516806e2e79673b8b787d8e1caa51523a79) )
3035 	ROM_LOAD64_WORD( "ka2-001-017.u2",   0x1000006, 0x200000, CRC(60ad7a2b) SHA1(a23c916959f3cfc8b1eead7a72c8312967b3acd7) ) // located on P1-106-1 daughtercard
3036 
3037 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3038 	ROM_LOAD( "ka2-001-015.u28", 0x000000, 0x200000, CRC(fa97cc54) SHA1(d9a869e9428e5f31aee917ea7733cca1247458f2) ) // Identical halves matching parent U32.BIN
3039 ROM_END
3040 
3041 /***************************************************************************
3042 
3043 MS Gundam Ex Revue
3044 Banpresto, 1994
3045 
3046 This game runs on Seta/Allumer hardware
3047 
3048    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3049  Video: Allumer X1-020 (208 Pin PQFP)
3050  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
3051    OSC: 50MHz, 32.530MHz
3052  Other: 8 Position Dipswitch x 2
3053         Reset Push Button at SW1
3054         93C46 EEPROM
3055 
3056 Memory:
3057 M1 are TC551001BFL-70L at U56 & U57
3058 M2 is  CY7C185-25PC at U27
3059 M3 are N341256P-20
3060 
3061 PCB Number: P0-113A  BP49KA
3062 +--------------------------------------------------------------+
3063 |             +------+            +---+                        |
3064 | VOL         |Seta  |          M |   |        +--------------+|
3065 |             |X1-010|          2 | U |     M  |KA-001-014 U19||
3066 |             +------+            | 2 |     1  +--------------+|
3067 +-+                               | 8 |        +--------------+|
3068   |  +-++-+   +-++-+              |   |        |KA-001-013 U17||
3069 +-+  | || |   | || |              +---+     M  +--------------+|
3070 |    |U||U| M |U||U| M                      1  +--------------+|
3071 |J   |3||5| 3 |2||4| 3                         |KA-001-012 U15||
3072 |A   | || |   | || |                           +--------------+|
3073 |M   +-++-+   +-++-+                           +--------------+|
3074 |M                                             |KA-001-011 U20||
3075 |A                              +----------+   +--------------+|
3076 |                               |          |   +--------------+|
3077 |C                              | ALLUMER  |   |KA-001-010 U18||
3078 |o     +---+                    | X1-020   |   +--------------+|
3079 |n     |   |  +-------+         |          |   +--------------+|
3080 |n     | U |  |Toshiba|         | 9426HK003|   |KA-001-009 U16||
3081 |e C   | 7 |  |  TMP  |         +----------+   +--------------+|
3082 |c N   | 7 |  | 68301 |                        +--------------+|
3083 |t 2   |   |  +-------+                        |KA-001-008 U23||
3084 |e     +---+                                   +--------------+|
3085 |r          93C46                              +--------------+|
3086 |                                              |KA-001-007 U22||
3087 +-+                           50MHz 32.530MHz  +--------------+|
3088   |                                            +--------------+|
3089   |                    P P                     |KA-001-006 U21||
3090 +-+  C                 A A       M M           +--------------+|
3091 |    N    DSW1         L L       3 3                           |
3092 |    1    DSW2 SW1                                             |
3093 +--------------------------------------------------------------+
3094 
3095 U28 is KA-001-015 mask ROM (silkscreened SOUND ROM)
3096 U77 is KA-001-005 mask ROM
3097 CN2 - 5 Pin header
3098 CN1 - 10 Pin header
3099 
3100       VSync: 60Hz
3101 
3102 ***************************************************************************/
3103 
3104 ROM_START( gundamex )
3105 	ROM_REGION( 0x600000, "maincpu", 0 )    // TMP68301 Code
3106 	ROM_LOAD16_BYTE(      "ka_002_002.u2",  0x000000, 0x080000, CRC(e850f6d8) SHA1(026325e305676b1f8d3d9e7573920f8b70d7bccb) )
3107 	ROM_LOAD16_BYTE(      "ka_002_004.u3",  0x000001, 0x080000, CRC(c0fb1208) SHA1(84b25e4c73cb8e023ee5dbf69f588be98700b43f) )
3108 	ROM_LOAD16_BYTE(      "ka_002_001.u4",  0x100000, 0x080000, CRC(553ebe6b) SHA1(7fb8a159513d31a1d60520ff14e4c4d133fd3e19) )
3109 	ROM_LOAD16_BYTE(      "ka_002_003.u5",  0x100001, 0x080000, CRC(946185aa) SHA1(524911c4c510d6c3e17a7ab42c7077c2fffbf06b) )
3110 	ROM_LOAD16_WORD_SWAP( "ka-001-005.u77", 0x500000, 0x080000, CRC(f01d3d00) SHA1(ff12834e99a76261d619f10d186f4b329fb9cb7a) )
3111 
3112 	ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE00)  // Sprites
3113 	ROM_LOAD64_WORD( "ka-001-009.u16",  0x0000000, 0x200000, CRC(997d8d93) SHA1(4cb4cdb7e8208af4b14483610d9d6aa5e13acd89) )
3114 	ROM_LOAD64_WORD( "ka-001-012.u15",  0x0000002, 0x200000, CRC(b789e4a8) SHA1(400b773f24d677a9d47466fdbbe68cb6efc1ad37) )
3115 	ROM_LOAD64_WORD( "ka-001-006.u21",  0x0000004, 0x200000, CRC(6aac2f2f) SHA1(fac5478ca2941a93c57f670a058ff626e537bcde) )
3116 	ROM_LOAD64_WORD( "ka-001-010.u18",  0x0800000, 0x200000, CRC(811b67ca) SHA1(c8cfae6f54c76d63bd625ff011c872ffb75fd2e2) )
3117 	ROM_LOAD64_WORD( "ka-001-013.u17",  0x0800002, 0x200000, CRC(d8a0201f) SHA1(fe8a2407c872adde8aec8e9340b00be4f00a2872) )
3118 	ROM_LOAD64_WORD( "ka-001-007.u22",  0x0800004, 0x200000, CRC(588f9d63) SHA1(ed5148d09d02e3bc12c50c39c5c86e6356b2dd7a) )
3119 	ROM_LOAD64_WORD( "ka-001-011.u20",  0x1000000, 0x200000, CRC(08a72700) SHA1(fb8003aa02dd249c30a757cb43b516260b41c1bf) )
3120 	ROM_LOAD64_WORD( "ka-001-014.u19",  0x1000002, 0x200000, CRC(7635e026) SHA1(116a3daab14a17faca85c4a956b356aaf0fc2276) )
3121 	ROM_LOAD64_WORD( "ka-001-008.u23",  0x1000004, 0x200000, CRC(db55a60a) SHA1(03d118c7284ca86219891c473e2a89489710ea27) )
3122 
3123 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3124 	ROM_LOAD( "ka-001-015.u28", 0x000000, 0x200000, CRC(ada2843b) SHA1(09d06026031bc7558da511c3c0e29187ea0a0099) )
3125 
3126 	ROM_REGION16_BE( 0x80, "eeprom", 0 )
3127 	ROM_LOAD( "eeprom.bin", 0x0000, 0x0080, CRC(80f8e248) SHA1(1a9787811e56d95f7acbedfb00225b6e7df265eb) )
3128 ROM_END
3129 
3130 /***************************************************************************
3131 
3132 Wakakusamonogatari Mahjong Yonshimai (JPN Ver.)
3133 (c)1996 Maboroshi Ware
3134 
3135 Board:  P0-123A
3136 
3137 CPU:    TMP68301 (68000 core)
3138 OSC:    50.0000MHz
3139         32.5304MHz
3140 
3141 Sound:  X1-010
3142 
3143 ***************************************************************************/
3144 
3145 ROM_START( mj4simai )
3146 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
3147 	ROM_LOAD16_BYTE( "ll.u2",       0x000000, 0x080000, CRC(7be9c781) SHA1(d29e579706d98909933f6bed2ee292c88ed10d2c) )
3148 	ROM_LOAD16_BYTE( "lh1.u3",      0x000001, 0x080000, CRC(82aa3f72) SHA1(a93d5dc7cdf12f852a692759d91f6f2951b6b5b5) )
3149 	ROM_LOAD16_BYTE( "hl.u4",       0x100000, 0x080000, CRC(226063b7) SHA1(1737baffc16ff7261f887911187ece96925fa6ff) )
3150 	ROM_LOAD16_BYTE( "hh.u5",       0x100001, 0x080000, CRC(23aaf8df) SHA1(b3d678afce4ddef32e48d690c6d07b723dd0c28f) )
3151 
3152 	ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE00 )   // Sprites
3153 	ROM_LOAD64_WORD( "cha-03.u16",  0x0000000, 0x400000, CRC(d367429a) SHA1(b32c215ef85c3d0a4c5550cef4f5c4c0e7030b7c) )
3154 	ROM_LOAD64_WORD( "cha-05.u15",  0x0000002, 0x400000, CRC(e94ec40a) SHA1(2685dbc5680b5f76688c6b4fbe40ae682c525bfe) )
3155 	ROM_LOAD64_WORD( "cha-01.u21",  0x0000004, 0x400000, CRC(35f47b37) SHA1(4a8eb088890272f2a069e2c3f00fadf6421f7b0e) )
3156 	ROM_LOAD64_WORD( "cha-04.u18",  0x1000000, 0x400000, CRC(7f2008c3) SHA1(e45d863540eb2381f5d7660d64cdfef87c890768) )
3157 	ROM_LOAD64_WORD( "cha-06.u17",  0x1000002, 0x400000, CRC(5cb0b3a9) SHA1(92fb82d45b4c46326d5796981f812e20a8ddb4f2) )
3158 	ROM_LOAD64_WORD( "cha-02.u22",  0x1000004, 0x400000, CRC(f6346860) SHA1(4eebd3fa315b97964fa39b88224f9de7622ba881) )
3159 
3160 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
3161 	ROM_LOAD( "cha-07.u32",  0x000000, 0x400000, CRC(817519ee) SHA1(ed09740cdbf61a328f7b50eb569cf498fb749416) )
3162 ROM_END
3163 
3164 /***************************************************************************
3165 
3166 Kosodate Quiz My Angel (JPN Ver.)
3167 (c)1996 Namco
3168 
3169    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3170  Video: NEC DX-101 (240 Pin PQFP, @ U10)
3171         NEC DX-102 (52 Pin PQFP x3, @ U28, U30 & U45)
3172  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
3173    OSC: 50MHz
3174  Other: 8 Position Dipswitch x 2
3175         Reset Push Button at SW1
3176         GAL 16V8 at U38
3177 
3178 Memory:
3179 M1 are HM628128LFP-10L at U42 & U43
3180 M2 is  W2465K-70LL at U27
3181 M3 are LH5168D-10L at U8 & U9 (unpopulated)
3182 M4 are CXK58257AM-10L at U6, U7, U13 & U14
3183 
3184 PCB Number:  namco KE / P0-125A
3185 +-----------------------------------------------------------+
3186 |             +------+      U  U             CN4*           |
3187 | VOL         |Seta  |   M  5  5            +--------------+|
3188 |             |X1-010|   2  8  7    +-+  M  | KQ1 CG0  U16 ||
3189 |             +------+      *  *    | |  1  +--------------+|
3190 +-+                                 |U|     +--------------+|
3191   |  +-++-++-++-+            BT1*   |3|     | KQ1 CG2  U20 ||
3192 +-+  | || || || |      M            |2|  M  +--------------+|
3193 |    |U||U||U||U| M M  4            | |  1  +--------------+|
3194 |J   |3||5||2||4| 3 3               +-+     | KQ1 CG1  U15 ||
3195 |A   | || || || | * *  M                    +--------------+|
3196 |M   +-++-++-++-+      4                    +--------------+|
3197 |M  C                                       | KQ1 CG3  U19 ||
3198 |A  N                                       +--------------+|
3199 |   1                                       +--------------+|
3200 |C  *                                       | KQ1 CG4  U18 ||
3201 |o                           +----------+   +--------------+|
3202 |n  C       +-------+        |          |   +--------------+|
3203 |n  N       |Toshiba|        |   NEC    |   | KQ1 CG6  U22 ||
3204 |e  2       |  TMP  |        |  DX-101  |   +--------------+|
3205 |c  *       | 68301 |        |          |   +--------------+|
3206 |t        U +-------+        |          |   | KQ1 CG5  U17 ||
3207 |e  C     5                  +----------+   +--------------+|
3208 |r  N     6                                 +--------------+|
3209 |   3     *                                 | KQ1 CG7  U21 ||
3210 +-+ * +---+    +---+       U                +--------------+|
3211   |   |DX |  S |DX |       3  50MHz 32MHz*                  |
3212   |   |102|  W |102|       8                                |
3213 +-+   +---+  1 +---+                    M  M   +---+        |
3214 |              D D                      4  4   |DX |        |
3215 |              S S                             |102|        |
3216 |              W W                             +---+        |
3217 |              2 1                                          |
3218 +-----------------------------------------------------------+
3219 
3220 U2 is KQ1 PRG E EPROM
3221 U3 is KQ1 PRG O EPROM
3222 U4 is KQ1 TBL E EPROM
3223 U5 is KQ1 TBL O EPROM
3224 U32 is KG SND mask ROM (silkscreened SOUND ROM)
3225 
3226 CN1 unpopulated 7 pin header
3227 CN2 unpopulated 5 pin header
3228 CN3 unpopulated 10 pin header
3229 BT1 is unpopulated battery
3230 U56 is unpopulated 93C45 EEPROM
3231 CN4 - 96 pin connector (3 rows by 32 pins)
3232 * Denotes not populated.
3233 
3234 ***************************************************************************/
3235 
3236 ROM_START( myangel )
3237 	ROM_REGION( 0x200000, "maincpu", 0 )        // TMP68301 Code
3238 	ROM_LOAD16_BYTE( "kq1-prge.u2", 0x000000, 0x080000, CRC(6137d4c0) SHA1(762341e11b56e4a7787a0662833b702b78aee0a9) )
3239 	ROM_LOAD16_BYTE( "kq1-prgo.u3", 0x000001, 0x080000, CRC(4aad10d8) SHA1(a08e1c4f57c64be829e0807ae2791da947fd60aa) )
3240 	ROM_LOAD16_BYTE( "kq1-tble.u4", 0x100000, 0x080000, CRC(e332a514) SHA1(dfd255239c80c48c9865e70681b9ddd175b8bf55) )
3241 	ROM_LOAD16_BYTE( "kq1-tblo.u5", 0x100001, 0x080000, CRC(760cab15) SHA1(fa7ea85ec2ebfaab3111b8631ea6ea3d794d449c) )
3242 
3243 	ROM_REGION( 0x1000000, "sprites", 0 )   // Sprites
3244 	ROM_LOAD64_WORD( "kq1-cg2.u20", 0x000000, 0x200000, CRC(80b4e8de) SHA1(c8685c4f4e3c0415ce0ec88e0288835e504cab00) )
3245 	ROM_LOAD64_WORD( "kq1-cg3.u19", 0x000002, 0x200000, CRC(9bdc35c9) SHA1(fd0a1eb3dd10705bce5462263667353632558b58) )
3246 	ROM_LOAD64_WORD( "kq1-cg6.u22", 0x000004, 0x200000, CRC(b25acf12) SHA1(5cca35921f3b376c3cc36f5b009eb845db2e1897) )
3247 	ROM_LOAD64_WORD( "kq1-cg7.u21", 0x000006, 0x200000, CRC(9f48382c) SHA1(80dfc33a55123b5d3cdb3ed97b43a527f0254d61) )
3248 	ROM_LOAD64_WORD( "kq1-cg0.u16", 0x800000, 0x200000, CRC(f8ae9a05) SHA1(4f3b41386a48a1608aa96b911e6b74ca775260fb) )
3249 	ROM_LOAD64_WORD( "kq1-cg1.u15", 0x800002, 0x200000, CRC(23bd7ea4) SHA1(e925bbadc33fc2586bb18283cf989ab35f28c1e9) )
3250 	ROM_LOAD64_WORD( "kq1-cg4.u18", 0x800004, 0x200000, CRC(dca7f8f2) SHA1(20595c7940a28d01bdc6610b67aaaeac61ba92e2) )
3251 	ROM_LOAD64_WORD( "kq1-cg5.u17", 0x800006, 0x200000, CRC(a4bc4516) SHA1(0eb11fa54d16bba1b96f9dd943a68949a3bb9a2f) )
3252 
3253 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3254 	ROM_LOAD( "kq1-snd.u32", 0x000000, 0x200000, CRC(8ca1b449) SHA1(f54096fb5400843af4879135c96760485b6cb319) )
3255 ROM_END
3256 
3257 /***************************************************************************
3258 
3259 Kosodate Quiz My Angel 2 (JPN Ver.)
3260 (c)1997 Namco
3261 
3262 Board:  KL (Namco) ; P0-136A (Seta)
3263 
3264 CPU:    TMP68301 (68000 core)
3265 OSC:    50.0000MHz
3266         32.5304MHz
3267 
3268 Sound:  X1-010
3269 
3270 ***************************************************************************/
3271 
3272 ROM_START( myangel2 )
3273 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
3274 	ROM_LOAD16_BYTE( "kqs1ezpr.u2", 0x000000, 0x080000, CRC(2469aac2) SHA1(7dade2de31252e305d24c659c4801dd4687ad1f6) )
3275 	ROM_LOAD16_BYTE( "kqs1ozpr.u3", 0x000001, 0x080000, CRC(6336375c) SHA1(72089f77e94832e74e0512944acadeccd0dec8b0) )
3276 	ROM_LOAD16_BYTE( "kqs1e-tb.u4", 0x100000, 0x080000, CRC(e759b4cc) SHA1(4f806a144a47935b2710f8af800ec0d771f12a18) )
3277 	ROM_LOAD16_BYTE( "kqs1o-tb.u5", 0x100001, 0x080000, CRC(b6168737) SHA1(4c3de877c0c1dca1c43ac737a0bf231335237d3a) )
3278 
3279 	ROM_REGION( 0x1800000, "sprites", 0 )   // Sprites
3280 	ROM_LOAD64_WORD( "kqs1-cg4.u20", 0x0000000, 0x200000, CRC(d1802241) SHA1(52c45a13d46f7ee8043e85b99d07b1765ca93dcc) )
3281 	ROM_LOAD64_WORD( "kqs1-cg5.u19", 0x0000002, 0x200000, CRC(d86cf19c) SHA1(da5a5b576ce107433605b24d8b9dcd0abd46bcde) )
3282 	ROM_LOAD64_WORD( "kqs1-cg6.u22", 0x0000004, 0x200000, CRC(3f08886b) SHA1(054546ae44ffa5d0973f4ead080fe720a340e144) )
3283 	ROM_LOAD64_WORD( "kqs1-cg7.u21", 0x0000006, 0x200000, CRC(2c977904) SHA1(2589447f2471cdc414266b34aff552044c680d93) )
3284 	ROM_LOAD64_WORD( "kqs1-cg0.u16", 0x0800000, 0x400000, CRC(c21a33a7) SHA1(bc6f479a8f4c716ba79a725f160ddeb95fdedbcb) )
3285 	ROM_LOAD64_WORD( "kqs1-cg1.u15", 0x0800002, 0x400000, CRC(dca799ba) SHA1(8379b11472c27b1945fe7fc274c7fedf756accba) )
3286 	ROM_LOAD64_WORD( "kqs1-cg2.u18", 0x0800004, 0x400000, CRC(f7f92c7e) SHA1(24a525a15fded0de6e382b346da6bd5e7b9eced5) )
3287 	ROM_LOAD64_WORD( "kqs1-cg3.u17", 0x0800006, 0x400000, CRC(de3b2191) SHA1(d7d6ea07b665cfd834747d3c0776b968ce03bc6a) )
3288 
3289 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
3290 	ROM_LOAD( "kqs1-snd.u32", 0x000000, 0x400000, CRC(792a6b49) SHA1(341b4e8f248b5032217733bada32e353c67e3888) )
3291 ROM_END
3292 
3293 /***************************************************************************
3294 
3295   Namco Stars
3296 
3297   EVA2B PCB (8829970101 P0-140B Serial Z033):
3298 
3299   TMP68301AF-16 CPU
3300   DX101
3301   DX102 x 2
3302   OKI M9810
3303   GAL 16V8d x 2
3304   MAX232
3305   DSW8
3306   Coin Battery
3307   Reset Button
3308   OSC: 25.447 MHz @ XM1, 50.000 MHz @ XM2, 32.53005 MHz @ X2
3309   Volume Trimmer
3310 
3311 ***************************************************************************/
3312 
3313 ROM_START( namcostr )
3314 	ROM_REGION( 0x80000, "maincpu", 0 ) // TMP68301 Code
3315 	ROM_LOAD( "ns1mpr0.u08", 0x00000, 0x80000, BAD_DUMP CRC(008d23fe) SHA1(8c77a34dd0285c06809e99d20b9d8b31b81bfc68) )  // FIXED BITS (xxxxx1xxxxxxxxxx)
3316 
3317 	ROM_REGION( 0x800000, "sprites", 0 )
3318 	ROM_LOAD32_WORD( "ns1cha0.u39", 0x000000, 0x400000, BAD_DUMP CRC(372d1651) SHA1(355553992e5a474ae1e45bcdeb88804d5b75f802) ) // FIXED BITS (xxxxx1xxxxxxxxxx)
3319 	ROM_LOAD32_WORD( "ns1cha1.u38", 0x000002, 0x400000, BAD_DUMP CRC(82e67809) SHA1(6b25726cd3683e1691e4d4e1628c13998f20933d) ) // FIXED BITS (xxxxx1xxxxxxxxxx)
3320 
3321 	ROM_REGION( 0x1000000, "oki", 0 )
3322 	ROM_LOAD( "ns1voi0.u40", 0x000000, 0x400000, BAD_DUMP CRC(fe5c2b16) SHA1(21e4423cc91e8833297d4588343237b8b3155196) )    // FIXED BITS (xxxxx1xxxxxxxxxx)
3323 ROM_END
3324 
3325 void seta2_state::init_namcostr()
3326 {
3327 	// attempt to patch a few of the stuck bits
3328 	uint16_t *cpurom = &memregion("maincpu")->as_u16(0);
3329 	for (offs_t addr = 0x00000; addr < 0x00100; addr += 2)
3330 		cpurom[addr / 2] &= 0xfbff;
3331 	for (offs_t addr = 0x00100; addr < 0x00180; addr += 2)
3332 		if (!BIT(cpurom[addr / 2], 9))
3333 			cpurom[addr / 2] &= 0xfbff;
3334 	cpurom[0x00184 / 2] &= 0xfbff;
3335 	for (offs_t addr = 0x00204; addr < 0x002ae; addr += 2)
3336 		cpurom[addr / 2] &= 0xfbff;
3337 	for (offs_t addr = 0x002b0; addr < 0x0032c; addr += 2)
3338 		cpurom[addr / 2] &= 0xfbff;
3339 	cpurom[0x00332 / 2] &= 0xfbff;
3340 	for (offs_t addr = 0x00336; addr < 0x00344; addr += 2)
3341 		cpurom[addr / 2] &= 0xfbff;
3342 	for (offs_t addr = 0x00348; addr < 0x00364; addr += 2)
3343 		cpurom[addr / 2] &= 0xfbff;
3344 	for (offs_t addr = 0x00368; addr < 0x00370; addr += 2)
3345 		cpurom[addr / 2] &= 0xfbff;
3346 	for (offs_t addr = 0x00374; addr < 0x003ae; addr += 2)
3347 		cpurom[addr / 2] &= 0xfbff;
3348 	for (offs_t addr = 0x003b0; addr < 0x00400; addr += 2)
3349 		cpurom[addr / 2] &= 0xfbff;
3350 }
3351 
3352 /***************************************************************************
3353 
3354                             Puzzle De Bowling (Japan)
3355 
3356 (c)1999 MOSS / Nihon System
3357 
3358    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3359  Video: NEC DX-101 (240 Pin PQFP)
3360         NEC DX-102 (52 Pin PQFP x3)
3361  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP)
3362    OSC: 50MHz & 32.53047MHz
3363  Other: 8 Position Dipswitch x 2
3364         Reset Push Button at SW1
3365         Lattice ispLSI2032 - stamped "KUDEC"
3366 
3367 PCB Number: P0-142A
3368 +-----------------------------------------------------------+
3369 |                VOL                       +------+         |
3370 |                                          |Seta  |     M1  |
3371 |   +---+ +---+                            |X1-010|         |
3372 |   |   | |   |  U4*  M                    |      |  +---+  |
3373 +-+ | U | | U |       1                    +------+  | K |  |
3374   | | 0 | | 0 |                     U30*             | U |  |
3375 +-+ | 7 | | 6 |  U5*  M                              | S |  |
3376 |   |   | |   |       1                              |   |  |
3377 |   +---+ +---+                                      | U |  |
3378 |                                          Lattice   | 1 |  |
3379 |J  D D  +---+                            ispLSI2032 | 8 |  |
3380 |A  S S  |DX |                  +-------+            +---+  |
3381 |M  W W  |102|                  |Toshiba|     CN2           |
3382 |M  1 2  +---+      BAT1*       |  TMP  |                   |
3383 |A                              | 68301 |  U50*             |
3384 |                               +-------+                   |
3385 |C                                                          |
3386 |o                 50MHz        +----------+     XM2*       |
3387 |n    +---+                     |          |                |
3388 |n    |DX |     SW1             |   NEC    |    M   M       |
3389 |e    |102|                     |  DX-101  |    2   2       |
3390 |c    +---+         M  M        |          |                |
3391 |t                  1  1        |          |                |
3392 |e                              +----------+                |
3393 |r                                                          |
3394 |                             +---+      +---++---++---+    |
3395 |                             | K |      | K || K || K |    |
3396 |     +---+                   | U |      | U || U || U |    |
3397 +-+   |DX |                   | C |      | C || C || C |    |
3398   |   |102|     32.53047MHz   |   |      |   ||   ||   |    |
3399 +-+   +---+                   | U |      | U || U || U |    |
3400 |                             | 4 |      | 4 || 3 || 3 |    |
3401 |                             | 0 |      | 1 || 8 || 9 |    |
3402 |                             +---+      +---++---++---+    |
3403 +-----------------------------------------------------------+
3404 
3405 * Unpopulated:
3406   U4 & U5 RAM HM62256 equivalent
3407   U50 93LC46BX EEPROM
3408   U30 74HC00
3409   BAT1 CR2032 3Volt battery
3410   XM2 OSC
3411 
3412 Ram M1 are NEC D43001GU-70LL
3413 Ram M2 are LGS GM76C8128ALLFW70
3414 
3415 KUP-U06-I03 U06 Program rom ST27C4001 (even)
3416 KUP-U07-I03 U07 Program rom ST27C4001 (odd)
3417 
3418 KUS-U18-I00 U18 Mask rom (Samples 23C32000 32Mbit)
3419 
3420 KUC-U38-I00 U38 Mask rom (Graphics 23C32000 32Mbit)
3421 KUC-U39-I00 U39 Mask rom (Graphics 23C32000 32Mbit)
3422 KUC-U40-I00 U40 Mask rom (Graphics 23C32000 32Mbit)
3423 KUC-U41-I00 U41 Mask rom (Graphics 23C32000 32Mbit)
3424 
3425 ***************************************************************************/
3426 
3427 ROM_START( pzlbowl )
3428 	ROM_REGION( 0x100000, "maincpu", 0 )    // TMP68301 Code
3429 	ROM_LOAD16_BYTE( "kup-u06.i03", 0x000000, 0x080000, CRC(314e03ac) SHA1(999398e55161dd75570d418f4c9899e3bf311cc8) )
CRC(a0423a04)3430 	ROM_LOAD16_BYTE( "kup-u07.i03", 0x000001, 0x080000, CRC(a0423a04) SHA1(9539023c5c2f2bf72ee3fb6105443ffd3d61e2f8) )
3431 
3432 	ROM_REGION( 0x1000000, "sprites", 0 )   // Sprites
3433 	ROM_LOAD64_WORD( "kuc-u38.i00", 0x000000, 0x400000, CRC(3db24172) SHA1(89c39963e15c53b799994185d0c8b2e795478939) )
3434 	ROM_LOAD64_WORD( "kuc-u39.i00", 0x000002, 0x400000, CRC(9b26619b) SHA1(ea7a0bf46641d15353217b01e761d1a148bee4e7) )
3435 	ROM_LOAD64_WORD( "kuc-u40.i00", 0x000004, 0x400000, CRC(7e49a2cf) SHA1(d24683addbc54515c33fb620ac500e6702bd9e17) )
3436 	ROM_LOAD64_WORD( "kuc-u41.i00", 0x000006, 0x400000, CRC(2febf19b) SHA1(8081ac590c0463529777b5e4817305a1a6f6ea41) )
3437 
3438 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
3439 	ROM_LOAD( "kus-u18.i00", 0x000000, 0x400000, CRC(e2b1dfcf) SHA1(fb0b8be119531a1a27efa46ed7b86b05a37ed585) )
3440 ROM_END
3441 
3442 /***************************************************************************
3443 
3444 Penguin Brothers / 轟天雷 (A-Blast)
3445 (c)2000 Subsino
3446 
3447    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3448  Video: NEC DX-101 (240 Pin PQFP)
3449         NEC DX-102 (52 Pin PQFP x3)
3450  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP)
3451    OSC: 50MHz, 32.53047MHz & 28MHz
3452  Other: 8 Position Dipswitch x 2
3453         Reset Push Button at SW1
3454         Lattice ispLSI2032
3455 
3456 PCB Number: P0-142A
3457 +-----------------------------------------------------------+
3458 |                VOL                       +------+         |
3459 |                                          |Seta  |     M1  |
3460 |   +---+ +---+                            |X1-010|         |
3461 |   |   | |   |   M   M                    |      |  +---+  |
3462 +-+ | U | | U |   1   1                    +------+  |   |  |
3463   | | 0 | | 0 |                    74HC00            |   |  |
3464 +-+ | 7 | | 6 |   M   M                              | U |  |
3465 |   |   | |   |   1   1                              | 1 |  |
3466 |   +---+ +---+                                      | 8 |  |
3467 |                                          Lattice   |   |  |
3468 |J  D D  +---+                            ispLSI2032 |   |  |
3469 |A  S S  |DX |                  +-------+            +---+  |
3470 |M  W W  |102|                  |Toshiba|     CN2           |
3471 |M  1 2  +---+      BAT1*       |  TMP  |                   |
3472 |A                              | 68301 |  U50*             |
3473 |                               +-------+                   |
3474 |C                                                          |
3475 |o                 50MHz        +----------+     28MHz      |
3476 |n    +---+                     |          |                |
3477 |n    |DX |     SW1             |   NEC    |    M   M       |
3478 |e    |102|                     |  DX-101  |    2   2       |
3479 |c    +---+         M  M        |          |                |
3480 |t                  1  1        |          |                |
3481 |e                              +----------+                |
3482 |r                                                          |
3483 |                             +---+      +---++---++---+    |
3484 |                             |   |      |   ||   ||   |    |
3485 |     +---+                   |   |      |   ||   ||   |    |
3486 +-+   |DX |                   | U |      | U || U || U |    |
3487   |   |102|     32.53047MHz   | 4 |      | 4 || 3 || 3 |    |
3488 +-+   +---+                   | 0 |      | 1 || 8 || 9 |    |
3489 |                             |   |      |   ||   ||   |    |
3490 |                             |   |      |   ||   ||   |    |
3491 |                             +---+      +---++---++---+    |
3492 +-----------------------------------------------------------+
3493 
3494 Notes:  pzlbowl PCB with these extra parts:
3495         28MHz OSC
3496         2x 62256 SRAM
3497         74HC00
3498 
3499 U50  Unpopulated 93LC46BX EEPROM
3500 BAT1 Unpopulated CR2032 3 Volt battery
3501 * Denotes not populated.
3502 
3503 Ram M1 are NEC D43001GU-70LL
3504 Ram M2 are LGS GM76C8128ALLFW70
3505 
3506 Notes about sets:
3507 penbros: Original Japanese version with Japan region warning, title screen and all game text
3508          in Japanese. However the Subsino logo is the wrong color
3509  ablast: Title screen is in traditional Chinese. ROM labels imply Taiwan with "TWN" printed
3510          on them. The region warning states Japan only & all game text is in Japanese. Lastly
3511          the Subsino logo has correct color. The bootleg is a copy of A-Blast.
3512 ***************************************************************************/
3513 
3514 ROM_START( penbros ) // Genuine P0-142A PCB & original ROM labels
3515 	ROM_REGION( 0x100000, "maincpu", 0 )    // TMP68301 Code
3516 	ROM_LOAD16_BYTE( "a-blast_jpn_u06.u06", 0x000000, 0x080000, CRC(7bbdffac) SHA1(d5766cb171b8d2e4c04a6bae37181fa5ada9d797) )
3517 	ROM_LOAD16_BYTE( "a-blast_jpn_u07.u07", 0x000001, 0x080000, CRC(d50cda5f) SHA1(fc66f55f2070b447c5db85c948ce40adc37512f7) )
3518 
3519 	ROM_REGION( 0x1000000, "sprites", ROMREGION_ERASE00 )   // Sprites
3520 	ROM_LOAD64_WORD( "a-blast_jpn_u38.u38", 0x000000, 0x400000, CRC(4247b39e) SHA1(f273931293beced312e02c870bf35e9cf0c91a8b) )
3521 	ROM_LOAD64_WORD( "a-blast_jpn_u39.u39", 0x000002, 0x400000, CRC(f9f07faf) SHA1(66fc4a9ad422fb384d2c775e43619137226898fc) )
3522 	ROM_LOAD64_WORD( "a-blast_jpn_u40.u40", 0x000004, 0x400000, CRC(dc9e0a96) SHA1(c2c8ccf9039ee0e179b08fdd2d37f29899349cda) )
3523 	// 6bpp instead of 8bpp
3524 
3525 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3526 	ROM_LOAD( "a-blast_jpn_u18.u18", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
3527 ROM_END
3528 
3529 ROM_START( ablast ) // Genuine P0-142A PCB & original ROM labels
3530 	ROM_REGION( 0x100000, "maincpu", 0 )    // TMP68301 Code
3531 	ROM_LOAD16_BYTE( "a-blast_twn_u06.u06", 0x000000, 0x080000, CRC(e62156d7) SHA1(509fd41a0109dc5c00d83250383d578fd75502f3) )
3532 	ROM_LOAD16_BYTE( "a-blast_twn_u07.u07", 0x000001, 0x080000, CRC(d4ddc16b) SHA1(63312ce9ec6dffb47aa6aed505f077f20713e5ac) )
3533 
3534 	ROM_REGION( 0x1000000, "sprites", 0 )   // Sprites
3535 	ROM_LOAD64_WORD( "a-blast_twn_u38.u38", 0x000000, 0x400000, CRC(090923da) SHA1(c1eaa8847fe183819af040d97d0e6d1cd9928991) )
3536 	ROM_LOAD64_WORD( "a-blast_twn_u39.u39", 0x000002, 0x400000, CRC(6bb17d83) SHA1(b53d8cfc3833df937b92993f9eca17c805c5f58d) )
3537 	ROM_LOAD64_WORD( "a-blast_twn_u40.u40", 0x000004, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
3538 	// 6bpp instead of 8bpp
3539 
3540 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3541 	ROM_LOAD( "a-blast_twn_u18.u18", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
3542 ROM_END
3543 
3544 ROM_START( ablastb ) // bootleg PCB with standard 68000 instead of TMP68301 and 4 FPGAs (3 A40MX04 and 1 A54SX16A)
3545 	ROM_REGION( 0x100000, "maincpu", 0 )
3546 	ROM_LOAD16_WORD_SWAP( "1.bin", 0x000000, 0x100000, CRC(4adbd826) SHA1(004e3d0d5cb44c00283bc02f6d727e023690226d) )
3547 
3548 	ROM_REGION( 0x1000000, "sprites", 0 )   // Sprites
3549 	ROM_LOAD64_WORD( "2.bin", 0x000000, 0x400000, CRC(090923da) SHA1(c1eaa8847fe183819af040d97d0e6d1cd9928991) )
3550 	ROM_LOAD64_WORD( "3.bin", 0x000002, 0x400000, CRC(6bb17d83) SHA1(b53d8cfc3833df937b92993f9eca17c805c5f58d) )
3551 	ROM_LOAD64_WORD( "4.bin", 0x000004, 0x400000, CRC(db94847d) SHA1(fd2e29a45bb0acbd9e709256c7fc27bdd64a6634) )
3552 	// 6bpp instead of 8bpp
3553 
3554 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples. ROM content matches the penbros' one, but there's no proper X1-010 on the PCB. Possibly one of the FPGAs acts as a substitute?
3555 	ROM_LOAD( "29f1610.bin", 0x000000, 0x200000, CRC(de4e65e2) SHA1(82d4e590c714b3e9bf0ffaf1500deb24fd315595) )
3556 ROM_END
3557 
3558 /***************************************************************************
3559 
3560 Reel'N Quake!
3561 
3562    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3563  Video: NEC DX-101 (240 Pin PQFP, @ U10)
3564         NEC DX-102 (52 Pin PQFP x3, @ U28, U30 & U45)
3565  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
3566    OSC: 50MHz & 28MHz
3567  Other: 8 Position Dipswitch x 2
3568         Reset Push Button at SW1
3569         3.6V Battery at BT1
3570         GAL 16V8 - labeled "KF-001" at U38
3571 
3572 Memory:
3573 M1 are TC551001BFL-70L at U42 & U43
3574 M2 is  W2465K-70LL at U27
3575 M3 are LH5168D-10L at U8 & U9
3576 M4 are UT62256SC-70L at U6, U7, U13 & U14
3577 
3578 PCB Number: P-FG-02
3579 +-----------------------------------------------------------+
3580 |             +------+      U  U                            |
3581 | VOL         |Seta  |   M  5  5            +--------------+|
3582 |             |X1-010|   2  8  7    +-+  M  |KF-001-005 U16||
3583 |             +------+      *  *    | |  1  +--------------+|
3584 +-+                                 |U|                     |
3585   |  +-+    +-+           BT1       |3|            U20*     |
3586 +-+  | |    | |         M           |2|  M                  |
3587 |  C |U| U  |U| U  M M  4           | |  1  +--------------+|
3588 |J N |3| 5  |2| 4  3 3              +-+     |KF-001-006 U15||
3589 |A 1 | | *  | | *       M                   +--------------+|
3590 |M   +-+    +-+         4                                   |
3591 |M C                                               U19*     |
3592 |A N                                                        |
3593 |  2                                        +--------------+|
3594 |C 1                                        |KF-001-007 U18||
3595 |o                           +----------+   +--------------+|
3596 |n C        +-------+        |          |                   |
3597 |n N        |Toshiba|        |   NEC    |          U22*     |
3598 |e 2        |  TMP  |        |  DX-101  |                   |
3599 |c 2        | 68301 |        |          |   +--------------+|
3600 |t        U +-------+        |          |   |KF-001-008 U17||
3601 |e C      5                  +----------+   +--------------+|
3602 |r N      6                                                 |
3603 |  3      *                                        U21*     |
3604 +-+   +---+    +---+       U  50MHz 32MHz*                  |
3605   |   |DX |  S |DX |       3                                |
3606   |   |102|  W |102|       8                   +---+   28MHz|
3607 +-+   +---+  1 +---+                    M  M   |DX |        |
3608 |              D D                      4  4   |102|        |
3609 |              S S                             +---+        |
3610 |              W W                                          |
3611 |              2 1                                          |
3612 +-----------------------------------------------------------+
3613 
3614 CN1   - 7 Pin connector
3615 CN2-1 - 3 Pin connector
3616 CN2-2 - 3 Pin connector
3617 CN3   - 10 Pin connector (used for extra buttons)
3618 
3619 U56 is unpopulated 93C45 EEPROM
3620 * Denotes not populated.
3621 
3622     U3-U5 silkscreened 27C4001
3623   U57-U58 silkscreened 23C8001E
3624   U15-U22 silkscreened 23C32000
3625       U32 silkscreened 23C32000
3626 
3627 Note:
3628   The PCB is silkscreened with 23C32000 which would be equal to the 27C322.
3629   The graphics roms dumped that way have the first half as a bad mirror
3630   of the second half (even <- odd, odd <- FF). They seem OK dumped as 27C160.
3631 
3632 Program ROMs:
3633   Labeled roms (undumped) have been seen as KF003002 & KF003004, which
3634   revision do have?
3635 
3636 V1.05 program roms have been seen with labels dated 12/17/97
3637 
3638 Reel'N Quake! is also known to be available on the P-FG-03 PCB which is
3639  essentially the same layout as the P-FG-02 but with standard 8-liner
3640  edge connectors. Program rom labels for this (undumped) set are:
3641 
3642    KFP       KFP
3643    U02  and  U03
3644    C00       C00
3645 
3646 ***************************************************************************/
3647 
3648 ROM_START( reelquak )
3649 	ROM_REGION( 0x100000, "maincpu", 0 )    // TMP68301 Code
3650 	ROM_LOAD16_BYTE( "rq_ver1.05.u2", 0x00000, 0x80000, CRC(7740d7a4) SHA1(21c28db5d4d7eea5a2506cb51b58533eba28c2cb) ) // Should be KF00x002, x = revision
3651 	ROM_LOAD16_BYTE( "rq_ver1.05.u3", 0x00001, 0x80000, CRC(8c78889e) SHA1(584ba123e9caafdbddc96a4d9b2b6f6994fa84b0) ) // Should be KF00x004, x = revision
3652 
3653 	ROM_REGION( 0x800000, "sprites", 0 )    // Sprites
3654 	ROM_LOAD64_WORD( "kf-001-005_t42.u16", 0x000000, 0x200000, CRC(25e07d5c) SHA1(dd0818611f39be25dc6f0c737da4e79c6c0f9659) )
3655 	ROM_LOAD64_WORD( "kf-001-006_t43.u15", 0x000002, 0x200000, CRC(67e2ecc4) SHA1(35cdaf7fcd29e0229da104baced41fa7620dba3d) )
3656 	ROM_LOAD64_WORD( "kf-001-007_t44.u18", 0x000004, 0x200000, CRC(9daec83d) SHA1(07de144898deac5058d05466f29682d7840323b7) )
3657 	ROM_LOAD64_WORD( "kf-001-008_t45.u17", 0x000006, 0x200000, CRC(f6ef6e41) SHA1(c3e838dd4dc340f44abdf45ec0b90de24f50dda9) )
3658 
3659 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3660 	ROM_LOAD( "kf-001-009_t46.u32", 0x000000, 0x200000, CRC(2a9641f9) SHA1(efb9df78f1877eddf29c4dae2461546adb9cea8f) )
3661 
3662 	ROM_REGION( 0x117, "plds", 0 )
3663 	ROM_LOAD( "gal16v8_kf-001.u38", 0x000, 0x117, NO_DUMP )
3664 ROM_END
3665 
3666 /***************************************************************************
3667 
3668 Endless Riches
3669 (c) 199? E.N.Tiger
3670 
3671    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3672  Video: NEC DX-101 (240 Pin PQFP, @ U10)
3673         NEC DX-102 (52 Pin PQFP x3, @ U28, U30 & U45)
3674  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
3675    OSC: 50MHz & 28MHz
3676  Other: 8 Position Dipswitch x 2
3677         Reset Push Button at SW1
3678         3.6V Battery at BT1
3679         GAL 16V8 - labeled "KF-001" at U38
3680 
3681 Memory:
3682 M1 are TC551001BFL-70L at U42 & U43
3683 M2 is  W2465K-70LL at U27
3684 M3 are LH5168D-10L at U8 & U9
3685 M4 are UT62256SC-70L at U6, U7, U13 & U14
3686 
3687 PCB Number: P-FG-03
3688 +-----+_+----------------------------------------------------+
3689 |             +------+      U  U                             |
3690 | VOL         |Seta  |   M  5  5            +---------------+|
3691 |             |X1-010|   2  8  7    +-+  M  |KFC-U16-C00 U16||
3692 |             +------+      *  *    | |  1  +---------------+|
3693 +-+                                 |U|                      |
3694   |  +-+    +-+           BT1       |3|            U20*      |
3695 +-+  | |    | |         M           |2|  M                   |
3696 |    |U| U  |U| U  M M  4           | |  1  +---------------+|
3697 |    |3| 5  |2| 4  3 3              +-+     |KFC-U15-C00 U15||
3698 |8   | | *  | | *       M                   +---------------+|
3699 |    +-+    +-+         4                                    |
3700 |L                                                 U19*      |
3701 |I                                                           |
3702 |N                                          +---------------+|
3703 |E                                          |KFC-U18-C00 U18||
3704 |R                           +----------+   +---------------+|
3705 |           +-------+        |          |                    |
3706 |C C        |Toshiba|        |   NEC    |          U22*      |
3707 |o N        |  TMP  |        |  DX-101  |                    |
3708 |n 1        | 68301 |        |          |   +---------------+|
3709 |n        U +-------+        |          |   |KFC-U17-C00 U17||
3710 |e C      5                  +----------+   +---------------+|
3711 |c N      6                                                  |
3712 |t 2      *                                        U21*      |
3713 |e    +---+    +---+       U  50MHz 28MHz                    |
3714 |r    |DX |  S |DX |       3                                 |
3715 |     |102|  W |102|       8                   +---+    OSC2*|
3716 |     +---+  1 +---+                    M  M   |DX |         |
3717 +-+            D D                      4  4   |102|         |
3718   |            S S                             +---+         |
3719 +-+            W W                                           |
3720 |              2 1                                           |
3721 +------------------------------------------------------------+
3722 
3723 CN1 - 7 Pin connector
3724 CN2 - 8 Pin connector
3725 
3726 U56 is unpopulated 93C45 EEPROM
3727 DSW2 is unpopulated
3728 * Denotes not populated.
3729 
3730     U3-U5 silkscreened 27C4001
3731   U57-U58 silkscreened 23C8001E
3732   U15-U22 silkscreened 23C32000
3733       U32 silkscreened 23C32000
3734 
3735 KFP is Program, KFC is Character Graphics and KFS is Sound
3736 
3737 Note:
3738   8-Liner version of P-FG-02 (see Reel'N Quake! above)
3739   Hitting Service Mode "F2" will show Ver 1.7, but going through the diagnostic "0"
3740    Main Menu --> Test Mode --> Memory Test will show Version 1.20
3741 
3742 ***************************************************************************/
3743 
3744 ROM_START( endrichs )
3745 	ROM_REGION( 0x100000, "maincpu", 0 )    // TMP68301 Code
3746 	ROM_LOAD16_BYTE( "kfp_u02_c12.u2", 0x00000, 0x80000, CRC(462341d2) SHA1(a88215d74469513f4239853f62d4dbbffe2aa83a) )
3747 	ROM_LOAD16_BYTE( "kfp_u03_c12.u3", 0x00001, 0x80000, CRC(2baee8d1) SHA1(f86920382c54a259adb1dee253859561746d215a) )
3748 
3749 	ROM_REGION( 0x800000, "sprites", 0 )    // Sprites
3750 	ROM_LOAD64_WORD( "kfc-u16-c00.u16", 0x000000, 0x200000, CRC(cbfe5e0f) SHA1(6c7c8088c43231997ac47ce05cf43c78c1fdad47) )
3751 	ROM_LOAD64_WORD( "kfc-u15-c00.u15", 0x000002, 0x200000, CRC(98e4c36c) SHA1(651be122b78f225d38878ae90776f66989440590) )
3752 	ROM_LOAD64_WORD( "kfc-u18-c00.u18", 0x000004, 0x200000, CRC(561ac136) SHA1(96da493157405a5d3d72b8cc3004abd3fa3eadfa) )
3753 	ROM_LOAD64_WORD( "kfc-u17-c00.u17", 0x000006, 0x200000, CRC(34660029) SHA1(cf09b97422497d739f71e6ff8b9974fca0329928) )
3754 
3755 	ROM_REGION( 0x200000, "x1snd", 0 )  // Samples
3756 	ROM_LOAD( "kfs-u32-c00.u32", 0x000000, 0x200000, CRC(e9ffbecf) SHA1(3cc9ab3f4be1a305235603a68ca1e15797fb27cb) )
3757 
3758 	ROM_REGION( 0x117, "plds", 0 )
3759 	ROM_LOAD( "gal16v8_kf-001.u38", 0x000, 0x117, NO_DUMP )
3760 ROM_END
3761 
3762 /***************************************************************************
3763 
3764 Star Audition
3765 (c)1997 Namco
3766 
3767 The PCB has Namco number: M-133 MAIN PCB. On the back it has a Seta number: P0-130B.
3768 There's a small plug-in sub board containing a Sony A1585Q chip. It's an RGB decoder.
3769 There's no video outout on this PCB.
3770 
3771 TMP68301-16
3772 Only one OSC at 50MHz, so cpu clock is probably 50/4
3773 1x NEC DX101
3774 3x NEC DX102 graphics chips
3775 Allumer X1-010 sound chip
3776 
3777 RTC - NEC D4992 and 3.6v nicad barrel battery
3778 
3779 Main RAM looks like 3x 128kx8 SRAMs
3780 8kx8 SRAM near Allumer chip/SND ROM
3781 4x 128kx8 near top of big NEC DX101 chip
3782 2x 32kx8 SRAMs near bottom of big NEC DX101 chip
3783 6x 32kx8 SRAMs near bottom right corner of PCB near CGx ROMs
3784 Flash: Sharp LH28F016SAT-70 (TSOP56)
3785 
3786 ***************************************************************************/
3787 
3788 ROM_START( staraudi )
3789 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
3790 	ROM_LOAD16_BYTE( "su1_mpr2.u02", 0x000000, 0x80000, CRC(9e8d1943) SHA1(0a9cb7cb0e9dcd9db08f4bb7033986cb51f2cebf) )
3791 	ROM_LOAD16_BYTE( "su1_mpr0.u03", 0x000001, 0x80000, CRC(0a93d1d1) SHA1(7624000afc08eb65cdfa38260ff5d39ac73bba16) )
3792 	ROM_LOAD16_BYTE( "su1_mpr3.u04", 0x100000, 0x80000, CRC(74e07efd) SHA1(6400983c90a28c7d8e091557b0a4102b21035ac8) )
3793 	ROM_LOAD16_BYTE( "su1_mpr1.u05", 0x100001, 0x80000, CRC(3feb93ec) SHA1(0900d9fb37c884c472b9858002713a2b8ba4e519) )
3794 
3795 	ROM_REGION( 0x2000000, "sprites", ROMREGION_ERASE )   // Sprites
3796 	ROM_LOAD64_WORD( "su1_cg0.u16", 0x000000, 0x200000, CRC(64281c22) SHA1(3e2b00bd623915a8be7e21812ff96280d071d08f) )
3797 	ROM_LOAD64_WORD( "su1_cg1.u15", 0x000002, 0x200000, CRC(cd95be41) SHA1(c19c7e6212dab69b575c0e4ce1f7bc390abba67b) )
3798 	ROM_LOAD64_WORD( "su1_cg2.u18", 0x000004, 0x200000, CRC(63eeee49) SHA1(14a6d358f8a0e4572065c715507d730cf2b77571) )
3799 	ROM_LOAD64_WORD( "su1_cg3.u17", 0x000006, 0x200000, CRC(fefb2101) SHA1(0e9d63a779210b37565cd000b9d131e9c8f4e329) )
3800 	// Additional tiles from RAM are decoded here (starting from tile code 7c000)
3801 
3802 	ROM_REGION( 0x200000, "flash", ROMREGION_ERASE )
3803 	ROM_LOAD( "lh28f016sat_flash.u08", 0x000000, 0x200000, CRC(002255bd) SHA1(5e94c29e9a785fe49229f57bc94234ac79dd2f3b) )
3804 
3805 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
3806 	ROM_LOAD( "su1_snd.u32", 0x000000, 0x400000, BAD_DUMP CRC(d5376010) SHA1(89fab1fbb45c7cf8acb63c31ecafdeb3482c2fec) ) // BAD, inconsistent reads: FIXED BITS (xxxxxxxx00000000)
3807 ROM_END
3808 
3809 void staraudi_state::driver_start()
3810 {
3811 	seta2_state::driver_start();
3812 
3813 	// bad sound rom: replace the missing (zero) sample with the previous one
3814 	uint8_t *samples = memregion("x1snd")->base();
3815 	for (int i = 0; i < 0x400000; i += 2)
3816 		samples[i + 1] = samples[i];
3817 }
3818 
3819 /***************************************************************************
3820 
3821 Sammy USA Outdoor Shooting Series PCB
3822 
3823 PCB B0-003A (or B0-003B):
3824    Deer Hunting USA (c) 2000 Sammy USA
3825    Turkey Hunting USA (c) 2001 Sammy USA
3826 
3827 PCB B0-010A:
3828    Wing Shooting Championship (c) 2001 Sammy USA
3829    Trophy Hunting - Bear & Moose (c) 2002 Sammy USA
3830 
3831 
3832 PCB Number: B0-003A (or B0-003B)
3833 +-----------------------------------------------------------+
3834 |             VOL                          +------+         |
3835 |                                          |X1-010|     M1  |
3836 |   +---+ +---+                            |M60016|         |
3837 |   |   | |   |  M    M                    |CALRUA|  +---+  |
3838 +-+ | U | | U |  2    1                    +------+  |   |  |
3839   | | 0 | | 0 |                   D4992              |   |  |
3840 +-+ | 7 | | 6 |  M    M         32.768kHz            | U |  |
3841 |   |   | |   |  2    1                              | 1 |  |
3842 |   +---+ +---+                                      | 8 |  |
3843 |                                          Lattice   |   |  |
3844 |J  D +---+  C                            ispLSI2032 |   |  |
3845 |A  S |DX |  N   BAT1           +-------+            +---+  |
3846 |M  W |102|  5                  |Toshiba|  D                |
3847 |M  1 +---+                     |  TMP  |  S EEPROM       C |
3848 |A           C                  | 68301 |  W              N |
3849 |            N  Lattice         +-------+  2              2 |
3850 |C           6  isp1016E                                    |
3851 |o                              +----------+    50MHz       |
3852 |n    +---+                     |          |              +-+
3853 |n    |DX |  SW1                |   NEC    |    M   M     | |
3854 |e    |102|                     |  DX-101  |    3   3     | |
3855 |c    +---+         M  M        |          |              | |
3856 |t                  1  1        |          |              | |
3857 |e                              +----------+              | |
3858 |r                                                        |C|
3859 |                             +---+      +---++---++---+  |N|
3860 |                  28MHz      |   |      |   ||   ||   |  |3|
3861 |     +---+                   |   |      |   ||   ||   |  | |
3862 +-+   |DX |                   | U |      | U || U || U |  | |
3863   |   |102|                   | 4 |      | 4 || 3 || 3 |  | |
3864 +-+   +---+                   | 0 |      | 1 || 8 || 9 |  | |
3865 | C                           |   |      |   ||   ||   |  | |
3866 | N                           |   |      |   ||   ||   |  +-+
3867 | 1                           +---+      +---++---++---+    |
3868 +-----------------------------------------------------------+
3869 
3870 PCB Number: B0-010A - This PCB is slightly revised for 2 player play
3871 +-----------------------------------------------------------+
3872 |             VOL                          +------+         |
3873 |                                          |X1-010|     M1  |
3874 |   +---+ +---+                            |M60016|         |
3875 |   |   | |   |  M    M                    |CALRUA|  +---+  |
3876 +-+ | U | | U |  2    1                    +------+  |   |  |
3877   | | 0 | | 0 |                   D4992              |   |  |
3878 +-+ | 7 | | 6 |  M    M         32.768kHz            | U |  |
3879 |   |   | |   |  2    1                              | 1 |  |
3880 |   +---+ +---+                                      | 8 |  |
3881 |                                          Lattice   |   |  |
3882 |J  D +---+  C                            ispLSI2032 |   |  |
3883 |A  S |DX |  N   BAT1           +-------+            +---+  |
3884 |M  W |102|  5                  |Toshiba|  D                |
3885 |M  1 +---+                     |  TMP  |  S EEPROM       C |
3886 |A           C                  | 68301 |  W              N |
3887 |            N  Lattice         +-------+  2              2 |
3888 |C           6  isp1016E                                    |
3889 |o                              +----------+    50MHz       |
3890 |n    +---+                     |          |              +-+
3891 |n    |DX |  SW1                |   NEC    |    M   M     | |
3892 |e    |102|                     |  DX-101  |    3   3     | |
3893 |c    +---+         M  M        |          |              | |
3894 |t                  1  1        |          |              | |
3895 |e                              +----------+              | |
3896 |r                                                        |C|
3897 |                             +---+      +---++---++---+  |N|
3898 |                  28MHz      |   |      |   ||   ||   |  |3|
3899 |     +---+              C    |   |      |   ||   ||   |  | |
3900 +-+   |DX |              N    | U |      | U || U || U |  | |
3901   |   |102|              7    | 4 |      | 4 || 3 || 3 |  | |
3902 +-+   +---+                   | 0 |      | 1 || 8 || 9 |  | |
3903 | C           Lattice    C    |   |      |   ||   ||   |  | |
3904 | N           isp1016E   N    |   |      |   ||   ||   |  +-+
3905 | 1                      8    +---+      +---++---++---+    |
3906 +-----------------------------------------------------------+
3907 
3908 
3909    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
3910  Video: NEC DX-101 (240 Pin PQFP)
3911         NEC DX-102 (52 Pin PQFP x3)
3912  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP)
3913 EEPROM: 93LC46BX (1K Low-power 64 x 16-bit organization serial EEPROM)
3914    OSC: 50MHz, 28MHz & 32.768kHz
3915  Other: 8 Position Dipswitch x 2
3916         Lattice ispLSI2032 - stamped "KW001"
3917         Lattice isp1016E - stamped "GUN" (2 for PCB B0-010A, used for light gun input)
3918         NEC D4992 CMOS 8-Bit Parallel I/O Calendar Clock
3919         BAT1 - CR2032 3Volt
3920 
3921 Ram M1 are Toshiba TC55257DFL-70L
3922 Ram M2 are NEC D43001GU-70L
3923 Ram M3 are ISSI IS62C1024L-70Q
3924 
3925 U06 Program rom ST27C801 (even)
3926 U07 Program rom ST27C801 (odd)
3927 
3928 U18 Mask rom (Samples 23C32000 32Mbit (read as 27C322))
3929 
3930 U38 - U40 Mask roms (Graphics 23c64020 64Mbit) - 23C64020 read as 27C322 with pin11 +5v & 27C322 with pin11 GND
3931 
3932 Connectors:
3933   CN1 - Unpopulated 8 pin header
3934   CN2 - 8 Pin header - use unknown
3935   CN3 - Unpopulated 3 row, 96 pin header
3936   CN5 + CN6 labeled GUN:
3937    CN6-4 Pin (1-4)          CN5-4 Pin (7-10, standard HAPP light gun pinout)
3938     1 No Connection          7 Red    +5VDC
3939     2 Green  Pump Switch     8 White  Trigger Switch
3940     3 Brown  Pump Switch     9 Black  Ground
3941     4 No Connection         10 Blue   Optical
3942   CN7 + CN8 labeled GUN (on B0-010A only, same pinout as CN5 + CN6)
3943 
3944 ==========================================
3945 
3946 Location Test version of Trophy Hunter:
3947 
3948 On service menu is an additional option: "9. PLAY DATA ( for LOC TEST )"
3949 
3950   Under "7. OPTIONAL SETTING" is an added option:
3951         3. PLAY DATA CLEAR
3952         4. RETURN TO TEST MENU
3953     Release versions show selection 3. RETURN TO TEST MENU, with no fourth selection
3954 
3955 Although in the I/O TEST screen seems to test for the shotgun PUMP, The PCB seems to be set up
3956  for two standard HAPP light guns.  It's unknown how, if at all, the PUMP buttons are mapped or
3957  hooked up through the PCB
3958 
3959 PCB Number: P0-145-1
3960 +-----------------------------------------------------------+
3961 |             VOL                          +------+         |
3962 |                                          |X1-010|     M1  |
3963 |   +---+ +---+                            |M60016|         |
3964 |   |   | |   |  M    M                    |CALRUA|  +---+  |
3965 +-+ | U | | U |  2    1                    +------+  |   |  |
3966   | | 0 | | 0 |                   D4992              |   |  |
3967 +-+ | 7 | | 6 |  M    M         32.768kHz            | U |  |
3968 |   |   | |   |  2    1                              | 1 |  |
3969 |   +---+ +---+                                      | 8 |  |
3970 |                                          Lattice   |   |  |
3971 |J  D +---+  C                            ispLSI2032 |   |  |
3972 |A  S |DX |  N   BAT1           +-------+            +---+  |
3973 |M  W |102|  5                  |Toshiba|  D                |
3974 |M  1 +---+                     |  TMP  |  S EEPROM       C |
3975 |A           C                  | 68301 |  W              N |
3976 |            N  Lattice         +-------+  2              2 |
3977 |C           6  isp1016E                                    |
3978 |o                              +----------+    50MHz       |
3979 |n    +---+                     |          |              +-+
3980 |n    |DX |  SW1                |   NEC    |    M   M     | |
3981 |e    |102|                     |  DX-101  |    3   3     | |
3982 |c    +---+         M  M        |          |              | |
3983 |t                  1  1        |          |              | |
3984 |e                              +----------+              | |
3985 |r                                                        |C|
3986 |                             +---+      +---++---++---+  |N|
3987 |                  28MHz      |   |      |   ||   ||   |  |3|
3988 |     +---+                   |   |      |   ||   ||   |  | |
3989 +-+   |DX |                   | U |      | U || U || U |  | |
3990   |   |102|                   | 4 |      | 4 || 3 || 3 |  | |
3991 +-+   +---+                   | 0 |      | 1 || 8 || 9 |  | |
3992 | C                           |   |      |   ||   ||   |  | |
3993 | N                           |   |      |   ||   ||   |  +-+
3994 | 1                           +---+      +---++---++---+    |
3995 +-----------------------------------------------------------+
3996 
3997 Differences from PCB B0-003A (or B0-003B):
3998 
3999 CN1 is 8 pin header - unknown use
4000 CN3 Female 3 row, 96 pin connection populated on the underside to connect to the P1-115A flash ROM PCB
4001 CN5 is labeled pins 1-4 and silkscreened GUN1
4002 CN6 is labeled pins 1-4 and silkscreened GUN2
4003 Lattice isp1016E - labeled "2GUN"
4004 
4005 U38 - U40 unpopulated (data comes from P0-145-1 PCB)
4006 
4007 P1-115A
4008 +-+--------------------+------------------------------------+
4009 | |        CN3         |                   SW3              |
4010 | +--------------------+                                    |
4011 | |        CN4         |                           U  J  U  |
4012 | +--------------------+                           5  P  6  |
4013 |                                                  9  4  0  |
4014 |                                                           |
4015 |                                                           |
4016 |    28F016.U23    28F016.U31    28F016.U27    28F016.U35   |
4017 |                                                           |
4018 |    28F016.U22    28F016.U30    28F016.U26    28F016.U34   |
4019 |                                                           |
4020 |    28F016.U21    28F016.U29    28F016.U25    28F016.U33   |
4021 |                                                           |
4022 |    28F016.U20    28F016.U28    28F016.U24    28F016.U32   |
4023 |  +--------------------+                                   |
4024 |  |        CN6         |                                   |
4025 +--+--------------------+-----------------------------------+
4026 
4027 Flash ROMs are SHARP LH28F016SAT-70
4028 
4029 SW3 unpopulated switch
4030 CN3 Unused 3 row, 96 pin connection (underside)
4031 CN4 Male 3 row, 96 pin connection (underside, to main P0-145-1 PCB)
4032 CN6 Unused 3 row, 96 pin connection (top side)
4033 JP4 3 pin Jumper header - unknown use
4034 U59 GAL labeled FLASHA02U59 3869
4035 U60 GAL labeled FLASH3A 2A29
4036 
4037 --------------------------------------------------------------------------
4038 
4039 From the WSC upgrade instruction sheet:
4040 
4041  Wing Shooting Championship
4042       Game Echancement
4043           1/23/02
4044 
4045 New Program chip Ver. 2.00 For Wing Shooting Championship
4046 We are announcing NEW GAME FEATURES to enhance game play. Please refer below.
4047 
4048 NEW FEATURES
4049 ------------
4050 
4051  * Easier play for the first 3 hunting spots in every state with the addition of more birds.
4052  * The "BEGINNER" weapon has been changed to the 5-shot PUMP SHOTGUN plus the "hit area"
4053     for each shot has been increased. Same as the 3-shot SEMI-AUTO SHOTGUN.
4054  * Player can now advance through all result screens faster by pulling gun trigger.
4055  * The Auto Select bird is now GOOSE (easiest target) if player fails to choose bird at start of game.
4056 
4057 Commonly labeled as either:
4058 
4059 Deer Hunting:
4060  Deer Hunting USA       AS0907
4061     U7 Ver 4.3      or  E05
4062     2000.11.1           U7
4063                         5D89
4064 
4065 For version 3:
4066  Deer Hunting USA
4067     U7 Ver 3.0
4068     2000.5.31
4069 
4070 Two PCBs (serial numbers WH 00111 & WH 00001) from Japan were labeled as:
4071 
4072   AS0      AS0
4073   909E01 & 908E01     <-- Higher ROM numbers and purports to be E01 but shows Ver .4.4.1
4074   U7 JDH   U6 JDH
4075 
4076 Turkey Hunting:
4077     Turkey              ASX
4078   U7 Ver 1.00       or  907E01
4079      AB40               TH
4080 
4081 Wing Shooting Championship:
4082      WSC                AS
4083   U7 Ver. 2.00      or  1007
4084      A48F               E03
4085 
4086 Trophy Hunting - Bear & Moose:
4087     Trophy              AS
4088   U7 Ver 1.00       or  1107
4089     CEEF                E01
4090 ***************************************************************************/
4091 
4092 ROM_START( deerhunt ) /* Deer Hunting USA V4.3 (11/1/2000) - The "E05" breaks version label conventions but is correct & verified */
4093 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4094 	ROM_LOAD16_BYTE( "as0906_e05_u6_694e.u06", 0x000000, 0x100000, CRC(20c81f17) SHA1(d41d93d6ee88738cec55f7bf3ce6be1dbec68e09) ) /* checksum 694E printed on label */
4095 	ROM_LOAD16_BYTE( "as0907_e05_u7_5d89.u07", 0x000001, 0x100000, CRC(1731aa2a) SHA1(cffae7a99a7f960a62ef0c4454884df17a93c1a6) ) /* checksum 5D89 printed on label */
4096 
4097 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4098 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4099 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4100 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4101 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4102 
4103 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4104 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4105 ROM_END
4106 
4107 ROM_START( deerhunta ) /* Deer Hunting USA V4.2 (xx/x/2000) */
4108 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4109 	ROM_LOAD16_BYTE( "as0906_e04_u6_6640.u06", 0x000000, 0x100000, CRC(bb3af36f) SHA1(f04071347e8ad361bf666fcb6c0136e522f19d47) ) /* checksum 6640 printed on label */
4110 	ROM_LOAD16_BYTE( "as0907_e04_u7_595a.u07", 0x000001, 0x100000, CRC(83f02117) SHA1(70fc2291bc93af3902aae88688be6a8078f7a07e) ) /* checksum 595A printed on label */
4111 
4112 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4113 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4114 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4115 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4116 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4117 
4118 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4119 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4120 ROM_END
4121 
4122 ROM_START( deerhuntb ) /* Deer Hunting USA V4.0 (6/15/2000) */
4123 	ROM_REGION( 0x200000, "maincpu", 0 )        // TMP68301 Code
4124 	ROM_LOAD16_BYTE( "as_0906_e04.u06", 0x000000, 0x100000, CRC(07d9b64a) SHA1(f9aac644aab920bbac84b14836ee589ccd51f6db) ) /* also commonly labeled as: Deer Hunting USA U6 Ver 4.0 2000.6.15 - SUM16 = 7BBB */
4125 	ROM_LOAD16_BYTE( "as_0907_e04.u07", 0x000001, 0x100000, CRC(19973d08) SHA1(da1cc02ce480a62ccaf94d0af1246a340f054b43) ) /* also commonly labeled as: Deer Hunting USA U7 Ver 4.0 2000.6.15 - SUM16 = 4C78 */
4126 
4127 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4128 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4129 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4130 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4131 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4132 
4133 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4134 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4135 ROM_END
4136 
4137 	/* Are there versions 3.x of Deer Hunting USA with labels "AS0906 E03 U06" & "AS0907 E03 U07" ?? */
4138 
4139 ROM_START( deerhuntc ) /* These rom labels break label conventions but is correct & verified. Version in program code is listed as 0.00 */
4140 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4141 	ROM_LOAD16_BYTE( "as_0937_e01.u06", 0x000000, 0x100000, CRC(8d74088e) SHA1(cb11ffaf4c0267cc8cbe01accc3daeed910a3af3) ) /* SUM16 = C2CD - same as version dated 2000.5.31? */
4142 	ROM_LOAD16_BYTE( "as_0938_e01.u07", 0x000001, 0x100000, CRC(c7657889) SHA1(4cc707c8abbc0862457375a9a910d3c338859193) ) /* SUM16 = 27D7 - same as version dated 2000.5.31?  */
4143 
4144 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4145 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4146 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4147 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4148 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4149 
4150 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4151 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4152 ROM_END
4153 
4154 ROM_START( deerhuntd ) /* Deer Hunting USA V2.x - No version number is printed to screen but "E02" in EPROM label signifies V2 */
4155 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4156 	ROM_LOAD16_BYTE( "as_0906_e02.u06", 0x000000, 0x100000, CRC(190cca42) SHA1(aef63f5e8c71ed0156b8b0104c5d23872c119167) ) /* Version in program code is listed as 0.00 */
4157 	ROM_LOAD16_BYTE( "as_0907_e02.u07", 0x000001, 0x100000, CRC(9de2b901) SHA1(d271bc54c41e30c0d9962eedd22f3ef2b7b8c9e5) ) /* Verified with two different sets of chips */
4158 
4159 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4160 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4161 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4162 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4163 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4164 
4165 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4166 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4167 ROM_END
4168 
4169 ROM_START( deerhunte ) /* Deer Hunting USA V1.x - No version number is printed to screen but "E01" in EPROM label signifies V1 */
4170 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4171 	ROM_LOAD16_BYTE( "as_0906_e01.u06", 0x000000, 0x100000, CRC(103e3ba3) SHA1(677d912ea9ed2ee1f26cdcac1687ce8ef416a96f) ) /* Version in program code is listed as 0.00 */
4172 	ROM_LOAD16_BYTE( "as_0907_e01.u07", 0x000001, 0x100000, CRC(ddeb0f97) SHA1(a2578071f3506d69057d2256685b969adc50d275) ) /* Verified with two different sets of chips */
4173 
4174 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4175 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4176 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4177 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4178 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4179 
4180 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4181 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4182 ROM_END
4183 
4184 ROM_START( deerhuntj ) /* Higher ROM labels indicate a specific version / region - No specific "For use in Japan" warning */
4185 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4186 	ROM_LOAD16_BYTE( "as0_908e01_u6_jdh.u06", 0x000000, 0x100000, CRC(52f037da) SHA1(72afb4461be059655a2fe9b138e9feef19ecaa84) ) /* Version shows as VER .4.4.1 */
4187 	ROM_LOAD16_BYTE( "as0_909e01_u7_jdh.u07", 0x000001, 0x100000, CRC(b391bc87) SHA1(eb62e18b6ac9b0198911ec6684de73102c1d6df0) )
4188 
4189 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4190 	ROM_LOAD64_WORD( "as0901m01.u38", 0x0000000, 0x800000, CRC(1d6acf8f) SHA1(6f61fe21bebb7c87e8e6c3ef3ba73b8cf327dde9) )
4191 	ROM_LOAD64_WORD( "as0902m01.u39", 0x0000002, 0x800000, CRC(c7ca2128) SHA1(86be3a3ec2f86f61acfa3d4d261faea3c27dc378) )
4192 	ROM_LOAD64_WORD( "as0903m01.u40", 0x0000004, 0x800000, CRC(e8ef81b3) SHA1(97666942ca6cca5b8ea6451314a2aaabad9e06ba) )
4193 	ROM_LOAD64_WORD( "as0904m01.u41", 0x0000006, 0x800000, CRC(d0f97fdc) SHA1(776c9d42d03a9f61155521212305e1ed696eaf47) )
4194 
4195 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4196 	ROM_LOAD( "as0905m01.u18", 0x000000, 0x400000, CRC(8d8165bb) SHA1(aca7051613d260734ee787b4c3db552c336bd600) )
4197 ROM_END
4198 
4199 ROM_START( turkhunt ) /* V1.0 is currently the only known version */
4200 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4201 	ROM_LOAD16_BYTE( "asx_906e01_th.u06", 0x000000, 0x100000, CRC(c96266e1) SHA1(0ca462b3b0f27198e36384eee6ea5c5d4e7e1293) ) /* also commonly labeled as: Turkey U6 Ver 1.00 E510 */
4202 	ROM_LOAD16_BYTE( "asx_907e01_th.u07", 0x000001, 0x100000, CRC(7c67b502) SHA1(6a0e8883a115dac4095d86897e7eca2a007a1c71) ) /* also commonly labeled as: Turkey U7 Ver 1.00 AB40 */
4203 
4204 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4205 	ROM_LOAD64_WORD( "asx901m01.u38", 0x0000000, 0x800000, CRC(eabd3f44) SHA1(5a1ac986d11a8b019e18761cf4ea0a6f49fbdbfc) )
4206 	ROM_LOAD64_WORD( "asx902m01.u39", 0x0000002, 0x800000, CRC(c32130c8) SHA1(70d56ebed1f51657aaee02f95ac51589733e6eb7) )
4207 	ROM_LOAD64_WORD( "asx903m01.u40", 0x0000004, 0x800000, CRC(5f86c322) SHA1(5a72adb99eea176199f172384cb051e2b045ab94) )
4208 	ROM_LOAD64_WORD( "asx904m01.u41", 0x0000006, 0x800000, CRC(c77e0b66) SHA1(0eba30e62e4bd38c198fa6cb69fb94d002ded77a) )
4209 
4210 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4211 	ROM_LOAD( "asx905m01.u18", 0x000000, 0x400000, CRC(8d9dd9a9) SHA1(1fc2f3688d2c24c720dca7357bca6bf5f4016c53) )
4212 ROM_END
4213 
4214 ROM_START( wschamp ) /* Wing Shooting Championship V2.00 (01/23/2002) - The "E03" breaks version label conventions but is correct & verified */
4215 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4216 	ROM_LOAD16_BYTE( "as_1006_e03.u06", 0x000000, 0x100000, CRC(0ad01677) SHA1(63e09b9f7cc8b781af1756f86caa0cc0962ae584) ) /* also commonly labeled as: WSC U6 Ver 2.00 421E */
4217 	ROM_LOAD16_BYTE( "as_1007_e03.u07", 0x000001, 0x100000, CRC(572624f0) SHA1(0c2f67daa22f4edd66a2be990dc6cd999faff0fa) ) /* also commonly labeled as: WSC U7 Ver 2.00 A48F */
4218 
4219 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4220 	ROM_LOAD64_WORD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
4221 	ROM_LOAD64_WORD( "as1002m01.u39", 0x0000002, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
4222 	ROM_LOAD64_WORD( "as1003m01.u40", 0x0000004, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
4223 	ROM_LOAD64_WORD( "as1004m01.u41", 0x0000006, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
4224 
4225 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4226 	ROM_LOAD( "as1005m01.u18", 0x000000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
4227 ROM_END
4228 
4229 ROM_START( wschampa ) /* Wing Shooting Championship V1.01 */
4230 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4231 	ROM_LOAD16_BYTE( "as_1006_e02.u06", 0x000000, 0x100000, CRC(d3d3b2b5) SHA1(2d036d795b40a4ed78bb9f7751f875cfc76276a9) ) /* SUM16 = 31EF */
4232 	ROM_LOAD16_BYTE( "as_1007_e02.u07", 0x000001, 0x100000, CRC(78ede6d9) SHA1(e6d10f52cd4c6bf97288df44911f23bb64fc012c) ) /* SUM16 = 615E */
4233 
4234 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4235 	ROM_LOAD64_WORD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
4236 	ROM_LOAD64_WORD( "as1002m01.u39", 0x0000002, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
4237 	ROM_LOAD64_WORD( "as1003m01.u40", 0x0000004, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
4238 	ROM_LOAD64_WORD( "as1004m01.u41", 0x0000006, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
4239 
4240 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4241 	ROM_LOAD( "as1005m01.u18", 0x000000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
4242 ROM_END
4243 
4244 ROM_START( wschampb ) /* Wing Shooting Championship V1.00, dumps match listed checksum but shows as "NG" on boot screen - need to verify correct at some point if possible */
4245 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4246 	ROM_LOAD16_BYTE( "as10u6.u06", 0x000000, 0x100000, CRC(70a18bef) SHA1(3fb2e8a4db790dd732115d7d3d991b2d6c54feb9) ) /* checksum 3F38 & 10/26 16:00 hand written on label */
4247 	ROM_LOAD16_BYTE( "as10u7.u07", 0x000001, 0x100000, CRC(cf23be7d) SHA1(b9130757466ff0d41d261b1c2435d36d2452df54) ) /* checksum 1537 & 10/26 16:00 hand written on label */
4248 
4249 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4250 	ROM_LOAD64_WORD( "as1001m01.u38", 0x0000000, 0x800000, CRC(92595579) SHA1(75a7131aedb18b7103677340c3cca7c91aaca2bf) )
4251 	ROM_LOAD64_WORD( "as1002m01.u39", 0x0000002, 0x800000, CRC(16c2bb08) SHA1(63926464c8bd8db7d05905a953765e645942beb4) )
4252 	ROM_LOAD64_WORD( "as1003m01.u40", 0x0000004, 0x800000, CRC(89618858) SHA1(a8bd07f233482e8f5a256af7ff9577648eb58ef4) )
4253 	ROM_LOAD64_WORD( "as1004m01.u41", 0x0000006, 0x800000, CRC(500c0909) SHA1(73ff27d46b9285f34a50a81c21c54437f21e1939) )
4254 
4255 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4256 	ROM_LOAD( "as1005m01.u18", 0x000000, 0x400000, CRC(e4b137b8) SHA1(4d8d15073c51f7d383282cc5755ae5b2eab6226c) )
4257 ROM_END
4258 
4259 ROM_START( trophyh ) /* Version 1.00 - v: Thu Mar 28 12:35:50 2002 JST-9 - on a B0-010A PCB with all mask ROMs */
4260 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4261 	ROM_LOAD16_BYTE( "as_1106_e01.u06", 0x000000, 0x100000, CRC(b4950882) SHA1(2749f7ffc5b543c9f39815f0913a1d1e385b63f4) ) /* also commonly labeled as: Trophy U6 Ver 1.00 D8DA */
4262 	ROM_LOAD16_BYTE( "as_1107_e01.u07", 0x000001, 0x100000, CRC(19ee67cb) SHA1(e75ce66d3ff5aad46ba997c09d6514260e617f55) ) /* also commonly labeled as: Trophy U7 Ver 1.00 CEEF */
4263 
4264 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4265 	ROM_LOAD64_WORD( "as1101m01.u38", 0x0000000, 0x800000, CRC(855ed675) SHA1(84ce229a9feb6331413253a5aed10b362e8102e5) )
4266 	ROM_LOAD64_WORD( "as1102m01.u39", 0x0000002, 0x800000, CRC(d186d271) SHA1(3c54438b35adfab8be91df0a633270d6db49beef) )
4267 	ROM_LOAD64_WORD( "as1103m01.u40", 0x0000004, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) )
4268 	ROM_LOAD64_WORD( "as1104m01.u41", 0x0000006, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) )
4269 
4270 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4271 	ROM_LOAD( "as1105m01.u18", 0x000000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) )
4272 ROM_END
4273 
4274 ROM_START( trophyht ) /* V1.00 Location Test - v: Tue Feb 26 18:18:43 2002 JST-9 - on a P0-145-1 main PCB with a P1-115A flash ROM board */
4275 	ROM_REGION( 0x200000, "maincpu", 0 )    // TMP68301 Code
4276 	ROM_LOAD16_BYTE( "trophy_2-26_u6_2e9c.u06", 0x000000, 0x100000, CRC(74496d65) SHA1(8af7bce528557efe68e0ed8be8b60d0ba4409c35) ) /* hand written label:  Trophy 2/26 U6  2E9C */
4277 	ROM_LOAD16_BYTE( "trophy_2-26_u6_de45.u07", 0x000001, 0x100000, CRC(9ae364f6) SHA1(9df8352345e59f1e0a5cb66a8b43d5ad7785ca29) ) /* hand written label:  Trophy 2/26 U7  DE45 */
4278 
4279 	ROM_REGION( 0x2000000, "sprites", 0 )   // Sprites
4280 	ROM_LOAD( "lh28f016sat.u20", 0x0000000, 0x200000, NO_DUMP ) /* None of the 28F016 flash ROMs are dumped */
4281 	ROM_LOAD( "lh28f016sat.u21", 0x0200000, 0x200000, NO_DUMP ) /* The correct loading order is unknown    */
4282 	ROM_LOAD( "lh28f016sat.u22", 0x0400000, 0x200000, NO_DUMP )
4283 	ROM_LOAD( "lh28f016sat.u23", 0x0600000, 0x200000, NO_DUMP )
4284 	ROM_LOAD( "lh28f016sat.u24", 0x0800000, 0x200000, NO_DUMP )
4285 	ROM_LOAD( "lh28f016sat.u25", 0x0a00000, 0x200000, NO_DUMP )
4286 	ROM_LOAD( "lh28f016sat.u26", 0x0c00000, 0x200000, NO_DUMP )
4287 	ROM_LOAD( "lh28f016sat.u27", 0x0e00000, 0x200000, NO_DUMP )
4288 	ROM_LOAD( "lh28f016sat.u28", 0x1000000, 0x200000, NO_DUMP )
4289 	ROM_LOAD( "lh28f016sat.u29", 0x1200000, 0x200000, NO_DUMP )
4290 	ROM_LOAD( "lh28f016sat.u30", 0x1400000, 0x200000, NO_DUMP )
4291 	ROM_LOAD( "lh28f016sat.u31", 0x1600000, 0x200000, NO_DUMP )
4292 	ROM_LOAD( "lh28f016sat.u32", 0x1800000, 0x200000, NO_DUMP )
4293 	ROM_LOAD( "lh28f016sat.u33", 0x1a00000, 0x200000, NO_DUMP )
4294 	ROM_LOAD( "lh28f016sat.u34", 0x1c00000, 0x200000, NO_DUMP )
4295 	ROM_LOAD( "lh28f016sat.u35", 0x1e00000, 0x200000, NO_DUMP )
4296 	ROM_LOAD64_WORD( "as1101m01.u38",   0x0000000, 0x800000, CRC(855ed675) SHA1(84ce229a9feb6331413253a5aed10b362e8102e5) ) /* Load these in until the flash ROMs are dumped */
4297 	ROM_LOAD64_WORD( "as1102m01.u39",   0x0000002, 0x800000, CRC(d186d271) SHA1(3c54438b35adfab8be91df0a633270d6db49beef) ) /* Load these in until the flash ROMs are dumped */
4298 	ROM_LOAD64_WORD( "as1103m01.u40",   0x0000004, 0x800000, CRC(adf8a54e) SHA1(bb28bf219d18082246f7964851a5c49b9c0ba7f5) ) /* Load these in until the flash ROMs are dumped */
4299 	ROM_LOAD64_WORD( "as1104m01.u41",   0x0000006, 0x800000, CRC(387882e9) SHA1(0fdd0c77dabd1066c6f3bd64e357236a76f524ab) ) /* Load these in until the flash ROMs are dumped */
4300 
4301 	ROM_REGION( 0x400000, "x1snd", 0 )  // Samples
4302 	ROM_LOAD( "as1105m01.u18", 0x000000, 0x400000, CRC(633d0df8) SHA1(3401c424f5c207ef438a9269e0c0e7d482771fed) ) /* unlabeled 27C322 with same data as AS1105M01 mask ROM */
4303 ROM_END
4304 
4305 /***************************************************************************
4306 
4307  TelePachi Fever Lion
4308  (C) 1996 Sunsoft
4309 
4310    CPU: Toshiba TMP68301AF-16 (100 Pin PQFP)
4311  Video: Allumer X1-020 9426HK003 (@ U9)
4312         NEC DX-102               (52 Pin PQFP @ U8)
4313         Allumer X1-007 505100    (SDIP42 @ U110 - Feeds RGB DACs)
4314  Sound: X1-010 (Mitsubishi M60016 Gate Array, 80 Pin PQFP @ U26)
4315 Inputs: Allumer X1-004 546100    (SDIP52)
4316    OSC: 50.0000MHz (@ X1), 32.5304MHz (@ X2) & 32.768kHz (@ X3)
4317  Other: 8 Position Dipswitch x 2
4318         Ricoh RP5C62 RTC (@ U128)
4319         3.6v Battery (@ BT1)
4320         93C46 EEPROM (@ U101)
4321         SW1 Push Button Reset
4322 
4323 Memory:
4324 M1 are TC551001BFL-70L at U56 & U57
4325 M2 is  W2465K-70LL at U27
4326 M3 are HM62256BLSP-7
4327 M4 is LH5168D-80L
4328 
4329 PCB Number: P0-121A / Sunsoft 2MP1-E00 (serial 0503)
4330 +--------------------------------------------------------------+
4331 |             +------+       +---++---+           CN3*         |
4332 | VOL         |Seta  |   M   |   ||   |        +--------------+|
4333 |             |X1-010|   2   | U || U |        |      U19*    ||
4334 |             +------+       | 1 || 1 |        +--------------+|
4335 +-+           U52  U51  BT1  | 1 || 1 |        +--------------+|
4336   |  +-++-+   +-++-+         | 2 || 1 |        |      U17*    ||
4337 +-+  | || |   | || |         +---++---+   M M  +--------------+|
4338 |    |U||U| M |U||U| M M  32.768kHz       1 1  +--------------+|
4339 |J   |3||5| 3 |2||4| 3 4 RP5C62                | MP3 CG-1 U15 ||
4340 |A   | ||*|   | ||*|                           +--------------+|
4341 |M   +-++-+   +-++-+                           +--------------+|
4342 |M                                             |      U20*    ||
4343 |A                              +----------+   +--------------+|
4344 |                               |          |   +--------------+|
4345 |C                              | ALLUMER  |   |      U18*    ||
4346 |o                              | X1-020   |   +--------------+|
4347 |n          +-------+           |          |   +--------------+|
4348 |n          |Toshiba|           | 9426HK003|   | MP3 CG-0 U16 ||
4349 |e          |  TMP  |           +----------+   +--------------+|
4350 |c          | 68301 |                          +--------------+|
4351 |t          +-------+                          |      U23*    ||
4352 |e         93C46                               +--------------+|
4353 |r              D                              +--------------+|
4354 |               S                              |      U22*    ||
4355 +-+         X   W  +---+     50MHz 32.5304MHz  +--------------+|
4356   |         1   2  |DX |                       +--------------+|
4357   |  C      |   D  |102|                       | MP3 CG-2 U21 ||
4358 +-+  N C    0   S  +---+         M M           +--------------+|
4359 |    7 N    0   W        SW1     3 3                           |
4360 |      6    4   1                                 X1-007 R G B |
4361 +--------------------------------------------------------------+
4362 
4363 U2 ST M27C4001 EPROM  MP3prgEVEN  U2 V1.0
4364 U3 ST M27C4001 EPROM  MP3 prgODD  U3 V1.0
4365 U4 unpopulated silkscreened 27C4001 TBL EVEN
4366 U5 unpopulated silkscreened 27C4001 TBL ODD
4367 U15 ST M27C160 EPROM  MP3 CG-1  U15 V1.0
4368 U16 ST M27C160 EPROM  MP3 CG-0  U16 V1.0
4369 U21 ST M27C160 EPROM  MP3 CG-2  U21 V1.0
4370 U51 GAL KC-001C
4371 U52 GAL KC-002C
4372 U111 ST M27C4001 EPROM  MP3 SOUND0  U111 V1.0
4373 U112 ST M27C4001 EPROM  MP3 SOUND1  U112 V1.0
4374 U17, U18, U19, U20, U22 & U23 silkscreened 23C16000
4375 * Denotes not populated.
4376 
4377 R, G & B are resistor packs
4378 CN3 - 96 pin connector (3 rows by 32 pins)
4379 CN6 - Dual row 10 pin header
4380 CN7 - 12 pin header
4381 
4382 ***************************************************************************/
4383 
4384 ROM_START( telpacfl )
4385 	ROM_REGION( 0x100000, "maincpu", 0 )    // TMP68301 Code
4386 	ROM_LOAD16_BYTE( "mp3_prgeven__u2_v1.0.u2", 0x000000, 0x080000, CRC(9ab450c5) SHA1(57d9118df8a444e295cbda453a7c3238bd672ddd) )
4387 	ROM_LOAD16_BYTE( "mp3_prgodd__u3_v1.0.u3",  0x000001, 0x080000, CRC(2a324139) SHA1(1812a7a8a2c4e222a1e5c7cb6d39cf7bf7f037db) )
4388 
4389 	ROM_REGION( 0x800000, "sprites", ROMREGION_ERASE00 )    // Sprites
4390 	ROM_LOAD64_WORD( "mp3_cg-0__u16_v1.0.u16", 0x000000, 0x200000, CRC(9d8453ba) SHA1(d97240ce68d6e64527930e919710764a7b669cdf) )
4391 	ROM_LOAD64_WORD( "mp3_cg-1__u15_v1.0.u15", 0x000002, 0x200000, CRC(8ab83f38) SHA1(5ebc682b80d0d97025a97824a899946712e7acd4) )
4392 
4393 	ROM_REGION( 0x800000, "unused", ROMREGION_ERASE00 )    // Sprites
4394 	// not decoding the bad ROM is better than loading corrupt gfx data
4395 	ROM_LOAD64_WORD( "mp3_cg-2__u21_v1.0.u21", 0x000004, 0x200000, BAD_DUMP CRC(54dc430b) SHA1(a2e55866249d01f6f2f2dd998421baf9fe0c6972) ) // physically damaged eprom
4396 
4397 	ROM_REGION( 0x100000, "x1snd", 0 )  // Samples
4398 	ROM_LOAD( "mp3_sound0__u111_v1.0.u111", 0x000000, 0x080000, CRC(711c915e) SHA1(d654a0c158cf54aab5faca913583c5620388aa46) )
4399 	ROM_LOAD( "mp3_sound1__u112_v1.0.u112", 0x080000, 0x080000, CRC(27fd83cd) SHA1(d0261b2c5354ea17061e71bcea747d70efc18a49) )
4400 
4401 	ROM_REGION( 0x117 * 2, "plds", 0 )
4402 	ROM_LOAD( "kc-001c.u51", 0x000, 0x117, NO_DUMP )
4403 	ROM_LOAD( "kc-002c.u52", 0x117, 0x117, NO_DUMP )
4404 ROM_END
4405 
4406 GAME( 1994, gundamex,  0,        gundamex, gundamex, seta2_state,    empty_init,    ROT0,   "Banpresto",             "Mobile Suit Gundam EX Revue",                         0 )
4407 
4408 GAME( 1995, grdians,   0,        grdians,  grdians,  seta2_state,    empty_init,    ROT0,   "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P-FG01-1 PCB)",  MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4409 GAME( 1995, grdiansa,  grdians,  grdiansa, grdians,  seta2_state,    empty_init,    ROT0,   "Winkysoft (Banpresto license)", "Guardians / Denjin Makai II (P0-113A PCB)",   MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4410 
4411 GAME( 1996, mj4simai,  0,        seta2,    mj4simai, mj4simai_state, empty_init,    ROT0,   "Maboroshi Ware",        "Wakakusamonogatari Mahjong Yonshimai (Japan)",        MACHINE_NO_COCKTAIL )
4412 
4413 GAME( 1996, myangel,   0,        myangel,  myangel,  seta2_state,    empty_init,    ROT0,   "MOSS / Namco",          "Kosodate Quiz My Angel (Japan)",                      MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4414 
4415 GAME( 1997, myangel2,  0,        myangel2, myangel2, seta2_state,    empty_init,    ROT0,   "MOSS / Namco",          "Kosodate Quiz My Angel 2 (Japan)",                    MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4416 
4417 GAME( 1996, telpacfl,  0,        telpacfl, telpacfl, seta2_state,    empty_init,    ROT270, "Sunsoft",               "TelePachi Fever Lion (V1.0)",                         MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4418 
4419 GAME( 1997, reelquak,  0,        reelquak, reelquak, seta2_state,    empty_init,    ROT0,   "<unknown>",             "Reel'N Quake! (Version 1.05)",                        MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4420 
4421 GAME( 199?, endrichs,  0,        reelquak, endrichs, seta2_state,    empty_init,    ROT0,   "E.N.Tiger",             "Endless Riches (Ver 1.20)",                           MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4422 
4423 GAME( 1997, staraudi,  0,        staraudi, staraudi, staraudi_state, empty_init,    ROT0,   "Namco",                 "Star Audition",                                       MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // needs flipscreen hooking up properly with new code to function at all
4424 
4425 GAME( 1999, pzlbowl,   0,        pzlbowl,  pzlbowl,  seta2_state,    empty_init,    ROT0,   "MOSS / Nihon System",   "Puzzle De Bowling (Japan)",                           MACHINE_NO_COCKTAIL )
4426 
4427 GAME( 2000, penbros,   0,        penbros,  penbros,  seta2_state,    empty_init,    ROT0,   "Subsino",               "Penguin Brothers (Japan)",                            MACHINE_NO_COCKTAIL )
4428 GAME( 2000, ablast,    penbros,  penbros,  penbros,  seta2_state,    empty_init,    ROT0,   "Subsino",               "Hong Tian Lei (A-Blast) (Japan)",                     MACHINE_NO_COCKTAIL ) // 轟天雷/Hōng tiān léi
4429 GAME( 2000, ablastb,   penbros,  ablastb,  penbros,  seta2_state,    empty_init,    ROT0,   "bootleg",               "Hong Tian Lei (A-Blast) (bootleg)",                   MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND  ) // at least "tilemap sprite" scrolly flag differs, FPGA instead of x1-010
4430 
4431 GAME( 2000, namcostr,  0,        namcostr, funcube,  seta2_state,    init_namcostr, ROT0,   "Namco",                 "Namco Stars",                                         MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING )
4432 
4433 GAME( 2000, deerhunt,  0,        samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V4.3",                               MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4434 GAME( 2000, deerhunta, deerhunt, samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V4.2",                               MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4435 GAME( 2000, deerhuntb, deerhunt, samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V4.0",                               MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4436 GAME( 2000, deerhuntc, deerhunt, samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V3",                                 MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4437 GAME( 2000, deerhuntd, deerhunt, samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V2",                                 MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4438 GAME( 2000, deerhunte, deerhunt, samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V1",                                 MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4439 GAME( 2000, deerhuntj, deerhunt, samshoot, deerhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Deer Hunting USA V4.4.1 (Japan)",                     MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4440 
4441 GAME( 2001, turkhunt,  0,        samshoot, turkhunt, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Turkey Hunting USA V1.00",                            MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4442 
4443 GAME( 2001, wschamp,   0,        samshoot, wschamp,  seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Wing Shooting Championship V2.00",                    MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4444 GAME( 2001, wschampa,  wschamp,  samshoot, wschamp,  seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Wing Shooting Championship V1.01",                    MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4445 GAME( 2001, wschampb,  wschamp,  samshoot, wschamp,  seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Wing Shooting Championship V1.00",                    MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4446 
4447 GAME( 2002, trophyh,   0,        samshoot, trophyh,  seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00",                 MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4448 GAME( 2002, trophyht,  trophyh,  samshoot, trophyht, seta2_state,    empty_init,    ROT0,   "Sammy USA Corporation", "Trophy Hunting - Bear & Moose V1.00 (location test)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
4449 
4450 GAME( 2000, funcube,   0,        funcube,  funcube,  funcube_state,  init_funcube,  ROT0,   "Namco",                 "Funcube (v1.5)",                                      MACHINE_NO_COCKTAIL )
4451 
4452 GAME( 2001, funcube2,  0,        funcube2, funcube,  funcube_state,  init_funcube2, ROT0,   "Namco",                 "Funcube 2 (v1.1)",                                    MACHINE_NO_COCKTAIL )
4453 
4454 GAME( 2001, funcube3,  0,        funcube3, funcube,  funcube_state,  init_funcube3, ROT0,   "Namco",                 "Funcube 3 (v1.1)",                                    MACHINE_NO_COCKTAIL )
4455 
4456 GAME( 2001, funcube4,  0,        funcube2, funcube,  funcube_state,  init_funcube2, ROT0,   "Namco",                 "Funcube 4 (v1.0)",                                    MACHINE_NO_COCKTAIL )
4457 
4458 GAME( 2002, funcube5,  0,        funcube2, funcube,  funcube_state,  init_funcube2, ROT0,   "Namco",                 "Funcube 5 (v1.0)",                                    MACHINE_NO_COCKTAIL )
4459