1 /****************************************************************************
2
3 ToaPlan game hardware from 1987
4 -------------------------------
5 Driver by: Quench
6 Flying Shark details: Carl-Henrik Skarstedt & Magnus Danielsson
7 Flying Shark bootleg info: Ruben Panossian
8
9
10 Supported games:
11
12 Toaplan Board Number: TP-007
13 Taito game number: B02
14 Flying Shark (World)
15 Sky Shark (USA Romstar license)
16 Hishou Zame (Flying Shark Japan license)
17 Flying Shark bootleg (USA Romstar license)
18
19 Toaplan Board Number: TP-011
20 Taito game number: B30
21 Twin Cobra (World)
22 Twin Cobra (USA license)
23 Kyukyoku Tiger (Japan license)
24
25 Comad Board Number: ??????
26 Comad game number: ???
27 GulfWar II (Game play very similar to Twin cobra)
28
29 Difference between Twin Cobra and Kyukyoko Tiger:
30 T.C. supports two simultaneous players.
31 K.T. supports two players, but only one at a time.
32 for this reason, it also supports Table Top cabinets.
33 T.C. stores 3 characters for high scores.
34 K.T. stores 6 characters for high scores.
35 T.C. heros are Red and Blue for player 1 and 2 respectively.
36 K.T. heros are grey for both players.
37 T.C. dead remains of ground tanks are circular.
38 K.T. dead remains of ground tanks always vary in shape.
39 T.C. does not use DSW1-1 and DSW2-8.
40 K.T. uses DSW1-1 for cabinet type, and DSW2-8 for allow game continue.
41 T.C. continues new hero and continued game at current position.
42 K.T. continues new hero and continued game at predefined positions.
43 After dying, and your new hero appears, if you do not travel more
44 than your helicopter length forward, you are penalised and moved
45 back further when your next hero appears.
46 K.T. Due to this difference in continue sequence, Kyukyoko Tiger is MUCH
47 harder, challenging, and nearly impossible to complete !
48
49 **************************** Memory & I/O Maps *****************************
50 68000: Main CPU
51
52 00000-1ffff ROM for Flying Shark
53 00000-2ffff ROM for Twin Cobra
54 30000-33fff RAM shared with TMS320C10NL-14 protection microcontroller
55 40000-40fff RAM sprite display properties (co-ordinates, character, color - etc)
56 50000-50dff Palette RAM
57 7a000-7abff RAM shared with Z80; 16-bit on this side, 8-bit on Z80 side
58
59 read:
60 78001 DSW1 (Flying Shark)
61 78003 DSW2 (Flying Shark)
62
63 78005 Player 1 Joystick and Buttons input port
64 78007 Player 2 Joystick and Buttons input port
65 78009 bit 7 vblank, coin and control/service inputs (Flying shark)
66 Flying Shark implements Tilt as 'freeze system' and also has
67 a reset button, but its not implelemted here (not needed)
68
69 7e000-7e005 read data from video RAM (see below)
70
71 write:
72 60000-60003 CRT 6845 controller. 0 = register offset , 2 = register data
73 70000-70001 scroll y for character page (centre normally 0x01c9)
74 70002-70003 scroll < x > for character page (centre normally 0x00e2)
75 70004-70005 offset in character page to write character (7e000)
76
77 72000-72001 scroll y for foreground page (starts from 0x03c9)
78 72002-72003 scroll < x > for foreground page (centre normally 0x002a)
79 72004-72005 offset in character page to write character (7e002)
80
81 74000-74001 scroll y for background page (starts from 0x03c9)
82 74002-74003 scroll < x > for background page (centre normally 0x002a)
83 74004-74005 offset in character page to write character (7e004)
84
85 76000-76003 as above but for another layer maybe ??? (Not used here)
86 7800a This activates INT line for Flying shark. (Not via 7800C)
87 00 Activate INTerrupt line to the TMS320C10 DSP.
88 01 Inhibit INTerrupt line to the TMS320C10 DSP.
89
90 7800c Control register (Byte write access).
91 bits 7-4 always 0
92 bits 3-1 select the control signal to drive.
93 bit 0 is the value passed to the control signal.
94
95 Value (hex):
96 00-03 ????
97 04 Clear IPL2 line to 68000 inactive hi (Interrupt priority 4)
98 05 Set IPL2 line to 68000 active low (Interrupt priority 4)
99 06 Dont flip display
100 07 Flip display
101 08 Switch to background layer ram bank 0
102 09 Switch to background layer ram bank 1
103 0A Switch to foreground layer rom bank 0
104 0B Switch to foreground layer rom bank 1
105 0C Activate INTerrupt line to the TMS320C10 DSP (Twin Cobra)
106 0D Inhibit INTerrupt line to the TMS320C10 DSP (Twin Cobra)
107 0E Turn screen off
108 0F Turn screen on
109
110 7e000-7e001 data to write in text video RAM (70000)
111 7e002-7e003 data to write in bg video RAM (72004)
112 7e004-7e005 data to write in fg video RAM (74004)
113
114 Z80: Sound CPU
115 0000-7fff ROM
116 8000-87ff shared with 68000; 8-bit on this side, 16-bit on 68000 side
117
118 in:
119 00 YM3812 status
120 10 Coin inputs and control/service inputs (Twin Cobra)
121 40 DSW1 (Twin Cobra)
122 50 DSW2 (Twin Cobra)
123
124 out:
125 00 YM3812 control
126 01 YM3812 data
127 20 Coin counters / Coin lockouts
128
129 TMS320C10 DSP: Harvard type architecture. RAM and ROM on seperate data buses.
130 0000-07ff ROM 16-bit opcodes (word access only). Moved to $8000-8fff for
131 MAME compatibility. View this ROM in the debugger at $8000h
132 0000-0090 Internal RAM (words).
133
134
135 in:
136 01 data read from addressed 68K address space (Main RAM/Sprite RAM)
137
138 out:
139 00 address of 68K to read/write to
140 01 data to write to addressed 68K address space (Main RAM/Sprite RAM)
141 03 bit 15 goes to BIO line of TMS320C10. BIO is a polled input line.
142
143
144 MCUs used with this hardware: (TMS320C10 in custom Toaplan/Taito disguise)
145
146 Twin Cobra Sky Shark Wardner
147 D70016U D70012U D70012U
148 GXC-04 GXC-02 GXC-02
149 MCU (delta) 74000 MCU 71400 MCU (delta) 71900
150
151
152
153 68K writes the following to $30000 to tell DSP to do the following:
154 Twin Kyukyoku
155 Cobra Tiger
156 00 00 do nothing
157 01 0C run self test, and report DSP ROM checksum from 68K PC:23CA6
158 02 07 control all enemy shots from 68K PC:23BFA
159 04 0B start the enemy helicopters from 68K PC:23C66
160 05 08 check for colision with enemy fire ??? from 68K PC:23C20
161 06 09 check for colision with enemy ??? from 68K PC:23C44
162 07 01 control enemy helicopter shots from 68K PC:23AB2
163 08 02 control all ground enemy shots
164 0A 04 read hero position and send enemy to it ? from 68K PC:23B58
165
166 03 0A \
167 09 03 \ These functions within the DSP never seem to be called ????
168 0B 05 /
169 0C 06 /
170
171 68K writes the following to $30004 to tell DSP to do the following:
172 Flying Hishou
173 Shark Zame
174 00 00 do nothing
175 03 0B Write sprite to sprite RAM
176 05 01 Get angle
177 06 02 Rotate towards direction
178 09 05 Check collision between 2 spheres!??
179 0A 06 Polar coordinates add
180 0B 07 run self test, and report DSP ROM checksum
181
182 01 09 \
183 02 0A \
184 04 08 > These functions within the DSP never seem to be called ????
185 07 03 /
186 08 04 /
187 *****************************************************************************/
188
189
190 #include "driver.h"
191 #include "vidhrdw/generic.h"
192 #include "cpu/m68000/m68000.h"
193 #include "cpu/tms32010/tms32010.h"
194
195
196
197 /**************** Machine stuff ******************/
198 MACHINE_INIT( fsharkbt_reset_8741_mcu );
199 INTERRUPT_GEN ( twincobr_interrupt );
200 READ16_HANDLER ( fsharkbt_dsp_r );
201 READ16_HANDLER ( twincobr_dsp_r );
202 WRITE16_HANDLER( twincobr_dsp_w );
203 READ16_HANDLER ( twincobr_BIO_r );
204 WRITE_HANDLER ( twincobr_coin_w );
205 WRITE16_HANDLER( fshark_coin_dsp_w );
206 READ16_HANDLER ( twincobr_68k_dsp_r );
207 WRITE16_HANDLER( twincobr_68k_dsp_w );
208 WRITE16_HANDLER( twincobr_control_w );
209 READ16_HANDLER ( twincobr_sharedram_r );
210 WRITE16_HANDLER( twincobr_sharedram_w );
211
212 extern data16_t *twincobr_68k_dsp_ram;
213 extern data8_t *twincobr_sharedram;
214
215
216 /**************** Video stuff ******************/
217 WRITE16_HANDLER( twincobr_txscroll_w );
218 WRITE16_HANDLER( twincobr_bgscroll_w );
219 WRITE16_HANDLER( twincobr_fgscroll_w );
220 WRITE16_HANDLER( twincobr_exscroll_w );
221 WRITE16_HANDLER( twincobr_txoffs_w );
222 WRITE16_HANDLER( twincobr_bgoffs_w );
223 WRITE16_HANDLER( twincobr_fgoffs_w );
224 READ16_HANDLER ( twincobr_txram_r );
225 READ16_HANDLER ( twincobr_bgram_r );
226 READ16_HANDLER ( twincobr_fgram_r );
227 WRITE16_HANDLER( twincobr_txram_w );
228 WRITE16_HANDLER( twincobr_bgram_w );
229 WRITE16_HANDLER( twincobr_fgram_w );
230 WRITE16_HANDLER( twincobr_crtc_reg_sel_w );
231 WRITE16_HANDLER( twincobr_crtc_data_w );
232
233 VIDEO_START( toaplan0 );
234 VIDEO_UPDATE( toaplan0 );
235 VIDEO_EOF( toaplan0 );
236
237
238
239
240 /* 68000 memory maps */
MEMORY_READ16_START(readmem)241 static MEMORY_READ16_START( readmem )
242 { 0x000000, 0x02ffff, MRA16_ROM },
243 { 0x030000, 0x033fff, twincobr_68k_dsp_r }, /* 68K and DSP shared RAM */
244 { 0x040000, 0x040fff, MRA16_RAM }, /* sprite ram data */
245 { 0x050000, 0x050dff, paletteram16_word_r },
246 { 0x078000, 0x078001, input_port_3_word_r }, /* Flying Shark - DSW A */
247 { 0x078002, 0x078003, input_port_4_word_r }, /* Flying Shark - DSW B */
248 { 0x078004, 0x078005, input_port_1_word_r }, /* Player 1 inputs */
249 { 0x078006, 0x078007, input_port_2_word_r }, /* Player 2 inputs */
250 { 0x078008, 0x078009, input_port_0_word_r }, /* V-Blank & FShark Coin/Start */
251 { 0x07a000, 0x07abff, twincobr_sharedram_r }, /* 16-bit on 68000 side, 8-bit on Z80 side */
252 { 0x07e000, 0x07e001, twincobr_txram_r }, /* data from text video RAM */
253 { 0x07e002, 0x07e003, twincobr_bgram_r }, /* data from bg video RAM */
254 { 0x07e004, 0x07e005, twincobr_fgram_r }, /* data from fg video RAM */
255 MEMORY_END
256
257 static MEMORY_WRITE16_START( writemem )
258 { 0x000000, 0x02ffff, MWA16_ROM },
259 { 0x030000, 0x033fff, twincobr_68k_dsp_w, &twincobr_68k_dsp_ram }, /* 68K and DSP shared RAM */
260 { 0x040000, 0x040fff, MWA16_RAM, &spriteram16, &spriteram_size }, /* sprite ram data */
261 { 0x050000, 0x050dff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
262 { 0x060000, 0x060001, twincobr_crtc_reg_sel_w },/* 6845 CRT controller */
263 { 0x060002, 0x060003, twincobr_crtc_data_w }, /* 6845 CRT controller */
264 { 0x070000, 0x070003, twincobr_txscroll_w }, /* text layer scroll */
265 { 0x070004, 0x070005, twincobr_txoffs_w }, /* offset in text video RAM */
266 { 0x072000, 0x072003, twincobr_bgscroll_w }, /* bg layer scroll */
267 { 0x072004, 0x072005, twincobr_bgoffs_w }, /* offset in bg video RAM */
268 { 0x074000, 0x074003, twincobr_fgscroll_w }, /* fg layer scroll */
269 { 0x074004, 0x074005, twincobr_fgoffs_w }, /* offset in fg video RAM */
270 { 0x076000, 0x076003, twincobr_exscroll_w }, /* Spare layer scroll */
271 { 0x07800a, 0x07800b, fshark_coin_dsp_w }, /* Flying Shark DSP Comms & coin stuff */
272 { 0x07800c, 0x07800d, twincobr_control_w }, /* Twin Cobra DSP Comms & system control */
273 { 0x07a000, 0x07afff, twincobr_sharedram_w }, /* 16-bit on 68000 side, 8-bit on Z80 side */
274 { 0x07e000, 0x07e001, twincobr_txram_w }, /* data for text video RAM */
275 { 0x07e002, 0x07e003, twincobr_bgram_w }, /* data for bg video RAM */
276 { 0x07e004, 0x07e005, twincobr_fgram_w }, /* data for fg video RAM */
277 MEMORY_END
278
279
280 /* Z80 memory/port maps */
281 static MEMORY_READ_START( sound_readmem )
282 { 0x0000, 0x7fff, MRA_ROM },
283 { 0x8000, 0x87ff, MRA_RAM },
284 MEMORY_END
285
286 static MEMORY_WRITE_START( sound_writemem )
287 { 0x0000, 0x7fff, MWA_ROM },
288 { 0x8000, 0x87ff, MWA_RAM, &twincobr_sharedram },
289 MEMORY_END
290
291 static PORT_READ_START( sound_readport )
292 { 0x00, 0x00, YM3812_status_port_0_r },
293 { 0x10, 0x10, input_port_5_r }, /* Twin Cobra - Coin/Start */
294 { 0x40, 0x40, input_port_3_r }, /* Twin Cobra - DSW A */
295 { 0x50, 0x50, input_port_4_r }, /* Twin Cobra - DSW B */
296 PORT_END
297
298 static PORT_WRITE_START( sound_writeport )
299 { 0x00, 0x00, YM3812_control_port_0_w },
300 { 0x01, 0x01, YM3812_write_port_0_w },
301 { 0x20, 0x20, twincobr_coin_w }, /* Twin Cobra coin count-lockout */
302 PORT_END
303
304
305 /* TMS32010 memory/port maps */
306 static MEMORY_READ16_START( DSP_readmem )
307 { TMS32010_DATA_ADDR_RANGE(0x000, 0x08f), MRA16_RAM }, /* 90h words internal RAM */
308 { TMS32010_PGM_ADDR_RANGE(0x000, 0x7ff), MRA16_ROM }, /* 800h words. The real DSPs ROM is at */
309 /* address 0 */
310 /* View it at 8000h in the debugger */
311 MEMORY_END
312
313 static MEMORY_WRITE16_START( DSP_writemem )
314 { TMS32010_DATA_ADDR_RANGE(0x000, 0x08f), MWA16_RAM },
315 { TMS32010_PGM_ADDR_RANGE(0x000, 0x7ff), MWA16_ROM },
316 MEMORY_END
317
318 static PORT_READ16_START( DSP_readport )
319 { TMS32010_PORT_RANGE(1, 1), twincobr_dsp_r },
320 { TMS32010_PORT_RANGE(2, 2), fsharkbt_dsp_r },
321 { TMS32010_PORT_RANGE(TMS32010_BIO, TMS32010_BIO), twincobr_BIO_r },
322 PORT_END
323
324 static PORT_WRITE16_START( DSP_writeport )
325 { TMS32010_PORT_RANGE(0, 3), twincobr_dsp_w },
326 PORT_END
327
328
329
330 /*****************************************************************************
331 Input Port definitions
332 *****************************************************************************/
333
334 #define TOAPLAN_PLAYER_INPUT( player ) \
335 PORT_START \
336 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | player ) \
337 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | player ) \
338 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | player ) \
339 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | player ) \
340 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | player) \
341 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 | player) \
342 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) \
343 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
344
345 #define TOAPLAN_JAPAN_DSW_A \
346 PORT_START /* DSW A */ \
347 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) ) \
348 PORT_DIPSETTING( 0x01, DEF_STR( Upright ) ) \
349 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) \
350 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) ) \
351 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \
352 PORT_DIPSETTING( 0x02, DEF_STR( On ) ) \
353 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" ) \
354 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \
355 PORT_DIPSETTING( 0x04, DEF_STR( On ) ) \
356 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) ) \
357 PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) \
358 PORT_DIPSETTING( 0x00, DEF_STR( On ) ) \
359 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) ) \
360 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) \
361 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) \
362 PORT_DIPSETTING( 0x30, DEF_STR( 2C_3C ) ) \
363 PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) \
364 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) ) \
365 PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) \
366 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) \
367 PORT_DIPSETTING( 0xc0, DEF_STR( 2C_3C ) ) \
368 PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) )
369
370 #define TWINCOBR_VBLANK_INPUT( active_level ) \
371 PORT_START \
372 PORT_BIT( 0x7f, active_level, IPT_UNKNOWN ) \
373 PORT_BIT( 0x80, active_level, IPT_VBLANK )
374
375 #define TWINCOBR_SYSTEM_INPUTS \
376 PORT_START \
377 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN3 ) \
378 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT ) \
379 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" ) \
380 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \
381 PORT_DIPSETTING( 0x04, DEF_STR( On ) ) \
382 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) \
383 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) \
384 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 ) \
385 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 ) \
386 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
387
388 #define TWINCOBR_DSW_B /* not KTIGER */ \
389 PORT_START /* DSW B */ \
390 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) ) \
391 PORT_DIPSETTING( 0x01, "Easy" ) \
392 PORT_DIPSETTING( 0x00, "Normal" ) \
393 PORT_DIPSETTING( 0x02, "Hard" ) \
394 PORT_DIPSETTING( 0x03, "Hardest" ) \
395 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) \
396 PORT_DIPSETTING( 0x00, "50K, then every 150K" ) \
397 PORT_DIPSETTING( 0x04, "70K, then every 200K" ) \
398 PORT_DIPSETTING( 0x08, "50000" ) \
399 PORT_DIPSETTING( 0x0c, "100000" ) \
400 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) ) \
401 PORT_DIPSETTING( 0x30, "2" ) \
402 PORT_DIPSETTING( 0x00, "3" ) \
403 PORT_DIPSETTING( 0x20, "4" ) \
404 PORT_DIPSETTING( 0x10, "5" ) \
405 PORT_DIPNAME( 0x40, 0x00, "Show DIP SW Settings" ) \
406 PORT_DIPSETTING( 0x00, DEF_STR( No ) ) \
407 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) \
408 PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) \
409 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) \
410 PORT_DIPSETTING( 0x80, DEF_STR( On ) )
411
412 #define FSHARK_SYSTEM_INPUTS /* V-Blank is also here */ \
413 PORT_START \
414 PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN3 ) \
415 PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_TILT ) /* tilt causes freeze */ \
416 PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) /* reset button */ \
417 PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN1 ) \
418 PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) \
419 PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 ) \
420 PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START2 ) \
421 PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
422
423 #define FSHARK_DSW_B \
424 PORT_START /* DSW B */ \
425 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) ) \
426 PORT_DIPSETTING( 0x01, "Easy" ) \
427 PORT_DIPSETTING( 0x00, "Normal" ) \
428 PORT_DIPSETTING( 0x02, "Hard" ) \
429 PORT_DIPSETTING( 0x03, "Hardest" ) \
430 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) \
431 PORT_DIPSETTING( 0x00, "50K, then every 150K" ) \
432 PORT_DIPSETTING( 0x04, "70K, then every 200K" ) \
433 PORT_DIPSETTING( 0x08, "50000" ) \
434 PORT_DIPSETTING( 0x0c, "100000" ) \
435 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) ) \
436 PORT_DIPSETTING( 0x20, "1" ) \
437 PORT_DIPSETTING( 0x30, "2" ) \
438 PORT_DIPSETTING( 0x00, "3" ) \
439 PORT_DIPSETTING( 0x10, "5" ) \
440 PORT_DIPNAME( 0x40, 0x00, "Show DIP SW Settings" ) \
441 PORT_DIPSETTING( 0x00, DEF_STR( No ) ) \
442 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) \
443 PORT_DIPNAME( 0x80, 0x80, "Allow Continue" ) \
444 PORT_DIPSETTING( 0x00, DEF_STR( No ) ) \
445 PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
446
447
448
449
450 INPUT_PORTS_START( twincobr )
451 TWINCOBR_VBLANK_INPUT( IP_ACTIVE_HIGH )
452 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
453 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
454
455 PORT_START /* DSW A */
456 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
457 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
458 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
459 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
460 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
461 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
462 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" )
463 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
464 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
465 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
466 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
467 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
468 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
469 PORT_DIPSETTING( 0x30, DEF_STR( 4C_1C ) )
470 PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )
471 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
472 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
473 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
474 PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
475 PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) )
476 PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
477 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_6C ) )
478
479 TWINCOBR_DSW_B
480 TWINCOBR_SYSTEM_INPUTS
481 INPUT_PORTS_END
482
483 INPUT_PORTS_START( twincobu )
484 TWINCOBR_VBLANK_INPUT( IP_ACTIVE_HIGH )
485 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
486 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
487
488 PORT_START /* DSW A */
489 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
490 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
491 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
492 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
493 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
494 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
495 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" )
496 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
497 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
498 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
499 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
500 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
501 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
502 PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) )
503 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
504 PORT_DIPSETTING( 0x30, DEF_STR( 2C_3C ) )
505 PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
506 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
507 PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
508 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
509 PORT_DIPSETTING( 0xc0, DEF_STR( 2C_3C ) )
510 PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) )
511
512 TWINCOBR_DSW_B
513 TWINCOBR_SYSTEM_INPUTS
514 INPUT_PORTS_END
515
516 INPUT_PORTS_START( ktiger )
517 TWINCOBR_VBLANK_INPUT( IP_ACTIVE_HIGH )
518 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
519 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
520 TOAPLAN_JAPAN_DSW_A
521
522 PORT_START /* DSW B */
523 PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
524 PORT_DIPSETTING( 0x01, "Easy" )
525 PORT_DIPSETTING( 0x00, "Normal" )
526 PORT_DIPSETTING( 0x02, "Hard" )
527 PORT_DIPSETTING( 0x03, "Hardest" )
528 PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )
529 PORT_DIPSETTING( 0x00, "70K, then every 200K" )
530 PORT_DIPSETTING( 0x04, "50K, then every 150K" )
531 PORT_DIPSETTING( 0x08, "100000" )
532 PORT_DIPSETTING( 0x0c, "No Extend" )
533 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Lives ) )
534 PORT_DIPSETTING( 0x30, "2" )
535 PORT_DIPSETTING( 0x00, "3" )
536 PORT_DIPSETTING( 0x20, "4" )
537 PORT_DIPSETTING( 0x10, "5" )
538 PORT_DIPNAME( 0x40, 0x00, "Show DIP SW Settings" )
539 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
540 PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
541 PORT_DIPNAME( 0x80, 0x80, "Allow Continue" )
542 PORT_DIPSETTING( 0x00, DEF_STR( No ) )
543 PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
544
545 TWINCOBR_SYSTEM_INPUTS
546 INPUT_PORTS_END
547
548 INPUT_PORTS_START( fshark )
549 FSHARK_SYSTEM_INPUTS
550 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
551 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
552
553 PORT_START /* DSW A */
554 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
555 PORT_DIPSETTING( 0x01, DEF_STR( Upright ) )
556 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
557 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
558 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
559 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
560 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" )
561 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
562 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
563 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
564 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
565 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
566 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
567 PORT_DIPSETTING( 0x30, DEF_STR( 4C_1C ) )
568 PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )
569 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
570 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
571 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
572 PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
573 PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) )
574 PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
575 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_6C ) )
576
577 FSHARK_DSW_B
578 INPUT_PORTS_END
579
580 INPUT_PORTS_START( skyshark )
581 FSHARK_SYSTEM_INPUTS
582 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
583 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
584
585 PORT_START /* DSW A */
586 PORT_DIPNAME( 0x01, 0x01, DEF_STR( Cabinet ) )
587 PORT_DIPSETTING( 0x01, DEF_STR( Upright ) )
588 PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
589 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
590 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
591 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
592 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" )
593 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
594 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
595 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
596 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
597 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
598 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
599 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
600 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
601 PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) )
602 /* PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) Same as previous */
603 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
604 PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
605 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
606 PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
607 /* PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) ) Same as previous */
608
609 FSHARK_DSW_B
610 INPUT_PORTS_END
611
612 INPUT_PORTS_START( hishouza )
613 FSHARK_SYSTEM_INPUTS
614 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
615 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
616 TOAPLAN_JAPAN_DSW_A
617 FSHARK_DSW_B
618 INPUT_PORTS_END
619
620 INPUT_PORTS_START( gulfwar2 )
621 TWINCOBR_VBLANK_INPUT( IP_ACTIVE_LOW )
622 TOAPLAN_PLAYER_INPUT( IPF_PLAYER1 )
623 TOAPLAN_PLAYER_INPUT( IPF_PLAYER2 )
624
625 PORT_START /* DSW A */
626 PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
627 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
628 PORT_DIPSETTING( 0x01, DEF_STR( On ) )
629 PORT_DIPNAME( 0x02, 0x00, DEF_STR( Flip_Screen ) )
630 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
631 PORT_DIPSETTING( 0x02, DEF_STR( On ) )
632 PORT_DIPNAME( 0x04, 0x00, "Cross Hatch Pattern" )
633 PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
634 PORT_DIPSETTING( 0x04, DEF_STR( On ) )
635 PORT_DIPNAME( 0x08, 0x00, DEF_STR( Demo_Sounds ) )
636 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
637 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
638 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Coin_A ) )
639 PORT_DIPSETTING( 0x30, DEF_STR( 4C_1C ) )
640 PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) )
641 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
642 PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
643 PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Coin_B ) )
644 PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) )
645 PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) )
646 PORT_DIPSETTING( 0x80, DEF_STR( 1C_4C ) )
647 PORT_DIPSETTING( 0xc0, DEF_STR( 1C_6C ) )
648
649 TWINCOBR_DSW_B
650 TWINCOBR_SYSTEM_INPUTS
651 INPUT_PORTS_END
652
653
654
655 static struct GfxLayout charlayout =
656 {
657 8,8, /* 8*8 characters */
658 RGN_FRAC(1,3), /* 2048 characters */
659 3, /* 3 bits per pixel */
660 { RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
661 { 0, 1, 2, 3, 4, 5, 6, 7 },
662 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
663 8*8 /* every char takes 8 consecutive bytes */
664 };
665
666 static struct GfxLayout tilelayout =
667 {
668 8,8, /* 8*8 tiles */
669 RGN_FRAC(1,4), /* 4096/8192 tiles */
670 4, /* 4 bits per pixel */
671 { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
672 { 0, 1, 2, 3, 4, 5, 6, 7 },
673 { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
674 8*8 /* every tile takes 8 consecutive bytes */
675 };
676
677 static struct GfxLayout spritelayout =
678 {
679 16,16, /* 16*16 sprites */
680 RGN_FRAC(1,4), /* 2048 sprites */
681 4, /* 4 bits per pixel */
682 { RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4) },
683 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
684 { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16,
685 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 },
686 32*8 /* every sprite takes 32 consecutive bytes */
687 };
688
689 static struct GfxDecodeInfo gfxdecodeinfo[] =
690 {
691 { REGION_GFX1, 0x00000, &charlayout, 1536, 32 }, /* colors 1536-1791 */
692 { REGION_GFX2, 0x00000, &tilelayout, 1280, 16 }, /* colors 1280-1535 */
693 { REGION_GFX3, 0x00000, &tilelayout, 1024, 16 }, /* colors 1024-1079 */
694 { REGION_GFX4, 0x00000, &spritelayout, 0, 64 }, /* colors 0-1023 */
695 { -1 } /* end of array */
696 };
697
698
699
700 /* handler called by the 3812 emulator when the internal timers cause an IRQ */
irqhandler(int linestate)701 static void irqhandler(int linestate)
702 {
703 cpu_set_irq_line(1,0,linestate);
704 }
705
706 static struct YM3812interface ym3812_interface =
707 {
708 1, /* 1 chip */
709 28000000/8, /* 3.5MHz */
710 { 100 }, /* volume */
711 { irqhandler },
712 };
713
714
715
716 static MACHINE_DRIVER_START( twincobr )
717
718 /* basic machine hardware */
719 MDRV_CPU_ADD(M68000,28000000/4) /* 7.0MHz - Main board Crystal is 28MHz */
MDRV_CPU_MEMORY(readmem,writemem)720 MDRV_CPU_MEMORY(readmem,writemem)
721 MDRV_CPU_VBLANK_INT(twincobr_interrupt,1)
722
723 MDRV_CPU_ADD(Z80,28000000/8) /* 3.5MHz */
724 MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
725 MDRV_CPU_PORTS(sound_readport,sound_writeport)
726
727 MDRV_CPU_ADD(TMS32010,28000000/2) /* 14MHz CLKin */
728 MDRV_CPU_MEMORY(DSP_readmem,DSP_writemem)
729 MDRV_CPU_PORTS(DSP_readport,DSP_writeport)
730
731 MDRV_FRAMES_PER_SECOND( (28000000.0 / 4) / (446 * 286) )
732 MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
733 MDRV_INTERLEAVE(100)
734
735 MDRV_MACHINE_INIT(fsharkbt_reset_8741_mcu) /* Reset fshark bootleg 8741 MCU data */
736
737 /* video hardware */
738 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_BEFORE_VBLANK | VIDEO_BUFFERS_SPRITERAM)
739 MDRV_SCREEN_SIZE(64*8, 32*8)
740 MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 30*8-1)
741 MDRV_GFXDECODE(gfxdecodeinfo)
742 MDRV_PALETTE_LENGTH(1792)
743
744 MDRV_VIDEO_START(toaplan0)
745 MDRV_VIDEO_EOF(toaplan0)
746 MDRV_VIDEO_UPDATE(toaplan0)
747
748 /* sound hardware */
749 MDRV_SOUND_ADD(YM3812, ym3812_interface)
750 MACHINE_DRIVER_END
751
752
753
754 /***************************************************************************
755
756 Game driver(s)
757
758 ***************************************************************************/
759
760 ROM_START( twincobr )
761 ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* Main 68K code */
762 ROM_LOAD16_BYTE( "tc16", 0x00000, 0x10000, CRC(07f64d13) SHA1(864ce0f9369c40c3ae792fc4ab2444a168214749) )
763 ROM_LOAD16_BYTE( "tc14", 0x00001, 0x10000, CRC(41be6978) SHA1(4784804b738a332c7f24a43bcbb7a1e607365735) )
764 ROM_LOAD16_BYTE( "tc15", 0x20000, 0x08000, CRC(3a646618) SHA1(fc1ed8f3c491f5cf16a17e5ce08c5d8f3ce03683) )
765 ROM_LOAD16_BYTE( "tc13", 0x20001, 0x08000, CRC(d7d1e317) SHA1(57b8433b1677a390a7c7e00a1464bb8ed9cbfc73) )
766
767 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
768 ROM_LOAD( "tc12", 0x00000, 0x08000, CRC(e37b3c44) SHA1(5fed10b29c14e27aee0cd92ecde5c5cb422273b1) ) /* slightly different from the other two sets */
769
770 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Co-Processor TMS320C10 MCU code */
771 ROM_LOAD16_BYTE( "dsp_22.bin", 0x8001, 0x0800, CRC(79389a71) SHA1(14ec4c1c9b06702319e89a7a250d0038393437f4) )
772 ROM_LOAD16_BYTE( "dsp_21.bin", 0x8000, 0x0800, CRC(2d135376) SHA1(67a2cc774d272ee1cd6e6bc1c5fc33fc6968837e) )
773 /****** The following are from a bootleg board. ******
774 A0 and A1 are swapped between the TMS320C10 and these BPROMs on the board.
775 ROM_LOAD16_BYTE( "tc1b", 0x0000, 0x0800, CRC(1757cc33) )
776 ROM_LOAD16_BYTE( "tc2a", 0x0001, 0x0800, CRC(d6d878c9) )
777 */
778
779 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
780 ROM_LOAD( "tc11", 0x00000, 0x04000, CRC(0a254133) SHA1(17e9cc5e36fb4696012d0f9229fa172034cd843a) )
781 ROM_LOAD( "tc03", 0x04000, 0x04000, CRC(e9e2d4b1) SHA1(e0a19dd46a9ba85d95bba7fbf81d8dc36dbfeabd) )
782 ROM_LOAD( "tc04", 0x08000, 0x04000, CRC(a599d845) SHA1(732001f2d378d890f148e6b616c287d71fae832a) )
783
784 ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
785 ROM_LOAD( "tc01", 0x00000, 0x10000, CRC(15b3991d) SHA1(f5e7ed7a7721ed7e6dfd440634160390b7a294e4) )
786 ROM_LOAD( "tc02", 0x10000, 0x10000, CRC(d9e2e55d) SHA1(0409e6df836d1d5198b64b21b42192631aa6d096) )
787 ROM_LOAD( "tc06", 0x20000, 0x10000, CRC(13daeac8) SHA1(1cb103f434e2ecf193fa936ca7ea9194064c5b39) )
788 ROM_LOAD( "tc05", 0x30000, 0x10000, CRC(8cc79357) SHA1(31064df2b796ca85ad3caccf626b684dff1104a1) )
789
790 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
791 ROM_LOAD( "tc07", 0x00000, 0x08000, CRC(b5d48389) SHA1(a00c5b9c231d3d580fa20c7ad3f8b6fd990e6594) )
792 ROM_LOAD( "tc08", 0x08000, 0x08000, CRC(97f20fdc) SHA1(7cb3cd0637b0db889a3d552fd7c1a916eee5ca27) )
793 ROM_LOAD( "tc09", 0x10000, 0x08000, CRC(170c01db) SHA1(f4c5a1600f6cbb48abbace66c6f7514f79138e8b) )
794 ROM_LOAD( "tc10", 0x18000, 0x08000, CRC(44f5accd) SHA1(2f9bdebe71c8be195332356df68992fd38d86994) )
795
796 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
797 ROM_LOAD( "tc20", 0x00000, 0x10000, CRC(cb4092b8) SHA1(35b1d1e04af760fa106124bd5a94174d63ff9705) )
798 ROM_LOAD( "tc19", 0x10000, 0x10000, CRC(9cb8675e) SHA1(559c21d505c60401f7368d4ab2b686b15075c5c5) )
799 ROM_LOAD( "tc18", 0x20000, 0x10000, CRC(806fb374) SHA1(3eebefadcbdf713bf2a65b438092746b07edd3f0) )
800 ROM_LOAD( "tc17", 0x30000, 0x10000, CRC(4264bff8) SHA1(3271b8b23f51346d1928ae01f8b547fed49181e6) )
801
802 ROM_REGION( 0x260, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
803 ROM_LOAD( "82s129.d3", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
804 ROM_LOAD( "82s129.d4", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
805 ROM_LOAD( "82s123.d2", 0x200, 0x020, CRC(f72482db) SHA1(b0cb911f9c81f6088a5aa8760916ddae1f8534d7) ) /* sprite control ?? */
806 ROM_LOAD( "82s123.e18", 0x220, 0x020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* sprite attribute (flip/position) ?? */
807 ROM_LOAD( "82s123.b24", 0x240, 0x020, CRC(4fb5df2a) SHA1(506ef2c8e4cf45c256d6831a0a5760732f2de422) ) /* tile to sprite priority ?? */
808 ROM_END
809
810 ROM_START( twincobu )
811 ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* Main 68K code */
812 ROM_LOAD16_BYTE( "tc16", 0x00000, 0x10000, CRC(07f64d13) SHA1(864ce0f9369c40c3ae792fc4ab2444a168214749) )
813 ROM_LOAD16_BYTE( "tc14", 0x00001, 0x10000, CRC(41be6978) SHA1(4784804b738a332c7f24a43bcbb7a1e607365735) )
814 ROM_LOAD16_BYTE( "tcbra26.bin", 0x20000, 0x08000, CRC(bdd00ba4) SHA1(b76b22f03eb4b821a8c555edd9fcee814f2e66a7) )
815 ROM_LOAD16_BYTE( "tcbra27.bin", 0x20001, 0x08000, CRC(ed600907) SHA1(e5964db9eab2c334940795d71cb90f6679490227) )
816
817 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
818 ROM_LOAD( "b30-05", 0x00000, 0x08000, CRC(1a8f1e10) SHA1(0c37a7a50b2523506ad77ac03ae752eb94092ff6) )
819
820 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Co-Processor TMS320C10 MCU code */
821 ROM_LOAD16_BYTE( "dsp_22.bin", 0x8001, 0x0800, CRC(79389a71) SHA1(14ec4c1c9b06702319e89a7a250d0038393437f4) )
822 ROM_LOAD16_BYTE( "dsp_21.bin", 0x8000, 0x0800, CRC(2d135376) SHA1(67a2cc774d272ee1cd6e6bc1c5fc33fc6968837e) )
823
824 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
825 ROM_LOAD( "tc11", 0x00000, 0x04000, CRC(0a254133) SHA1(17e9cc5e36fb4696012d0f9229fa172034cd843a) )
826 ROM_LOAD( "tc03", 0x04000, 0x04000, CRC(e9e2d4b1) SHA1(e0a19dd46a9ba85d95bba7fbf81d8dc36dbfeabd) )
827 ROM_LOAD( "tc04", 0x08000, 0x04000, CRC(a599d845) SHA1(732001f2d378d890f148e6b616c287d71fae832a) )
828
829 ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
830 ROM_LOAD( "tc01", 0x00000, 0x10000, CRC(15b3991d) SHA1(f5e7ed7a7721ed7e6dfd440634160390b7a294e4) )
831 ROM_LOAD( "tc02", 0x10000, 0x10000, CRC(d9e2e55d) SHA1(0409e6df836d1d5198b64b21b42192631aa6d096) )
832 ROM_LOAD( "tc06", 0x20000, 0x10000, CRC(13daeac8) SHA1(1cb103f434e2ecf193fa936ca7ea9194064c5b39) )
833 ROM_LOAD( "tc05", 0x30000, 0x10000, CRC(8cc79357) SHA1(31064df2b796ca85ad3caccf626b684dff1104a1) )
834
835 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
836 ROM_LOAD( "tc07", 0x00000, 0x08000, CRC(b5d48389) SHA1(a00c5b9c231d3d580fa20c7ad3f8b6fd990e6594) )
837 ROM_LOAD( "tc08", 0x08000, 0x08000, CRC(97f20fdc) SHA1(7cb3cd0637b0db889a3d552fd7c1a916eee5ca27) )
838 ROM_LOAD( "tc09", 0x10000, 0x08000, CRC(170c01db) SHA1(f4c5a1600f6cbb48abbace66c6f7514f79138e8b) )
839 ROM_LOAD( "tc10", 0x18000, 0x08000, CRC(44f5accd) SHA1(2f9bdebe71c8be195332356df68992fd38d86994) )
840
841 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
842 ROM_LOAD( "tc20", 0x00000, 0x10000, CRC(cb4092b8) SHA1(35b1d1e04af760fa106124bd5a94174d63ff9705) )
843 ROM_LOAD( "tc19", 0x10000, 0x10000, CRC(9cb8675e) SHA1(559c21d505c60401f7368d4ab2b686b15075c5c5) )
844 ROM_LOAD( "tc18", 0x20000, 0x10000, CRC(806fb374) SHA1(3eebefadcbdf713bf2a65b438092746b07edd3f0) )
845 ROM_LOAD( "tc17", 0x30000, 0x10000, CRC(4264bff8) SHA1(3271b8b23f51346d1928ae01f8b547fed49181e6) )
846
847 ROM_REGION( 0x260, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
848 ROM_LOAD( "82s129.d3", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
849 ROM_LOAD( "82s129.d4", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
850 ROM_LOAD( "82s123.d2", 0x200, 0x020, CRC(f72482db) SHA1(b0cb911f9c81f6088a5aa8760916ddae1f8534d7) ) /* sprite control ?? */
851 ROM_LOAD( "82s123.e18", 0x220, 0x020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* sprite attribute (flip/position) ?? */
852 ROM_LOAD( "82s123.b24", 0x240, 0x020, CRC(4fb5df2a) SHA1(506ef2c8e4cf45c256d6831a0a5760732f2de422) ) /* tile to sprite priority ?? */
853 ROM_END
854
855 ROM_START( ktiger )
856 ROM_REGION( 0x30000, REGION_CPU1, 0 ) /* Main 68K code */
857 ROM_LOAD16_BYTE( "tc16", 0x00000, 0x10000, CRC(07f64d13) SHA1(864ce0f9369c40c3ae792fc4ab2444a168214749) )
858 ROM_LOAD16_BYTE( "tc14", 0x00001, 0x10000, CRC(41be6978) SHA1(4784804b738a332c7f24a43bcbb7a1e607365735) )
859 ROM_LOAD16_BYTE( "b30-02", 0x20000, 0x08000, CRC(1d63e9c4) SHA1(bdf013487a6fe8f8cbb03fda5f4fae881064831c) )
860 ROM_LOAD16_BYTE( "b30-04", 0x20001, 0x08000, CRC(03957a30) SHA1(d809881a16b05595b6f184e44a36e592f46ba04a) )
861
862 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
863 ROM_LOAD( "b30-05", 0x00000, 0x08000, CRC(1a8f1e10) SHA1(0c37a7a50b2523506ad77ac03ae752eb94092ff6) )
864
865 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Co-Processor TMS320C10 MCU code */
866 ROM_LOAD16_BYTE( "dsp-22", 0x8001, 0x0800, BAD_DUMP CRC(8a1d48d9) SHA1(f345c95a97adfbe89676f81ac83fbbec25703440) )
867 ROM_LOAD16_BYTE( "dsp-21", 0x8000, 0x0800, BAD_DUMP CRC(33d99bc2) SHA1(9372dcfc2313abc4835365ae99842f732329d4e6) )
868
869 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
870 ROM_LOAD( "tc11", 0x00000, 0x04000, CRC(0a254133) SHA1(17e9cc5e36fb4696012d0f9229fa172034cd843a) )
871 ROM_LOAD( "tc03", 0x04000, 0x04000, CRC(e9e2d4b1) SHA1(e0a19dd46a9ba85d95bba7fbf81d8dc36dbfeabd) )
872 ROM_LOAD( "tc04", 0x08000, 0x04000, CRC(a599d845) SHA1(732001f2d378d890f148e6b616c287d71fae832a) )
873
874 ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
875 ROM_LOAD( "tc01", 0x00000, 0x10000, CRC(15b3991d) SHA1(f5e7ed7a7721ed7e6dfd440634160390b7a294e4) )
876 ROM_LOAD( "tc02", 0x10000, 0x10000, CRC(d9e2e55d) SHA1(0409e6df836d1d5198b64b21b42192631aa6d096) )
877 ROM_LOAD( "tc06", 0x20000, 0x10000, CRC(13daeac8) SHA1(1cb103f434e2ecf193fa936ca7ea9194064c5b39) )
878 ROM_LOAD( "tc05", 0x30000, 0x10000, CRC(8cc79357) SHA1(31064df2b796ca85ad3caccf626b684dff1104a1) )
879
880 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
881 ROM_LOAD( "tc07", 0x00000, 0x08000, CRC(b5d48389) SHA1(a00c5b9c231d3d580fa20c7ad3f8b6fd990e6594) )
882 ROM_LOAD( "tc08", 0x08000, 0x08000, CRC(97f20fdc) SHA1(7cb3cd0637b0db889a3d552fd7c1a916eee5ca27) )
883 ROM_LOAD( "tc09", 0x10000, 0x08000, CRC(170c01db) SHA1(f4c5a1600f6cbb48abbace66c6f7514f79138e8b) )
884 ROM_LOAD( "tc10", 0x18000, 0x08000, CRC(44f5accd) SHA1(2f9bdebe71c8be195332356df68992fd38d86994) )
885
886 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
887 ROM_LOAD( "tc20", 0x00000, 0x10000, CRC(cb4092b8) SHA1(35b1d1e04af760fa106124bd5a94174d63ff9705) )
888 ROM_LOAD( "tc19", 0x10000, 0x10000, CRC(9cb8675e) SHA1(559c21d505c60401f7368d4ab2b686b15075c5c5) )
889 ROM_LOAD( "tc18", 0x20000, 0x10000, CRC(806fb374) SHA1(3eebefadcbdf713bf2a65b438092746b07edd3f0) )
890 ROM_LOAD( "tc17", 0x30000, 0x10000, CRC(4264bff8) SHA1(3271b8b23f51346d1928ae01f8b547fed49181e6) )
891
892 ROM_REGION( 0x260, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
893 ROM_LOAD( "82s129.d3", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
894 ROM_LOAD( "82s129.d4", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
895 ROM_LOAD( "82s123.d2", 0x200, 0x020, CRC(f72482db) SHA1(b0cb911f9c81f6088a5aa8760916ddae1f8534d7) ) /* sprite control ?? */
896 ROM_LOAD( "82s123.e18", 0x220, 0x020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* sprite attribute (flip/position) ?? */
897 ROM_LOAD( "82s123.b24", 0x240, 0x020, CRC(4fb5df2a) SHA1(506ef2c8e4cf45c256d6831a0a5760732f2de422) ) /* tile to sprite priority ?? */
898 ROM_END
899
900 ROM_START( fshark )
901 ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* Main 68K code */
902 ROM_LOAD16_BYTE( "b02_18-1.rom", 0x00000, 0x10000, CRC(04739e02) SHA1(8a14284adb0f0f33adf9affdec081c90de85d594) )
903 ROM_LOAD16_BYTE( "b02_17-1.rom", 0x00001, 0x10000, CRC(fd6ef7a8) SHA1(ddbc05ce694ab4d929f5f621d95800b612bc5f66) )
904
905 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
906 ROM_LOAD( "b02_16.rom", 0x0000, 0x8000, CRC(cdd1a153) SHA1(de9827a959039cf753ecac6756fb1925c37466d8) )
907
908 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Space for Co-Processor TMS320C10 */
909
910 ROM_REGION( 0x1000, REGION_USER1, 0 ) /* Co-Processor TMS320C10 MCU code */
911 ROM_LOAD_NIB_HIGH( "82s137-1.mcu", 0x0000, 0x0400, CRC(cc5b3f53) SHA1(33589665ac995cc4645b56bbcd6d1c1cd5368f88) ) /* msb */
912 ROM_LOAD_NIB_LOW ( "82s137-2.mcu", 0x0000, 0x0400, CRC(47351d55) SHA1(826add3ea3987f2c9ba2d3fc69a4ad2d9b033c89) )
913 ROM_LOAD_NIB_HIGH( "82s137-5.mcu", 0x0400, 0x0400, CRC(f35b978a) SHA1(90da4ab12126727cd9510fdfe4f626452116c543) )
914 ROM_LOAD_NIB_LOW ( "82s137-6.mcu", 0x0400, 0x0400, CRC(0459e51b) SHA1(b673f5e1fcf60c0ba668aeb98d545d17b988945d) )
915 ROM_LOAD_NIB_HIGH( "82s137-3.mcu", 0x0800, 0x0400, CRC(70b537b9) SHA1(5211ec4605894727747dda66b70c9427652b16b4) ) /* lsb */
916 ROM_LOAD_NIB_LOW ( "82s137-4.mcu", 0x0800, 0x0400, CRC(6edb2de8) SHA1(48459037c3b865f0c0d63a416fa71ba1119f7a09) )
917 ROM_LOAD_NIB_HIGH( "82s137-7.mcu", 0x0c00, 0x0400, CRC(cbf3184b) SHA1(a3eafadc319183ed688dc081c4dfcbe8d476abea) )
918 ROM_LOAD_NIB_LOW ( "82s137-8.mcu", 0x0c00, 0x0400, CRC(8246a05c) SHA1(2511fa99fbdd6c75281fa85ecca2a617d36eb360) )
919
920 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
921 ROM_LOAD( "b02_07-1.rom", 0x00000, 0x04000, CRC(e669f80e) SHA1(05c1a4ff9adaa6c8035f38a76c5ee333fafba2bf) )
922 ROM_LOAD( "b02_06-1.rom", 0x04000, 0x04000, CRC(5e53ae47) SHA1(55bde4133deebb59a87d9b96c6d0fd7b4bbc0e02) )
923 ROM_LOAD( "b02_05-1.rom", 0x08000, 0x04000, CRC(a8b05bd0) SHA1(37317838ea57cb98cf9599cedf8e72bcae913d29) )
924
925 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
926 ROM_LOAD( "b02_12.rom", 0x00000, 0x08000, CRC(733b9997) SHA1(75e874a1d148fcc8fa09bb724ce8346565ace4e5) )
927 ROM_LOAD( "b02_15.rom", 0x08000, 0x08000, CRC(8b70ef32) SHA1(e1f988d650dce17e3bfbea12e5fddbb671df18d4) )
928 ROM_LOAD( "b02_14.rom", 0x10000, 0x08000, CRC(f711ba7d) SHA1(49644a264c09fc2d743e4f801b8b82e980f2def9) )
929 ROM_LOAD( "b02_13.rom", 0x18000, 0x08000, CRC(62532cd3) SHA1(df483db7604c0135130f92b08bad3fbffb4f5c47) )
930
931 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
932 ROM_LOAD( "b02_08.rom", 0x00000, 0x08000, CRC(ef0cf49c) SHA1(6fd5727462cd6c5dab4c5d780bd7504e48583894) )
933 ROM_LOAD( "b02_11.rom", 0x08000, 0x08000, CRC(f5799422) SHA1(3f79dd849db787695a587f0db19a6782153b5955) )
934 ROM_LOAD( "b02_10.rom", 0x10000, 0x08000, CRC(4bd099ff) SHA1(9326075f83549b0a9656f69bd4436fb1be2ac805) )
935 ROM_LOAD( "b02_09.rom", 0x18000, 0x08000, CRC(230f1582) SHA1(0fd4156a46ed64cb6e5c59b8836382dd86c229cf) )
936
937 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
938 ROM_LOAD( "b02_01.512", 0x00000, 0x10000, CRC(2234b424) SHA1(bd6242b9dcdb0f582565df588106cd1ce2aad53b) )
939 ROM_LOAD( "b02_02.512", 0x10000, 0x10000, CRC(30d4c9a8) SHA1(96ce4f41207c5487e801a8444030ec4dc7b58b23) )
940 ROM_LOAD( "b02_03.512", 0x20000, 0x10000, CRC(64f3d88f) SHA1(d0155cfb0a8885d58e34141f9696b9aa208440ca) )
941 ROM_LOAD( "b02_04.512", 0x30000, 0x10000, CRC(3b23a9fc) SHA1(2ac34445618e17371b5eed7eb6f43da4dbb99e28) )
942
943 ROM_REGION( 0x300, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
944 ROM_LOAD( "clr2.bpr", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
945 ROM_LOAD( "clr1.bpr", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
946 ROM_LOAD( "clr3.bpr", 0x200, 0x100, CRC(016fe2f7) SHA1(909f815a61e759fdf998674ee383512ecd8fee65) ) /* ?? */
947 ROM_END
948
949 ROM_START( skyshark )
950 ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* Main 68K code */
951 ROM_LOAD16_BYTE( "18-2", 0x00000, 0x10000, CRC(888e90f3) SHA1(3a40d7e7653cc929af8186e48f272989fb332e14) )
952 ROM_LOAD16_BYTE( "17-2", 0x00001, 0x10000, CRC(066d67be) SHA1(a66be35b956da2c2ddf97cae66d79c0efd228621) )
953
954 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
955 ROM_LOAD( "b02_16.rom", 0x0000, 0x8000, CRC(cdd1a153) SHA1(de9827a959039cf753ecac6756fb1925c37466d8) )
956
957 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Space for Co-Processor TMS320C10 */
958
959 ROM_REGION( 0x1000, REGION_USER1, 0 ) /* Co-Processor TMS320C10 MCU code */
960 ROM_LOAD_NIB_HIGH( "82s137-1.mcu", 0x0000, 0x0400, CRC(cc5b3f53) SHA1(33589665ac995cc4645b56bbcd6d1c1cd5368f88) ) /* msb */
961 ROM_LOAD_NIB_LOW ( "82s137-2.mcu", 0x0000, 0x0400, CRC(47351d55) SHA1(826add3ea3987f2c9ba2d3fc69a4ad2d9b033c89) )
962 ROM_LOAD_NIB_HIGH( "82s137-5.mcu", 0x0400, 0x0400, CRC(f35b978a) SHA1(90da4ab12126727cd9510fdfe4f626452116c543) )
963 ROM_LOAD_NIB_LOW ( "82s137-6.mcu", 0x0400, 0x0400, CRC(0459e51b) SHA1(b673f5e1fcf60c0ba668aeb98d545d17b988945d) )
964 ROM_LOAD_NIB_HIGH( "82s137-3.mcu", 0x0800, 0x0400, CRC(70b537b9) SHA1(5211ec4605894727747dda66b70c9427652b16b4) ) /* lsb */
965 ROM_LOAD_NIB_LOW ( "82s137-4.mcu", 0x0800, 0x0400, CRC(6edb2de8) SHA1(48459037c3b865f0c0d63a416fa71ba1119f7a09) )
966 ROM_LOAD_NIB_HIGH( "82s137-7.mcu", 0x0c00, 0x0400, CRC(cbf3184b) SHA1(a3eafadc319183ed688dc081c4dfcbe8d476abea) )
967 ROM_LOAD_NIB_LOW ( "82s137-8.mcu", 0x0c00, 0x0400, CRC(8246a05c) SHA1(2511fa99fbdd6c75281fa85ecca2a617d36eb360) )
968
969 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
970 ROM_LOAD( "7-2", 0x00000, 0x04000, CRC(af48c4e6) SHA1(07e8bb6cb92f812990112063f87073df9a346ff4) )
971 ROM_LOAD( "6-2", 0x04000, 0x04000, CRC(9a29a862) SHA1(5742f1f5a9c8d644d2a48496466039d18f192929) )
972 ROM_LOAD( "5-2", 0x08000, 0x04000, CRC(fb7cad55) SHA1(91815a717511cc97477f08f0fed568247c7fd143) )
973
974 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
975 ROM_LOAD( "b02_12.rom", 0x00000, 0x08000, CRC(733b9997) SHA1(75e874a1d148fcc8fa09bb724ce8346565ace4e5) )
976 ROM_LOAD( "b02_15.rom", 0x08000, 0x08000, CRC(8b70ef32) SHA1(e1f988d650dce17e3bfbea12e5fddbb671df18d4) )
977 ROM_LOAD( "b02_14.rom", 0x10000, 0x08000, CRC(f711ba7d) SHA1(49644a264c09fc2d743e4f801b8b82e980f2def9) )
978 ROM_LOAD( "b02_13.rom", 0x18000, 0x08000, CRC(62532cd3) SHA1(df483db7604c0135130f92b08bad3fbffb4f5c47) )
979
980 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
981 ROM_LOAD( "b02_08.rom", 0x00000, 0x08000, CRC(ef0cf49c) SHA1(6fd5727462cd6c5dab4c5d780bd7504e48583894) )
982 ROM_LOAD( "b02_11.rom", 0x08000, 0x08000, CRC(f5799422) SHA1(3f79dd849db787695a587f0db19a6782153b5955) )
983 ROM_LOAD( "b02_10.rom", 0x10000, 0x08000, CRC(4bd099ff) SHA1(9326075f83549b0a9656f69bd4436fb1be2ac805) )
984 ROM_LOAD( "b02_09.rom", 0x18000, 0x08000, CRC(230f1582) SHA1(0fd4156a46ed64cb6e5c59b8836382dd86c229cf) )
985
986 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
987 ROM_LOAD( "b02_01.512", 0x00000, 0x10000, CRC(2234b424) SHA1(bd6242b9dcdb0f582565df588106cd1ce2aad53b) )
988 ROM_LOAD( "b02_02.512", 0x10000, 0x10000, CRC(30d4c9a8) SHA1(96ce4f41207c5487e801a8444030ec4dc7b58b23) )
989 ROM_LOAD( "b02_03.512", 0x20000, 0x10000, CRC(64f3d88f) SHA1(d0155cfb0a8885d58e34141f9696b9aa208440ca) )
990 ROM_LOAD( "b02_04.512", 0x30000, 0x10000, CRC(3b23a9fc) SHA1(2ac34445618e17371b5eed7eb6f43da4dbb99e28) )
991
992 ROM_REGION( 0x300, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
993 ROM_LOAD( "clr2.bpr", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
994 ROM_LOAD( "clr1.bpr", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
995 ROM_LOAD( "clr3.bpr", 0x200, 0x100, CRC(016fe2f7) SHA1(909f815a61e759fdf998674ee383512ecd8fee65) ) /* ?? */
996 ROM_END
997
998 ROM_START( hishouza )
999 ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* Main 68K code */
1000 ROM_LOAD16_BYTE( "b02-18.rom", 0x00000, 0x10000, CRC(4444bb94) SHA1(5ff955a5190d1b356187de105cfb8ea181fc1282) )
1001 ROM_LOAD16_BYTE( "b02-17.rom", 0x00001, 0x10000, CRC(cdac7228) SHA1(6b0d67e4b0661a858653d2eabb8936af9148167e) )
1002
1003 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
1004 ROM_LOAD( "b02_16.rom", 0x0000, 0x8000, CRC(cdd1a153) SHA1(de9827a959039cf753ecac6756fb1925c37466d8) )
1005
1006 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Space for Co-Processor TMS320C10 */
1007
1008 ROM_REGION( 0x1000, REGION_USER1, 0 ) /* Co-Processor TMS320C10 MCU code */
1009 ROM_LOAD_NIB_HIGH( "dsp-a1.bpr", 0x0000, 0x0400, CRC(45d4d1b1) SHA1(e776a056f0f72cbeb309c5a23f803330cb8b3763) ) /* msb */
1010 ROM_LOAD_NIB_LOW ( "dsp-a2.bpr", 0x0000, 0x0400, CRC(edd227fa) SHA1(34aba84b5216ecbe462e7166d0f66785ca049a34) )
1011 ROM_LOAD_NIB_HIGH( "dsp-b5.bpr", 0x0400, 0x0400, CRC(85ca5d47) SHA1(3c6e21e2897fd35834021ec9f81f57bebfd13ef8) )
1012 ROM_LOAD_NIB_LOW ( "dsp-b6.bpr", 0x0400, 0x0400, CRC(81816b2c) SHA1(1e58ab7aef2a34f42267debf4cad9558d5e14159) )
1013 ROM_LOAD_NIB_HIGH( "dsp-a3.bpr", 0x0800, 0x0400, CRC(df88e79b) SHA1(661b057fa2eef37b9d794151381d7d74a7bfa93a) ) /* lsb */
1014 ROM_LOAD_NIB_LOW ( "dsp-a4.bpr", 0x0800, 0x0400, CRC(a2094a7f) SHA1(0f1c173643046c76aa89eab66fba6ea51c3f2223) )
1015 ROM_LOAD_NIB_HIGH( "dsp-b7.bpr", 0x0c00, 0x0400, CRC(e87540cd) SHA1(bb6e98c47ed46abbbfa06571806cb2d663880419) )
1016 ROM_LOAD_NIB_LOW ( "dsp-b8.bpr", 0x0c00, 0x0400, CRC(d3c16c5c) SHA1(a24d9536914734c1875c8a39938a346ff4418dd0) )
1017
1018 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
1019 ROM_LOAD( "b02-07.rom", 0x00000, 0x04000, CRC(c13a775e) SHA1(b60d26126ec6ebc24a7ca87dd0234e4d9d3e78fc) )
1020 ROM_LOAD( "b02-06.rom", 0x04000, 0x04000, CRC(ad5f1371) SHA1(feae9d7bb75bfab5353be4c5931d78a530bd9bcd) )
1021 ROM_LOAD( "b02-05.rom", 0x08000, 0x04000, CRC(85a7bff6) SHA1(38cd89aa0800e3796f7ecac657d14119543057c2) )
1022
1023 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
1024 ROM_LOAD( "b02_12.rom", 0x00000, 0x08000, CRC(733b9997) SHA1(75e874a1d148fcc8fa09bb724ce8346565ace4e5) )
1025 ROM_LOAD( "b02_15.rom", 0x08000, 0x08000, CRC(8b70ef32) SHA1(e1f988d650dce17e3bfbea12e5fddbb671df18d4) )
1026 ROM_LOAD( "b02_14.rom", 0x10000, 0x08000, CRC(f711ba7d) SHA1(49644a264c09fc2d743e4f801b8b82e980f2def9) )
1027 ROM_LOAD( "b02_13.rom", 0x18000, 0x08000, CRC(62532cd3) SHA1(df483db7604c0135130f92b08bad3fbffb4f5c47) )
1028
1029 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
1030 ROM_LOAD( "b02_08.rom", 0x00000, 0x08000, CRC(ef0cf49c) SHA1(6fd5727462cd6c5dab4c5d780bd7504e48583894) )
1031 ROM_LOAD( "b02_11.rom", 0x08000, 0x08000, CRC(f5799422) SHA1(3f79dd849db787695a587f0db19a6782153b5955) )
1032 ROM_LOAD( "b02_10.rom", 0x10000, 0x08000, CRC(4bd099ff) SHA1(9326075f83549b0a9656f69bd4436fb1be2ac805) )
1033 ROM_LOAD( "b02_09.rom", 0x18000, 0x08000, CRC(230f1582) SHA1(0fd4156a46ed64cb6e5c59b8836382dd86c229cf) )
1034
1035 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
1036 ROM_LOAD( "b02_01.512", 0x00000, 0x10000, CRC(2234b424) SHA1(bd6242b9dcdb0f582565df588106cd1ce2aad53b) )
1037 ROM_LOAD( "b02_02.512", 0x10000, 0x10000, CRC(30d4c9a8) SHA1(96ce4f41207c5487e801a8444030ec4dc7b58b23) )
1038 ROM_LOAD( "b02_03.512", 0x20000, 0x10000, CRC(64f3d88f) SHA1(d0155cfb0a8885d58e34141f9696b9aa208440ca) )
1039 ROM_LOAD( "b02_04.512", 0x30000, 0x10000, CRC(3b23a9fc) SHA1(2ac34445618e17371b5eed7eb6f43da4dbb99e28) )
1040
1041 ROM_REGION( 0x300, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
1042 ROM_LOAD( "clr2.bpr", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
1043 ROM_LOAD( "clr1.bpr", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
1044 ROM_LOAD( "clr3.bpr", 0x200, 0x100, CRC(016fe2f7) SHA1(909f815a61e759fdf998674ee383512ecd8fee65) ) /* ?? */
1045 ROM_END
1046
1047 ROM_START( fsharkbt )
1048 ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* Main 68K code */
1049 ROM_LOAD16_BYTE( "r18", 0x00000, 0x10000, CRC(ef30f563) SHA1(755d6ce4c1e631d7c11d3fab99dae300b6a3452e) )
1050 ROM_LOAD16_BYTE( "r17", 0x00001, 0x10000, CRC(0e18d25f) SHA1(82fc94830b3087c826d07cff699af9a3638e8087) )
1051
1052 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
1053 ROM_LOAD( "b02_16.rom", 0x0000, 0x8000, CRC(cdd1a153) SHA1(de9827a959039cf753ecac6756fb1925c37466d8) )
1054
1055 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Space for Co-Processor TMS320C10 */
1056
1057 ROM_REGION( 0x1000, REGION_USER1, 0 ) /* Co-Processor TMS320C10 MCU code */
1058 ROM_LOAD_NIB_HIGH( "mcu-1.bpr", 0x0000, 0x0400, CRC(45d4d1b1) SHA1(e776a056f0f72cbeb309c5a23f803330cb8b3763) ) /* msb */
1059 ROM_LOAD_NIB_LOW ( "mcu-2.bpr", 0x0000, 0x0400, CRC(651336d1) SHA1(3c968d5cb58abe35794b7c88520a22fc0b45a449) )
1060 ROM_LOAD_NIB_HIGH( "mcu-5.bpr", 0x0400, 0x0400, CRC(f97a58da) SHA1(77a659943d95d5b859fab50f827f11222c3dbf1f) )
1061 ROM_LOAD_NIB_LOW ( "mcu-6.bpr", 0x0400, 0x0400, CRC(ffcc422d) SHA1(9b4331e8bb5fe37bb8efcccc500a1d7cd026bf93) )
1062 ROM_LOAD_NIB_HIGH( "mcu-3.bpr", 0x0800, 0x0400, CRC(df88e79b) SHA1(661b057fa2eef37b9d794151381d7d74a7bfa93a) ) /* lsb */
1063 ROM_LOAD_NIB_LOW ( "mcu-4.bpr", 0x0800, 0x0400, CRC(a2094a7f) SHA1(0f1c173643046c76aa89eab66fba6ea51c3f2223) )
1064 ROM_LOAD_NIB_HIGH( "mcu-7.bpr", 0x0c00, 0x0400, CRC(0cd30d49) SHA1(65d65a199bfb740b94af19843640e625a5e67f46) )
1065 ROM_LOAD_NIB_LOW ( "mcu-8.bpr", 0x0c00, 0x0400, CRC(3379bbff) SHA1(2f577b8de6d523087b472691cdde2eb525877878) )
1066
1067 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
1068 ROM_LOAD( "b02_07-1.rom", 0x00000, 0x04000, CRC(e669f80e) SHA1(05c1a4ff9adaa6c8035f38a76c5ee333fafba2bf) )
1069 ROM_LOAD( "b02_06-1.rom", 0x04000, 0x04000, CRC(5e53ae47) SHA1(55bde4133deebb59a87d9b96c6d0fd7b4bbc0e02) )
1070 ROM_LOAD( "b02_05-1.rom", 0x08000, 0x04000, CRC(a8b05bd0) SHA1(37317838ea57cb98cf9599cedf8e72bcae913d29) )
1071
1072 ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
1073 ROM_LOAD( "b02_12.rom", 0x00000, 0x08000, CRC(733b9997) SHA1(75e874a1d148fcc8fa09bb724ce8346565ace4e5) )
1074 ROM_LOAD( "b02_15.rom", 0x08000, 0x08000, CRC(8b70ef32) SHA1(e1f988d650dce17e3bfbea12e5fddbb671df18d4) )
1075 ROM_LOAD( "b02_14.rom", 0x10000, 0x08000, CRC(f711ba7d) SHA1(49644a264c09fc2d743e4f801b8b82e980f2def9) )
1076 ROM_LOAD( "b02_13.rom", 0x18000, 0x08000, CRC(62532cd3) SHA1(df483db7604c0135130f92b08bad3fbffb4f5c47) )
1077
1078 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
1079 ROM_LOAD( "b02_08.rom", 0x00000, 0x08000, CRC(ef0cf49c) SHA1(6fd5727462cd6c5dab4c5d780bd7504e48583894) )
1080 ROM_LOAD( "b02_11.rom", 0x08000, 0x08000, CRC(f5799422) SHA1(3f79dd849db787695a587f0db19a6782153b5955) )
1081 ROM_LOAD( "b02_10.rom", 0x10000, 0x08000, CRC(4bd099ff) SHA1(9326075f83549b0a9656f69bd4436fb1be2ac805) )
1082 ROM_LOAD( "b02_09.rom", 0x18000, 0x08000, CRC(230f1582) SHA1(0fd4156a46ed64cb6e5c59b8836382dd86c229cf) )
1083
1084 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
1085 ROM_LOAD( "b02_01.512", 0x00000, 0x10000, CRC(2234b424) SHA1(bd6242b9dcdb0f582565df588106cd1ce2aad53b) )
1086 ROM_LOAD( "b02_02.512", 0x10000, 0x10000, CRC(30d4c9a8) SHA1(96ce4f41207c5487e801a8444030ec4dc7b58b23) )
1087 ROM_LOAD( "b02_03.512", 0x20000, 0x10000, CRC(64f3d88f) SHA1(d0155cfb0a8885d58e34141f9696b9aa208440ca) )
1088 ROM_LOAD( "b02_04.512", 0x30000, 0x10000, CRC(3b23a9fc) SHA1(2ac34445618e17371b5eed7eb6f43da4dbb99e28) )
1089
1090 ROM_REGION( 0x300, REGION_PROMS, 0 ) /* nibble bproms, lo/hi order to be determined */
1091 ROM_LOAD( "clr2.bpr", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
1092 ROM_LOAD( "clr1.bpr", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
1093 ROM_LOAD( "clr3.bpr", 0x200, 0x100, CRC(016fe2f7) SHA1(909f815a61e759fdf998674ee383512ecd8fee65) ) /* ?? */
1094 ROM_END
1095
1096 ROM_START( gulfwar2 )
1097 ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* Main 68K code */
1098 ROM_LOAD16_BYTE( "07-u92.bin", 0x00001, 0x20000, CRC(b73e6b25) SHA1(53cde41e5a2e8f721c3f43abf1fff46479f658d8) )
1099 ROM_LOAD16_BYTE( "08-u119.bin", 0x00000, 0x20000, CRC(41ebf9c0) SHA1(85207dda76abded727ed95717024a2ea2bd85dac) )
1100
1101 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound Z80 code */
1102 ROM_LOAD( "06-u51.bin", 0x00000, 0x08000, CRC(75504f95) SHA1(5bd23e700e1bd4f0fac622dfb7c8cc69ba764956) )
1103
1104 ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* Co-Processor TMS320C10 MCU code */
1105 ROM_LOAD16_BYTE( "02-u1.rom", 0x8001, 0x2000, CRC(abefe4ca) SHA1(f05f12a1ff19411f34f4eee98ce9ba450fec38f2) ) /* Same code as Twin Cobra*/
1106 ROM_LOAD16_BYTE( "01-u2.rom", 0x8000, 0x2000, CRC(01399b65) SHA1(4867ec815e22c9124c7aa00ebb6089c2611fa31f) ) /* Same code as Twin Cobra*/
1107
1108 ROM_REGION( 0x0c000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
1109 ROM_LOAD( "03-u9.bin", 0x00000, 0x04000, CRC(1b7934b3) SHA1(c7f5ac364dec4c7843c30e098fd02e0901bdf4b7) )
1110 ROM_LOAD( "04-u10.bin", 0x04000, 0x04000, CRC(6f7bfb58) SHA1(4c5602668938a52321b70cd971326fe1a4930889) )
1111 ROM_LOAD( "05-u11.bin", 0x08000, 0x04000, CRC(31814724) SHA1(bdcf270e6219555a7f776167f6bf971c6ff18a83) )
1112
1113 ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE ) /* fg tiles */
1114 ROM_LOAD( "16-u202.bin", 0x00000, 0x10000, CRC(d815d175) SHA1(917043d0731226d18bcc22dfe27e5a5a18b03c06) )
1115 ROM_LOAD( "13-u199.bin", 0x10000, 0x10000, CRC(d949b0d9) SHA1(1974d3b54e082baa9084dd619c8a879d954644cd) )
1116 ROM_LOAD( "14-u200.bin", 0x20000, 0x10000, CRC(c109a6ac) SHA1(3a13ec802e5bafcf599c273a0bb0fd078e01e171) )
1117 ROM_LOAD( "15-u201.bin", 0x30000, 0x10000, CRC(ad21f2ab) SHA1(0ab6eeb4dc9c2531c6f19479e7f9bc54fc1c1fdf) )
1118
1119 ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* bg tiles */
1120 ROM_LOAD( "09-u195.bin", 0x00000, 0x08000, CRC(b7be3a6d) SHA1(68b9223fd07e81d443a1ae3ff04b2af105b27548) )
1121 ROM_LOAD( "12-u198.bin", 0x08000, 0x08000, CRC(fd7032a6) SHA1(8be6315d732b154163a3573e2017fdfc77c92e54) )
1122 ROM_LOAD( "11-u197.bin", 0x10000, 0x08000, CRC(7b721ed3) SHA1(afd10229414c65a56e184d56a69460ca3a502a27) )
1123 ROM_LOAD( "10-u196.rom", 0x18000, 0x08000, CRC(160f38ab) SHA1(da310ec387d439b26c8b6b881e5dcc07c2b9bb00) )
1124
1125 ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprites */
1126 ROM_LOAD( "20-u262.bin", 0x00000, 0x10000, CRC(10665ca0) SHA1(0c552c3807e00a7ef4f9fd28c7988a232628a1f5) )
1127 ROM_LOAD( "19-u261.bin", 0x10000, 0x10000, CRC(cfa6d417) SHA1(f6c17d938b58dc5756ecf617f00fbfaf701602a7) )
1128 ROM_LOAD( "18-u260.bin", 0x20000, 0x10000, CRC(2e6a0c49) SHA1(0b7ddad8775dcebe240a8246ef7816113f517f87) )
1129 ROM_LOAD( "17-u259.bin", 0x30000, 0x10000, CRC(66c1b0e6) SHA1(82f3659245913f835c4434131c179b49ee195961) )
1130
1131 ROM_REGION( 0x260, REGION_PROMS, 0 )
1132 ROM_LOAD( "82s129.d3", 0x000, 0x100, CRC(24e7d62f) SHA1(1c06a1ef1b6a722794ca1d5ee2c476ecaa5178a3) ) /* sprite priority control ?? */
1133 ROM_LOAD( "82s129.d4", 0x100, 0x100, CRC(a50cef09) SHA1(55cafb5b2551b80ae708e9b966cf37c70a16d310) ) /* sprite priority control ?? */
1134 ROM_LOAD( "82s123.d2", 0x200, 0x020, CRC(f72482db) SHA1(b0cb911f9c81f6088a5aa8760916ddae1f8534d7) ) /* sprite control ?? */
1135 ROM_LOAD( "82s123.e18", 0x220, 0x020, CRC(bc88cced) SHA1(5055362710c0f58823c05fb4c0e0eec638b91e3d) ) /* sprite attribute (flip/position) ?? */
1136 ROM_LOAD( "82s123.b24", 0x240, 0x020, CRC(4fb5df2a) SHA1(506ef2c8e4cf45c256d6831a0a5760732f2de422) ) /* tile to sprite priority ?? */
1137 ROM_END
1138
1139 static DRIVER_INIT( fshark )
1140 {
1141 data8_t *source = memory_region(REGION_USER1);
1142 data16_t *dest = (data16_t *)&memory_region(REGION_CPU3)[TMS32010_PGM_OFFSET];
1143 int A;
1144
1145 /* The ROM loader fixes the nibble images. Here we fix the byte ordering. */
1146 for (A = 0;A < 0x0800;A++)
1147 dest[A] = (source[A] << 8) | source[A + 0x800];
1148 }
1149
1150
1151
1152 GAME( 1987, twincobr, 0, twincobr, twincobr, 0, ROT270, "[Toaplan] Taito Corporation", "Twin Cobra (World)" )
1153 GAME( 1987, twincobu, twincobr, twincobr, twincobu, 0, ROT270, "[Toaplan] Taito America Corporation (Romstar license)", "Twin Cobra (US)" )
1154 GAME( 1987, ktiger, twincobr, twincobr, ktiger, 0, ROT270, "[Toaplan] Taito Corporation", "Kyukyoku Tiger (Japan)" )
1155 GAME( 1987, fshark, 0, twincobr, fshark, fshark, ROT270, "[Toaplan] Taito Corporation", "Flying Shark (World)" )
1156 GAME( 1987, skyshark, fshark, twincobr, skyshark, fshark, ROT270, "[Toaplan] Taito America Corporation (Romstar license)", "Sky Shark (US)" )
1157 GAME( 1987, hishouza, fshark, twincobr, hishouza, fshark, ROT270, "[Toaplan] Taito Corporation", "Hishou Zame (Japan)" )
1158 GAME( 1987, fsharkbt, fshark, twincobr, skyshark, fshark, ROT270, "bootleg", "Flying Shark (bootleg)" )
1159 GAME( 1991, gulfwar2, 0, twincobr, gulfwar2, 0, ROT270, "Comad", "Gulf War II" )
1160