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