1 // license:BSD-3-Clause
2 // copyright-holders:Olivier Galibert, smf
3 /*
4 
5 GNET Motherboard
6 Taito, 1998
7 
8 The Taito GNET System comprises the following main parts....
9 - Sony ZN-2 Motherboard (Main CPU/GPU/SPU, RAM, BIOS, EEPROM & peripheral interfaces)
10 - Taito FC PCB (Sound hardware & FLASHROMs for storage of PCMCIA cart contents)
11 - Taito CD PCB (PCMCIA cart interface)
12 
13 Also available are...
14 - Optional Communication Interface PCB
15 - Optional Save PCB
16 
17 On power-up, the system checks for a PCMCIA cart. If the cart matches the contents of the flashROMs,
18 the game boots immediately with no delay. If the cart doesn't match, it re-flashes the flashROMs with _some_
19 of the information contained in the cart, which takes approximately 2-3 minutes. The game then resets
20 and boots up.
21 
22 If no cart is present on power-up, the Taito GNET logo is displayed, then a message 'SYSTEM ERROR'
23 Since the logo is shown on boot even without a cart, there must be another sub-BIOS for the initial booting,
24 which I suspect is one of the flashROMs that is acting like a standard ROM and is not flashed at all.
25 Upon inspecting the GNET top board, it appears flash.u30 is the sub-BIOS and perhaps U27 is something sound related.
26 The flashROMs at U55, U56 & U29 appear to be the ones that are re-flashed when swapping game carts.
27 
28 Not every game uses the Taito Zoom sound hardware, these are: Otenami Haiken, Otenami Haiken Final,
29 Zoku Otenamihaiken, Zooo, and possibly Space Invaders Anniversary.
30 
31 PCB Layouts
32 -----------
33 (Standard ZN2 Motherboard)
34 
35 ZN-2 COH-3000 (sticker says COH-3002T denoting Taito GNET BIOS version)
36 |--------------------------------------------------------|
37 |  LA4705             |---------------------------|      |
38 |                     |---------------------------|      |
39 |    AKM_AK4310VM      AT28C16                           |
40 |  VOL                                                   |
41 |       S301           COH3002T.353                      |
42 |                                                        |
43 |                                                        |
44 |J                                                       |
45 |                                                        |
46 |A              814260    CXD2925Q     EPM7064           |
47 |                                                        |
48 |M                                     67.73MHz          |
49 |                                                        |
50 |M                                                       |
51 |            S551    KM4132G271BQ-8                      |
52 |A                                                       |
53 |                                CXD8654Q    CXD8661R    |
54 |                    KM4132G271BQ-8                      |
55 |CN505  CN506                   53.693MHz    100MHz      |
56 |            CAT702                                      |
57 |                                                        |
58 |CN504  CN503                                            |
59 |                                                        |
60 |            MC44200FT                                   |
61 |  NEC_78081G503        KM416V1204BT-L5  KM416V1204BT-L5 |
62 |                                                        |
63 |CN651  CN652                 *                 *        |
64 |                CN654                                   |
65 |--------------------------------------------------------|
66 Notes:
67       CN506 - Connector for optional 3rd player controls
68       CN505 - Connector for optional 4th player controls
69       CN503 - Connector for optional 15kHz external video output (R,G,B,Sync, GND)
70       CN504 - Connector for optional 2nd speaker (for stereo output)
71       CN652 - Connector for optional trackball
72       CN651 - Connector for optional analog controls
73       CN654 - Connector for optional memory card
74       S301  - Slide switch for stereo or mono sound output
75       S551  - Dip switch (4 position, defaults all OFF)
76 
77       COH3002T.353   - GNET BIOS 4MBit MaskROM type M534002 (SOP40)
78       AT28C16        - Atmel AT28C16 2K x8 EEPROM
79       814260-70      - 256K x16 (4MBit) DRAM
80       KM4132G271BQ-8 - 128K x 32Bit x 2 Banks SGRAM
81       KM416V1204BT-L5- 1M x16 EDO DRAM
82       EPM7064        - Altera EPM7064QC100 CPLD (QFP100)
83       CAT702         - Protection chip labelled 'TT10' (DIP20)
84       *              - Unpopulated position for additional KM416V1204BT-L5 RAMs
85       NEC_78081G503  - NEC uPD78081 MCU, 5MHz
86 
87       Video syncs are 59.8260Hz and 15.4333kHz
88 
89 
90 FC PCB  K91X0721B  M43X0337B
91 |--------------------------------------------|
92 |   |---------------------------|            |
93 |   |---------------------------|            |
94 | NJM2100  NJM2100                           |
95 | MB87078                                    |
96 | *MB3773     XC95108         DIP40   CAT702 |
97 | *ADM708AR                                  |
98 | *UPD6379GR                                 |
99 |             FLASH.U30                      |
100 |                                            |
101 | DIP24                                      |
102 |                  *RF5C296                  |
103 | -------CD-PCB------- _                     |
104 | |                   | |                    |
105 | |                   | |                    |
106 | |                   | |                    |
107 | |                   | |                    |
108 | |                   | |                    |
109 | |                   | |                    |
110 | |                   | |                    |
111 | |                   |-|                    |
112 | --------------------                       |
113 |          M66220FP   FLASH.U55   FLASH16.U29|
114 |      FLASH.U27             FLASH.U56       |
115 |*LC321664                                   |
116 | TMS57002DPHA                *ZSG-2         |
117 |           LH52B256      25MHz              |
118 |   MN1020012A                               |
119 |--------------------------------------------|
120 Notes:
121       DIP40           - Unpopulated socket for 8MBit DIP40 EPROM type AM27C800
122       DIP24           - Unpopulated position for FM1208 DIP24 IC
123       FLASH.U30       - Intel TE28F160 16MBit FLASHROM (TSOP56)
124       FLASH.U29/55/56 - Intel TE28F160 16MBit FLASHROM (TSOP56)
125       FLASH.U27       - Intel E28F400 4MBit FLASHROM (TSOP48)
126       LH52B256        - Sharp 32K x8 SRAM (SOP28)
127       LC321664        - Sanyo 64K x16 EDO DRAM (SOP40)
128       XC95108         - XILINX XC95108 CPLD labelled 'E65-01' (QFP100)
129       MN1020012A      - Panasonic MN1020012A Sound CPU (QFP128)
130       ZSG-2           - Zoom Corp ZSG-2 Sound DSP (QFP100)
131       TMS57002DPHA    - Texas Instruments TMS57002DPHA Sound DSP (QFP80)
132       RF5C296         - Ricoh RF5C296 PCMCIA controller (TQFP144)
133       M66220FP        - 256 x8bit Mail-Box (Inter-MPU data transfer)
134       CAT702          - Protection chip labelled 'TT16' (DIP20)
135       CD PCB          - A PCMCIA cart slot connector mounted onto a small daughterboard
136       *               - These parts located under the PCB
137 
138 
139 Taito G-Net card info
140 ---------------------
141 
142 The G-Net system uses a custom PCMCIA card for game software storage. The card is
143 locked with a password and can't be read by conventional means.
144 Some of the cards are made in separate pieces and can be opened. However some
145 are encased in a single-piece steel shell and opening it up destroys the card.
146 Some of the later games came packaged as a Compact Flash card and a PCMCIA to CF
147 adapter, however these cards were also locked the same as the older type.
148 
149 RC De Go! Controller Info
150 -------------------------
151 
152 The game uses an analog wheel (5k potentiometer) in the shape of a hand-held
153 control unit and a trigger (another 5k potentiometer) used for acceleration
154 and brake. The trigger and wheel are self centering. If the trigger is pulled back
155 (like firing a gun) the car goes faster. If the trigger is pushed forward the car
156 slows down. The controller looks a lot like the old Scalextric controllers (remember those?  :-)
157 
158 The controller is connected to the ZN2 main board to the 10 pin connector labelled
159 'ANALOG'. Using two 5k-Ohm potentiometers, power (+5V) and ground are taken from the JAMMA
160 edge connector or directly from the power supply. The output of the steering pot is
161 connected to pin 2 and the output of the acceleration pot is connected to pin 3.
162 The ANALOG connector output pins are tied directly to a chip next to the connector marked
163 'NEC 78081G503 9810KX189'. This is a NEC 8-bit 78K0-family microcontroller with on-chip 8k ROM,
164 256 bytes RAM, 33 I/O ports, 8-bit resolution 8-channel A/D converter, 3-channel timer, 1-channel
165 3-wire serial interface interrupt control (USART) and other peripheral hardware.
166 
167 
168 Card PCB Layouts
169 ----------------
170 
171 Type 1 (standard 'Taito' type, as found on most G-Net games)
172 ------ (This type has separate top and bottom pieces which are glued together and
173        (can be opened if done 'carefully'. But be careful the edges of the top lid are SHARP!)
174 
175 Top
176 ---
177 
178 RO-055A AI AM-1
179 |-|-------------------------------------|
180 | |        |---------|     |--------|   |
181 | |        |S2812A150|     |CXK58257|   |
182 | |        |---------|     |--------|   |
183 | |                                     |
184 | |        |-------|     |-----------|  |
185 | |        |       |     |           |  |
186 | |        |ML-101 |     |           |  |
187 | |        |       |     |  F1PACK   |  |
188 | |        |-------|     |           |  |
189 | |                      |           |  |
190 | |        |-----|       |-----------|  |
191 | |        |ROM1 |                      |
192 | |        |-----|                      |
193 | |                                     |
194 |-|-------------------------------------|
195 Notes:
196       F1PACK    - TEL F1PACK(tm) TE6350B 9744 E0B (TQFP176)
197       S2812A150 - Seiko Instruments 2k x8 parallel EEPROM (TSOP28)
198       ML-101    - ML-101 24942-6420 9833 Z03 JAPAN (TQFP100, NOTE! This chip looks like it is Fujitsu-manufactured)
199       CXK58257  - SONY CXK58257 32k x8 SRAM (TSOP28)
200       ROM1      - TOSHIBA TC58V32FT 4M x8 (32MBit) CMOS NAND Flash EEPROM 3.3Volt (TSOP44)
201                   The ROMs use a non-standard format and can not be read by conventional methods.
202 
203 Bottom
204 ------
205 
206 |-|-------------------------------------|
207 | |                                     |
208 | |  |-----|      |-----|     |-----|   |
209 | |  |ROM2 |      |ROM3 |     |ROM4 |   |
210 | |  |-----|      |-----|     |-----|   |
211 | |                                     |
212 | |                                     |
213 | |  |-----|      |-----|     |-----|   |
214 | |  |ROM5 |      |ROM6 |     |ROM7 |   |
215 | |  |-----|      |-----|     |-----|   |
216 | |                                     |
217 | |                                     |
218 | |  |-----|      |-----|     |-----|   |
219 | |  |ROM8 |      |ROM9 |     |ROM10|   |
220 | |  |-----|      |-----|     |-----|   |
221 | |                                     |
222 |-|-------------------------------------|
223 Notes:
224       ROM2-10   - TOSHIBA TC58V32FT 4M x8 (32MBit) CMOS NAND Flash EEPROM 3.3Volt (TSOP44)
225                   The ROMs use a non-standard format and can not be read by conventional methods.
226 
227       Note: All ROMs have no markings (except part number) and no labels. There are also
228       no PCB location marks. The numbers I've assigned to the ROMs are made up for
229       simplicity. The actual cards have been dumped as a single storage device.
230 
231       Confirmed usage on.... (not all games listed)
232       Chaos Heat
233       Flip Maze
234       Kollon
235       Mahjong OH
236       Nightraid
237       Otenki Kororin / Weather Tales
238       Psyvariar Medium Unit
239       Psyvariar Revision
240       Ray Crisis
241       RC de Go
242       Shanghai Shoryu Sairin
243       Shikigami no Shiro
244       Souten Ryu
245       Space Invaders Anniversary
246       Super Puzzle Bobble (English)
247       XIIStag
248       Zoku Otenami Haiken
249       Zooo
250 
251 
252 Type 2 (3rd party type 'sealed' cards)
253 ------
254 
255 Note only 1 card was sacrificed and opened.
256 
257 Top
258 ---
259 
260 |-|-------------------------------------|
261 | |             18.00         |-----|   |
262 | |                           |U15  |   |
263 | |        |---------|        |-----|   |
264 | |        |20H2877  |                  |
265 | |        |IBM0398  |        |-----|   |
266 | |        |1B37001TQ|        |U13  |   |
267 | |        |KOREA    |        |-----|   |
268 | |        |---------|                  |
269 | |                                     |
270 | |                                     |
271 | |   |-----|     |-------|             |
272 | |   |U10  |     |D431000|             |
273 | |   |-----|     |-------|             |
274 | |                                     |
275 |-|-------------------------------------|
276 Notes:
277       IBM0398 - Custom IC marked 20H2877 IBM0398 1B37001TQ KOREA (TQFP176)
278       D431000 - NEC D431000 128k x8 SRAM (TSOP32)
279       18.00   - Small square white 'thing', may be an oscillator at 18MHz?
280       U*      - TOSHIBA TC58V32FT 4M x8 (32MBit) CMOS NAND Flash EEPROM 3.3Volt (TSOP44)
281                 The ROMs use a non-standard format and can not be read by conventional methods.
282 
283 Bottom
284 ------
285 
286 |-|-------------------------------------|
287 | |                                     |
288 | |  |-----|      |-----|     |-----|   |
289 | |  |U1   |      |U2   |     |U3   |   |
290 | |  |-----|      |-----|     |-----|   |
291 | |                                     |
292 | |                                     |
293 | |  |-----|      |-----|     |-----|   |
294 | |  |U4   |      |U5   |     |U6   |   |
295 | |  |-----|      |-----|     |-----|   |
296 | |                                     |
297 | |                                     |
298 | |               |-----|     |-----|   |
299 | |               |U7   |     |U8   |   |
300 | |               |-----|     |-----|   |
301 | |                                     |
302 |-|-------------------------------------|
303 Notes:
304       U*  - TOSHIBA TC58V32FT 4M x8 (32MBit) CMOS NAND Flash EEPROM 3.3Volt (TSOP44)
305             The ROMs use a non-standard format and can not be read by conventional methods.
306             U8 not populated in Nightraid card, but may be populated in other cards.
307 
308       Note: All ROMs have no markings (except part number) and no labels. There are PCB
309             location marks. The actual cards have been dumped as a single storage device.
310 
311       Confirmed usage on.... (not all games listed)
312       Nightraid (another one, not the same as listed above)
313 
314       Based on card type (made with single sealed steel shell) these are also using the same PCB...
315       XIIStag (another one, not the same as listed above)
316       Go By RC
317       Space Invaders Anniversary (another one, not the same as listed above)
318       Super Puzzle Bobble (Japan)
319       Usagi
320 
321 Type 3 (PCMCIA Compact Flash Adaptor + Compact Flash card, sealed together with the game?s label)
322 ------
323 
324        The Compact Flash card is read protected, it is a custom Sandisk SDCFB-64 Card (64MByte)
325 
326        Confirmed usage on.... (not all games listed)
327        Otenami Haiken Final
328        Kollon
329        Zooo
330 */
331 
332 #include "emu.h"
333 #include "includes/zn.h"
334 
335 #include "machine/ataflash.h"
336 #include "machine/intelfsh.h"
337 #include "machine/rf5c296.h"
338 
339 //
340 // Taito GNET specific
341 //
342 
343 class taitogn_state : public zn_state
344 {
345 public:
taitogn_state(const machine_config & mconfig,device_type type,const char * tag)346 	taitogn_state(const machine_config &mconfig, device_type type, const char *tag) :
347 		zn_state(mconfig, type, tag),
348 		m_mn10200(*this, "taito_zoom:mn10200"),
349 		m_pccard(*this, "pccard"),
350 		m_flashbank(*this, "flashbank"),
351 		m_mb3773(*this, "mb3773"),
352 		m_zoom(*this, "taito_zoom"),
353 		m_pgmflash(*this, "pgmflash"),
354 		m_sndflash(*this, "sndflash%u", 0U),
355 		m_jp1(*this, "JP1"),
356 		m_has_zoom(true)
357 	{
358 	}
359 
360 	void init_nozoom();
361 
362 	void base_config(machine_config &config);
363 	void coh3002t_t2_mp(machine_config &config);
364 	void coh3002t(machine_config &config);
365 	void coh3002t_t1_mp(machine_config &config);
366 	void coh3002t_cf(machine_config &config);
367 	void coh3002t_t2(machine_config &config);
368 	void coh3002t_t1(machine_config &config);
369 
370 private:
371 	uint8_t control_r();
372 	void control_w(uint8_t data);
373 	void control2_w(uint16_t data);
374 	uint8_t control3_r();
375 	void control3_w(uint8_t data);
376 	uint16_t gn_1fb70000_r();
377 	void gn_1fb70000_w(uint16_t data);
378 	uint16_t hack1_r(offs_t offset);
379 	void coin_w(uint8_t data);
380 	uint8_t coin_r();
381 	uint8_t gnet_mahjong_panel_r();
382 	uint32_t zsg2_ext_r(offs_t offset);
383 
384 	void flashbank_map(address_map &map);
385 	void main_map(address_map &map);
386 	void main_mp_map(address_map &map);
387 
388 	virtual void machine_start() override;
389 	virtual void machine_reset() override;
390 
391 	required_device<cpu_device> m_mn10200;
392 	required_device<pccard_slot_device> m_pccard;
393 	required_device<address_map_bank_device> m_flashbank;
394 	required_device<mb3773_device> m_mb3773;
395 	required_device<taito_zoom_device> m_zoom;
396 	required_device<intelfsh16_device> m_pgmflash;
397 	required_device_array<intelfsh16_device, 3> m_sndflash;
398 	required_ioport m_jp1;
399 
400 	bool m_has_zoom;
401 	uint8_t m_control;
402 	uint16_t m_control2;
403 	uint8_t m_control3;
404 	int m_v;
405 
406 	uint8_t m_coin_info;
407 };
408 
409 // Misc. controls
410 
control_r()411 uint8_t taitogn_state::control_r()
412 {
413 	return m_control;
414 }
415 
control_w(uint8_t data)416 void taitogn_state::control_w(uint8_t data)
417 {
418 	// 20 = watchdog
419 	m_mb3773->write_line_ck((data & 0x20) >> 5);
420 
421 	// 10 = sound hw reset, but make sure it's only booted on games that use it
422 	if (m_has_zoom)
423 	{
424 		m_mn10200->set_input_line(INPUT_LINE_RESET, (data & 0x10) ? ASSERT_LINE : CLEAR_LINE);
425 
426 		if (~data & m_control & 0x10)
427 		{
428 			logerror("control_w Zoom reset\n");
429 
430 			m_zoom->reset();
431 
432 			// assume that this also readys the sound flash chips
433 			m_pgmflash->write(0, 0xff);
434 			m_sndflash[0]->write(0, 0xff);
435 			m_sndflash[1]->write(0, 0xff);
436 			m_sndflash[2]->write(0, 0xff);
437 		}
438 	}
439 
440 	// 04 = select bank
441 	// According to the rom code, bits 1-0 may be part of the bank
442 	// selection too, but they're always 0.
443 	m_flashbank->set_bank(((data>>2) & 1) | (m_jp1->read() << 1));
444 
445 	m_control = data;
446 }
447 
control2_w(uint16_t data)448 void taitogn_state::control2_w(uint16_t data)
449 {
450 	m_control2 = data;
451 }
452 
control3_r()453 uint8_t taitogn_state::control3_r()
454 {
455 	return m_control3;
456 }
457 
control3_w(uint8_t data)458 void taitogn_state::control3_w(uint8_t data)
459 {
460 	m_control3 = data;
461 }
462 
gn_1fb70000_r()463 uint16_t taitogn_state::gn_1fb70000_r()
464 {
465 	// (1328) 1348 tests mask 0002, 8 times.
466 	// Called by 1434, exit at 143c
467 	// f -> 4/1
468 	// end with 4x1 -> ok
469 	// end with 4x0 -> configid error
470 	// so returning 2 always works, strange.
471 
472 	return 2;
473 }
474 
gn_1fb70000_w(uint16_t data)475 void taitogn_state::gn_1fb70000_w(uint16_t data)
476 {
477 	// Writes 0 or 1 all the time, it *may* have something to do with
478 	// i/o port width, but then maybe not
479 }
480 
hack1_r(offs_t offset)481 uint16_t taitogn_state::hack1_r(offs_t offset)
482 {
483 	switch (offset)
484 	{
485 		case 0:
486 			if (!machine().side_effects_disabled())
487 				m_v = m_v ^ 8;
488 			// Probably something to do with MCU
489 			return m_v;
490 
491 		default:
492 			break;
493 	}
494 
495 	return 0;
496 }
497 
498 
499 
coin_w(uint8_t data)500 void taitogn_state::coin_w(uint8_t data)
501 {
502 	/* 0x01=counter
503 	   0x02=coin lock 1
504 	   0x04=mahjong row select
505 	   0x08=mahjong row select
506 	   0x10=??
507 	   0x20=coin lock 2
508 	   0x40=mahjong row select
509 	   0x80=mahjong row select
510 	*/
511 	m_coin_info = data;
512 }
513 
coin_r()514 uint8_t taitogn_state::coin_r()
515 {
516 	return m_coin_info;
517 }
518 
519 /* mahjong panel handler (for Usagi & Mahjong Oh) */
gnet_mahjong_panel_r()520 uint8_t taitogn_state::gnet_mahjong_panel_r()
521 {
522 	switch (m_coin_info & 0xcc)
523 	{
524 		case 0x04: return ioport("KEY0")->read();
525 		case 0x08: return ioport("KEY1")->read();
526 		case 0x40: return ioport("KEY2")->read();
527 		case 0x80: return ioport("KEY3")->read();
528 
529 		default:
530 			break;
531 	}
532 
533 	/* mux disabled */
534 	return ioport("P4")->read();
535 }
536 
zsg2_ext_r(offs_t offset)537 uint32_t taitogn_state::zsg2_ext_r(offs_t offset)
538 {
539 	offset <<= 1;
540 
541 	switch (offset & 0x300000)
542 	{
543 		case 0x000000:
544 		case 0x100000:
545 		case 0x200000: return m_sndflash[offset >> 20]->read(offset & 0xfffff) | m_sndflash[offset >> 20]->read((offset & 0xfffff) | 1) << 16;
546 
547 		default:
548 			break;
549 	}
550 	return 0;
551 }
552 
machine_start()553 void taitogn_state::machine_start()
554 {
555 	zn_state::machine_start();
556 	save_item(NAME(m_control));
557 	save_item(NAME(m_control2));
558 	save_item(NAME(m_control3));
559 	save_item(NAME(m_v));
560 	save_item(NAME(m_coin_info));
561 }
562 
machine_reset()563 void taitogn_state::machine_reset()
564 {
565 	// halt sound CPU since it has no valid program at start
566 	m_mn10200->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
567 
568 	m_control = 0x10;
569 	m_flashbank->set_bank(m_jp1->read() << 1);
570 }
571 
init_nozoom()572 void taitogn_state::init_nozoom()
573 {
574 	m_has_zoom = false;
575 }
576 
main_map(address_map & map)577 void taitogn_state::main_map(address_map &map)
578 {
579 	zn_base_map(map);
580 
581 	map(0x1f000000, 0x1f7fffff).m(m_flashbank, FUNC(address_map_bank_device::amap16));
582 	map(0x1fa20000, 0x1fa20000).rw(FUNC(taitogn_state::coin_r), FUNC(taitogn_state::coin_w));
583 	map(0x1fa30000, 0x1fa30000).rw(FUNC(taitogn_state::control3_r), FUNC(taitogn_state::control3_w));
584 	map(0x1fa51c00, 0x1fa51dff).nopr(); // systematic read at spu_address + 250000, result dropped, maybe other accesses
585 	map(0x1fa60000, 0x1fa60003).r(FUNC(taitogn_state::hack1_r));
586 	map(0x1fb00000, 0x1fb0ffff).rw("rf5c296", FUNC(rf5c296_device::io_r), FUNC(rf5c296_device::io_w));
587 	map(0x1fb40000, 0x1fb40000).rw(FUNC(taitogn_state::control_r), FUNC(taitogn_state::control_w));
588 	map(0x1fb60000, 0x1fb60001).w(FUNC(taitogn_state::control2_w));
589 	map(0x1fb70000, 0x1fb70001).rw(FUNC(taitogn_state::gn_1fb70000_r), FUNC(taitogn_state::gn_1fb70000_w));
590 	map(0x1fb80000, 0x1fb80001).w(m_zoom, FUNC(taito_zoom_device::reg_data_w));
591 	map(0x1fb80002, 0x1fb80003).w(m_zoom, FUNC(taito_zoom_device::reg_address_w));
592 	map(0x1fba0000, 0x1fba0001).w(m_zoom, FUNC(taito_zoom_device::sound_irq_w));
593 	map(0x1fbc0000, 0x1fbc0001).r(m_zoom, FUNC(taito_zoom_device::sound_irq_r));
594 	map(0x1fbe0000, 0x1fbe01ff).rw(m_zoom, FUNC(taito_zoom_device::shared_ram_r), FUNC(taito_zoom_device::shared_ram_w)).umask32(0x00ff00ff); // M66220FP for comms with the MN10200
595 }
596 
flashbank_map(address_map & map)597 void taitogn_state::flashbank_map(address_map &map)
598 {
599 	// Bank 0 has access to the sub-bios, the mn102 flash and the rf5c296 mem zone
600 	map(0x00000000, 0x001fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
601 	map(0x00200000, 0x002fffff).rw("rf5c296", FUNC(rf5c296_device::mem_r), FUNC(rf5c296_device::mem_w));
602 	map(0x00300000, 0x0037ffff).rw(m_pgmflash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
603 
604 	// Bank 1 & 3 has access to the 3 samples flashes
605 	map(0x08000000, 0x081fffff).mirror(0x10000000).rw(m_sndflash[0], FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
606 	map(0x08200000, 0x083fffff).mirror(0x10000000).rw(m_sndflash[1], FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
607 	map(0x08400000, 0x085fffff).mirror(0x10000000).rw(m_sndflash[2], FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
608 
609 	// Bank 2 has access to the sub-bios, the mn102 flash and the mask eprom
610 	map(0x10000000, 0x100fffff).rom().region("bioseprom", 0);
611 	map(0x10100000, 0x1017ffff).mirror(0x80000).rw(m_pgmflash, FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
612 	map(0x10200000, 0x103fffff).rw("biosflash", FUNC(intelfsh16_device::read), FUNC(intelfsh16_device::write));
613 }
614 
main_mp_map(address_map & map)615 void taitogn_state::main_mp_map(address_map &map)
616 {
617 	main_map(map);
618 	map(0x1fa10100, 0x1fa10100).r(FUNC(taitogn_state::gnet_mahjong_panel_r));
619 }
620 
slot_ataflash(device_slot_interface & device)621 void slot_ataflash(device_slot_interface &device)
622 {
623 	device.option_add("taitopccard1", TAITO_PCCARD1);
624 	device.option_add("taitopccard2", TAITO_PCCARD2);
625 	device.option_add("taitocf", TAITO_COMPACT_FLASH);
626 	device.option_add("ataflash", ATA_FLASH_PCCARD);
627 }
628 
coh3002t(machine_config & config)629 void taitogn_state::coh3002t(machine_config &config)
630 {
631 	zn2(config);
632 	gameboard_cat702(config);
633 
634 	/* basic machine hardware */
635 	m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::main_map);
636 
637 	RF5C296(config, "rf5c296", 0).set_pccard("pccard");
638 
639 	PCCARD_SLOT(config, m_pccard, slot_ataflash, nullptr);
640 
641 	MB3773(config, "mb3773");
642 
643 	INTEL_TE28F160(config, "biosflash");
644 	INTEL_E28F400B(config, "pgmflash");
645 	INTEL_TE28F160(config, "sndflash0");
646 	INTEL_TE28F160(config, "sndflash1");
647 	INTEL_TE28F160(config, "sndflash2");
648 
649 	ADDRESS_MAP_BANK(config, "flashbank").set_map(&taitogn_state::flashbank_map).set_options(ENDIANNESS_LITTLE, 16, 32, 0x8000000);
650 
651 	subdevice<spu_device>("spu")->reset_routes();
652 	subdevice<spu_device>("spu")->add_route(0, "lspeaker", 0.3);
653 	subdevice<spu_device>("spu")->add_route(1, "rspeaker", 0.3);
654 
655 	TAITO_ZOOM(config, m_zoom);
656 	m_zoom->set_use_flash();
657 	m_zoom->add_route(0, "lspeaker", 1.0);
658 	m_zoom->add_route(1, "rspeaker", 1.0);
659 
660 	m_zoom->subdevice<zsg2_device>("zsg2")->ext_read().set(FUNC(taitogn_state::zsg2_ext_r));
661 }
662 
coh3002t_t1(machine_config & config)663 void taitogn_state::coh3002t_t1(machine_config &config)
664 {
665 	coh3002t(config);
666 	m_pccard->set_default_option("taitopccard1");
667 }
668 
coh3002t_t2(machine_config & config)669 void taitogn_state::coh3002t_t2(machine_config &config)
670 {
671 	coh3002t(config);
672 	m_pccard->set_default_option("taitopccard2");
673 }
674 
coh3002t_t1_mp(machine_config & config)675 void taitogn_state::coh3002t_t1_mp(machine_config &config)
676 {
677 	coh3002t_t1(config);
678 
679 	/* basic machine hardware */
680 	m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::main_mp_map);
681 }
682 
coh3002t_t2_mp(machine_config & config)683 void taitogn_state::coh3002t_t2_mp(machine_config &config)
684 {
685 	coh3002t_t2(config);
686 
687 	/* basic machine hardware */
688 	m_maincpu->set_addrmap(AS_PROGRAM, &taitogn_state::main_mp_map);
689 }
690 
coh3002t_cf(machine_config & config)691 void taitogn_state::coh3002t_cf(machine_config &config)
692 {
693 	coh3002t(config);
694 	m_pccard->set_default_option("taitocf");
695 }
696 
697 
698 static INPUT_PORTS_START( coh3002t )
699 	PORT_START("P1")
700 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
701 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
702 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
703 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
704 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
705 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
706 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
707 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
708 
709 	PORT_START("P2")
710 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
711 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
712 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
713 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
714 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
715 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
716 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
717 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
718 
719 	PORT_START("SERVICE")
720 	PORT_SERVICE_NO_TOGGLE( 0x01, IP_ACTIVE_LOW )
721 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
722 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT )
723 	PORT_BIT( 0xf8, IP_ACTIVE_LOW, IPT_UNKNOWN )
724 
725 	PORT_START("SYSTEM")
726 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
727 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
728 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 )
729 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START4 )
730 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
731 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
732 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN3 )
733 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN4 )
734 
735 	PORT_START("P3")
736 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
737 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
738 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
739 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
740 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
741 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
742 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
743 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
744 
745 	PORT_START("P4")
746 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
747 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
748 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
749 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
750 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
751 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
752 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
753 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
754 
755 	PORT_START("DSW")
756 	PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "S551:1" )
757 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Service_Mode ) ) PORT_DIPLOCATION("S551:2") // bios testmode
758 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
759 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
760 	PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "S551:3" )
761 	PORT_DIPNAME( 0x08, 0x08, "Test Mode" )             PORT_DIPLOCATION("S551:4") // game testmode
762 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
763 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
764 
765 	PORT_START( "ANALOG1" )
766 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
767 
768 	PORT_START( "ANALOG2" )
769 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
770 
771 	PORT_START("JP1")
772 	PORT_DIPNAME( 0x01, 0x00, "Bios Flash" )            PORT_DIPLOCATION("JP1:1")
773 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
774 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
775 INPUT_PORTS_END
776 
777 static INPUT_PORTS_START(gobyrc)
778 	PORT_INCLUDE(coh3002t)
779 
780 	PORT_MODIFY( "ANALOG1" )
781 	PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX( 0x00, 0xff ) PORT_SENSITIVITY( 100 ) PORT_KEYDELTA( 30 ) PORT_NAME("Wheel")
782 
783 	PORT_MODIFY( "ANALOG2" )
784 	PORT_BIT( 0xff, 0x80, IPT_PADDLE_V ) PORT_MINMAX( 0x00, 0xff ) PORT_SENSITIVITY( 100 ) PORT_KEYDELTA( 30 ) PORT_NAME("Trigger") PORT_REVERSE
785 
786 	//8006FF70
787 	//PORT_START( "ID" )
788 	//PORT_CONFNAME( 0x03, 0x00, "ID" )
789 	//PORT_CONFSETTING( 0, "1" )
790 	//PORT_CONFSETTING( 1, "2" )
791 	//PORT_CONFSETTING( 2, "3" )
792 	//PORT_CONFSETTING( 3, "4" )
793 INPUT_PORTS_END
794 
795 /* input port define for the mahjong panel (standard type) */
796 static INPUT_PORTS_START( coh3002t_mp )
797 	PORT_INCLUDE( coh3002t )
798 
799 	PORT_START("KEY0")
800 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A )
801 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E )
802 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I )
803 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M )
804 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN )
805 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )
806 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
807 
808 	PORT_START("KEY1")
809 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B )
810 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F )
811 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J )
812 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N )
813 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH )
814 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED ) //rate button
815 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
816 
817 	PORT_START("KEY2")
818 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C )
819 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G )
820 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K )
821 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI )
822 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON )
823 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
824 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED )
825 
826 	PORT_START("KEY3")
827 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D )
828 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H )
829 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L )
830 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON )
831 	PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
832 INPUT_PORTS_END
833 
834 static INPUT_PORTS_START(coh3002t_jp1)
835 	PORT_INCLUDE(coh3002t)
836 	PORT_MODIFY("JP1")
837 	PORT_DIPNAME( 0x01, 0x01, "Bios Flash")
838 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
839 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
840 INPUT_PORTS_END
841 
842 //
843 
844 #define TAITOGNET_BIOS \
845 	ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 ) \
846 	ROM_LOAD( "m534002c-60.ic353", 0x000000, 0x080000, CRC(03967fa7) SHA1(0e17fec2286e4e25deb23d40e41ce0986f373d49) ) \
847 	ROM_REGION( 0x8, "cat702_1", 0) \
848 	ROM_LOAD( "tt10.ic652", 0x000000, 0x000008, CRC(235510b1) SHA1(2cc02113207a8f0b078152d31ce6503411750e70) ) \
849 	ROM_REGION( 0x8, "cat702_2", 0) \
850 	ROM_LOAD( "tt16", 0x000000, 0x000008, CRC(6bb167b3) SHA1(9dcba08f10775a9adf2b1f382c947460edd3d239) ) \
851 	ROM_REGION( 0x2000, "mcu", 0 ) \
852 	ROM_LOAD( "upd78081.655", 0x0000, 0x2000, NO_DUMP ) /* internal rom :( */ \
853 	ROM_REGION16_LE( 0x200000, "biosflash", 0 ) \
854 	ROM_LOAD( "flash.u30", 0x000000, 0x200000, CRC(c48c8236) SHA1(c6dad60266ce2ff635696bc0d91903c543273559) ) \
855 	ROM_REGION16_LE( 0x100000, "bioseprom", 0 ) \
856 	ROM_SYSTEM_BIOS( 0, "v1", "G-NET Bios v1 flasher" ) \
857 	ROMX_LOAD( "f35-01_m27c800_v1.bin", 0x000000, 0x100000, CRC(cd15cc30) SHA1(78361f46fa7186d5058937c86c66247a86b1257f), ROM_BIOS(0) ) /* hand made */ \
858 	ROM_SYSTEM_BIOS( 1, "v2", "G-NET Bios v2 flasher" ) \
859 	ROMX_LOAD( "f35-01_m27c800.bin", 0x000000, 0x100000, CRC(6225ec11) SHA1(047852d456b6ff85f8e640887caa03cf3e63ffad), ROM_BIOS(1) ) \
860 	ROM_REGION( 0x80000, "taito_zoom:mn10200", 0 ) \
861 	ROM_FILL( 0, 0x80000, 0xff ) \
862 	ROM_REGION32_LE( 0x600000, "taito_zoom:zsg2", 0 ) \
863 	ROM_FILL( 0, 0x600000, 0xff )
864 
865 ROM_START( coh3002t )
866 	TAITOGNET_BIOS
867 ROM_END
868 
869 /* Taito */
870 
871 ROM_START(raycris)
872 	TAITOGNET_BIOS
873 
874 	DISK_REGION( "pccard:taitopccard1:image" )
875 	DISK_IMAGE( "raycris", 0, SHA1(9d255710c87c3286542d357820d828807cc6ca07))
876 ROM_END
877 
878 ROM_START(raycrisj)
879 	TAITOGNET_BIOS
880 
881 	DISK_REGION( "pccard:taitopccard1:image" )
882 	DISK_IMAGE( "raycrisj", 0, SHA1(015cb0e6c4421cc38809de28c4793b4491386aee))
883 ROM_END
884 
885 ROM_START(gobyrc)
886 	TAITOGNET_BIOS
887 
888 	DISK_REGION( "pccard:taitopccard2:image" )
889 	DISK_IMAGE( "gobyrc", 0, SHA1(0bee1f495fc8b033fd56aad9260ae94abb35eb58))
890 ROM_END
891 
892 ROM_START(rcdego)
893 	TAITOGNET_BIOS
894 
895 	DISK_REGION( "pccard:taitopccard1:image" )
896 	DISK_IMAGE( "rcdego", 0, SHA1(9e177f2a3954cfea0c8c5a288e116324d10f5dd1))
897 ROM_END
898 
899 ROM_START(chaoshea)
900 	TAITOGNET_BIOS
901 
902 	DISK_REGION( "pccard:taitopccard1:image" )
903 	DISK_IMAGE( "chaosheat", 0, SHA1(c13b7d7025eee05f1f696d108801c7bafb3f1356))
904 ROM_END
905 
906 ROM_START(chaosheaj)
907 	TAITOGNET_BIOS
908 
909 	DISK_REGION( "pccard:taitopccard1:image" )
910 	DISK_IMAGE( "chaosheatj", 0, SHA1(2f211ac08675ea8ec33c7659a13951db94eaa627))
911 ROM_END
912 
913 ROM_START(flipmaze)
914 	TAITOGNET_BIOS
915 
916 	DISK_REGION( "pccard:taitopccard1:image" )
917 	DISK_IMAGE( "flipmaze", 0, SHA1(423b6c06f4f2d9a608ce20b61a3ac11687d22c40) )
918 ROM_END
919 
920 ROM_START(spuzbobl)
921 	TAITOGNET_BIOS
922 
923 	DISK_REGION( "pccard:taitopccard2:image" )
924 	DISK_IMAGE( "spuzbobl", 0, SHA1(1b1c72fb7e5656021485fefaef8f2ba48e2b4ea8))
925 ROM_END
926 
927 ROM_START(spuzboblj)
928 	TAITOGNET_BIOS
929 
930 	DISK_REGION( "pccard:taitopccard2:image" )
931 	DISK_IMAGE( "spuzbobj", 0, SHA1(dac433cf88543d2499bf797d7406b82ae4338726))
932 ROM_END
933 
934 ROM_START(soutenry)
935 	TAITOGNET_BIOS
936 
937 	DISK_REGION( "pccard:taitopccard1:image" )
938 	DISK_IMAGE( "soutenry", 0, SHA1(9204d0be833d29f37b8cd3fbdf09da69b622254b))
939 ROM_END
940 
941 ROM_START(shanghss)
942 	TAITOGNET_BIOS
943 
944 	DISK_REGION( "pccard:taitopccard1:image" )
945 	DISK_IMAGE( "shanghss", 0, SHA1(7964f71ec5c81d2120d83b63a82f97fbad5a8e6d))
946 ROM_END
947 
948 ROM_START(sianniv)
949 	TAITOGNET_BIOS
950 
951 	DISK_REGION( "pccard:taitopccard1:image" )
952 	DISK_IMAGE( "sianniv", 0, SHA1(1e08b813190a9e1baf29bc16884172d6c8da7ae3))
953 ROM_END
954 
955 ROM_START(kollon)
956 	TAITOGNET_BIOS
957 
958 	DISK_REGION( "pccard:taitopccard1:image" )
959 	DISK_IMAGE( "kollon", 0, SHA1(d8ea5b5b0ee99004b16ef89883e23de6c7ddd7ce))
960 ROM_END
961 
962 ROM_START(kollonc)
963 	TAITOGNET_BIOS
964 	ROM_DEFAULT_BIOS( "v2" )
965 
966 	DISK_REGION( "pccard:taitocf:image" )
967 	DISK_IMAGE( "kollonc", 0, SHA1(ce62181659701cfb8f7c564870ab902be4d8e060)) /* Original Taito Compact Flash version */
968 ROM_END
969 
970 ROM_START(shikigam)
971 	TAITOGNET_BIOS
972 
973 	DISK_REGION( "pccard:taitopccard1:image" )
974 	DISK_IMAGE( "shikigam", 0, SHA1(fa49a0bc47f5cb7c30d7e49e2c3696b21bafb840))
975 ROM_END
976 
977 ROM_START(shikigama)
978 	TAITOGNET_BIOS
979 
980 	DISK_REGION( "pccard:taitopccard1:image" )
981 	DISK_IMAGE( "shikigama", 0, SHA1(a6fe194c86730963301be9710782ca4ac1bf3e8d))
982 ROM_END
983 
984 
985 /* Success */
986 
987 ROM_START(otenamih)
988 	TAITOGNET_BIOS
989 
990 	DISK_REGION( "pccard:taitopccard1:image" )
991 	DISK_IMAGE( "otenamih", 0, SHA1(b3babe3a1876c43745616ee1e7d87276ce7dad0b) )
992 ROM_END
993 
994 ROM_START(psyvaria)
995 	TAITOGNET_BIOS
996 
997 	DISK_REGION( "pccard:taitopccard1:image" )
998 	DISK_IMAGE( "psyvaria", 0,  SHA1(3c7fca5180356190a8bf94b22a847fdd2e6a4e13))
999 ROM_END
1000 
1001 ROM_START(psyvarij)
1002 	TAITOGNET_BIOS
1003 
1004 	DISK_REGION( "pccard:taitopccard1:image" )
1005 	DISK_IMAGE( "psyvarij", 0,  SHA1(b981a42a10069322b77f7a268beae1d409b4156d))
1006 ROM_END
1007 
1008 ROM_START(psyvarrv)
1009 	TAITOGNET_BIOS
1010 
1011 	DISK_REGION( "pccard:taitopccard1:image" )
1012 	DISK_IMAGE( "psyvarrv", 0, SHA1(277c4f52502bcd7acc1889840962ec80d56465f3))
1013 ROM_END
1014 
1015 ROM_START(zooo)
1016 	TAITOGNET_BIOS
1017 
1018 	DISK_REGION( "pccard:taitopccard1:image" )
1019 	DISK_IMAGE( "zooo", 0, SHA1(e275b3141b2bc49142990e6b497a5394a314a30b))
1020 ROM_END
1021 
1022 ROM_START(zokuoten)
1023 	TAITOGNET_BIOS
1024 
1025 	DISK_REGION( "pccard:taitopccard1:image" )
1026 	DISK_IMAGE( "zokuoten", 0, SHA1(5ce13db00518f96af64935176c71ec68d2a51938))
1027 ROM_END
1028 
1029 ROM_START(otenamhf)
1030 	TAITOGNET_BIOS
1031 	ROM_DEFAULT_BIOS( "v2" )
1032 
1033 	DISK_REGION( "pccard:taitocf:image" )
1034 	DISK_IMAGE( "otenamhf", 0, SHA1(5b15c33bf401e5546d78e905f538513d6ffcf562)) /* Original Taito Compact Flash version */
1035 ROM_END
1036 
1037 
1038 /* Takumi */
1039 
1040 ROM_START(nightrai)
1041 	TAITOGNET_BIOS
1042 
1043 	DISK_REGION( "pccard:taitopccard1:image" )
1044 	DISK_IMAGE( "nightrai", 0, SHA1(74d0458f851cbcf10453c5cc4c47bb4388244cdf))
1045 ROM_END
1046 
1047 ROM_START(otenki)
1048 	TAITOGNET_BIOS
1049 
1050 	DISK_REGION( "pccard:taitopccard1:image" )
1051 	DISK_IMAGE( "otenki", 0, SHA1(7e745ca4c4570215f452fd09cdd56a42c39caeba))
1052 ROM_END
1053 
1054 
1055 /* Warashi */
1056 
1057 ROM_START(usagi)
1058 	TAITOGNET_BIOS
1059 
1060 	DISK_REGION( "pccard:taitopccard2:image" )
1061 	DISK_IMAGE( "usagi", 0, SHA1(edf9dd271957f6cb06feed238ae21100514bef8e))
1062 ROM_END
1063 
1064 ROM_START(mahjngoh)
1065 	TAITOGNET_BIOS
1066 
1067 	DISK_REGION( "pccard:taitopccard1:image" )
1068 	DISK_IMAGE( "mahjngoh", 0, SHA1(3ef1110d15582d7c0187438d7ad61765dd121cff))
1069 ROM_END
1070 
1071 ROM_START(shangtou)
1072 	TAITOGNET_BIOS
1073 
1074 	DISK_REGION( "pccard:taitopccard1:image" )
1075 	DISK_IMAGE( "shanghaito", 0, SHA1(9901db5a9aae77e3af4157aa2c601eaab5b7ca85) )
1076 ROM_END
1077 
1078 
1079 /* Triangle Service */
1080 
1081 ROM_START(xiistag)
1082 	TAITOGNET_BIOS
1083 
1084 	DISK_REGION( "pccard:taitopccard1:image" )
1085 	DISK_IMAGE( "xiistag", 0, SHA1(586e37c8d926293b2bd928e5f0d693910cfb05a2))
1086 ROM_END
1087 
1088 
1089 /* A dummy driver, so that the bios can be debugged, and to serve as */
1090 /* parent for the coh-3002t.353 file, so that we do not have to include */
1091 /* it in every zip file */
1092 GAME( 1997, coh3002t,  0,        coh3002t,       coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Taito GNET", MACHINE_IS_BIOS_ROOT )
1093 
1094 /* Taito */
1095 GAME( 1998, chaoshea,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Chaos Heat (V2.09O 1998/10/02 17:00)", MACHINE_IMPERFECT_SOUND )
1096 GAME( 1998, chaosheaj, chaoshea, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Chaos Heat (V2.08J 1998/09/25 17:00)", MACHINE_IMPERFECT_SOUND )
1097 GAME( 1998, raycris,   coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Ray Crisis (V2.03O 1998/11/15 15:43)", MACHINE_IMPERFECT_SOUND )
1098 GAME( 1998, raycrisj,  raycris,  coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Ray Crisis (V2.03J 1998/11/15 15:43)", MACHINE_IMPERFECT_SOUND )
1099 GAME( 1999, spuzbobl,  coh3002t, coh3002t_t2,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Super Puzzle Bobble (V2.05O 1999/2/24 18:00)", MACHINE_IMPERFECT_SOUND )
1100 GAME( 1999, spuzboblj, spuzbobl, coh3002t_t2,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Super Puzzle Bobble (V2.04J 1999/2/27 02:10)", MACHINE_IMPERFECT_SOUND )
1101 GAME( 1999, gobyrc,    coh3002t, coh3002t_t2,    gobyrc,       taitogn_state, empty_init, ROT0,   "Taito", "Go By RC (V2.03O 1999/05/25 13:31)", MACHINE_IMPERFECT_SOUND )
1102 GAME( 1999, rcdego,    gobyrc,   coh3002t_t1,    gobyrc,       taitogn_state, empty_init, ROT0,   "Taito", "RC De Go (V2.03J 1999/05/22 19:29)", MACHINE_IMPERFECT_SOUND )
1103 GAME( 1999, flipmaze,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "MOSS / Taito", "Flip Maze (V2.04J 1999/09/02 20:00)", MACHINE_IMPERFECT_SOUND )
1104 GAME( 2001, shikigam,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT270, "Alfa System / Taito", "Shikigami no Shiro (V2.03J 2001/08/07 18:11)", MACHINE_IMPERFECT_SOUND )
1105 GAME( 2001, shikigama, coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT270, "Alfa System / Taito", "Shikigami no Shiro - internal build (V1.02J 2001/09/27 18:45)", MACHINE_IMPERFECT_SOUND )
1106 GAME( 2003, sianniv,   coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, init_nozoom,ROT270, "Taito", "Space Invaders Anniversary (V2.02J)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) // IRQ at the wrong time
1107 GAME( 2003, kollon,    coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Taito", "Kollon (V2.04JA 2003/11/01 12:00)", MACHINE_IMPERFECT_SOUND )
1108 GAME( 2003, kollonc,   kollon,   coh3002t_cf,    coh3002t_jp1, taitogn_state, empty_init, ROT0,   "Taito", "Kollon (V2.04JC 2003/11/01 12:00)", MACHINE_IMPERFECT_SOUND )
1109 
1110 /* Success */
1111 GAME( 1999, otenamih,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, init_nozoom,ROT0,   "Success", "Otenami Haiken (V2.04J 1999/02/01 18:00:00)", 0 )
1112 GAME( 2000, psyvaria,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT270, "Success", "Psyvariar -Medium Unit- (V2.02O 2000/02/22 13:00)", MACHINE_IMPERFECT_SOUND )
1113 GAME( 2000, psyvarij,  psyvaria, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT270, "Success", "Psyvariar -Medium Unit- (V2.04J 2000/02/15 11:00)", MACHINE_IMPERFECT_SOUND )
1114 GAME( 2000, psyvarrv,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT270, "Success", "Psyvariar -Revision- (V2.04J 2000/08/11 22:00)", MACHINE_IMPERFECT_SOUND )
1115 GAME( 2001, zokuoten,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, init_nozoom,ROT0,   "Success", "Zoku Otenamihaiken (V2.03J 2001/02/16 16:00)", 0 ) // boots the soundcpu without any valid code, causing an infinite NMI loop (currently circumvented)
1116 GAME( 2004, zooo,      coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, init_nozoom,ROT0,   "Success", "Zooo (V2.01JA 2004/04/13 12:00)", 0 )
1117 GAME( 2005, otenamhf,  coh3002t, coh3002t_cf,    coh3002t_jp1, taitogn_state, init_nozoom,ROT0,   "Success / Warashi", "Otenami Haiken Final (V2.07JC 2005/04/20 15:36)", 0 )
1118 
1119 /* Takumi */
1120 GAME( 2001, nightrai,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Takumi", "Night Raid (V2.03J 2001/02/26 17:00)", MACHINE_IMPERFECT_SOUND )
1121 GAME( 2001, otenki,    coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Takumi", "Otenki Kororin (V2.01J 2001/07/02 10:00)", MACHINE_IMPERFECT_SOUND )
1122 
1123 /* Warashi */
1124 GAME( 1999, mahjngoh,  coh3002t, coh3002t_t1_mp, coh3002t_mp,  taitogn_state, empty_init, ROT0,   "Warashi / Mahjong Kobo / Taito", "Mahjong Oh (V2.06J 1999/11/23 08:52:22)", MACHINE_IMPERFECT_SOUND )
1125 GAME( 2000, shanghss,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Warashi", "Shanghai Shoryu Sairin (V2.03J 2000/05/26 12:45:28)", MACHINE_IMPERFECT_SOUND )
1126 GAME( 2000, soutenry,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Warashi", "Soutenryu (V2.07J 2000/12/14 11:13:02)", MACHINE_IMPERFECT_SOUND )
1127 GAME( 2001, usagi,     coh3002t, coh3002t_t2_mp, coh3002t_mp,  taitogn_state, empty_init, ROT0,   "Warashi / Mahjong Kobo / Taito", "Usagi (V2.02J 2001/10/02 12:41:19)", MACHINE_IMPERFECT_SOUND ) // missing transparencies, see MT #06258
1128 GAME( 2002, shangtou,  coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT0,   "Warashi / Sunsoft / Taito", "Shanghai Sangokuhai Tougi (Ver 2.01J 2002/01/18 18:26:58)", MACHINE_IMPERFECT_SOUND )
1129 
1130 /* Triangle Service */
1131 GAME( 2002, xiistag,   coh3002t, coh3002t_t1,    coh3002t,     taitogn_state, empty_init, ROT270, "Triangle Service", "XII Stag (V2.01J 2002/6/26 22:27)", MACHINE_IMPERFECT_SOUND )
1132