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