1 // FB Alpha Taito F3 driver module
2 // Based on MAME driver by Bryan McPhail and MANY others.
3
4 /*
5 version .00001d ;)
6
7 - known issues and workarounds -
8 scfinals & scfinalso coin inputs do not work, therefore a kludge is used.
9 -> if a coin is pressed, it instead presses the service coin :)
10 -> scfinals also displays a weird/corrupt version string in service mode(!!)
11
12 - todo -
13 kirameki sound banking
14 */
15
16 //#define USE_CPU_SPEEDHACKS
17
18 #include "tiles_generic.h"
19 #include "m68000_intf.h"
20 #include "taito.h"
21 #include "taitof3_snd.h"
22 #include "taitof3_video.h"
23 #include "es5506.h"
24 #include "eeprom.h"
25 #include "msm6295.h"
26 #include "burn_gun.h"
27
28 static UINT8 *DrvVRAMRAM;
29 static UINT8 *DrvPivotRAM;
30 static UINT16 *DrvCoinWord;
31
32 static UINT8 DrvJoy1[16];
33 static UINT8 DrvJoy2[16];
34 static UINT8 DrvJoy3[16];
35 static UINT8 DrvJoy4[16];
36 static UINT8 DrvJoy5[16];
37 static UINT8 DrvSrv[1];
38 static UINT8 DrvReset;
39 static UINT16 DrvInputs[5];
40 static INT16 DrvAxis[2];
41 static UINT8 previous_coin;
42
43 static INT32 sound_cpu_in_reset = 0;
44 static INT32 watchdog;
45
46 INT32 f3_game = 0;
47
48 static struct BurnInputInfo F3InputList[] = {
49 {"P1 Coin", BIT_DIGITAL, DrvJoy5 + 4, "p1 coin" },
50 {"P1 Start", BIT_DIGITAL, DrvJoy1 + 12, "p1 start" },
51 {"P1 Up", BIT_DIGITAL, DrvJoy2 + 0, "p1 up" },
52 {"P1 Down", BIT_DIGITAL, DrvJoy2 + 1, "p1 down" },
53 {"P1 Left", BIT_DIGITAL, DrvJoy2 + 2, "p1 left" },
54 {"P1 Right", BIT_DIGITAL, DrvJoy2 + 3, "p1 right" },
55 {"P1 Button 1", BIT_DIGITAL, DrvJoy1 + 0, "p1 fire 1" },
56 {"P1 Button 2", BIT_DIGITAL, DrvJoy1 + 1, "p1 fire 2" },
57 {"P1 Button 3", BIT_DIGITAL, DrvJoy1 + 2, "p1 fire 3" },
58 {"P1 Button 4", BIT_DIGITAL, DrvJoy1 + 3, "p1 fire 4" },
59
60 {"P2 Coin", BIT_DIGITAL, DrvJoy5 + 5, "p2 coin" },
61 {"P2 Start", BIT_DIGITAL, DrvJoy1 + 13, "p2 start" },
62 {"P2 Up", BIT_DIGITAL, DrvJoy2 + 4, "p2 up" },
63 {"P2 Down", BIT_DIGITAL, DrvJoy2 + 5, "p2 down" },
64 {"P2 Left", BIT_DIGITAL, DrvJoy2 + 6, "p2 left" },
65 {"P2 Right", BIT_DIGITAL, DrvJoy2 + 7, "p2 right" },
66 {"P2 Button 1", BIT_DIGITAL, DrvJoy1 + 4, "p2 fire 1" },
67 {"P2 Button 2", BIT_DIGITAL, DrvJoy1 + 5, "p2 fire 2" },
68 {"P2 Button 3", BIT_DIGITAL, DrvJoy1 + 6, "p2 fire 3" },
69 {"P2 Button 4", BIT_DIGITAL, DrvJoy1 + 7, "p2 fire 4" },
70
71 {"P3 Coin", BIT_DIGITAL, DrvJoy5 + 6, "p3 coin" },
72 {"P3 Start", BIT_DIGITAL, DrvJoy1 + 14, "p3 start" },
73 {"P3 Up", BIT_DIGITAL, DrvJoy4 + 0, "p3 up" },
74 {"P3 Down", BIT_DIGITAL, DrvJoy4 + 1, "p3 down" },
75 {"P3 Left", BIT_DIGITAL, DrvJoy4 + 2, "p3 left" },
76 {"P3 Right", BIT_DIGITAL, DrvJoy4 + 3, "p3 right" },
77 {"P3 Button 1", BIT_DIGITAL, DrvJoy3 + 8, "p3 fire 1" },
78 {"P3 Button 2", BIT_DIGITAL, DrvJoy3 + 9, "p3 fire 2" },
79 {"P3 Button 3", BIT_DIGITAL, DrvJoy3 + 10, "p3 fire 3" },
80 {"P3 Button 4", BIT_DIGITAL, DrvJoy3 + 11, "p3 fire 4" },
81
82 {"P4 Coin", BIT_DIGITAL, DrvJoy5 + 7, "p4 coin" },
83 {"P4 Start", BIT_DIGITAL, DrvJoy1 + 15, "p4 start" },
84 {"P4 Up", BIT_DIGITAL, DrvJoy4 + 4, "p4 up" },
85 {"P4 Down", BIT_DIGITAL, DrvJoy4 + 5, "p4 down" },
86 {"P4 Left", BIT_DIGITAL, DrvJoy4 + 6, "p4 left" },
87 {"P4 Right", BIT_DIGITAL, DrvJoy4 + 7, "p4 right" },
88 {"P4 Button 1", BIT_DIGITAL, DrvJoy3 + 12, "p4 fire 1" },
89 {"P4 Button 2", BIT_DIGITAL, DrvJoy3 + 13, "p4 fire 2" },
90 {"P4 Button 3", BIT_DIGITAL, DrvJoy3 + 14, "p4 fire 3" },
91 {"P4 Button 4", BIT_DIGITAL, DrvJoy3 + 15, "p4 fire 4" },
92
93 {"Reset", BIT_DIGITAL, &DrvReset, "reset" },
94 {"Service 1", BIT_DIGITAL, DrvJoy1 + 9, "service" },
95 {"Service 2", BIT_DIGITAL, DrvJoy1 + 10, "service" },
96 {"Service 3", BIT_DIGITAL, DrvJoy1 + 11, "service" },
97 {"Service Mode", BIT_DIGITAL, DrvSrv + 0, "diag" },
98 {"Tilt", BIT_DIGITAL, DrvJoy1 + 8, "tilt" },
99 {"Dip", BIT_DIPSWITCH, TaitoDip + 0, "dip" },
100 };
101
102 STDINPUTINFO(F3)
103
104 #define A(a, b, c, d) { a, b, (UINT8*)(c), d }
105 static struct BurnInputInfo F3AnalogInputList[] = {
106 {"P1 Coin", BIT_DIGITAL, DrvJoy5 + 4, "p1 coin" },
107 {"P1 Start", BIT_DIGITAL, DrvJoy1 + 12, "p1 start" },
108 {"P1 Up", BIT_DIGITAL, DrvJoy2 + 0, "p1 up" },
109 {"P1 Down", BIT_DIGITAL, DrvJoy2 + 1, "p1 down" },
110 {"P1 Left", BIT_DIGITAL, DrvJoy2 + 2, "p1 left" },
111 {"P1 Right", BIT_DIGITAL, DrvJoy2 + 3, "p1 right" },
112 {"P1 Button 1", BIT_DIGITAL, DrvJoy1 + 0, "p1 fire 1" },
113 {"P1 Button 2", BIT_DIGITAL, DrvJoy1 + 1, "p1 fire 2" },
114 {"P1 Button 3", BIT_DIGITAL, DrvJoy1 + 2, "p1 fire 3" },
115 {"P1 Button 4", BIT_DIGITAL, DrvJoy1 + 3, "p1 fire 4" },
116 A("P1 Analog Dial", BIT_ANALOG_REL, DrvAxis + 0, "p1 x-axis" ),
117
118 {"P2 Coin", BIT_DIGITAL, DrvJoy5 + 5, "p2 coin" },
119 {"P2 Start", BIT_DIGITAL, DrvJoy1 + 13, "p2 start" },
120 {"P2 Up", BIT_DIGITAL, DrvJoy2 + 4, "p2 up" },
121 {"P2 Down", BIT_DIGITAL, DrvJoy2 + 5, "p2 down" },
122 {"P2 Left", BIT_DIGITAL, DrvJoy2 + 6, "p2 left" },
123 {"P2 Right", BIT_DIGITAL, DrvJoy2 + 7, "p2 right" },
124 {"P2 Button 1", BIT_DIGITAL, DrvJoy1 + 4, "p2 fire 1" },
125 {"P2 Button 2", BIT_DIGITAL, DrvJoy1 + 5, "p2 fire 2" },
126 {"P2 Button 3", BIT_DIGITAL, DrvJoy1 + 6, "p2 fire 3" },
127 {"P2 Button 4", BIT_DIGITAL, DrvJoy1 + 7, "p2 fire 4" },
128 A("P2 Analog Dial", BIT_ANALOG_REL, DrvAxis + 1, "p2 x-axis" ),
129
130 {"P3 Coin", BIT_DIGITAL, DrvJoy5 + 6, "p3 coin" },
131 {"P3 Start", BIT_DIGITAL, DrvJoy1 + 14, "p3 start" },
132 {"P3 Up", BIT_DIGITAL, DrvJoy4 + 0, "p3 up" },
133 {"P3 Down", BIT_DIGITAL, DrvJoy4 + 1, "p3 down" },
134 {"P3 Left", BIT_DIGITAL, DrvJoy4 + 2, "p3 left" },
135 {"P3 Right", BIT_DIGITAL, DrvJoy4 + 3, "p3 right" },
136 {"P3 Button 1", BIT_DIGITAL, DrvJoy3 + 8, "p3 fire 1" },
137 {"P3 Button 2", BIT_DIGITAL, DrvJoy3 + 9, "p3 fire 2" },
138 {"P3 Button 3", BIT_DIGITAL, DrvJoy3 + 10, "p3 fire 3" },
139 {"P3 Button 4", BIT_DIGITAL, DrvJoy3 + 11, "p3 fire 4" },
140
141 {"P4 Coin", BIT_DIGITAL, DrvJoy5 + 7, "p4 coin" },
142 {"P4 Start", BIT_DIGITAL, DrvJoy1 + 15, "p4 start" },
143 {"P4 Up", BIT_DIGITAL, DrvJoy4 + 4, "p4 up" },
144 {"P4 Down", BIT_DIGITAL, DrvJoy4 + 5, "p4 down" },
145 {"P4 Left", BIT_DIGITAL, DrvJoy4 + 6, "p4 left" },
146 {"P4 Right", BIT_DIGITAL, DrvJoy4 + 7, "p4 right" },
147 {"P4 Button 1", BIT_DIGITAL, DrvJoy3 + 12, "p4 fire 1" },
148 {"P4 Button 2", BIT_DIGITAL, DrvJoy3 + 13, "p4 fire 2" },
149 {"P4 Button 3", BIT_DIGITAL, DrvJoy3 + 14, "p4 fire 3" },
150 {"P4 Button 4", BIT_DIGITAL, DrvJoy3 + 15, "p4 fire 4" },
151
152 {"Reset", BIT_DIGITAL, &DrvReset, "reset" },
153 {"Service 1", BIT_DIGITAL, DrvJoy1 + 9, "service" },
154 {"Service 2", BIT_DIGITAL, DrvJoy1 + 10, "service" },
155 {"Service 3", BIT_DIGITAL, DrvJoy1 + 11, "service" },
156 {"Service Mode", BIT_DIGITAL, DrvSrv + 0, "diag" },
157 {"Tilt", BIT_DIGITAL, DrvJoy1 + 8, "tilt" },
158 {"Dip", BIT_DIPSWITCH, TaitoDip + 0, "dip" },
159 };
160
161 STDINPUTINFO(F3Analog)
162
163 static struct BurnInputInfo KnInputList[] = {
164 {"P1 Coin", BIT_DIGITAL, DrvJoy5 + 4, "p1 coin" },
165 {"P1 Start", BIT_DIGITAL, DrvJoy1 + 12, "p1 start" },
166 {"P1 Up", BIT_DIGITAL, DrvJoy2 + 0, "p1 up" },
167 {"P1 Down", BIT_DIGITAL, DrvJoy2 + 1, "p1 down" },
168 {"P1 Left", BIT_DIGITAL, DrvJoy2 + 2, "p1 left" },
169 {"P1 Right", BIT_DIGITAL, DrvJoy2 + 3, "p1 right" },
170 {"P1 Weak Punch", BIT_DIGITAL, DrvJoy1 + 0, "p1 fire 1" },
171 {"P1 Medium Punch", BIT_DIGITAL, DrvJoy1 + 1, "p1 fire 2" },
172 {"P1 Strong Punch", BIT_DIGITAL, DrvJoy1 + 2, "p1 fire 3" },
173 {"P1 Weak Kick", BIT_DIGITAL, DrvJoy4 + 0, "p1 fire 4" },
174 {"P1 Medium Kick", BIT_DIGITAL, DrvJoy4 + 1, "p1 fire 5" },
175 {"P1 Strong Kick", BIT_DIGITAL, DrvJoy4 + 2, "p1 fire 6" },
176
177 {"P2 Coin", BIT_DIGITAL, DrvJoy5 + 5, "p2 coin" },
178 {"P2 Start", BIT_DIGITAL, DrvJoy1 + 13, "p2 start" },
179 {"P2 Up", BIT_DIGITAL, DrvJoy2 + 4, "p2 up" },
180 {"P2 Down", BIT_DIGITAL, DrvJoy2 + 5, "p2 down" },
181 {"P2 Left", BIT_DIGITAL, DrvJoy2 + 6, "p2 left" },
182 {"P2 Right", BIT_DIGITAL, DrvJoy2 + 7, "p2 right" },
183 {"P2 Weak Punch", BIT_DIGITAL, DrvJoy1 + 4, "p2 fire 1" },
184 {"P2 Medium Punch", BIT_DIGITAL, DrvJoy1 + 5, "p2 fire 2" },
185 {"P2 Strong Punch", BIT_DIGITAL, DrvJoy1 + 6, "p2 fire 3" },
186 {"P2 Weak Kick", BIT_DIGITAL, DrvJoy3 + 8, "p2 fire 4" },
187 {"P2 Medium Kick", BIT_DIGITAL, DrvJoy3 + 9, "p2 fire 5" },
188 {"P2 Strong Kick", BIT_DIGITAL, DrvJoy3 + 10, "p2 fire 6" },
189
190 {"Reset", BIT_DIGITAL, &DrvReset, "reset" },
191 {"Service 1", BIT_DIGITAL, DrvJoy1 + 9, "service" },
192 {"Service 2", BIT_DIGITAL, DrvJoy1 + 10, "service" },
193 {"Service 3", BIT_DIGITAL, DrvJoy1 + 11, "service" },
194 {"Service Mode", BIT_DIGITAL, DrvSrv + 0, "diag" },
195 {"Tilt", BIT_DIGITAL, DrvJoy1 + 8, "tilt" },
196 {"Dip", BIT_DIPSWITCH, TaitoDip + 0, "dip" },
197 };
198
199 STDINPUTINFO(Kn)
200
201 static struct BurnDIPInfo gseekerDIPList[]=
202 {
203 {0x2e, 0xff, 0xff, 0x01, NULL },
204
205 {0 , 0xfe, 0 , 2 , "Music Tempo (must restart!)" },
206 {0x2e, 0x01, 0x02, 0x00, "Normal / Fast" },
207 {0x2e, 0x01, 0x02, 0x02, "Slow / Mellow" },
208
209 {0 , 0xfe, 0 , 2 , "Stage 5 Graphic Glitch Fix" },
210 {0x2e, 0x01, 0x01, 0x01, "Yes" },
211 {0x2e, 0x01, 0x01, 0x00, "No" },
212 };
213
214 STDDIPINFO(gseeker)
215
216 static struct BurnDIPInfo F3DIPList[]=
217 {
218 {0x2e, 0xff, 0xff, 0x00, NULL },
219
220 {0 , 0xfe, 0 , 2 , "Music Tempo (must restart!)" },
221 {0x2e, 0x01, 0x02, 0x00, "Normal / Fast" },
222 {0x2e, 0x01, 0x02, 0x02, "Slow / Mellow" },
223 };
224
225 STDDIPINFO(F3)
226
227 static struct BurnDIPInfo F3AnalogDIPList[]=
228 {
229 {0x30, 0xff, 0xff, 0x00, NULL },
230
231 {0 , 0xfe, 0 , 2 , "Music Tempo (must restart!)" },
232 {0x30, 0x01, 0x02, 0x00, "Normal / Fast" },
233 {0x30, 0x01, 0x02, 0x02, "Slow / Mellow" },
234 };
235
236 STDDIPINFO(F3Analog)
237
238 static struct BurnDIPInfo KnDIPList[]=
239 {
240 {0x1e, 0xff, 0xff, 0x00, NULL },
241
242 {0 , 0xfe, 0 , 2 , "Music Tempo (must restart!)" },
243 {0x1e, 0x01, 0x02, 0x00, "Normal / Fast" },
244 {0x1e, 0x01, 0x02, 0x02, "Slow / Mellow" },
245 };
246
STDDIPINFO(Kn)247 STDDIPINFO(Kn)
248
249 static void control_w(INT32 offset, UINT32 d, INT32 b)
250 {
251 switch (offset & 0x1c)
252 {
253 case 0x00:
254 watchdog = 0;
255 return;
256
257 case 0x04:
258 {
259 // bprintf (0, _T("contrl %2.2x, %8.8x, %8.8x\n"), offset, d, b);
260 if ((offset & 3) == 0) DrvCoinWord[0] = d << 0; // or 8?
261 }
262 return;
263
264 case 0x10:
265 {
266 if ((offset & 3) == 3 || (offset == 0x4a0012 && b == 2)) {
267 EEPROMSetClockLine((d & 0x08) ? EEPROM_ASSERT_LINE : EEPROM_CLEAR_LINE);
268 EEPROMWriteBit(d & 0x04);
269 EEPROMSetCSLine((d & 0x10) ? EEPROM_CLEAR_LINE : EEPROM_ASSERT_LINE);
270 }
271 }
272 return;
273
274 case 0x14:
275 {
276 // bprintf (0, _T("contrl %2.2x, %8.8x, %8.8x\n"), offset, d, b);
277 if ((offset & 3) == 0) DrvCoinWord[1] = d << 0; // or 8?
278 }
279 return;
280
281 case 0x1c:
282 {
283 if (BurnDrvGetFlags() & BDF_BOOTLEG) {
284 if ((offset & 3) == 3) { MSM6295Write(0, d); return; }
285 // bprintf (0, _T("Sound Command: %x, %x %d\n"), offset & 0x1f, d, b);
286 if ((offset & 3) == 0) { } // banking
287 }
288 }
289 return;
290 }
291 }
292
f3_main_write_long(UINT32 a,UINT32 d)293 static void __fastcall f3_main_write_long(UINT32 a, UINT32 d)
294 {
295 if ((a & 0xffff80) == 0x300000) {
296 // sound_bankswitch_w
297 return;
298 }
299
300 if ((a & 0xffffe0) == 0x4a0000) {
301 control_w(a, d,4);
302 return;
303 }
304
305 if ((a & 0xfffffc) == 0xc80000) {
306 sound_cpu_in_reset = 0;
307 return;
308 }
309
310 if ((a & 0xfffffc) == 0xc80100) {
311 SekReset(1);
312 sound_cpu_in_reset = 1;
313 return;
314 }
315 }
316
f3_main_write_word(UINT32 a,UINT16 d)317 static void __fastcall f3_main_write_word(UINT32 a, UINT16 d)
318 {
319 if ((a & 0xffff80) == 0x300000) {
320 // sound bankswitch
321 return;
322 }
323
324 if ((a & 0xffffe0) == 0x4a0000) {
325 control_w(a, d,2);
326 return;
327 }
328
329 if ((a & 0xfffffc) == 0x4c0000) {
330 // unknown
331 return;
332 }
333
334 if ((a & 0xfffffc) == 0xc80000) {
335 sound_cpu_in_reset = 0;
336 return;
337 }
338
339 if ((a & 0xfffffc) == 0xc80100) {
340 SekReset(1);
341 sound_cpu_in_reset = 1;
342 return;
343 }
344 }
345
f3_main_write_byte(UINT32 a,UINT8 d)346 static void __fastcall f3_main_write_byte(UINT32 a, UINT8 d)
347 {
348 if ((a & 0xffff80) == 0x300000) {
349 // sound bankswitch
350 return;
351 }
352
353 if ((a & 0xffffe0) == 0x4a0000) {
354 control_w(a, d,1);
355 return;
356 }
357
358 if ((a & 0xfffffc) == 0xc80000) {
359 sound_cpu_in_reset = 0;
360 return;
361 }
362
363 if ((a & 0xfffffc) == 0xc80100) {
364 SekReset(1);
365 sound_cpu_in_reset = 1;
366 return;
367 }
368 }
369
control_r(INT32 offset,INT32 b)370 static UINT32 control_r(INT32 offset, INT32 b)
371 {
372 offset &= 0x1c;
373
374 UINT32 ret = 0xffffffff;
375
376 switch (offset & 0x1c)
377 {
378 case 0x00:
379 ret = DrvInputs[0] & 0xffff;
380 ret |= EEPROMRead() ? 0x01010000 : 0;
381 ret |= (DrvInputs[4] & 0xfe) << 16;
382 ret |= (DrvInputs[4] & 0xfe) << 24;
383 break;
384
385 case 0x04:
386 ret = DrvInputs[1] | (DrvCoinWord[0] << 16);
387 break;
388
389 case 0x08:
390 case 0x0c:
391 ret = BurnTrackballReadWord(0, (offset >> 2) & 1);
392 ret = 0xffff0000 + (((ret & 0xf) << 12) | ((ret & 0xff0) >> 4));
393 break;
394
395 case 0x10:
396 ret = DrvInputs[2] | 0xffff0000;
397 break;
398
399 case 0x14:
400 ret = DrvInputs[3] | (DrvCoinWord[1] << 16);
401 break;
402
403 case 0x1c:
404 ret = MSM6295Read(0);
405 break;
406 }
407
408 return ret;
409 }
410
f3_main_read_long(UINT32 a)411 static UINT32 __fastcall f3_main_read_long(UINT32 a)
412 {
413 if ((a & 0xffffe0) == 0x4a0000) {
414 return control_r(a, 4);
415 }
416
417 return 0;
418 }
419
f3_main_read_word(UINT32 a)420 static UINT16 __fastcall f3_main_read_word(UINT32 a)
421 {
422 if ((a & 0xffffe0) == 0x4a0000) {
423 return control_r(a, 2) >> ((~a & 2) * 8);
424 }
425
426 return 0;
427 }
428
f3_main_read_byte(UINT32 a)429 static UINT8 __fastcall f3_main_read_byte(UINT32 a)
430 {
431 if ((a & 0xffffe0) == 0x4a0000) {
432 return control_r(a, 1) >> (((a & 3)^3) * 8);
433 }
434
435 return 0;
436 }
437
f3_palette_landmakr_onreset()438 static void f3_palette_landmakr_onreset()
439 {
440 for (INT32 i = 0; i < 0x8000/4; i++) {
441 UINT8 r = ((i & 1) ? 0xff : 0);
442 UINT8 g = ((i & 2) ? 0xff : 0);
443 UINT8 b = ((i & 4) ? 0xff : 0);
444
445 *((UINT32*)(TaitoPaletteRam + (i * 4))) = BURN_ENDIAN_SWAP_INT32(r | (g << 24) | (b << 16));
446 }
447 }
448
f3_palette_write_long(UINT32 a,UINT32 d)449 static void __fastcall f3_palette_write_long(UINT32 a, UINT32 d)
450 {
451 if ((a & 0xff8000) == 0x440000) {
452 *((UINT32*)(TaitoPaletteRam + (a & 0x7ffc))) = BURN_ENDIAN_SWAP_INT32((d << 16) | (d >> 16));
453 pPaletteUpdateCallback(a);
454 return;
455 }
456 }
457
f3_palette_write_word(UINT32 a,UINT16 d)458 static void __fastcall f3_palette_write_word(UINT32 a, UINT16 d)
459 {
460 if ((a & 0xff8000) == 0x440000) {
461 *((UINT16*)(TaitoPaletteRam + (a & 0x7ffe))) = BURN_ENDIAN_SWAP_INT16(d);
462 pPaletteUpdateCallback(a);
463 return;
464 }
465 }
466
f3_palette_write_byte(UINT32 a,UINT8 d)467 static void __fastcall f3_palette_write_byte(UINT32 a, UINT8 d)
468 {
469 if ((a & 0xff8000) == 0x440000) {
470 TaitoPaletteRam[(a & 0x7fff) ^ 1] = d;
471 pPaletteUpdateCallback(a);
472 return;
473 }
474 }
475
DrvVRAMExpand(UINT16 offset)476 static void DrvVRAMExpand(UINT16 offset)
477 {
478 offset &= 0x1ffc;
479
480 TaitoCharsB[offset * 2 + 1] = DrvVRAMRAM[offset + 2] >> 4;
481 TaitoCharsB[offset * 2 + 0] = DrvVRAMRAM[offset + 2] & 0x0f;
482 TaitoCharsB[offset * 2 + 3] = DrvVRAMRAM[offset + 3] >> 4;
483 TaitoCharsB[offset * 2 + 2] = DrvVRAMRAM[offset + 3] & 0x0f;
484 TaitoCharsB[offset * 2 + 5] = DrvVRAMRAM[offset + 0] >> 4;
485 TaitoCharsB[offset * 2 + 4] = DrvVRAMRAM[offset + 0] & 0x0f;
486 TaitoCharsB[offset * 2 + 7] = DrvVRAMRAM[offset + 1] >> 4;
487 TaitoCharsB[offset * 2 + 6] = DrvVRAMRAM[offset + 1] & 0x0f;
488 }
489
DrvPivotExpand(UINT16 offset)490 static void DrvPivotExpand(UINT16 offset)
491 {
492 offset &= 0xfffc;
493
494 TaitoCharsPivot[offset * 2 + 1] = DrvPivotRAM[offset + 2] >> 4;
495 TaitoCharsPivot[offset * 2 + 0] = DrvPivotRAM[offset + 2] & 0x0f;
496 TaitoCharsPivot[offset * 2 + 3] = DrvPivotRAM[offset + 3] >> 4;
497 TaitoCharsPivot[offset * 2 + 2] = DrvPivotRAM[offset + 3] & 0x0f;
498 TaitoCharsPivot[offset * 2 + 5] = DrvPivotRAM[offset + 0] >> 4;
499 TaitoCharsPivot[offset * 2 + 4] = DrvPivotRAM[offset + 0] & 0x0f;
500 TaitoCharsPivot[offset * 2 + 7] = DrvPivotRAM[offset + 1] >> 4;
501 TaitoCharsPivot[offset * 2 + 6] = DrvPivotRAM[offset + 1] & 0x0f;
502 }
503
f3_VRAM_write_long(UINT32 a,UINT32 d)504 static void __fastcall f3_VRAM_write_long(UINT32 a, UINT32 d)
505 {
506 if ((a & 0xffe000) == 0x61c000) {
507 *((UINT32*)(TaitoVideoRam + (a & 0x1ffc))) = BURN_ENDIAN_SWAP_INT32((d << 16) | (d >> 16));
508 dirty_tile_count[9] = 1;
509 return;
510 }
511
512 if ((a & 0xffe000) == 0x61e000) {
513 *((UINT32*)(DrvVRAMRAM + (a & 0x1ffc))) = BURN_ENDIAN_SWAP_INT32((d << 16) | (d >> 16));
514 DrvVRAMExpand(a);
515 return;
516 }
517 }
518
f3_VRAM_write_word(UINT32 a,UINT16 d)519 static void __fastcall f3_VRAM_write_word(UINT32 a, UINT16 d)
520 {
521 if ((a & 0xffe000) == 0x61c000) {
522 *((UINT16*)(TaitoVideoRam + (a & 0x1ffe))) = BURN_ENDIAN_SWAP_INT16(d);
523 dirty_tile_count[9] = 1;
524 return;
525 }
526
527 if ((a & 0xffe000) == 0x61e000) {
528 *((UINT16*)(DrvVRAMRAM + (a & 0x1ffe))) = BURN_ENDIAN_SWAP_INT16(d);
529 DrvVRAMExpand(a);
530 return;
531 }
532 }
533
f3_VRAM_write_byte(UINT32 a,UINT8 d)534 static void __fastcall f3_VRAM_write_byte(UINT32 a, UINT8 d)
535 {
536 if ((a & 0xffe000) == 0x61c000) {
537 TaitoVideoRam[(a & 0x1fff) ^ 1] = d;
538 dirty_tile_count[9] = 1;
539 return;
540 }
541
542 if ((a & 0xffe000) == 0x61e000) {
543 DrvVRAMRAM[(a & 0x1fff) ^ 1] = d;
544 DrvVRAMExpand(a);
545 return;
546 }
547 }
548
f3_pivot_write_long(UINT32 a,UINT32 d)549 static void __fastcall f3_pivot_write_long(UINT32 a, UINT32 d)
550 {
551 if ((a & 0xff0000) == 0x630000) {
552 *((UINT32*)(DrvPivotRAM + (a & 0xffff))) = BURN_ENDIAN_SWAP_INT32((d << 16) | (d >> 16));
553 DrvPivotExpand(a);
554 dirty_tile_count[9] = 1;
555 return;
556 }
557 }
558
f3_pivot_write_word(UINT32 a,UINT16 d)559 static void __fastcall f3_pivot_write_word(UINT32 a, UINT16 d)
560 {
561 if ((a & 0xff0000) == 0x630000) {
562 *((UINT16*)(DrvPivotRAM + (a & 0xffff))) = BURN_ENDIAN_SWAP_INT16(d);
563 DrvPivotExpand(a);
564 dirty_tile_count[9] = 1;
565 return;
566 }
567 }
568
f3_pivot_write_byte(UINT32 a,UINT8 d)569 static void __fastcall f3_pivot_write_byte(UINT32 a, UINT8 d)
570 {
571 if ((a & 0xff0000) == 0x630000) {
572 DrvPivotRAM[(a & 0xffff) ^ 1] = d;
573 DrvPivotExpand(a);
574 dirty_tile_count[9] = 1;
575 return;
576 }
577 }
578
f3_playfield_write_long(UINT32 a,UINT32 d)579 static void __fastcall f3_playfield_write_long(UINT32 a, UINT32 d)
580 {
581 if ((a & 0xff8000) == 0x610000) {
582 UINT32 *ram = (UINT32*)(TaitoF3PfRAM + (a & 0x7fff));
583
584 if (BURN_ENDIAN_SWAP_INT32(ram[0]) != ((d << 16) | (d >> 16))) {
585 ram[0] = BURN_ENDIAN_SWAP_INT32((d << 16) | (d >> 16));
586 dirty_tiles[(a & 0x7ffc)/4] = 1;
587 dirty_tile_count[((a & 0x7000)/0x1000)] = 1;
588 }
589 return;
590 }
591 }
592
f3_playfield_write_word(UINT32 a,UINT16 d)593 static void __fastcall f3_playfield_write_word(UINT32 a, UINT16 d)
594 {
595 if ((a & 0xff8000) == 0x610000) {
596 UINT16 *ram = (UINT16*)(TaitoF3PfRAM + (a & 0x7fff));
597
598 if (BURN_ENDIAN_SWAP_INT16(ram[0]) != d) {
599 ram[0] = BURN_ENDIAN_SWAP_INT16(d);
600 dirty_tiles[(a & 0x7ffc)/4] = 1;
601 dirty_tile_count[((a & 0x7000)/0x1000)] = 1;
602 }
603 return;
604 }
605 }
606
f3_playfield_write_byte(UINT32 a,UINT8 d)607 static void __fastcall f3_playfield_write_byte(UINT32 a, UINT8 d)
608 {
609 if ((a & 0xff8000) == 0x610000) {
610 if (TaitoF3PfRAM[(a & 0x7fff) ^ 1] != d) {
611 TaitoF3PfRAM[(a & 0x7fff) ^ 1] = d;
612 dirty_tiles[(a & 0x7ffc)/4] = 1;
613 dirty_tile_count[((a & 0x7000)/0x1000)] = 1;
614 }
615 return;
616 }
617 }
618
619 static UINT32 speedhack_address;
620
f3_speedhack_write_long(UINT32 a,UINT32 d)621 static void __fastcall f3_speedhack_write_long(UINT32 a, UINT32 d)
622 {
623 a &= 0x1fffe;
624 *((UINT32*)(Taito68KRam1 + a)) = BURN_ENDIAN_SWAP_INT32((d << 16) | (d >> 16));
625 if (a == (speedhack_address & ~3)) {
626 // SekIdle(100);
627 SekRunEnd(); // kill until next loop
628 }
629 }
630
f3_speedhack_write_word(UINT32 a,UINT16 d)631 static void __fastcall f3_speedhack_write_word(UINT32 a, UINT16 d)
632 {
633 a &= 0x1fffe;
634 *((UINT16*)(Taito68KRam1 + (a & 0x1fffe))) = BURN_ENDIAN_SWAP_INT16(d);
635 if (a == speedhack_address) {
636 // SekIdle(100);
637 SekRunEnd(); // kill until next loop
638 }
639 }
640
f3_speedhack_write_byte(UINT32 a,UINT8 d)641 static void __fastcall f3_speedhack_write_byte(UINT32 a, UINT8 d)
642 {
643 Taito68KRam1[(a & 0x1ffff) ^ 1] = d;
644 }
645
f3_speedhack_init(UINT32 address)646 static void f3_speedhack_init(UINT32 address)
647 {
648 if (address == 0) return;
649
650 #ifndef USE_CPU_SPEEDHACKS
651 return;
652 #endif
653
654 SekOpen(0);
655
656 address &= ~0x20000;
657
658 speedhack_address = address & 0x1fffe;
659
660 SekMapHandler(5, address & ~0x3ff, address | 0x3ff, MAP_WRITE);
661 SekSetWriteLongHandler(5, f3_speedhack_write_long);
662 SekSetWriteWordHandler(5, f3_speedhack_write_word);
663 SekSetWriteByteHandler(5, f3_speedhack_write_byte);
664
665 address |= 0x20000;
666
667 SekMapHandler(6, address & ~0x3ff, address | 0x3ff, MAP_WRITE);
668 SekSetWriteLongHandler(6, f3_speedhack_write_long);
669 SekSetWriteWordHandler(6, f3_speedhack_write_word);
670 SekSetWriteByteHandler(6, f3_speedhack_write_byte);
671 SekClose();
672 }
673
f3_reset_dirtybuffer()674 static void f3_reset_dirtybuffer()
675 {
676 memset (dirty_tiles, 1, 0x8000/4);
677 memset (dirty_tile_count, 1, 10);
678 }
679
DrvDoReset(INT32 full_reset)680 static INT32 DrvDoReset(INT32 full_reset)
681 {
682 if (full_reset) {
683 memset (TaitoRamStart, 0, TaitoRamEnd - TaitoRamStart);
684 }
685
686 SekOpen(0);
687 SekReset();
688 SekClose();
689
690 if (BurnDrvGetFlags() & BDF_BOOTLEG) {
691 MSM6295Reset(0);
692 } else {
693 TaitoF3SoundReset();
694 }
695
696 EEPROMReset();
697
698 if (EEPROMAvailable() == 0) {
699 if (TaitoDefaultEEProm[0] != 0) {
700 EEPROMFill((const UINT8*)TaitoDefaultEEProm, 0, 128);
701 } else if (f3_game == RECALH ) {
702 static const UINT8 recalh_eeprom[128] = {
703 0x85,0x54,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf3,0x35,
704 0x00,0x01,0x86,0xa0,0x00,0x13,0x04,0x13,0x00,0x00,0xc3,0x50,0x00,0x19,0x00,0x0a,
705 0x00,0x00,0x4e,0x20,0x00,0x03,0x18,0x0d,0x00,0x00,0x27,0x10,0x00,0x05,0x14,0x18,
706 0x00,0x00,0x13,0x88,0x00,0x00,0x12,0x27,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
707 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
708 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
709 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
710 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
711 };
712
713 EEPROMFill(recalh_eeprom, 0, 128);
714 } else if (f3_game == ARKRETRN) {
715 static const UINT8 arkretrn_eeprom[128] = {
716 0x54,0x41,0x49,0x54,0x4f,0x03,0x00,0x07,0xa1,0xe8,0xe0,0x01,0x11,0x12,0x30,0x00,
717 0x00,0x00,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x63,
718 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
719 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
720 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
721 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
722 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
723 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
724 };
725 static const UINT8 arkretrnj_eeprom[128] = {
726 0x54,0x41,0x49,0x54,0x4f,0x01,0x00,0x07,0xa1,0xe8,0xe0,0x01,0x11,0x11,0x30,0x00,
727 0x00,0x00,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x66,
728 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
729 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
730 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
731 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
732 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
733 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
734 };
735 static const UINT8 arkretrnu_eeprom[128] = {
736 0x54,0x41,0x49,0x54,0x4f,0x02,0x00,0x07,0xa1,0xe8,0xe0,0x01,0x11,0x11,0x30,0x00,
737 0x00,0x00,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4c,0x65,
738 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
739 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
740 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
741 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
742 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
743 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
744 };
745
746 if (strstr(BurnDrvGetTextA(DRV_NAME), "arkretrnu")) {
747 EEPROMFill(arkretrnu_eeprom, 0, 128);
748 } else if (strstr(BurnDrvGetTextA(DRV_NAME), "arkretrnj")) {
749 EEPROMFill(arkretrnj_eeprom, 0, 128);
750 } else {
751 EEPROMFill(arkretrn_eeprom, 0, 128);
752 }
753 } else if (f3_game == PUCHICAR) {
754 static const UINT8 puchicar_eeprom[128] = {
755 0x54,0x41,0x49,0x54,0x4f,0x03,0x00,0x07,0xa1,0xf2,0xe0,0x01,0x11,0x12,0x30,0x00,
756 0x00,0x00,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x59,
757 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
758 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
759 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
760 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
761 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
762 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
763 };
764 static const UINT8 puchicaru_eeprom[128] = {
765 0x54,0x41,0x49,0x54,0x4f,0x02,0x00,0x07,0xa1,0xf2,0xe0,0x01,0x11,0x11,0x30,0x00,
766 0x00,0x00,0x02,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x5a,
767 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
768 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
769 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
770 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
771 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
772 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
773 };
774 static const UINT8 puchicarj_eeprom[128] = {
775 0x54,0x41,0x49,0x54,0x4f,0x01,0x00,0x07,0xa1,0xf2,0xe0,0x01,0x11,0x11,0x30,0x00,
776 0x00,0x00,0x02,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4d,0x5c,
777 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
778 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
779 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
780 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
781 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
782 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
783 };
784 if (strstr(BurnDrvGetTextA(DRV_NAME), "puchicaru")) {
785 EEPROMFill(puchicaru_eeprom, 0, 128);
786 } else if (strstr(BurnDrvGetTextA(DRV_NAME), "puchicarj")) {
787 EEPROMFill(puchicarj_eeprom, 0, 128);
788 } else {
789 EEPROMFill(puchicar_eeprom, 0, 128);
790 }
791 }
792 }
793
794 f3_reset_dirtybuffer();
795
796 TaitoF3VideoReset();
797
798 if (f3_game == LANDMAKR)
799 { // init landmakr's palette with rainbow, needed for text on the "you win" / "you lose" screen.
800 f3_palette_landmakr_onreset();
801 }
802
803 sound_cpu_in_reset = 1;
804 watchdog = 0;
805 previous_coin = 0;
806
807 HiscoreReset();
808
809 return 0;
810 }
811
MemIndex()812 static INT32 MemIndex()
813 {
814 UINT8 *Next; Next = TaitoMem;
815
816 Taito68KRom1 = Next; Next += 0x0200000;
817
818 TaitoF3SoundRom = Next;
819 Taito68KRom2 = Next; Next += 0x0100000;
820 if (f3_game == KIRAMEKI) Next += 0x200000;
821
822 TaitoSpritesA = Next; Next += TaitoSpriteARomSize;
823 TaitoChars = Next; Next += TaitoCharRomSize;
824
825 tile_opaque_sp = Next; Next += TaitoSpriteARomSize / 0x100;
826
827 tile_opaque_pf[0] = Next; Next += TaitoCharRomSize / 0x100;
828 tile_opaque_pf[1] = Next; Next += TaitoCharRomSize / 0x100;
829 tile_opaque_pf[2] = Next; Next += TaitoCharRomSize / 0x100;
830 tile_opaque_pf[3] = Next; Next += TaitoCharRomSize / 0x100;
831 tile_opaque_pf[4] = Next; Next += TaitoCharRomSize / 0x100;
832 tile_opaque_pf[5] = Next; Next += TaitoCharRomSize / 0x100;
833 tile_opaque_pf[6] = Next; Next += TaitoCharRomSize / 0x100;
834 tile_opaque_pf[7] = Next; Next += TaitoCharRomSize / 0x100;
835
836 MSM6295ROM = Next;
837 TaitoF3ES5506Rom = Next;
838 TaitoES5505Rom = Next; Next += TaitoF3ES5506RomSize;
839
840 TaitoDefaultEEProm = Next; Next += 0x0000080;
841
842 pBurnDrvPalette = (UINT32 *)Next;
843 TaitoPalette = (UINT32 *)Next; Next += 0x0002000 * sizeof (UINT32);
844
845 TaitoCharsB = Next; Next += 0x0004000;
846 TaitoCharsPivot = Next; Next += 0x0020000;
847
848 TaitoRamStart = Next;
849
850 Taito68KRam1 = Next; Next += 0x0020000;
851 TaitoPaletteRam = Next; Next += 0x0008000;
852 TaitoSpriteRam = Next; Next += 0x0010000;
853 TaitoSpriteRamDelayed = Next; Next += 0x0010000;
854 TaitoSpriteRamDelayed2 = Next; Next += 0x0010000;
855 TaitoF3PfRAM = Next; Next += 0x000c000;
856 TaitoVideoRam = Next; Next += 0x0002000;
857 DrvVRAMRAM = Next; Next += 0x0002000;
858 TaitoF3LineRAM = Next; Next += 0x0010000;
859 DrvPivotRAM = Next; Next += 0x0010000;
860 TaitoF3CtrlRAM = Next; Next += 0x0000400;
861
862 DrvCoinWord = (UINT16*)Next; Next += 2 * sizeof(INT16);
863
864 TaitoF3SoundRam = Next; Next += 0x0010000;
865 TaitoF3SharedRam = Next; Next += 0x0000800;
866 TaitoES5510DSPRam = Next; Next += 0x0000200;
867
868 TaitoES5510GPR = (UINT32*)Next; Next += 0x0000c0 * sizeof(UINT32);
869 TaitoES5510DRAM = (UINT16*)Next; Next += 0x200000 * sizeof(UINT16);
870
871 TaitoRamEnd = Next;
872
873 output_bitmap = (UINT32*)Next; Next += 512 * 512 * sizeof(INT32);
874
875 TaitoPriorityMap = Next; Next += 1024 * 512;
876
877 bitmap_layer[0] = (UINT16*)Next; Next += 1024 * 512 * sizeof(INT16);
878 bitmap_layer[1] = (UINT16*)Next; Next += 1024 * 512 * sizeof(INT16);
879 bitmap_layer[2] = (UINT16*)Next; Next += 1024 * 512 * sizeof(INT16);
880 bitmap_layer[3] = (UINT16*)Next; Next += 1024 * 512 * sizeof(INT16);
881
882 bitmap_layer[4] = (UINT16*)Next; Next += 512 * 512 * sizeof(INT16);
883 bitmap_layer[5] = (UINT16*)Next; Next += 512 * 512 * sizeof(INT16);
884 bitmap_layer[6] = (UINT16*)Next; Next += 512 * 512 * sizeof(INT16);
885 bitmap_layer[7] = (UINT16*)Next; Next += 512 * 512 * sizeof(INT16);
886
887 bitmap_layer[8] = (UINT16*)Next; Next += 512 * 512 * sizeof(INT16);
888 bitmap_layer[9] = (UINT16*)Next; Next += 512 * 256 * sizeof(INT16);
889
890 bitmap_flags[0] = Next; Next += 1024 * 512;
891 bitmap_flags[1] = Next; Next += 1024 * 512;
892 bitmap_flags[2] = Next; Next += 1024 * 512;
893 bitmap_flags[3] = Next; Next += 1024 * 512;
894 bitmap_flags[4] = Next; Next += 512 * 512;
895 bitmap_flags[5] = Next; Next += 512 * 512;
896 bitmap_flags[6] = Next; Next += 512 * 512;
897 bitmap_flags[7] = Next; Next += 512 * 512;
898 bitmap_flags[8] = Next; Next += 512 * 512;
899 bitmap_flags[9] = Next; Next += 512 * 256;
900
901 dirty_tiles = Next; Next += 0x8000 / 4;
902
903 TaitoMemEnd = Next;
904
905 return 0;
906 }
907
DrvCalculateTransTable(INT32 sprlen,INT32 len)908 static void DrvCalculateTransTable(INT32 sprlen, INT32 len)
909 {
910 {
911 UINT8 *sprite_gfx = TaitoSpritesA;
912
913 memset (tile_opaque_sp, 1, sprlen/0x100);
914
915 for (INT32 i = 0; i < sprlen; i++) {
916 if (sprite_gfx[i] == 0) {
917 tile_opaque_sp[i/0x100] = 0;
918 i|=0xff;
919 }
920 }
921 }
922
923 {
924 UINT8 *pf_gfx = TaitoChars;
925
926 for (INT32 c = 0;c < len/0x100;c++)
927 {
928 INT32 x,y;
929 INT32 extra_planes; /* 0 = 4bpp, 1=5bpp, 2=?, 3=6bpp */
930
931 for (extra_planes=0; extra_planes<4; extra_planes++)
932 {
933 INT32 chk_trans_or_opa=0;
934 UINT8 extra_mask = ((extra_planes << 4) | 0x0f);
935 const UINT8 *dp = pf_gfx + c * 0x100;
936
937 for (y = 0;y < 16;y++)
938 {
939 for (x = 0;x < 16;x++)
940 {
941 if(!(dp[x] & extra_mask))
942 chk_trans_or_opa|=2;
943 else
944 chk_trans_or_opa|=1;
945 }
946 dp += 16;
947 }
948
949 tile_opaque_pf[extra_planes][c]=chk_trans_or_opa;
950 }
951 }
952 }
953 }
954
DrvGfxDecode(INT32 spr_len,INT32 tile_len)955 static void DrvGfxDecode(INT32 spr_len, INT32 tile_len)
956 {
957 INT32 Plane0[6] = { (spr_len * 4)+0, (spr_len * 4)+1, 0, 1, 2, 3 }; // sprite
958 INT32 Plane1[6] = { (tile_len * 4)+2, (tile_len * 4)+3, 0, 1, 2, 3 }; // tile
959 INT32 XOffs0[16] = { 4, 0, 12, 8, 16+4, 16+0, 16+12, 16+8, 32+4, 32+0, 32+12, 32+8, 48+4, 48+0, 48+12, 48+8 };
960 INT32 XOffs1[16] = { 4, 0, 16+4, 16+0, 8+4, 8+0, 24+4, 24+0, 32+4, 32+0, 48+4, 48+0, 40+4, 40+0, 56+4, 56+0 };
961 INT32 YOffs[16] = { STEP16(0, 64) };
962
963 UINT8 *tmp = (UINT8*)BurnMalloc((spr_len > tile_len) ? spr_len : tile_len);
964
965 memcpy (tmp, TaitoSpritesA, spr_len);
966
967 GfxDecode((spr_len / 0x100), 6, 16, 16, Plane0, XOffs0, YOffs, 0x400, tmp, TaitoSpritesA);
968
969 memcpy (tmp, TaitoChars, tile_len);
970
971 GfxDecode((tile_len / 0x100), 6, 16, 16, Plane1, XOffs1, YOffs, 0x400, tmp, TaitoChars);
972
973 TaitoSpriteAModulo = (spr_len / 0x100);
974 TaitoCharModulo = (tile_len / 0x100);
975
976 BurnFree (tmp);
977 }
978
tile_decode(INT32 spr_len,INT32 tile_len)979 static void tile_decode(INT32 spr_len, INT32 tile_len)
980 {
981 UINT8 lsb,msb;
982 UINT8 *gfx = TaitoChars;
983 INT32 size=tile_len;
984 UINT32 offset = size/2;
985
986 for (INT32 i = size/2+size/4; i<size; i+=2)
987 {
988 lsb = gfx[i+1];
989 msb = gfx[i+0];
990
991 gfx[offset+0]=((msb&0x02)<<3) | ((msb&0x01)>>0) | ((lsb&0x02)<<4) | ((lsb&0x01)<<1);
992 gfx[offset+2]=((msb&0x08)<<1) | ((msb&0x04)>>2) | ((lsb&0x08)<<2) | ((lsb&0x04)>>1);
993 gfx[offset+1]=((msb&0x20)>>1) | ((msb&0x10)>>4) | ((lsb&0x20)<<0) | ((lsb&0x10)>>3);
994 gfx[offset+3]=((msb&0x80)>>3) | ((msb&0x40)>>6) | ((lsb&0x80)>>2) | ((lsb&0x40)>>5);
995
996 offset+=4;
997 }
998
999 size = spr_len;
1000 offset = size/2;
1001
1002 for (INT32 i = size/2+size/4; i<size; i++, offset+=2)
1003 {
1004 TaitoSpritesA[offset+0] = (((TaitoSpritesA[i] >> 0) & 3) << 2) | (((TaitoSpritesA[i] >> 2) & 3) << 6);
1005 TaitoSpritesA[offset+1] = (((TaitoSpritesA[i] >> 4) & 3) << 2) | (((TaitoSpritesA[i] >> 6) & 3) << 6);
1006 }
1007
1008 DrvGfxDecode(spr_len, tile_len);
1009
1010 DrvCalculateTransTable(spr_len, tile_len);
1011 }
1012
TaitoF3GetRoms(bool bLoad)1013 static INT32 TaitoF3GetRoms(bool bLoad)
1014 {
1015 if (!bLoad) TaitoF3ES5506RomSize = 0;
1016
1017 char* pRomName;
1018 struct BurnRomInfo ri = { "\0", 0, 0, 0 };
1019 struct BurnRomInfo pi = { "\0", 0, 0, 0 };
1020
1021 UINT8 *sprites = TaitoSpritesA;
1022 UINT8 *tiles = TaitoChars;
1023 UINT8 *samples = TaitoES5505Rom + ((TaitoF3ES5506RomSize == 0x1000000) ? 0x400000 : 0);
1024
1025 INT32 prevsize = 0;
1026 INT32 prevtype = 0;
1027 INT32 tilecount = 0;
1028 INT32 spritecount = 0;
1029 INT32 ret = 0;
1030
1031 for (INT32 i = 0; !BurnDrvGetRomName(&pRomName, i, 0); i++) {
1032 prevsize = ri.nLen;
1033 prevtype = ri.nType;
1034
1035 BurnDrvGetRomInfo(&ri, i);
1036 BurnDrvGetRomInfo(&pi, i+1);
1037
1038 if (ri.nType == TAITO_68KROM1_BYTESWAP32)
1039 {
1040 // if (bLoad) bprintf (0, _T("000000 68k1\n"));
1041
1042 if (bLoad) {
1043 ret = BurnLoadRom(Taito68KRom1 + 1, i + 0, 4);
1044 ret |= BurnLoadRom(Taito68KRom1 + 0, i + 1, 4);
1045 ret |= BurnLoadRom(Taito68KRom1 + 3, i + 2, 4);
1046 ret |= BurnLoadRom(Taito68KRom1 + 2, i + 3, 4);
1047 if (ret) return 1;
1048 }
1049 i += 3;
1050 continue;
1051 }
1052
1053 if (ri.nType == TAITO_SPRITESA_BYTESWAP)
1054 {
1055 // if (bLoad) bprintf (0, _T("%6.6x sprite 2x\n"), sprites - TaitoSpritesA);
1056
1057 if (f3_game == GSEEKER)
1058 {
1059 if (bLoad) {
1060 if (BurnLoadRom(sprites + 0x000000, i + 0, 2)) return 1;
1061 if (BurnLoadRom(sprites + 0x100001, i + 1, 2)) return 1;
1062 if (BurnLoadRom(sprites + 0x000000, i + 2, 2)) return 1;
1063 if (BurnLoadRom(sprites + 0x000001, i + 3, 2)) return 1;
1064 memset (sprites + 0x200000, 0, 0x100000);
1065 }
1066 sprites += 0x400000;
1067 i+=3;
1068 }
1069 else
1070 {
1071 if (bLoad) {
1072 BurnLoadRom(sprites + 0, i + 0, 2);
1073 BurnLoadRom(sprites + 1, i + 1, 2);
1074 }
1075 sprites += ri.nLen * 2;
1076 i++;
1077 }
1078 continue;
1079 }
1080
1081 if (ri.nType == TAITO_SPRITESA)
1082 {
1083 spritecount = 1;
1084 if (prevtype == TAITO_SPRITESA_BYTESWAP) {
1085 sprites = TaitoSpritesA + ((sprites - TaitoSpritesA) / 2) * 3;
1086 }
1087
1088 // if (bLoad) bprintf (0, _T("%6.6x sprite 1x \n"), sprites - TaitoSpritesA);
1089
1090 if (bLoad) {
1091 BurnLoadRom(sprites + 0, i + 0, 1);
1092 }
1093 sprites += ri.nLen;
1094 continue;
1095 }
1096
1097 if (ri.nType == TAITO_CHARS_BYTESWAP32)
1098 {
1099 // if (bLoad) bprintf (0, _T("%6.6x tiles x4\n"), tiles - TaitoChars);
1100
1101 if (bLoad) {
1102 ret = BurnLoadRom(tiles + 0, i + 0, 4);
1103 ret |= BurnLoadRom(tiles + 1, i + 1, 4);
1104 ret |= BurnLoadRom(tiles + 2, i + 2, 4);
1105 ret |= BurnLoadRom(tiles + 3, i + 3, 4);
1106 if (ret) return 1;
1107 }
1108 i+=3;
1109 tiles += ri.nLen * 4;
1110 continue;
1111 }
1112
1113 if (ri.nType == TAITO_CHARS_BYTESWAP)
1114 {
1115 if (prevtype == TAITO_CHARS_BYTESWAP32) {
1116 tiles = TaitoChars + ((tiles - TaitoChars) / 2) * 3;
1117 tilecount = 1;
1118 }
1119
1120 // if (bLoad) bprintf (0, _T("%6.6x tiles x2\n"), tiles - TaitoChars);
1121
1122 if (pi.nType != TAITO_CHARS_BYTESWAP) {
1123 if (bLoad) {
1124 BurnLoadRom(tiles + 0, i + 0, 2);
1125 }
1126 } else {
1127 if (bLoad) {
1128 BurnLoadRom(tiles + 0, i + 0, 2);
1129 BurnLoadRom(tiles + 1, i + 1, 2);
1130 }
1131 i++;
1132 }
1133 tiles += ri.nLen * 2;
1134 continue;
1135 }
1136
1137 if (ri.nType == TAITO_CHARS)
1138 {
1139 tilecount = 1;
1140 if (prevtype == TAITO_CHARS_BYTESWAP) {
1141 tiles = TaitoChars + ((tiles - TaitoChars) / 2) * 3;
1142 }
1143
1144 // if (bLoad) bprintf (0, _T("%6.6x tiles x1 \n"), tiles - TaitoChars);
1145
1146 if (bLoad) {
1147 BurnLoadRom(tiles + 0, i + 0, 1);
1148 }
1149 tiles += ri.nLen;
1150 // if (bLoad) bprintf (0, _T("%6.6x tiles x1b \n"), tiles - TaitoChars);
1151
1152 continue;
1153 }
1154
1155 if (ri.nType == TAITO_68KROM2_BYTESWAP)
1156 {
1157 // if (bLoad) bprintf (0, _T("000000 68k2 x2\n"));
1158
1159 if (bLoad) {
1160 ret = BurnLoadRom(Taito68KRom2 + 1, i + 0, 2);
1161 ret |= BurnLoadRom(Taito68KRom2 + 0, i + 1, 2);
1162 if (ret) return 1;
1163 }
1164 i++;
1165 continue;
1166 }
1167
1168 if (ri.nType == TAITO_68KROM2) // kirameki
1169 {
1170 // if (bLoad) bprintf (0, _T("100000, 68k1 x1\n"));
1171 if (bLoad) {
1172 BurnLoadRom(Taito68KRom2 + 0x100000, i, 1);
1173 }
1174 continue;
1175 }
1176
1177 if (ri.nType == TAITO_ES5505_BYTESWAP)
1178 {
1179 INT32 size = samples - TaitoES5505Rom;
1180
1181 if (prevtype == TAITO_ES5505_BYTESWAP && prevsize == 0x200000 && ri.nLen == 0x100000 && size == 0x400000) {
1182 samples += 0x200000;
1183 }
1184
1185 if (size == 0xc00000 && ri.nLen == 0x100000) {
1186 samples += 0x200000;
1187 }
1188
1189 // if (bLoad) bprintf (0, _T("%6.6x, samples \n"), samples - TaitoES5505Rom);
1190
1191 if (bLoad) {
1192 if (BurnLoadRom(samples + 1, i, 2)) return 1;
1193 }
1194 samples += ri.nLen * 2;
1195 continue;
1196 }
1197
1198 if (ri.nType == TAITO_DEFAULT_EEPROM)
1199 {
1200 if (bLoad) {
1201 if (BurnLoadRom(TaitoDefaultEEProm, i, 1)) return 1;
1202 }
1203 continue;
1204 }
1205 }
1206
1207 if (bLoad == false) {
1208 INT32 spritesize = sprites - TaitoSpritesA;
1209 INT32 tilesize = tiles - TaitoChars;
1210 INT32 samplesize = samples - TaitoES5505Rom;
1211
1212 if (samplesize >= 0xa00000) {
1213 samplesize = 0x1000000;
1214 }
1215
1216 if (tilecount == 0) tilesize *= 2;
1217 if (spritecount == 0) spritesize *= 2;
1218
1219 for (INT32 i = 1; i < 1<<30; i<<=1) {
1220 if (i >= samplesize) {
1221 samplesize = i;
1222 break;
1223 }
1224 }
1225
1226 TaitoSpriteARomSize = spritesize;
1227 TaitoCharRomSize = tilesize;
1228 TaitoF3ES5506RomSize = samplesize;
1229 // bprintf (0, _T("Load: %x, %x, %x\n"), spritesize, tilesize, samplesize);
1230 }
1231
1232 return 0;
1233 }
1234
1235
DrvInit(INT32 (* pRomLoadCB)(),void (* pPalUpdateCB)(UINT16),INT32 extend,INT32 kludge,INT32 spritelag,UINT32 speedhack_addr)1236 static INT32 DrvInit(INT32 (*pRomLoadCB)(), void (*pPalUpdateCB)(UINT16), INT32 extend, INT32 kludge, INT32 spritelag, UINT32 speedhack_addr)
1237 {
1238 f3_game = kludge;
1239
1240 TaitoF3GetRoms(false);
1241
1242 MemIndex();
1243 INT32 nLen = TaitoMemEnd - (UINT8 *)0;
1244 if ((TaitoMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1;
1245 memset(TaitoMem, 0, nLen);
1246 MemIndex();
1247
1248 {
1249 if (TaitoF3GetRoms(true)) return 1;
1250
1251 if (pRomLoadCB) {
1252 if (pRomLoadCB()) return 1;
1253 }
1254
1255 tile_decode(TaitoSpriteARomSize, TaitoCharRomSize);
1256 }
1257
1258 SekInit(0, 0x68ec020);
1259 SekOpen(0);
1260 SekMapMemory(Taito68KRom1, 0x000000, 0x1fffff, MAP_ROM);
1261 SekMapMemory(Taito68KRam1, 0x400000, 0x41ffff, MAP_RAM);
1262 SekMapMemory(Taito68KRam1, 0x420000, 0x43ffff, MAP_RAM); // mirror
1263 SekMapMemory(TaitoPaletteRam, 0x440000, 0x447fff, MAP_ROM); // write through handler
1264 SekMapMemory(TaitoSpriteRam, 0x600000, 0x60ffff, MAP_RAM);
1265 SekMapMemory(TaitoF3PfRAM, 0x610000, 0x617fff, MAP_ROM); // write through handler
1266 SekMapMemory(TaitoF3PfRAM + 0x8000, 0x618000, 0x61bfff, MAP_RAM);
1267 SekMapMemory(TaitoVideoRam, 0x61c000, 0x61dfff, MAP_ROM); // write through
1268 SekMapMemory(DrvVRAMRAM, 0x61e000, 0x61ffff, MAP_ROM); // write through handler
1269 SekMapMemory(TaitoF3LineRAM, 0x620000, 0x62ffff, MAP_RAM);
1270 SekMapMemory(DrvPivotRAM, 0x630000, 0x63ffff, MAP_ROM); // write through handler
1271 SekMapMemory(TaitoF3CtrlRAM, 0x660000, 0x6603ff, MAP_WRITE); // 0-1f
1272 SekMapMemory(TaitoF3SharedRam, 0xc00000, 0xc007ff, MAP_RAM);
1273 SekSetWriteLongHandler(0, f3_main_write_long);
1274 SekSetWriteWordHandler(0, f3_main_write_word);
1275 SekSetWriteByteHandler(0, f3_main_write_byte);
1276 SekSetReadLongHandler(0, f3_main_read_long);
1277 SekSetReadWordHandler(0, f3_main_read_word);
1278 SekSetReadByteHandler(0, f3_main_read_byte);
1279
1280 SekMapHandler(1, 0x440000, 0x447fff, MAP_WRITE);
1281 SekSetWriteLongHandler(1, f3_palette_write_long);
1282 SekSetWriteWordHandler(1, f3_palette_write_word);
1283 SekSetWriteByteHandler(1, f3_palette_write_byte);
1284
1285 SekMapHandler(2, 0x61c000, 0x61ffff, MAP_WRITE); // VRAM and TaitoVideoRam
1286 SekSetWriteLongHandler(2, f3_VRAM_write_long);
1287 SekSetWriteWordHandler(2, f3_VRAM_write_word);
1288 SekSetWriteByteHandler(2, f3_VRAM_write_byte);
1289
1290 SekMapHandler(3, 0x630000, 0x63ffff, MAP_WRITE);
1291 SekSetWriteLongHandler(3, f3_pivot_write_long);
1292 SekSetWriteWordHandler(3, f3_pivot_write_word);
1293 SekSetWriteByteHandler(3, f3_pivot_write_byte);
1294
1295 SekMapHandler(4, 0x610000, 0x617fff, MAP_WRITE);
1296 SekSetWriteLongHandler(4, f3_playfield_write_long);
1297 SekSetWriteWordHandler(4, f3_playfield_write_word);
1298 SekSetWriteByteHandler(4, f3_playfield_write_byte);
1299 SekClose();
1300
1301 f3_speedhack_init(speedhack_addr);
1302
1303 TaitoF3SoundInit(1);
1304 TaitoF3SoundIRQConfig((TaitoDip[0] & 2) ? 0 : 1);
1305 bprintf(0, _T("Music Speed: %S\n"), (TaitoDip[0] & 2) ? "Slow" : "Fast");
1306
1307 EEPROMInit(&eeprom_interface_93C46);
1308 EEPROMIgnoreErrMessage(1);
1309
1310 if (BurnDrvGetFlags() & BDF_ORIENTATION_VERTICAL) {
1311 BurnDrvGetVisibleSize(&nScreenHeight, &nScreenWidth);
1312 } else {
1313 BurnDrvGetVisibleSize(&nScreenWidth, &nScreenHeight);
1314 }
1315
1316 pPaletteUpdateCallback = pPalUpdateCB;
1317 extended_layers = extend;
1318 sprite_lag = spritelag;
1319
1320 TaitoF3VideoInit();
1321
1322 bitmap_width[0] = (extend) ? 1024 : 512;
1323 bitmap_width[1] = (extend) ? 1024 : 512;
1324 bitmap_width[2] = (extend) ? 1024 : 512;
1325 bitmap_width[3] = (extend) ? 1024 : 512;
1326 bitmap_width[4] = 512;
1327 bitmap_width[5] = 512;
1328 bitmap_width[6] = 512;
1329 bitmap_width[7] = 512;
1330
1331 BurnTrackballInit(2);
1332
1333 DrvDoReset(1);
1334
1335 return 0;
1336 }
1337
DrvExit()1338 static INT32 DrvExit()
1339 {
1340 SekExit();
1341 TaitoF3SoundExit();
1342
1343 if (BurnDrvGetFlags() & BDF_BOOTLEG) {
1344 MSM6295Exit(0);
1345 }
1346
1347 EEPROMExit();
1348
1349 BurnFree (TaitoMem);
1350
1351 TaitoF3VideoExit();
1352
1353 TaitoClearVariables(); // from taito.cpp
1354
1355 BurnTrackballExit();
1356
1357 pPaletteUpdateCallback = NULL;
1358
1359 return 0;
1360 }
1361
f3_12bit_palette_update(UINT16 offset)1362 static void f3_12bit_palette_update(UINT16 offset)
1363 {
1364 UINT32 x = BURN_ENDIAN_SWAP_INT32(*((UINT32*)(TaitoPaletteRam + (offset & ~3))));
1365
1366 UINT8 r = ((x >> 28) & 0x0f) * 0x0f;
1367 UINT8 g = ((x >> 24) & 0x0f) * 0x0f;
1368 UINT8 b = ((x >> 20) & 0x0f) * 0x0f;
1369
1370 TaitoPalette[offset/4] = BURN_ENDIAN_SWAP_INT32(r*0x10000+g*0x100+b); //BurnHighCol(r,g,b, 0);
1371 }
1372
f3_21bit_typeA_palette_update(UINT16 offset)1373 static void f3_21bit_typeA_palette_update(UINT16 offset)
1374 {
1375 UINT32 x = BURN_ENDIAN_SWAP_INT32(*((UINT32*)(TaitoPaletteRam + (offset & ~3))));
1376
1377 UINT8 r = x;
1378 UINT8 g = x >> 24;
1379 UINT8 b = x >> 16;
1380
1381 if (offset < 0x400 || offset > 0x4000) {
1382 r <<= 1;
1383 g <<= 1;
1384 b <<= 1;
1385 }
1386
1387 TaitoPalette[offset/4] = BURN_ENDIAN_SWAP_INT32(r*0x10000+g*0x100+b);
1388 }
1389
f3_21bit_typeB_palette_update(UINT16 offset)1390 static void f3_21bit_typeB_palette_update(UINT16 offset)
1391 {
1392 UINT32 x = BURN_ENDIAN_SWAP_INT32(*((UINT32*)(TaitoPaletteRam + (offset & ~3))));
1393
1394 UINT8 r = x;
1395 UINT8 g = x >> 24;
1396 UINT8 b = x >> 16;
1397
1398 if (offset > 0x7000) {
1399 r <<= 1;
1400 g <<= 1;
1401 b <<= 1;
1402 }
1403
1404 TaitoPalette[offset/4] = BURN_ENDIAN_SWAP_INT32(r*0x10000+g*0x100+b); //BurnHighCol(r,g,b, 0);
1405 }
1406
f3_24bit_palette_update(UINT16 offset)1407 static void f3_24bit_palette_update(UINT16 offset)
1408 {
1409 UINT32 x = BURN_ENDIAN_SWAP_INT32(*((UINT32*)(TaitoPaletteRam + (offset & ~3))));
1410
1411 UINT8 r = x;
1412 UINT8 g = x >> 24;
1413 UINT8 b = x >> 16;
1414
1415 TaitoPalette[offset/4] = BURN_ENDIAN_SWAP_INT32(r*0x10000+g*0x100+b); //BurnHighCol(r,g,b, 0);
1416 }
1417
DrvDraw224A_Flipped()1418 static INT32 DrvDraw224A_Flipped() // 224A, w/ flipscreen
1419 {
1420 TaitoF3DrawCommon(0x1234);
1421
1422 return 0;
1423 }
1424
DrvDraw224A()1425 static INT32 DrvDraw224A()
1426 {
1427 TaitoF3DrawCommon(31);
1428
1429 return 0;
1430 }
1431
DrvDraw224B()1432 static INT32 DrvDraw224B()
1433 {
1434 TaitoF3DrawCommon(32);
1435
1436 return 0;
1437 }
1438
DrvDraw()1439 static INT32 DrvDraw()
1440 {
1441 TaitoF3DrawCommon(24);
1442
1443 return 0;
1444 }
1445
DrvFrame()1446 static INT32 DrvFrame()
1447 {
1448 watchdog++;
1449 if (watchdog >= 180) {
1450 DrvDoReset(0);
1451 }
1452
1453 if (DrvReset) {
1454 DrvDoReset(1);
1455 }
1456
1457 {
1458 // arkretn / puchicar analog dial
1459 if (f3_game == ARKRETRN || f3_game == PUCHICAR) {
1460 BurnTrackballConfig(0, AXIS_NORMAL, AXIS_NORMAL);
1461 BurnTrackballFrame(0, DrvAxis[0], DrvAxis[1], 0x1, 0x3);
1462 BurnTrackballUpdate(0);
1463 }
1464
1465 memset (DrvInputs, 0xff, 5 * sizeof(short));
1466
1467 for (INT32 i = 0; i < 16; i++) {
1468 DrvInputs[0] ^= (DrvJoy1[i] & 1) << i;
1469 DrvInputs[1] ^= (DrvJoy2[i] & 1) << i;
1470 DrvInputs[2] ^= (DrvJoy3[i] & 1) << i;
1471 DrvInputs[3] ^= (DrvJoy4[i] & 1) << i;
1472 DrvInputs[4] ^= (DrvJoy5[i] & 1) << i;
1473 }
1474
1475 DrvInputs[1] &= ~0xff00;
1476 DrvInputs[4] = (DrvInputs[4] & ~2) | ((DrvSrv[0]) ? 0x00 : 0x02);
1477
1478 DrvInputs[4] |= 0xf0; // set all coins disabled
1479
1480 INT32 cur_coin = ((DrvJoy5[4] & 1) << 4) | ((DrvJoy5[5] & 1) << 5) | ((DrvJoy5[6] & 1) << 6) | ((DrvJoy5[7] & 1) << 7);
1481
1482 for (INT32 i = 0x10; i < 0x100; i <<= 1) {
1483 if ((cur_coin & i) == i && (previous_coin & i) == 0) {
1484 DrvInputs[4] &= ~i;
1485 }
1486 }
1487
1488 previous_coin = cur_coin;
1489 }
1490
1491 INT32 nInterleave = 256;
1492 nTaitoCyclesTotal[0] = 16000000 / 60; // do not touch!
1493 nTaitoCyclesDone[0] = nTaitoCyclesDone[1] = 0;
1494
1495 SekNewFrame();
1496
1497 for (INT32 i = 0; i < nInterleave; i++) {
1498 INT32 nCurrentCPU, nNext;
1499
1500 nCurrentCPU = 0;
1501 SekOpen(0);
1502 nNext = (i + 1) * nTaitoCyclesTotal[nCurrentCPU] / nInterleave;
1503 nTaitoCyclesSegment = nNext - nTaitoCyclesDone[nCurrentCPU];
1504 nTaitoCyclesDone[nCurrentCPU] += SekRun(nTaitoCyclesSegment);
1505 if (i == 255) SekSetIRQLine(2, CPU_IRQSTATUS_AUTO);
1506 if (i == 7) SekSetIRQLine(3, CPU_IRQSTATUS_AUTO);
1507 SekClose();
1508
1509 if ((BurnDrvGetFlags() & BDF_BOOTLEG) == 0) {
1510 if (sound_cpu_in_reset == 0)
1511 TaitoF3CpuUpdate(nInterleave, i);
1512 }
1513 }
1514
1515 if (BurnDrvGetFlags() & BDF_BOOTLEG) {
1516 if (pBurnSoundOut) {
1517 MSM6295Render(0, pBurnSoundOut, nBurnSoundLen);
1518 }
1519 } else {
1520 TaitoF3SoundUpdate(pBurnSoundOut, nBurnSoundLen);
1521 }
1522
1523 if (pBurnDraw) {
1524 BurnDrvRedraw();
1525 }
1526
1527 switch (sprite_lag) {
1528 case 0: break; // no delay
1529 case 2: memcpy(TaitoSpriteRamDelayed2, TaitoSpriteRamDelayed, 0x10000); // no break!
1530 case 1: /* 1 & 2 */ memcpy(TaitoSpriteRamDelayed, TaitoSpriteRam, 0x10000); break;
1531 }
1532
1533 return 0;
1534 }
1535
DrvScan(INT32 nAction,INT32 * pnMin)1536 static INT32 DrvScan(INT32 nAction, INT32 *pnMin)
1537 {
1538 struct BurnArea ba;
1539
1540 if (pnMin) {
1541 *pnMin = 0x029702;
1542 }
1543
1544 /* Save for later debugging...?
1545
1546 if (nAction & ACB_MEMORY_ROM) {
1547 ba.Data = Taito68KRom1;
1548 ba.nLen = 0x0200000;
1549 ba.nAddress = 0;
1550 ba.szName = "Main ROM";
1551 BurnAcb(&ba);
1552 }
1553
1554 if (nAction & ACB_MEMORY_RAM) {
1555 ba.Data = Taito68KRam1;
1556 ba.nLen = 0x020000;
1557 ba.nAddress = 0x400000;
1558 ba.szName = "F3 RAM";
1559 BurnAcb(&ba);
1560
1561 ba.Data = TaitoPaletteRam;
1562 ba.nLen = 0x0008000;
1563 ba.nAddress = 0x440000;
1564 ba.szName = "Palette RAM";
1565 BurnAcb(&ba);
1566
1567 ba.Data = TaitoSpriteRam;
1568 ba.nLen = 0x0010000;
1569 ba.nAddress = 0x600000;
1570 ba.szName = "Sprite RAM";
1571 BurnAcb(&ba);
1572
1573 ba.Data = TaitoF3PfRAM;
1574 ba.nLen = 0x000c000;
1575 ba.nAddress = 0x610000;
1576 ba.szName = "Playfield RAM";
1577 BurnAcb(&ba);
1578
1579 ba.Data = TaitoVideoRam;
1580 ba.nLen = 0x0002000;
1581 ba.nAddress = 0x61c000;
1582 ba.szName = "Video RAM";
1583 BurnAcb(&ba);
1584
1585 ba.Data = DrvVRAMRAM;
1586 ba.nLen = 0x0002000;
1587 ba.nAddress = 0x61e000;
1588 ba.szName = "VRAM";
1589 BurnAcb(&ba);
1590
1591 ba.Data = TaitoF3LineRAM;
1592 ba.nLen = 0x0010000;
1593 ba.nAddress = 0x620000;
1594 ba.szName = "Line RAM";
1595 BurnAcb(&ba);
1596
1597 ba.Data = DrvPivotRAM;
1598 ba.nLen = 0x0010000;
1599 ba.nAddress = 0x620000;
1600 ba.szName = "Pivot RAM";
1601 BurnAcb(&ba);
1602
1603 ba.Data = TaitoF3CtrlRAM;
1604 ba.nLen = 0x0000400;
1605 ba.nAddress = 0x660000;
1606 ba.szName = "Control Registers";
1607 BurnAcb(&ba);
1608
1609 ba.Data = TaitoF3SoundRam;
1610 ba.nLen = 0x010000;
1611 ba.nAddress = 0x000000;
1612 ba.szName = "F3 Sound RAM";
1613 BurnAcb(&ba);
1614
1615 ba.Data = TaitoF3SharedRam;
1616 ba.nLen = 0x000800;
1617 ba.nAddress = 0x000000;
1618 ba.szName = "F3 Shared RAM";
1619 BurnAcb(&ba);
1620
1621 ba.Data = TaitoES5510DSPRam;
1622 ba.nLen = 0x000200;
1623 ba.nAddress = 0x000000;
1624 ba.szName = "ES5510 DSP RAM";
1625 BurnAcb(&ba);
1626
1627 ba.Data = TaitoES5510GPR;
1628 ba.nLen = 0x0000c0 * sizeof(UINT32);
1629 ba.nAddress = 0x000000;
1630 ba.szName = "ES5510 GPR RAM";
1631 BurnAcb(&ba);
1632 } */
1633
1634 if (nAction & ACB_MEMORY_RAM) {
1635 memset(&ba, 0, sizeof(ba));
1636
1637 ba.Data = TaitoRamStart;
1638 ba.nLen = TaitoRamEnd - TaitoRamStart;
1639 ba.szName = "All Ram";
1640 BurnAcb(&ba);
1641 }
1642
1643 if (nAction & ACB_DRIVER_DATA) {
1644 SekScan(nAction);
1645 TaitoF3SoundScan(nAction, pnMin);
1646 SCAN_VAR(sound_cpu_in_reset);
1647 if (f3_game == ARKRETRN) BurnTrackballScan();
1648
1649 EEPROMScan(nAction, pnMin);
1650
1651 if (nAction & ACB_WRITE && ~nAction & ACB_RUNAHEAD) {
1652 for (INT32 i = 0; i < 0x2000; i+=4) {
1653 DrvVRAMExpand(i);
1654 }
1655
1656 for (INT32 i = 0; i < 0x10000; i+=4) {
1657 DrvPivotExpand(i);
1658 }
1659
1660 f3_reset_dirtybuffer();
1661 }
1662 }
1663
1664 return 0;
1665 }
1666
1667
1668
1669 // Ring Rage (Ver 2.3O 1992/08/09)
1670
1671 static struct BurnRomInfo ringrageRomDesc[] = {
1672 { "d21-23.40", 0x040000, 0x14e9ed65, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1673 { "d21-22.38", 0x040000, 0x6f8b65b0, TAITO_68KROM1_BYTESWAP32 }, // 1
1674 { "d21-21.36", 0x040000, 0xbf7234bc, TAITO_68KROM1_BYTESWAP32 }, // 2
1675 { "d21-25.34", 0x040000, 0xaeff6e19, TAITO_68KROM1_BYTESWAP32 }, // 3
1676
1677 { "d21-02.66", 0x200000, 0xfacd3a02, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1678 { "d21-03.67", 0x200000, 0x6f653e68, TAITO_SPRITESA_BYTESWAP }, // 5
1679 { "d21-04.68", 0x200000, 0x9dcdceca, TAITO_SPRITESA }, // 6
1680
1681 { "d21-06.49", 0x080000, 0x92d4a720, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
1682 { "d21-07.50", 0x080000, 0x6da696e9, TAITO_CHARS_BYTESWAP }, // 8
1683 { "d21-08.51", 0x080000, 0xa0d95be9, TAITO_CHARS } , // 9
1684
1685 { "d21-18.5", 0x020000, 0x133b55d0, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
1686 { "d21-19.6", 0x020000, 0x1f98908f, TAITO_68KROM2_BYTESWAP }, // 11
1687
1688 { "d21-01.17", 0x200000, 0x1fb6f07d, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
1689 { "d21-05.18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
1690 };
1691
1692 STD_ROM_PICK(ringrage)
STD_ROM_FN(ringrage)1693 STD_ROM_FN(ringrage)
1694
1695 static INT32 ringrageInit()
1696 {
1697 return DrvInit(NULL, f3_12bit_palette_update, 0, RINGRAGE, 2, 0);
1698 }
1699
1700 struct BurnDriver BurnDrvRingrage = {
1701 "ringrage", NULL, NULL, NULL, "1992",
1702 "Ring Rage (Ver 2.3O 1992/08/09)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
1703 NULL, NULL, NULL, NULL,
1704 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
1705 NULL, ringrageRomInfo, ringrageRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1706 ringrageInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
1707 320, 224, 4, 3
1708 };
1709
1710
1711 // Ring Rage (Ver 2.3A 1992/08/09)
1712
1713 static struct BurnRomInfo ringrageuRomDesc[] = {
1714 { "d21-23.40", 0x040000, 0x14e9ed65, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1715 { "d21-22.38", 0x040000, 0x6f8b65b0, TAITO_68KROM1_BYTESWAP32 }, // 1
1716 { "d21-21.36", 0x040000, 0xbf7234bc, TAITO_68KROM1_BYTESWAP32 }, // 2
1717 { "d21-24.34", 0x040000, 0x404dee67, TAITO_68KROM1_BYTESWAP32 }, // 3
1718
1719 { "d21-02.66", 0x200000, 0xfacd3a02, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1720 { "d21-03.67", 0x200000, 0x6f653e68, TAITO_SPRITESA_BYTESWAP }, // 5
1721 { "d21-04.68", 0x200000, 0x9dcdceca, TAITO_SPRITESA }, // 6
1722
1723 { "d21-06.49", 0x080000, 0x92d4a720, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
1724 { "d21-07.50", 0x080000, 0x6da696e9, TAITO_CHARS_BYTESWAP }, // 8
1725 { "d21-08.51", 0x080000, 0xa0d95be9, TAITO_CHARS } , // 9
1726
1727 { "d21-18.5", 0x020000, 0x133b55d0, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
1728 { "d21-19.6", 0x020000, 0x1f98908f, TAITO_68KROM2_BYTESWAP }, // 11
1729
1730 { "d21-01.17", 0x200000, 0x1fb6f07d, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
1731 { "d21-05.18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
1732 };
1733
1734 STD_ROM_PICK(ringrageu)
1735 STD_ROM_FN(ringrageu)
1736
1737 struct BurnDriver BurnDrvRingrageu = {
1738 "ringrageu", "ringrage", NULL, NULL, "1992",
1739 "Ring Rage (Ver 2.3A 1992/08/09)\0", NULL, "Taito America Corporation", "Taito F3 System",
1740 NULL, NULL, NULL, NULL,
1741 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
1742 NULL, ringrageuRomInfo, ringrageuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1743 ringrageInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
1744 320, 224, 4, 3
1745 };
1746
1747
1748 // Ring Rage (Ver 2.3J 1992/08/09)
1749
1750 static struct BurnRomInfo ringragejRomDesc[] = {
1751 { "d21-23.40", 0x040000, 0x14e9ed65, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1752 { "d21-22.38", 0x040000, 0x6f8b65b0, TAITO_68KROM1_BYTESWAP32 }, // 1
1753 { "d21-21.36", 0x040000, 0xbf7234bc, TAITO_68KROM1_BYTESWAP32 }, // 2
1754 { "d21-20.34", 0x040000, 0xa8eb68a4, TAITO_68KROM1_BYTESWAP32 }, // 3
1755
1756 { "d21-02.66", 0x200000, 0xfacd3a02, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1757 { "d21-03.67", 0x200000, 0x6f653e68, TAITO_SPRITESA_BYTESWAP }, // 5
1758 { "d21-04.68", 0x200000, 0x9dcdceca, TAITO_SPRITESA }, // 6
1759
1760 { "d21-06.49", 0x080000, 0x92d4a720, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
1761 { "d21-07.50", 0x080000, 0x6da696e9, TAITO_CHARS_BYTESWAP }, // 8
1762 { "d21-08.51", 0x080000, 0xa0d95be9, TAITO_CHARS } , // 9
1763
1764 { "d21-18.5", 0x020000, 0x133b55d0, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
1765 { "d21-19.6", 0x020000, 0x1f98908f, TAITO_68KROM2_BYTESWAP }, // 11
1766
1767 { "d21-01.17", 0x200000, 0x1fb6f07d, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
1768 { "d21-05.18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
1769 };
1770
1771 STD_ROM_PICK(ringragej)
1772 STD_ROM_FN(ringragej)
1773
1774 struct BurnDriver BurnDrvRingragej = {
1775 "ringragej", "ringrage", NULL, NULL, "1992",
1776 "Ring Rage (Ver 2.3J 1992/08/09)\0", NULL, "Taito Corporation", "Taito F3 System",
1777 NULL, NULL, NULL, NULL,
1778 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
1779 NULL, ringragejRomInfo, ringragejRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1780 ringrageInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
1781 320, 224, 4, 3
1782 };
1783
1784
1785
1786 // Arabian Magic (Ver 1.0O 1992/07/06)
1787
1788 static struct BurnRomInfo arabianmRomDesc[] = {
1789 { "d29-23.ic40", 0x040000, 0x89a0c706, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1790 { "d29-22.ic38", 0x040000, 0x4afc22a4, TAITO_68KROM1_BYTESWAP32 }, // 1
1791 { "d29-21.ic36", 0x040000, 0xac32eb38, TAITO_68KROM1_BYTESWAP32 }, // 2
1792 { "d29-25.ic34", 0x040000, 0xb9b652ed, TAITO_68KROM1_BYTESWAP32 }, // 3
1793
1794 { "d29-03.ic66", 0x100000, 0xaeaff456, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1795 { "d29-04.ic67", 0x100000, 0x01711cfe, TAITO_SPRITESA_BYTESWAP }, // 5
1796 { "d29-05.ic68", 0x100000, 0x9b5f7a17, TAITO_SPRITESA }, // 6
1797
1798 { "d29-06.ic49", 0x080000, 0xeea07bf3, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
1799 { "d29-07.ic50", 0x080000, 0xdb3c094d, TAITO_CHARS_BYTESWAP }, // 8
1800 { "d29-08.ic51", 0x080000, 0xd7562851, TAITO_CHARS } , // 9
1801
1802 { "d29-18.ic5", 0x020000, 0xd97780df, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
1803 { "d29-19.ic6", 0x020000, 0xb1ad365c, TAITO_68KROM2_BYTESWAP }, // 11
1804
1805 { "d29-01.ic17", 0x200000, 0x545ac4b3, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
1806 { "d29-02.ic18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
1807
1808 { "d29-11.ic15.bin", 0x000157, 0x5dd5c8f9, BRF_OPT }, // 14 plds
1809 { "pal20l8b.2", 0x000144, 0xc91437e2, BRF_OPT }, // 15
1810 { "d29-13.ic14.bin", 0x000157, 0x74d61d36, BRF_OPT }, // 16
1811 { "palce16v8h.11", 0x000117, 0x51088324, BRF_OPT }, // 17
1812 { "pal16l8b.22", 0x000104, 0x3e01e854, BRF_OPT }, // 18
1813 { "palce16v8h.31", 0x000117, 0xe0789727, BRF_OPT }, // 19
1814 { "pal16l8b.62", 0x000104, 0x7093e2f3, BRF_OPT }, // 20
1815 { "d29-14.ic28.bin", 0x000157, 0x25d205d5, BRF_OPT }, // 21
1816 { "pal20l8b.70", 0x000144, 0x92b5b97c, BRF_OPT }, // 22
1817 };
1818
1819 STD_ROM_PICK(arabianm)
STD_ROM_FN(arabianm)1820 STD_ROM_FN(arabianm)
1821
1822 static INT32 arabianmInit()
1823 {
1824 return DrvInit(NULL, f3_12bit_palette_update, 0, ARABIANM, 2, 0x408100);
1825 }
1826
1827 struct BurnDriver BurnDrvArabianm = {
1828 "arabianm", NULL, NULL, NULL, "1992",
1829 "Arabian Magic (Ver 1.0O 1992/07/06)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
1830 NULL, NULL, NULL, NULL,
1831 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
1832 NULL, arabianmRomInfo, arabianmRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1833 arabianmInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
1834 320, 224, 4, 3
1835 };
1836
1837
1838 // Arabian Magic (Ver 1.0J 1992/07/06)
1839
1840 static struct BurnRomInfo arabianmjRomDesc[] = {
1841 { "d29-23.ic40", 0x040000, 0x89a0c706, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1842 { "d29-22.ic38", 0x040000, 0x4afc22a4, TAITO_68KROM1_BYTESWAP32 }, // 1
1843 { "d29-21.ic36", 0x040000, 0xac32eb38, TAITO_68KROM1_BYTESWAP32 }, // 2
1844 { "d29-20.ic34", 0x040000, 0x57b833c1, TAITO_68KROM1_BYTESWAP32 }, // 3
1845
1846 { "d29-03.ic66", 0x100000, 0xaeaff456, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1847 { "d29-04.ic67", 0x100000, 0x01711cfe, TAITO_SPRITESA_BYTESWAP }, // 5
1848 { "d29-05.ic68", 0x100000, 0x9b5f7a17, TAITO_SPRITESA }, // 6
1849
1850 { "d29-06.ic49", 0x080000, 0xeea07bf3, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
1851 { "d29-07.ic50", 0x080000, 0xdb3c094d, TAITO_CHARS_BYTESWAP }, // 8
1852 { "d29-08.ic51", 0x080000, 0xd7562851, TAITO_CHARS } , // 9
1853
1854 { "d29-18.ic5", 0x020000, 0xd97780df, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
1855 { "d29-19.ic6", 0x020000, 0xb1ad365c, TAITO_68KROM2_BYTESWAP }, // 11
1856
1857 { "d29-01.ic17", 0x200000, 0x545ac4b3, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
1858 { "d29-02.ic18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
1859
1860 { "d29-11.ic15.bin", 0x000157, 0x5dd5c8f9, BRF_OPT }, // 14 plds
1861 { "pal20l8b.2", 0x000144, 0xc91437e2, BRF_OPT }, // 15
1862 { "d29-13.ic14.bin", 0x000157, 0x74d61d36, BRF_OPT }, // 16
1863 { "palce16v8h.11", 0x000117, 0x51088324, BRF_OPT }, // 17
1864 { "pal16l8b.22", 0x000104, 0x3e01e854, BRF_OPT }, // 18
1865 { "palce16v8h.31", 0x000117, 0xe0789727, BRF_OPT }, // 19
1866 { "pal16l8b.62", 0x000104, 0x7093e2f3, BRF_OPT }, // 20
1867 { "d29-14.ic28.bin", 0x000157, 0x25d205d5, BRF_OPT }, // 21
1868 { "pal20l8b.70", 0x000144, 0x92b5b97c, BRF_OPT }, // 22
1869 };
1870
1871 STD_ROM_PICK(arabianmj)
1872 STD_ROM_FN(arabianmj)
1873
1874 struct BurnDriver BurnDrvArabianmj = {
1875 "arabianmj", "arabianm", NULL, NULL, "1992",
1876 "Arabian Magic (Ver 1.0J 1992/07/06)\0", NULL, "Taito Corporation", "Taito F3 System",
1877 NULL, NULL, NULL, NULL,
1878 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
1879 NULL, arabianmjRomInfo, arabianmjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1880 arabianmInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
1881 320, 224, 4, 3
1882 };
1883
1884
1885 // Arabian Magic (Ver 1.0A 1992/07/06)
1886
1887 static struct BurnRomInfo arabianmuRomDesc[] = {
1888 { "d29-23.ic40", 0x040000, 0x89a0c706, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1889 { "d29-22.ic38", 0x040000, 0x4afc22a4, TAITO_68KROM1_BYTESWAP32 }, // 1
1890 { "d29-21.ic36", 0x040000, 0xac32eb38, TAITO_68KROM1_BYTESWAP32 }, // 2
1891 { "d29-24.ic34", 0x040000, 0xceb1627b, TAITO_68KROM1_BYTESWAP32 }, // 3
1892
1893 { "d29-03.ic66", 0x100000, 0xaeaff456, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1894 { "d29-04.ic67", 0x100000, 0x01711cfe, TAITO_SPRITESA_BYTESWAP }, // 5
1895 { "d29-05.ic68", 0x100000, 0x9b5f7a17, TAITO_SPRITESA }, // 6
1896
1897 { "d29-06.ic49", 0x080000, 0xeea07bf3, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
1898 { "d29-07.ic50", 0x080000, 0xdb3c094d, TAITO_CHARS_BYTESWAP }, // 8
1899 { "d29-08.ic51", 0x080000, 0xd7562851, TAITO_CHARS } , // 9
1900
1901 { "d29-18.ic5", 0x020000, 0xd97780df, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
1902 { "d29-19.ic6", 0x020000, 0xb1ad365c, TAITO_68KROM2_BYTESWAP }, // 11
1903
1904 { "d29-01.ic17", 0x200000, 0x545ac4b3, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
1905 { "d29-02.ic18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
1906
1907 { "d29-11.ic15.bin", 0x000157, 0x5dd5c8f9, BRF_OPT }, // 14 plds
1908 { "pal20l8b.2", 0x000144, 0xc91437e2, BRF_OPT }, // 15
1909 { "d29-13.ic14.bin", 0x000157, 0x74d61d36, BRF_OPT }, // 16
1910 { "palce16v8h.11", 0x000117, 0x51088324, BRF_OPT }, // 17
1911 { "pal16l8b.22", 0x000104, 0x3e01e854, BRF_OPT }, // 18
1912 { "palce16v8h.31", 0x000117, 0xe0789727, BRF_OPT }, // 19
1913 { "pal16l8b.62", 0x000104, 0x7093e2f3, BRF_OPT }, // 20
1914 { "d29-14.ic28.bin", 0x000157, 0x25d205d5, BRF_OPT }, // 21
1915 { "pal20l8b.70", 0x000144, 0x92b5b97c, BRF_OPT }, // 22
1916 };
1917
1918 STD_ROM_PICK(arabianmu)
1919 STD_ROM_FN(arabianmu)
1920
1921 struct BurnDriver BurnDrvArabianmu = {
1922 "arabianmu", "arabianm", NULL, NULL, "1992",
1923 "Arabian Magic (Ver 1.0A 1992/07/06)\0", NULL, "Taito America Corporation", "Taito F3 System",
1924 NULL, NULL, NULL, NULL,
1925 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
1926 NULL, arabianmuRomInfo, arabianmuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1927 arabianmInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
1928 320, 224, 4, 3
1929 };
1930
1931
1932 // Riding Fight (Ver 1.0O)
1933
1934 static struct BurnRomInfo ridingfRomDesc[] = {
1935 { "d34-12.40", 0x040000, 0xe67e69d4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1936 { "d34-11.38", 0x040000, 0x7d240a88, TAITO_68KROM1_BYTESWAP32 }, // 1
1937 { "d34-10.36", 0x040000, 0x8aa3f4ac, TAITO_68KROM1_BYTESWAP32 }, // 2
1938 { "d34_14.34", 0x040000, 0xe000198e, TAITO_68KROM1_BYTESWAP32 }, // 3
1939
1940 { "d34-01.66", 0x200000, 0x7974e6aa, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1941 { "d34-02.67", 0x200000, 0xf4422370, TAITO_SPRITESA_BYTESWAP }, // 5
1942
1943 { "d34-05.49", 0x080000, 0x72e3ee4b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
1944 { "d34-06.50", 0x080000, 0xedc9b9f3, TAITO_CHARS_BYTESWAP }, // 7
1945
1946 { "d34-07.5", 0x020000, 0x67239e2b, TAITO_68KROM2_BYTESWAP }, // 8 68k Code
1947 { "d34-08.6", 0x020000, 0x2cf20323, TAITO_68KROM2_BYTESWAP }, // 9
1948
1949 { "d34-03.17", 0x200000, 0xe534ef74, TAITO_ES5505_BYTESWAP }, // 10 Ensoniq Samples
1950 { "d34-04.18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 11
1951 };
1952
1953 STD_ROM_PICK(ridingf)
STD_ROM_FN(ridingf)1954 STD_ROM_FN(ridingf)
1955
1956 static INT32 ridingfInit()
1957 {
1958 return DrvInit(NULL, f3_12bit_palette_update, 1, RIDINGF, 1, 0x417FE4);
1959 }
1960
1961 struct BurnDriver BurnDrvRidingf = {
1962 "ridingf", NULL, NULL, NULL, "1992",
1963 "Riding Fight (Ver 1.0O)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
1964 NULL, NULL, NULL, NULL,
1965 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_RACING, 0,
1966 NULL, ridingfRomInfo, ridingfRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
1967 ridingfInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
1968 320, 224, 4, 3
1969 };
1970
1971
1972 // Riding Fight (Ver 1.0J)
1973
1974 static struct BurnRomInfo ridingfjRomDesc[] = {
1975 { "d34-12.40", 0x040000, 0xe67e69d4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
1976 { "d34-11.38", 0x040000, 0x7d240a88, TAITO_68KROM1_BYTESWAP32 }, // 1
1977 { "d34-10.36", 0x040000, 0x8aa3f4ac, TAITO_68KROM1_BYTESWAP32 }, // 2
1978 { "d34-09.34", 0x040000, 0x0e0e78a2, TAITO_68KROM1_BYTESWAP32 }, // 3
1979
1980 { "d34-01.66", 0x200000, 0x7974e6aa, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
1981 { "d34-02.67", 0x200000, 0xf4422370, TAITO_SPRITESA_BYTESWAP }, // 5
1982
1983 { "d34-05.49", 0x080000, 0x72e3ee4b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
1984 { "d34-06.50", 0x080000, 0xedc9b9f3, TAITO_CHARS_BYTESWAP }, // 7
1985
1986 { "d34-07.5", 0x020000, 0x67239e2b, TAITO_68KROM2_BYTESWAP }, // 8 68k Code
1987 { "d34-08.6", 0x020000, 0x2cf20323, TAITO_68KROM2_BYTESWAP }, // 9
1988
1989 { "d34-03.17", 0x200000, 0xe534ef74, TAITO_ES5505_BYTESWAP }, // 10 Ensoniq Samples
1990 { "d34-04.18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 11
1991 };
1992
1993 STD_ROM_PICK(ridingfj)
1994 STD_ROM_FN(ridingfj)
1995
1996 struct BurnDriver BurnDrvRidingfj = {
1997 "ridingfj", "ridingf", NULL, NULL, "1992",
1998 "Riding Fight (Ver 1.0J)\0", NULL, "Taito Corporation", "Taito F3 System",
1999 NULL, NULL, NULL, NULL,
2000 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_RACING, 0,
2001 NULL, ridingfjRomInfo, ridingfjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2002 ridingfInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
2003 320, 224, 4, 3
2004 };
2005
2006
2007 // Riding Fight (Ver 1.0A)
2008
2009 static struct BurnRomInfo ridingfuRomDesc[] = {
2010 { "d34-12.40", 0x040000, 0xe67e69d4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2011 { "d34-11.38", 0x040000, 0x7d240a88, TAITO_68KROM1_BYTESWAP32 }, // 1
2012 { "d34-10.36", 0x040000, 0x8aa3f4ac, TAITO_68KROM1_BYTESWAP32 }, // 2
2013 { "d34_13.34", 0x040000, 0x97072918, TAITO_68KROM1_BYTESWAP32 }, // 3
2014
2015 { "d34-01.66", 0x200000, 0x7974e6aa, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2016 { "d34-02.67", 0x200000, 0xf4422370, TAITO_SPRITESA_BYTESWAP }, // 5
2017
2018 { "d34-05.49", 0x080000, 0x72e3ee4b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
2019 { "d34-06.50", 0x080000, 0xedc9b9f3, TAITO_CHARS_BYTESWAP }, // 7
2020
2021 { "d34-07.5", 0x020000, 0x67239e2b, TAITO_68KROM2_BYTESWAP }, // 8 68k Code
2022 { "d34-08.6", 0x020000, 0x2cf20323, TAITO_68KROM2_BYTESWAP }, // 9
2023
2024 { "d34-03.17", 0x200000, 0xe534ef74, TAITO_ES5505_BYTESWAP }, // 10 Ensoniq Samples
2025 { "d34-04.18", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 11
2026 };
2027
2028 STD_ROM_PICK(ridingfu)
2029 STD_ROM_FN(ridingfu)
2030
2031 struct BurnDriver BurnDrvRidingfu = {
2032 "ridingfu", "ridingf", NULL, NULL, "1992",
2033 "Riding Fight (Ver 1.0A)\0", NULL, "Taito America Corporation", "Taito F3 System",
2034 NULL, NULL, NULL, NULL,
2035 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_RACING, 0,
2036 NULL, ridingfuRomInfo, ridingfuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2037 ridingfInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
2038 320, 224, 4, 3
2039 };
2040
2041
2042
2043 // Grid Seeker: Project Storm Hammer (Ver 1.3O)
2044
2045 static struct BurnRomInfo gseekerRomDesc[] = {
2046 { "d40_12.rom", 0x040000, 0x884055fb, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2047 { "d40_11.rom", 0x040000, 0x85e701d2, TAITO_68KROM1_BYTESWAP32 }, // 1
2048 { "d40_10.rom", 0x040000, 0x1e659ac5, TAITO_68KROM1_BYTESWAP32 }, // 2
2049 { "d40_14.rom", 0x040000, 0xd9a76bd9, TAITO_68KROM1_BYTESWAP32 }, // 3
2050
2051 { "d40_03.rom", 0x100000, 0xbcd70efc, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2052 { "d40_04.rom", 0x100000, 0xcd2ac666, TAITO_SPRITESA_BYTESWAP }, // 5
2053 { "d40_15.rom", 0x080000, 0x50555125, TAITO_SPRITESA_BYTESWAP }, // 6
2054 { "d40_16.rom", 0x080000, 0x3f9bbe1e, TAITO_SPRITESA_BYTESWAP }, // 7
2055
2056 { "d40_05.rom", 0x100000, 0xbe6eec8f, TAITO_CHARS_BYTESWAP }, // 8 Layer Tiles
2057 { "d40_06.rom", 0x100000, 0xa822abe4, TAITO_CHARS_BYTESWAP }, // 9
2058
2059 { "d40_07.rom", 0x020000, 0x7e9b26c2, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
2060 { "d40_08.rom", 0x020000, 0x9c926a28, TAITO_68KROM2_BYTESWAP }, // 11
2061
2062 { "d40_01.rom", 0x200000, 0xee312e95, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
2063 { "d40_02.rom", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
2064
2065 { "gseeker.nv", 0x000080, 0x3e24cc80, TAITO_DEFAULT_EEPROM }, // 14 eeprom
2066 };
2067
2068 STD_ROM_PICK(gseeker)
STD_ROM_FN(gseeker)2069 STD_ROM_FN(gseeker)
2070
2071 static INT32 gseekerInit()
2072 {
2073 return DrvInit(NULL, f3_24bit_palette_update, 0, GSEEKER, 1, 0x40A85C);
2074 }
2075
2076 struct BurnDriver BurnDrvGseeker = {
2077 "gseeker", NULL, NULL, NULL, "1992",
2078 "Grid Seeker: Project Storm Hammer (Ver 1.3O)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2079 NULL, NULL, NULL, NULL,
2080 BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
2081 NULL, gseekerRomInfo, gseekerRomName, NULL, NULL, NULL, NULL, F3InputInfo, gseekerDIPInfo,
2082 gseekerInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
2083 224, 320, 3, 4
2084 };
2085
2086
2087 // Grid Seeker: Project Storm Hammer (Ver 1.3J)
2088
2089 static struct BurnRomInfo gseekerjRomDesc[] = {
2090 { "d40_12.rom", 0x040000, 0x884055fb, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2091 { "d40_11.rom", 0x040000, 0x85e701d2, TAITO_68KROM1_BYTESWAP32 }, // 1
2092 { "d40_10.rom", 0x040000, 0x1e659ac5, TAITO_68KROM1_BYTESWAP32 }, // 2
2093 { "d40-09.34", 0x040000, 0x37a90af5, TAITO_68KROM1_BYTESWAP32 }, // 3
2094
2095 { "d40_03.rom", 0x100000, 0xbcd70efc, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2096 { "d40_04.rom", 0x100000, 0xcd2ac666, TAITO_SPRITESA_BYTESWAP }, // 5
2097 { "d40_15.rom", 0x080000, 0x50555125, TAITO_SPRITESA_BYTESWAP }, // 6
2098 { "d40_16.rom", 0x080000, 0x3f9bbe1e, TAITO_SPRITESA_BYTESWAP }, // 7
2099
2100 { "d40_05.rom", 0x100000, 0xbe6eec8f, TAITO_CHARS_BYTESWAP }, // 8 Layer Tiles
2101 { "d40_06.rom", 0x100000, 0xa822abe4, TAITO_CHARS_BYTESWAP }, // 9
2102
2103 { "d40_07.rom", 0x020000, 0x7e9b26c2, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
2104 { "d40_08.rom", 0x020000, 0x9c926a28, TAITO_68KROM2_BYTESWAP }, // 11
2105
2106 { "d40_01.rom", 0x200000, 0xee312e95, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
2107 { "d40_02.rom", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
2108
2109 { "gseeker.nv", 0x000080, 0x3e24cc80, TAITO_DEFAULT_EEPROM }, // 14 eeprom
2110 };
2111
2112 STD_ROM_PICK(gseekerj)
2113 STD_ROM_FN(gseekerj)
2114
2115 struct BurnDriver BurnDrvGseekerj = {
2116 "gseekerj", "gseeker", NULL, NULL, "1992",
2117 "Grid Seeker: Project Storm Hammer (Ver 1.3J)\0", NULL, "Taito Corporation", "Taito F3 System",
2118 NULL, NULL, NULL, NULL,
2119 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
2120 NULL, gseekerjRomInfo, gseekerjRomName, NULL, NULL, NULL, NULL, F3InputInfo, gseekerDIPInfo,
2121 gseekerInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
2122 224, 320, 3, 4
2123 };
2124
2125
2126 // Grid Seeker: Project Storm Hammer (Ver 1.3A)
2127
2128 static struct BurnRomInfo gseekeruRomDesc[] = {
2129 { "d40_12.rom", 0x040000, 0x884055fb, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2130 { "d40_11.rom", 0x040000, 0x85e701d2, TAITO_68KROM1_BYTESWAP32 }, // 1
2131 { "d40_10.rom", 0x040000, 0x1e659ac5, TAITO_68KROM1_BYTESWAP32 }, // 2
2132 { "d40-13.bin", 0x040000, 0xaea05b4f, TAITO_68KROM1_BYTESWAP32 }, // 3
2133
2134 { "d40_03.rom", 0x100000, 0xbcd70efc, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2135 { "d40_04.rom", 0x100000, 0xcd2ac666, TAITO_SPRITESA_BYTESWAP }, // 5
2136 { "d40_15.rom", 0x080000, 0x50555125, TAITO_SPRITESA_BYTESWAP }, // 6
2137 { "d40_16.rom", 0x080000, 0x3f9bbe1e, TAITO_SPRITESA_BYTESWAP }, // 7
2138
2139 { "d40_05.rom", 0x100000, 0xbe6eec8f, TAITO_CHARS_BYTESWAP }, // 8 Layer Tiles
2140 { "d40_06.rom", 0x100000, 0xa822abe4, TAITO_CHARS_BYTESWAP }, // 9
2141
2142 { "d40_07.rom", 0x020000, 0x7e9b26c2, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
2143 { "d40_08.rom", 0x020000, 0x9c926a28, TAITO_68KROM2_BYTESWAP }, // 11
2144
2145 { "d40_01.rom", 0x200000, 0xee312e95, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
2146 { "d40_02.rom", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 13
2147
2148 { "gseeker.nv", 0x000080, 0x3e24cc80, TAITO_DEFAULT_EEPROM }, // 14 eeprom
2149 };
2150
2151 STD_ROM_PICK(gseekeru)
2152 STD_ROM_FN(gseekeru)
2153
2154 struct BurnDriver BurnDrvGseekeru = {
2155 "gseekeru", "gseeker", NULL, NULL, "1992",
2156 "Grid Seeker: Project Storm Hammer (Ver 1.3A)\0", NULL, "Taito America Corporation", "Taito F3 System",
2157 NULL, NULL, NULL, NULL,
2158 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
2159 NULL, gseekeruRomInfo, gseekeruRomName, NULL, NULL, NULL, NULL, F3InputInfo, gseekerDIPInfo,
2160 gseekerInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
2161 224, 320, 3, 4
2162 };
2163
2164
2165 // Command War - Super Special Battle & War Game (Ver 0.0J) (Prototype)
2166
2167 static struct BurnRomInfo commandwRomDesc[] = {
2168 { "cw_mpr3.bin", 0x040000, 0x636944fc, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2169 { "cw_mpr2.bin", 0x040000, 0x1151a42b, TAITO_68KROM1_BYTESWAP32 }, // 1
2170 { "cw_mpr1.bin", 0x040000, 0x93669389, TAITO_68KROM1_BYTESWAP32 }, // 2
2171 { "cw_mpr0.bin", 0x040000, 0x0468df52, TAITO_68KROM1_BYTESWAP32 }, // 3
2172
2173 { "cw_objl0.bin", 0x200000, 0x9822102e, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2174 { "cw_objm0.bin", 0x200000, 0xf7687684, TAITO_SPRITESA_BYTESWAP }, // 5
2175 { "cw_objl1.bin", 0x200000, 0xca3ad7f6, TAITO_SPRITESA_BYTESWAP }, // 6
2176 { "cw_objm1.bin", 0x200000, 0x504b1bf5, TAITO_SPRITESA_BYTESWAP }, // 7
2177 { "cw_objh0.bin", 0x200000, 0x83d7e0ae, TAITO_SPRITESA }, // 8
2178 { "cw_objh1.bin", 0x200000, 0x324f5832, TAITO_SPRITESA }, // 9
2179
2180 { "cw_scr_l.bin", 0x100000, 0x4d202323, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2181 { "cw_scr_m.bin", 0x100000, 0x537b1c7d, TAITO_CHARS_BYTESWAP }, // 11
2182 { "cw_scr_h.bin", 0x100000, 0x001f85dd, TAITO_CHARS }, // 12
2183
2184 { "cw_spr1.bin", 0x020000, 0xc8f81c25, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2185 { "cw_spr0.bin", 0x020000, 0x2aaa9dfb, TAITO_68KROM2_BYTESWAP }, // 14
2186
2187 { "cw_pcm_0.bin", 0x200000, 0xa1e26629, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2188 { "cw_pcm_1.bin", 0x200000, 0x39fc6cf4, TAITO_ES5505_BYTESWAP }, // 16
2189 };
2190
2191 STD_ROM_PICK(commandw)
STD_ROM_FN(commandw)2192 STD_ROM_FN(commandw)
2193
2194 static INT32 commandwInit()
2195 {
2196 return DrvInit(NULL, f3_24bit_palette_update, 1, COMMANDW, 1, 0x417FE4);
2197 }
2198
2199 struct BurnDriver BurnDrvCommandw = {
2200 "commandw", NULL, NULL, NULL, "1992",
2201 "Command War - Super Special Battle & War Game (Ver 0.0J) (Prototype)\0", NULL, "Taito Corporation", "Taito F3 System",
2202 NULL, NULL, NULL, NULL,
2203 BDF_GAME_WORKING | BDF_PROTOTYPE, 2, HARDWARE_TAITO_MISC, GBF_STRATEGY, 0,
2204 NULL, commandwRomInfo, commandwRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2205 commandwInit, DrvExit, DrvFrame, DrvDraw224B, DrvScan, &TaitoF3PalRecalc, 0x2000,
2206 320, 224, 4, 3
2207 };
2208
2209
2210 // Taito Cup Finals (Ver 1.0O 1993/02/28)
2211
2212 static struct BurnRomInfo cupfinalRomDesc[] = {
2213 { "d49-13.20", 0x020000, 0xccee5e73, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2214 { "d49-14.19", 0x020000, 0x2323bf2e, TAITO_68KROM1_BYTESWAP32 }, // 1
2215 { "d49-16.18", 0x020000, 0x8e73f739, TAITO_68KROM1_BYTESWAP32 }, // 2
2216 { "d49-20.17", 0x020000, 0x1e9c392c, TAITO_68KROM1_BYTESWAP32 }, // 3
2217
2218 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2219 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
2220 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
2221 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
2222 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
2223 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
2224
2225 { "d49-09.47", 0x080000, 0x257ede01, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2226 { "d49-10.45", 0x080000, 0xf587b787, TAITO_CHARS_BYTESWAP }, // 11
2227 { "d49-11.43", 0x080000, 0x11318b26, TAITO_CHARS }, // 12
2228
2229 { "d49-17.32", 0x020000, 0xf2058eba, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2230 { "d49-18.33", 0x020000, 0xa0fdd270, TAITO_68KROM2_BYTESWAP }, // 14
2231
2232 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2233 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
2234 };
2235
2236 STD_ROM_PICK(cupfinal)
STD_ROM_FN(cupfinal)2237 STD_ROM_FN(cupfinal)
2238
2239 static INT32 cupfinalInit()
2240 {
2241 return DrvInit(NULL, f3_24bit_palette_update, 0, SCFINALS, 1, 0x408100);
2242 }
2243
2244 struct BurnDriver BurnDrvCupfinal = {
2245 "cupfinal", NULL, NULL, NULL, "1993",
2246 "Taito Cup Finals (Ver 1.0O 1993/02/28)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2247 NULL, NULL, NULL, NULL,
2248 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
2249 NULL, cupfinalRomInfo, cupfinalRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2250 cupfinalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2251 320, 224, 4, 3
2252 };
2253
2254
2255 // Hat Trick Hero '93 (Ver 1.0J 1993/02/28)
2256
2257 static struct BurnRomInfo hthero93RomDesc[] = {
2258 { "d49-13.20", 0x020000, 0xccee5e73, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2259 { "d49-14.19", 0x020000, 0x2323bf2e, TAITO_68KROM1_BYTESWAP32 }, // 1
2260 { "d49-16.18", 0x020000, 0x8e73f739, TAITO_68KROM1_BYTESWAP32 }, // 2
2261 { "d49-19.17", 0x020000, 0xf0925800, TAITO_68KROM1_BYTESWAP32 }, // 3
2262
2263 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2264 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
2265 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
2266 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
2267 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
2268 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
2269
2270 { "d49-09.47", 0x080000, 0x257ede01, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2271 { "d49-10.45", 0x080000, 0xf587b787, TAITO_CHARS_BYTESWAP }, // 11
2272 { "d49-11.43", 0x080000, 0x11318b26, TAITO_CHARS }, // 12
2273
2274 { "d49-17.32", 0x020000, 0xf2058eba, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2275 { "d49-18.33", 0x020000, 0xa0fdd270, TAITO_68KROM2_BYTESWAP }, // 14
2276
2277 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2278 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
2279 };
2280
2281 STD_ROM_PICK(hthero93)
2282 STD_ROM_FN(hthero93)
2283
2284 struct BurnDriver BurnDrvHthero93 = {
2285 "hthero93", "cupfinal", NULL, NULL, "1993",
2286 "Hat Trick Hero '93 (Ver 1.0J 1993/02/28)\0", NULL, "Taito Corporation", "Taito F3 System",
2287 NULL, NULL, NULL, NULL,
2288 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
2289 NULL, hthero93RomInfo, hthero93RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2290 cupfinalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2291 320, 224, 4, 3
2292 };
2293
2294
2295 // Hat Trick Hero '93 (Ver 1.0A 1993/02/28)
2296
2297 static struct BurnRomInfo hthero93uRomDesc[] = {
2298 { "d49-13.24", 0x020000, 0xccee5e73, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2299 { "d49-14.26", 0x020000, 0x2323bf2e, TAITO_68KROM1_BYTESWAP32 }, // 1
2300 { "d49-16.37", 0x020000, 0x8e73f739, TAITO_68KROM1_BYTESWAP32 }, // 2
2301 { "d49-19.35", 0x020000, 0x699b09ba, TAITO_68KROM1_BYTESWAP32 }, // 3
2302
2303 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2304 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
2305 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
2306 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
2307 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
2308 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
2309
2310 { "d49-09.47", 0x080000, 0x257ede01, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2311 { "d49-10.45", 0x080000, 0xf587b787, TAITO_CHARS_BYTESWAP }, // 11
2312 { "d49-11.43", 0x080000, 0x11318b26, TAITO_CHARS }, // 12
2313
2314 { "d49-17.32", 0x020000, 0xf2058eba, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2315 { "d49-18.33", 0x020000, 0xa0fdd270, TAITO_68KROM2_BYTESWAP }, // 14
2316
2317 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2318 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
2319
2320 { "d49-12.ic60.bin", 0x000104, 0xaa4cff37, 0 | BRF_OPT }, // 17 palsgame
2321 { "d49-21.ic17.bin", 0x000104, 0x821775d4, 0 | BRF_OPT }, // 18
2322
2323 { "d29-11.ic15.bin", 0x000157, 0x5dd5c8f9, 0 | BRF_OPT }, // 19 plds
2324 { "d29-12.ic12.bin", 0x000144, 0xc872f1fd, 0 | BRF_OPT }, // 20
2325 { "d29-13.ic14.bin", 0x000157, 0x74d61d36, 0 | BRF_OPT }, // 21
2326 { "d29-14.ic28.bin", 0x000157, 0x25d205d5, 0 | BRF_OPT }, // 22
2327 { "d29-15.ic29.bin", 0x000157, 0x692eb582, 0 | BRF_OPT }, // 23
2328 { "d29-16.ic7.bin", 0x000117, 0x11875f52, 0 | BRF_OPT }, // 24
2329 { "d29-17.ic16.bin", 0x000117, 0xa0f74b51, 0 | BRF_OPT }, // 25
2330 };
2331
2332 STD_ROM_PICK(hthero93u)
2333 STD_ROM_FN(hthero93u)
2334
2335 struct BurnDriver BurnDrvHthero93u = {
2336 "hthero93u", "cupfinal", NULL, NULL, "1993",
2337 "Hat Trick Hero '93 (Ver 1.0A 1993/02/28)\0", NULL, "Taito Corporation", "Taito F3 System",
2338 NULL, NULL, NULL, NULL,
2339 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
2340 NULL, hthero93uRomInfo, hthero93uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2341 cupfinalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2342 320, 224, 4, 3
2343 };
2344
2345
2346 // Top Ranking Stars (Ver 2.1O 1993/05/21) (New Version)
2347
2348 static struct BurnRomInfo trstarRomDesc[] = {
2349 { "d53-15-1.24", 0x040000, 0x098bba94, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2350 { "d53-16-1.26", 0x040000, 0x4fa8b15c, TAITO_68KROM1_BYTESWAP32 }, // 1
2351 { "d53-18-1.37", 0x040000, 0xaa71cfcc, TAITO_68KROM1_BYTESWAP32 }, // 2
2352 { "d53-20-1.35", 0x040000, 0x4de1e287, TAITO_68KROM1_BYTESWAP32 }, // 3
2353
2354 { "d53-03.45", 0x200000, 0x91b66145, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2355 { "d53-04.46", 0x200000, 0xac3a5e80, TAITO_SPRITESA_BYTESWAP }, // 5
2356 { "d53-06.64", 0x100000, 0xf4bac410, TAITO_SPRITESA_BYTESWAP }, // 6
2357 { "d53-07.65", 0x100000, 0x2f4773c3, TAITO_SPRITESA_BYTESWAP }, // 7
2358 { "d53-05.47", 0x200000, 0xb9b68b15, TAITO_SPRITESA }, // 8
2359 { "d53-08.66", 0x100000, 0xad13a1ee, TAITO_SPRITESA }, // 9
2360
2361 { "d53-09.48", 0x100000, 0x690554d3, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2362 { "d53-10.49", 0x100000, 0x0ec05dc5, TAITO_CHARS_BYTESWAP }, // 11
2363 { "d53-11.50", 0x100000, 0x39c0a546, TAITO_CHARS }, // 12
2364
2365 { "d53-13.10", 0x020000, 0x877f0361, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2366 { "d53-14.23", 0x020000, 0xa8664867, TAITO_68KROM2_BYTESWAP }, // 14
2367
2368 { "d53-01.2", 0x200000, 0x28fd2d9b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2369 { "d53-02.3", 0x200000, 0x8bd4367a, TAITO_ES5505_BYTESWAP }, // 16
2370 };
2371
2372 STD_ROM_PICK(trstar)
STD_ROM_FN(trstar)2373 STD_ROM_FN(trstar)
2374
2375 static INT32 trstarInit()
2376 {
2377 return DrvInit(NULL, f3_24bit_palette_update, 1, TRSTAR, 0, 0x41E000);
2378 }
2379
2380 struct BurnDriver BurnDrvTrstar = {
2381 "trstar", NULL, NULL, NULL, "1993",
2382 "Top Ranking Stars (Ver 2.1O 1993/05/21) (New Version)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2383 NULL, NULL, NULL, NULL,
2384 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
2385 NULL, trstarRomInfo, trstarRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2386 trstarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
2387 320, 232, 4, 3
2388 };
2389
2390
2391 // Top Ranking Stars (Ver 2.1J 1993/05/21) (New Version)
2392
2393 static struct BurnRomInfo trstarjRomDesc[] = {
2394 { "d53-15-1.24", 0x040000, 0x098bba94, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2395 { "d53-16-1.26", 0x040000, 0x4fa8b15c, TAITO_68KROM1_BYTESWAP32 }, // 1
2396 { "d53-18-1.37", 0x040000, 0xaa71cfcc, TAITO_68KROM1_BYTESWAP32 }, // 2
2397 { "d53-17-1.35", 0x040000, 0xa3ef83ab, TAITO_68KROM1_BYTESWAP32 }, // 3
2398
2399 { "d53-03.45", 0x200000, 0x91b66145, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2400 { "d53-04.46", 0x200000, 0xac3a5e80, TAITO_SPRITESA_BYTESWAP }, // 5
2401 { "d53-06.64", 0x100000, 0xf4bac410, TAITO_SPRITESA_BYTESWAP }, // 6
2402 { "d53-07.65", 0x100000, 0x2f4773c3, TAITO_SPRITESA_BYTESWAP }, // 7
2403 { "d53-05.47", 0x200000, 0xb9b68b15, TAITO_SPRITESA }, // 8
2404 { "d53-08.66", 0x100000, 0xad13a1ee, TAITO_SPRITESA }, // 9
2405
2406 { "d53-09.48", 0x100000, 0x690554d3, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2407 { "d53-10.49", 0x100000, 0x0ec05dc5, TAITO_CHARS_BYTESWAP }, // 11
2408 { "d53-11.50", 0x100000, 0x39c0a546, TAITO_CHARS }, // 12
2409
2410 { "d53-13.10", 0x020000, 0x877f0361, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2411 { "d53-14.23", 0x020000, 0xa8664867, TAITO_68KROM2_BYTESWAP }, // 14
2412
2413 { "d53-01.2", 0x200000, 0x28fd2d9b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2414 { "d53-02.3", 0x200000, 0x8bd4367a, TAITO_ES5505_BYTESWAP }, // 16
2415 };
2416
2417 STD_ROM_PICK(trstarj)
2418 STD_ROM_FN(trstarj)
2419
2420 struct BurnDriver BurnDrvTrstarj = {
2421 "trstarj", "trstar", NULL, NULL, "1993",
2422 "Top Ranking Stars (Ver 2.1J 1993/05/21) (New Version)\0", NULL, "Taito Corporation", "Taito F3 System",
2423 NULL, NULL, NULL, NULL,
2424 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
2425 NULL, trstarjRomInfo, trstarjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2426 trstarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
2427 320, 232, 4, 3
2428 };
2429
2430
2431 // Prime Time Fighter (Ver 2.1A 1993/05/21) (New Version)
2432
2433 static struct BurnRomInfo prmtmfgtRomDesc[] = {
2434 { "d53-15-1.24", 0x040000, 0x098bba94, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2435 { "d53-16-1.26", 0x040000, 0x4fa8b15c, TAITO_68KROM1_BYTESWAP32 }, // 1
2436 { "d53-18-1.37", 0x040000, 0xaa71cfcc, TAITO_68KROM1_BYTESWAP32 }, // 2
2437 { "d53-19-1.35", 0x040000, 0x3ae6d211, TAITO_68KROM1_BYTESWAP32 }, // 3
2438
2439 { "d53-03.45", 0x200000, 0x91b66145, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2440 { "d53-04.46", 0x200000, 0xac3a5e80, TAITO_SPRITESA_BYTESWAP }, // 5
2441 { "d53-06.64", 0x100000, 0xf4bac410, TAITO_SPRITESA_BYTESWAP }, // 6
2442 { "d53-07.65", 0x100000, 0x2f4773c3, TAITO_SPRITESA_BYTESWAP }, // 7
2443 { "d53-05.47", 0x200000, 0xb9b68b15, TAITO_SPRITESA }, // 8
2444 { "d53-08.66", 0x100000, 0xad13a1ee, TAITO_SPRITESA }, // 9
2445
2446 { "d53-09.48", 0x100000, 0x690554d3, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2447 { "d53-10.49", 0x100000, 0x0ec05dc5, TAITO_CHARS_BYTESWAP }, // 11
2448 { "d53-11.50", 0x100000, 0x39c0a546, TAITO_CHARS }, // 12
2449
2450 { "d53-13.10", 0x020000, 0x877f0361, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2451 { "d53-14.23", 0x020000, 0xa8664867, TAITO_68KROM2_BYTESWAP }, // 14
2452
2453 { "d53-01.2", 0x200000, 0x28fd2d9b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2454 { "d53-02.3", 0x200000, 0x8bd4367a, TAITO_ES5505_BYTESWAP }, // 16
2455 };
2456
2457 STD_ROM_PICK(prmtmfgt)
2458 STD_ROM_FN(prmtmfgt)
2459
2460 struct BurnDriver BurnDrvPrmtmfgt = {
2461 "prmtmfgt", "trstar", NULL, NULL, "1993",
2462 "Prime Time Fighter (Ver 2.1A 1993/05/21) (New Version)\0", NULL, "Taito America Corporation", "Taito F3 System",
2463 NULL, NULL, NULL, NULL,
2464 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
2465 NULL, prmtmfgtRomInfo, prmtmfgtRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2466 trstarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
2467 320, 232, 4, 3
2468 };
2469
2470
2471 // Top Ranking Stars (Ver 2.1O 1993/05/21) (Old Version)
2472
2473 static struct BurnRomInfo trstaroRomDesc[] = {
2474 { "d53-15.24", 0x040000, 0xf24de51b, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2475 { "d53-16.26", 0x040000, 0xffc84429, TAITO_68KROM1_BYTESWAP32 }, // 1
2476 { "d53-18.37", 0x040000, 0xea2d6e13, TAITO_68KROM1_BYTESWAP32 }, // 2
2477 { "d53-20.35", 0x040000, 0x77e1f267, TAITO_68KROM1_BYTESWAP32 }, // 3
2478
2479 { "d53-03.45", 0x200000, 0x91b66145, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2480 { "d53-04.46", 0x200000, 0xac3a5e80, TAITO_SPRITESA_BYTESWAP }, // 5
2481 { "d53-06.64", 0x100000, 0xf4bac410, TAITO_SPRITESA_BYTESWAP }, // 6
2482 { "d53-07.65", 0x100000, 0x2f4773c3, TAITO_SPRITESA_BYTESWAP }, // 7
2483 { "d53-05.47", 0x200000, 0xb9b68b15, TAITO_SPRITESA }, // 8
2484 { "d53-08.66", 0x100000, 0xad13a1ee, TAITO_SPRITESA }, // 9
2485
2486 { "d53-09.48", 0x100000, 0x690554d3, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2487 { "d53-10.49", 0x100000, 0x0ec05dc5, TAITO_CHARS_BYTESWAP }, // 11
2488 { "d53-11.50", 0x100000, 0x39c0a546, TAITO_CHARS }, // 12
2489
2490 { "d53-13.10", 0x020000, 0x877f0361, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2491 { "d53-14.23", 0x020000, 0xa8664867, TAITO_68KROM2_BYTESWAP }, // 14
2492
2493 { "d53-01.2", 0x200000, 0x28fd2d9b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2494 { "d53-02.3", 0x200000, 0x8bd4367a, TAITO_ES5505_BYTESWAP }, // 16
2495 };
2496
2497 STD_ROM_PICK(trstaro)
2498 STD_ROM_FN(trstaro)
2499
2500 struct BurnDriver BurnDrvTrstaro = {
2501 "trstaro", "trstar", NULL, NULL, "1993",
2502 "Top Ranking Stars (Ver 2.1O 1993/05/21) (Old Version)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2503 NULL, NULL, NULL, NULL,
2504 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
2505 NULL, trstaroRomInfo, trstaroRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2506 trstarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
2507 320, 232, 4, 3
2508 };
2509
2510
2511 // Top Ranking Stars (Ver 2.1J 1993/05/21) (Old Version)
2512
2513 static struct BurnRomInfo trstarojRomDesc[] = {
2514 { "d53-15.24", 0x040000, 0xf24de51b, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2515 { "d53-16.26", 0x040000, 0xffc84429, TAITO_68KROM1_BYTESWAP32 }, // 1
2516 { "d53-18.37", 0x040000, 0xea2d6e13, TAITO_68KROM1_BYTESWAP32 }, // 2
2517 { "d53-17.35", 0x040000, 0x99ef934b, TAITO_68KROM1_BYTESWAP32 }, // 3
2518
2519 { "d53-03.45", 0x200000, 0x91b66145, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2520 { "d53-04.46", 0x200000, 0xac3a5e80, TAITO_SPRITESA_BYTESWAP }, // 5
2521 { "d53-06.64", 0x100000, 0xf4bac410, TAITO_SPRITESA_BYTESWAP }, // 6
2522 { "d53-07.65", 0x100000, 0x2f4773c3, TAITO_SPRITESA_BYTESWAP }, // 7
2523 { "d53-05.47", 0x200000, 0xb9b68b15, TAITO_SPRITESA }, // 8
2524 { "d53-08.66", 0x100000, 0xad13a1ee, TAITO_SPRITESA }, // 9
2525
2526 { "d53-09.48", 0x100000, 0x690554d3, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2527 { "d53-10.49", 0x100000, 0x0ec05dc5, TAITO_CHARS_BYTESWAP }, // 11
2528 { "d53-11.50", 0x100000, 0x39c0a546, TAITO_CHARS }, // 12
2529
2530 { "d53-13.10", 0x020000, 0x877f0361, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2531 { "d53-14.23", 0x020000, 0xa8664867, TAITO_68KROM2_BYTESWAP }, // 14
2532
2533 { "d53-01.2", 0x200000, 0x28fd2d9b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2534 { "d53-02.3", 0x200000, 0x8bd4367a, TAITO_ES5505_BYTESWAP }, // 16
2535 };
2536
2537 STD_ROM_PICK(trstaroj)
2538 STD_ROM_FN(trstaroj)
2539
2540 struct BurnDriver BurnDrvTrstaroj = {
2541 "trstaroj", "trstar", NULL, NULL, "1993",
2542 "Top Ranking Stars (Ver 2.1J 1993/05/21) (Old Version)\0", NULL, "Taito Corporation", "Taito F3 System",
2543 NULL, NULL, NULL, NULL,
2544 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
2545 NULL, trstarojRomInfo, trstarojRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2546 trstarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
2547 320, 232, 4, 3
2548 };
2549
2550
2551 // Prime Time Fighter (Ver 2.1A 1993/05/21) (Old Version)
2552
2553 static struct BurnRomInfo prmtmfgtoRomDesc[] = {
2554 { "d53-15.24", 0x040000, 0xf24de51b, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2555 { "d53-16.26", 0x040000, 0xffc84429, TAITO_68KROM1_BYTESWAP32 }, // 1
2556 { "d53-18.37", 0x040000, 0xea2d6e13, TAITO_68KROM1_BYTESWAP32 }, // 2
2557 { "d53-19.35", 0x040000, 0x00e6c2f1, TAITO_68KROM1_BYTESWAP32 }, // 3
2558
2559 { "d53-03.45", 0x200000, 0x91b66145, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2560 { "d53-04.46", 0x200000, 0xac3a5e80, TAITO_SPRITESA_BYTESWAP }, // 5
2561 { "d53-06.64", 0x100000, 0xf4bac410, TAITO_SPRITESA_BYTESWAP }, // 6
2562 { "d53-07.65", 0x100000, 0x2f4773c3, TAITO_SPRITESA_BYTESWAP }, // 7
2563 { "d53-05.47", 0x200000, 0xb9b68b15, TAITO_SPRITESA }, // 8
2564 { "d53-08.66", 0x100000, 0xad13a1ee, TAITO_SPRITESA }, // 9
2565
2566 { "d53-09.48", 0x100000, 0x690554d3, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2567 { "d53-10.49", 0x100000, 0x0ec05dc5, TAITO_CHARS_BYTESWAP }, // 11
2568 { "d53-11.50", 0x100000, 0x39c0a546, TAITO_CHARS }, // 12
2569
2570 { "d53-13.10", 0x020000, 0x877f0361, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2571 { "d53-14.23", 0x020000, 0xa8664867, TAITO_68KROM2_BYTESWAP }, // 14
2572
2573 { "d53-01.2", 0x200000, 0x28fd2d9b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2574 { "d53-02.3", 0x200000, 0x8bd4367a, TAITO_ES5505_BYTESWAP }, // 16
2575 };
2576
2577 STD_ROM_PICK(prmtmfgto)
2578 STD_ROM_FN(prmtmfgto)
2579
2580 struct BurnDriver BurnDrvPrmtmfgto = {
2581 "prmtmfgto", "trstar", NULL, NULL, "1993",
2582 "Prime Time Fighter (Ver 2.1A 1993/05/21) (Old Version)\0", NULL, "Taito America Corporation", "Taito F3 System",
2583 NULL, NULL, NULL, NULL,
2584 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
2585 NULL, prmtmfgtoRomInfo, prmtmfgtoRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2586 trstarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
2587 320, 232, 4, 3
2588 };
2589
2590
2591 // Gunlock (Ver 2.3O 1994/01/20)
2592
2593 static struct BurnRomInfo gunlockRomDesc[] = {
2594 { "d66-18.ic24", 0x040000, 0x8418513e, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2595 { "d66-19.ic26", 0x040000, 0x95731473, TAITO_68KROM1_BYTESWAP32 }, // 1
2596 { "d66-21.ic37", 0x040000, 0xbd0d60f2, TAITO_68KROM1_BYTESWAP32 }, // 2
2597 { "d66-24.ic35", 0x040000, 0x97816378, TAITO_68KROM1_BYTESWAP32 }, // 3
2598
2599 { "d66-03.ic45", 0x100000, 0xe7a4a491, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2600 { "d66-04.ic46", 0x100000, 0xc1c7aaa7, TAITO_SPRITESA_BYTESWAP }, // 5
2601 { "d66-05.ic47", 0x100000, 0xa3cefe04, TAITO_SPRITESA }, // 6
2602
2603 { "d66-06.ic48", 0x100000, 0xb3d8126d, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
2604 { "d66-07.ic49", 0x100000, 0xa6da9be7, TAITO_CHARS_BYTESWAP }, // 8
2605 { "d66-08.ic50", 0x100000, 0x9959f30b, TAITO_CHARS }, // 9
2606
2607 { "d66-23.ic10", 0x040000, 0x57fb7c49, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
2608 { "d66-22.ic23", 0x040000, 0x83dd7f9b, TAITO_68KROM2_BYTESWAP }, // 11
2609
2610 { "d66-01.ic2", 0x200000, 0x58c92efa, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
2611 { "d66-02.ic3", 0x200000, 0xdcdafaab, TAITO_ES5505_BYTESWAP }, // 13
2612 };
2613
2614 STD_ROM_PICK(gunlock)
STD_ROM_FN(gunlock)2615 STD_ROM_FN(gunlock)
2616
2617 static INT32 gunlockInit()
2618 {
2619 return DrvInit(NULL, f3_24bit_palette_update, 1, GUNLOCK, 2, 0x400004); // speed hack isn't great for this game
2620 }
2621
2622 struct BurnDriver BurnDrvGunlock = {
2623 "gunlock", NULL, NULL, NULL, "1993",
2624 "Gunlock (Ver 2.3O 1994/01/20)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2625 NULL, NULL, NULL, NULL,
2626 BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
2627 NULL, gunlockRomInfo, gunlockRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2628 gunlockInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2629 224, 320, 3, 4
2630 };
2631
2632
2633 // Ray Force (Ver 2.3A 1994/01/20)
2634
2635 static struct BurnRomInfo rayforceRomDesc[] = {
2636 { "d66-18.ic24", 0x040000, 0x8418513e, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2637 { "d66-19.ic26", 0x040000, 0x95731473, TAITO_68KROM1_BYTESWAP32 }, // 1
2638 { "d66-21.ic37", 0x040000, 0xbd0d60f2, TAITO_68KROM1_BYTESWAP32 }, // 2
2639 { "d66-25.ic35", 0x040000, 0xe08653ee, TAITO_68KROM1_BYTESWAP32 }, // 3
2640
2641 { "d66-03.ic45", 0x100000, 0xe7a4a491, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2642 { "d66-04.ic46", 0x100000, 0xc1c7aaa7, TAITO_SPRITESA_BYTESWAP }, // 5
2643 { "d66-05.ic47", 0x100000, 0xa3cefe04, TAITO_SPRITESA }, // 6
2644
2645 { "d66-06.ic48", 0x100000, 0xb3d8126d, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
2646 { "d66-07.ic49", 0x100000, 0xa6da9be7, TAITO_CHARS_BYTESWAP }, // 8
2647 { "d66-08.ic49", 0x100000, 0x9959f30b, TAITO_CHARS }, // 9
2648
2649 { "d66-23.ic10", 0x040000, 0x57fb7c49, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
2650 { "d66-22.ic23", 0x040000, 0x83dd7f9b, TAITO_68KROM2_BYTESWAP }, // 11
2651
2652 { "d66-01.ic2", 0x200000, 0x58c92efa, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
2653 { "d66-02.ic3", 0x200000, 0xdcdafaab, TAITO_ES5505_BYTESWAP }, // 13
2654 };
2655
2656 STD_ROM_PICK(rayforce)
2657 STD_ROM_FN(rayforce)
2658
2659 struct BurnDriver BurnDrvRayforce = {
2660 "rayforce", "gunlock", NULL, NULL, "1993",
2661 "Ray Force (Ver 2.3A 1994/01/20)\0", NULL, "Taito Corporation", "Taito F3 System",
2662 NULL, NULL, NULL, NULL,
2663 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
2664 NULL, rayforceRomInfo, rayforceRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2665 gunlockInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2666 224, 320, 3, 4
2667 };
2668
2669
2670 // Ray Force (Ver 2.3J 1994/01/20)
2671
2672 static struct BurnRomInfo rayforcejRomDesc[] = {
2673 { "d66-18.ic24", 0x040000, 0x8418513e, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2674 { "d66-19.ic26", 0x040000, 0x95731473, TAITO_68KROM1_BYTESWAP32 }, // 1
2675 { "d66-21.ic37", 0x040000, 0xbd0d60f2, TAITO_68KROM1_BYTESWAP32 }, // 2
2676 { "d66-20.ic35", 0x040000, 0x798f0254, TAITO_68KROM1_BYTESWAP32 }, // 3
2677
2678 { "d66-03.ic45", 0x100000, 0xe7a4a491, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2679 { "d66-04.ic46", 0x100000, 0xc1c7aaa7, TAITO_SPRITESA_BYTESWAP }, // 5
2680 { "d66-05.ic47", 0x100000, 0xa3cefe04, TAITO_SPRITESA }, // 6
2681
2682 { "d66-06.ic48", 0x100000, 0xb3d8126d, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
2683 { "d66-07.ic49", 0x100000, 0xa6da9be7, TAITO_CHARS_BYTESWAP }, // 8
2684 { "d66-08.ic49", 0x100000, 0x9959f30b, TAITO_CHARS }, // 9
2685
2686 { "d66-23.ic10", 0x040000, 0x57fb7c49, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
2687 { "d66-22.ic23", 0x040000, 0x83dd7f9b, TAITO_68KROM2_BYTESWAP }, // 11
2688
2689 { "d66-01.ic2", 0x200000, 0x58c92efa, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
2690 { "d66-02.ic3", 0x200000, 0xdcdafaab, TAITO_ES5505_BYTESWAP }, // 13
2691 };
2692
2693 STD_ROM_PICK(rayforcej)
2694 STD_ROM_FN(rayforcej)
2695
2696 struct BurnDriver BurnDrvRayforcej = {
2697 "rayforcej", "gunlock", NULL, NULL, "1993",
2698 "Ray Force (Ver 2.3J 1994/01/20)\0", NULL, "Taito Corporation", "Taito F3 System",
2699 NULL, NULL, NULL, NULL,
2700 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL | BDF_ORIENTATION_FLIPPED, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
2701 NULL, rayforcejRomInfo, rayforcejRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2702 gunlockInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2703 224, 320, 3, 4
2704 };
2705
2706
2707 // Super Cup Finals (Ver 2.2O 1994/01/13, single PCB)
2708 /* This is the single PCB version */
2709
2710 static struct BurnRomInfo scfinalsRomDesc[] = {
2711 { "d68-09.ic40", 0x040000, 0x28193b3f, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2712 { "d68-10.ic38", 0x040000, 0x67481bad, TAITO_68KROM1_BYTESWAP32 }, // 1
2713 { "d68-11.ic36", 0x040000, 0xd456c124, TAITO_68KROM1_BYTESWAP32 }, // 2
2714 { "d68-12.ic34", 0x040000, 0xdec41397, TAITO_68KROM1_BYTESWAP32 }, // 3
2715
2716 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2717 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
2718 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
2719 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
2720 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
2721 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
2722
2723 { "d49-09.47", 0x080000, 0x257ede01, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2724 { "d49-10.45", 0x080000, 0xf587b787, TAITO_CHARS_BYTESWAP }, // 11
2725 { "d49-11.43", 0x080000, 0x11318b26, TAITO_CHARS }, // 12
2726
2727 { "d49-17.ic5", 0x020000, 0xf2058eba, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2728 { "d49-18.ic6", 0x020000, 0xa0fdd270, TAITO_68KROM2_BYTESWAP }, // 14
2729
2730 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2731 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
2732
2733 { "scfinals.nv", 0x000080, 0xf25945fc, TAITO_DEFAULT_EEPROM }, // 17 eeprom
2734
2735 };
2736
2737 STD_ROM_PICK(scfinals)
STD_ROM_FN(scfinals)2738 STD_ROM_FN(scfinals)
2739
2740 static INT32 scfinalsCallback()
2741 {
2742 UINT32 *ROM = (UINT32 *)Taito68KRom1;
2743
2744 ROM[0x5af0/4] = BURN_ENDIAN_SWAP_INT32(0x4e754e71);
2745 ROM[0xdd0/4] = BURN_ENDIAN_SWAP_INT32(0x4e714e75);
2746
2747 return 0;
2748 }
2749
scfinalsInit()2750 static INT32 scfinalsInit()
2751 {
2752 return DrvInit(scfinalsCallback, f3_24bit_palette_update, 0, SCFINALS, 1, 0x408100);
2753 }
2754
2755 struct BurnDriver BurnDrvScfinals = {
2756 "scfinals", NULL, NULL, NULL, "1993",
2757 "Super Cup Finals (Ver 2.2O 1994/01/13, single PCB)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2758 NULL, NULL, NULL, NULL,
2759 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
2760 NULL, scfinalsRomInfo, scfinalsRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2761 scfinalsInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2762 320, 224, 4, 3
2763 };
2764
2765
2766 // Super Cup Finals (Ver 2.1O 1993/11/19, single PCB)
2767 /* This is the single PCB version of v2.1O */
2768
2769 static struct BurnRomInfo scfinalsoRomDesc[] = {
2770 { "s-final_rom_24_071293.ic24", 0x020000, 0x466700c8, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2771 { "s-final_rom_26_071293.ic26", 0x020000, 0x824092de, TAITO_68KROM1_BYTESWAP32 }, // 1
2772 { "s-final_rom_37_071293.ic37", 0x020000, 0x9aa0cca4, TAITO_68KROM1_BYTESWAP32 }, // 2
2773 { "s-final_rom_35_071293.ic35", 0x020000, 0xe7a298fa, TAITO_68KROM1_BYTESWAP32 }, // 3
2774
2775 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2776 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
2777 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
2778 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
2779 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
2780 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
2781
2782 { "d49-09.47", 0x080000, 0x257ede01, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2783 { "d49-10.45", 0x080000, 0xf587b787, TAITO_CHARS_BYTESWAP }, // 11
2784 { "d49-11.43", 0x080000, 0x11318b26, TAITO_CHARS }, // 12
2785
2786 { "d49-17.32", 0x020000, 0xf2058eba, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2787 { "d49-18.33", 0x020000, 0xa0fdd270, TAITO_68KROM2_BYTESWAP }, // 14
2788
2789 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2790 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
2791
2792 { "scfinalso.nv", 0x000080, 0x1319752e, TAITO_DEFAULT_EEPROM }, // 17 eeprom
2793 };
2794
2795 STD_ROM_PICK(scfinalso)
2796 STD_ROM_FN(scfinalso)
2797
2798 struct BurnDriver BurnDrvScfinalso = {
2799 "scfinalso", "scfinals", NULL, NULL, "1993",
2800 "Super Cup Finals (Ver 2.1O 1993/11/19, single PCB)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2801 NULL, NULL, NULL, NULL,
2802 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
2803 NULL, scfinalsoRomInfo, scfinalsoRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2804 scfinalsInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2805 320, 224, 4, 3
2806 };
2807
2808
2809 // Super Cup Finals (Ver 2.1O 1993/11/19, F3 Cartridge)
2810 /* This is the Cart version of v2.1O */
2811
2812 static struct BurnRomInfo scfinalsocRomDesc[] = {
2813 { "d68-01.20", 0x040000, 0xcb951856, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2814 { "d68-02.19", 0x040000, 0x4f94413a, TAITO_68KROM1_BYTESWAP32 }, // 1
2815 { "d68-04.18", 0x040000, 0x4a4e4972, TAITO_68KROM1_BYTESWAP32 }, // 2
2816 { "d68-03.17", 0x040000, 0xa40be699, TAITO_68KROM1_BYTESWAP32 }, // 3
2817
2818 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2819 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
2820 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
2821 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
2822 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
2823 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
2824
2825 { "d49-09.47", 0x080000, 0x257ede01, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2826 { "d49-10.45", 0x080000, 0xf587b787, TAITO_CHARS_BYTESWAP }, // 11
2827 { "d49-11.43", 0x080000, 0x11318b26, TAITO_CHARS }, // 12
2828
2829 { "d49-17.32", 0x020000, 0xf2058eba, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2830 { "d49-18.33", 0x020000, 0xa0fdd270, TAITO_68KROM2_BYTESWAP }, // 14
2831
2832 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2833 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
2834
2835 { "scfinalso.nv", 0x000080, 0x1319752e, TAITO_DEFAULT_EEPROM }, // 17 eeprom
2836 };
2837
2838 STD_ROM_PICK(scfinalsoc)
2839 STD_ROM_FN(scfinalsoc)
2840
2841 struct BurnDriver BurnDrvScfinalsoc = {
2842 "scfinalsoc", "scfinals", NULL, NULL, "1993",
2843 "Super Cup Finals (Ver 2.1O 1993/11/19, F3 Cartridge)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2844 NULL, NULL, NULL, NULL,
2845 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
2846 NULL, scfinalsocRomInfo, scfinalsocRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2847 scfinalsInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
2848 320, 224, 4, 3
2849 };
2850
2851
2852 // Light Bringer (Ver 2.2O 1994/04/08)
2853
2854 static struct BurnRomInfo lightbrRomDesc[] = {
2855 { "d69-25.ic40", 0x080000, 0x27f1b8be, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2856 { "d69-26.ic38", 0x080000, 0x2ff7dba6, TAITO_68KROM1_BYTESWAP32 }, // 1
2857 { "d69-28.ic36", 0x080000, 0xa5546162, TAITO_68KROM1_BYTESWAP32 }, // 2
2858 { "d69-27.ic34", 0x080000, 0xe232a949, TAITO_68KROM1_BYTESWAP32 }, // 3
2859
2860 { "d69-06.bin", 0x200000, 0xcb4aac81, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2861 { "d69-07.bin", 0x200000, 0xb749f984, TAITO_SPRITESA_BYTESWAP }, // 5
2862 { "d69-09.bin", 0x100000, 0xa96c19b8, TAITO_SPRITESA_BYTESWAP }, // 6
2863 { "d69-10.bin", 0x100000, 0x36aa80c6, TAITO_SPRITESA_BYTESWAP }, // 7
2864 { "d69-08.bin", 0x200000, 0x5b68d7d8, TAITO_SPRITESA }, // 8
2865 { "d69-11.bin", 0x100000, 0xc11adf92, TAITO_SPRITESA }, // 9
2866
2867 { "d69-03.bin", 0x200000, 0x6999c86f, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2868 { "d69-04.bin", 0x200000, 0xcc91dcb7, TAITO_CHARS_BYTESWAP }, // 11
2869 { "d69-05.bin", 0x200000, 0xf9f5433c, TAITO_CHARS }, // 12
2870
2871 { "d69-18.bin", 0x020000, 0x04600d7b, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2872 { "d69-19.bin", 0x020000, 0x1484e853, TAITO_68KROM2_BYTESWAP }, // 14
2873
2874 { "d69-01.bin", 0x200000, 0x9ac93ac2, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2875 { "d69-02.bin", 0x200000, 0xdce28dd7, TAITO_ES5505_BYTESWAP }, // 16
2876 };
2877
2878 STD_ROM_PICK(lightbr)
STD_ROM_FN(lightbr)2879 STD_ROM_FN(lightbr)
2880
2881 static INT32 lightbrInit()
2882 {
2883 return DrvInit(NULL, f3_24bit_palette_update, 1, LIGHTBR, 2, 0x400118);
2884 }
2885
2886 struct BurnDriver BurnDrvLightbr = {
2887 "lightbr", NULL, NULL, NULL, "1993",
2888 "Light Bringer (Ver 2.2O 1994/04/08)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2889 NULL, NULL, NULL, NULL,
2890 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
2891 NULL, lightbrRomInfo, lightbrRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2892 lightbrInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
2893 320, 224, 4, 3
2894 };
2895
2896
2897 // Dungeon Magic (Ver 2.1O 1994/02/18)
2898
2899 static struct BurnRomInfo dungeonmRomDesc[] = {
2900 { "d69-20.bin", 0x080000, 0x33650fe4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2901 { "d69-13.bin", 0x080000, 0xdec2ec17, TAITO_68KROM1_BYTESWAP32 }, // 1
2902 { "d69-15.bin", 0x080000, 0x323e1955, TAITO_68KROM1_BYTESWAP32 }, // 2
2903 { "d69-22.bin", 0x080000, 0xf99e175d, TAITO_68KROM1_BYTESWAP32 }, // 3
2904
2905 { "d69-06.bin", 0x200000, 0xcb4aac81, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2906 { "d69-07.bin", 0x200000, 0xb749f984, TAITO_SPRITESA_BYTESWAP }, // 5
2907 { "d69-09.bin", 0x100000, 0xa96c19b8, TAITO_SPRITESA_BYTESWAP }, // 6
2908 { "d69-10.bin", 0x100000, 0x36aa80c6, TAITO_SPRITESA_BYTESWAP }, // 7
2909 { "d69-08.bin", 0x200000, 0x5b68d7d8, TAITO_SPRITESA }, // 8
2910 { "d69-11.bin", 0x100000, 0xc11adf92, TAITO_SPRITESA }, // 9
2911
2912 { "d69-03.bin", 0x200000, 0x6999c86f, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2913 { "d69-04.bin", 0x200000, 0xcc91dcb7, TAITO_CHARS_BYTESWAP }, // 11
2914 { "d69-05.bin", 0x200000, 0xf9f5433c, TAITO_CHARS }, // 12
2915
2916 { "d69-18.bin", 0x020000, 0x04600d7b, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2917 { "d69-19.bin", 0x020000, 0x1484e853, TAITO_68KROM2_BYTESWAP }, // 14
2918
2919 { "d69-01.bin", 0x200000, 0x9ac93ac2, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2920 { "d69-02.bin", 0x200000, 0xdce28dd7, TAITO_ES5505_BYTESWAP }, // 16
2921 };
2922
2923 STD_ROM_PICK(dungeonm)
2924 STD_ROM_FN(dungeonm)
2925
2926 struct BurnDriver BurnDrvDungeonm = {
2927 "dungeonm", "lightbr", NULL, NULL, "1993",
2928 "Dungeon Magic (Ver 2.1O 1994/02/18)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
2929 NULL, NULL, NULL, NULL,
2930 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
2931 NULL, dungeonmRomInfo, dungeonmRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2932 lightbrInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
2933 320, 224, 4, 3
2934 };
2935
2936
2937 // Dungeon Magic (Ver 2.1A 1994/02/18)
2938
2939 static struct BurnRomInfo dungeonmuRomDesc[] = {
2940 { "d69-20.bin", 0x080000, 0x33650fe4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2941 { "d69-13.bin", 0x080000, 0xdec2ec17, TAITO_68KROM1_BYTESWAP32 }, // 1
2942 { "d69-15.bin", 0x080000, 0x323e1955, TAITO_68KROM1_BYTESWAP32 }, // 2
2943 { "d69-21.bin", 0x080000, 0xc9d4e051, TAITO_68KROM1_BYTESWAP32 }, // 3
2944
2945 { "d69-06.bin", 0x200000, 0xcb4aac81, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2946 { "d69-07.bin", 0x200000, 0xb749f984, TAITO_SPRITESA_BYTESWAP }, // 5
2947 { "d69-09.bin", 0x100000, 0xa96c19b8, TAITO_SPRITESA_BYTESWAP }, // 6
2948 { "d69-10.bin", 0x100000, 0x36aa80c6, TAITO_SPRITESA_BYTESWAP }, // 7
2949 { "d69-08.bin", 0x200000, 0x5b68d7d8, TAITO_SPRITESA }, // 8
2950 { "d69-11.bin", 0x100000, 0xc11adf92, TAITO_SPRITESA }, // 9
2951
2952 { "d69-03.bin", 0x200000, 0x6999c86f, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2953 { "d69-04.bin", 0x200000, 0xcc91dcb7, TAITO_CHARS_BYTESWAP }, // 11
2954 { "d69-05.bin", 0x200000, 0xf9f5433c, TAITO_CHARS }, // 12
2955
2956 { "d69-18.bin", 0x020000, 0x04600d7b, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2957 { "d69-19.bin", 0x020000, 0x1484e853, TAITO_68KROM2_BYTESWAP }, // 14
2958
2959 { "d69-01.bin", 0x200000, 0x9ac93ac2, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
2960 { "d69-02.bin", 0x200000, 0xdce28dd7, TAITO_ES5505_BYTESWAP }, // 16
2961 };
2962
2963 STD_ROM_PICK(dungeonmu)
2964 STD_ROM_FN(dungeonmu)
2965
2966 struct BurnDriver BurnDrvDungeonmu = {
2967 "dungeonmu", "lightbr", NULL, NULL, "1993",
2968 "Dungeon Magic (Ver 2.1A 1994/02/18)\0", NULL, "Taito America Corporation", "Taito F3 System",
2969 NULL, NULL, NULL, NULL,
2970 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
2971 NULL, dungeonmuRomInfo, dungeonmuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
2972 lightbrInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
2973 320, 224, 4, 3
2974 };
2975
2976
2977 // Light Bringer (Ver 2.1J 1994/02/18)
2978
2979 static struct BurnRomInfo lightbrjRomDesc[] = {
2980 { "d69-20.bin", 0x080000, 0x33650fe4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
2981 { "d69-13.bin", 0x080000, 0xdec2ec17, TAITO_68KROM1_BYTESWAP32 }, // 1
2982 { "d69-15.bin", 0x080000, 0x323e1955, TAITO_68KROM1_BYTESWAP32 }, // 2
2983 { "d69-14.bin", 0x080000, 0x990bf945, TAITO_68KROM1_BYTESWAP32 }, // 3
2984
2985 { "d69-06.bin", 0x200000, 0xcb4aac81, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
2986 { "d69-07.bin", 0x200000, 0xb749f984, TAITO_SPRITESA_BYTESWAP }, // 5
2987 { "d69-09.bin", 0x100000, 0xa96c19b8, TAITO_SPRITESA_BYTESWAP }, // 6
2988 { "d69-10.bin", 0x100000, 0x36aa80c6, TAITO_SPRITESA_BYTESWAP }, // 7
2989 { "d69-08.bin", 0x200000, 0x5b68d7d8, TAITO_SPRITESA }, // 8
2990 { "d69-11.bin", 0x100000, 0xc11adf92, TAITO_SPRITESA }, // 9
2991
2992 { "d69-03.bin", 0x200000, 0x6999c86f, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
2993 { "d69-04.bin", 0x200000, 0xcc91dcb7, TAITO_CHARS_BYTESWAP }, // 11
2994 { "d69-05.bin", 0x200000, 0xf9f5433c, TAITO_CHARS }, // 12
2995
2996 { "d69-18.bin", 0x020000, 0x04600d7b, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
2997 { "d69-19.bin", 0x020000, 0x1484e853, TAITO_68KROM2_BYTESWAP }, // 14
2998
2999 { "d69-01.bin", 0x200000, 0x9ac93ac2, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
3000 { "d69-02.bin", 0x200000, 0xdce28dd7, TAITO_ES5505_BYTESWAP }, // 16
3001 };
3002
3003 STD_ROM_PICK(lightbrj)
3004 STD_ROM_FN(lightbrj)
3005
3006 struct BurnDriver BurnDrvLightbrj = {
3007 "lightbrj", "lightbr", NULL, NULL, "1993",
3008 "Light Bringer (Ver 2.1J 1994/02/18)\0", NULL, "Taito Corporation", "Taito F3 System",
3009 NULL, NULL, NULL, NULL,
3010 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SCRFIGHT, 0,
3011 NULL, lightbrjRomInfo, lightbrjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3012 lightbrInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3013 320, 224, 4, 3
3014 };
3015
3016
3017 // International Cup '94 (Ver 2.2O 1994/05/26)
3018
3019 static struct BurnRomInfo intcup94RomDesc[] = {
3020 { "d78-07.20", 0x020000, 0x8525d990, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3021 { "d78-06.19", 0x020000, 0x42db1d41, TAITO_68KROM1_BYTESWAP32 }, // 1
3022 { "d78-05.18", 0x020000, 0x5f7fbbbc, TAITO_68KROM1_BYTESWAP32 }, // 2
3023 { "d78-11.17", 0x020000, 0xbb9d2987, TAITO_68KROM1_BYTESWAP32 }, // 3
3024
3025 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3026 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
3027 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
3028 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
3029 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
3030 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
3031
3032 { "d78-01.47", 0x080000, 0x543f8967, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
3033 { "d78-02.45", 0x080000, 0xe8289394, TAITO_CHARS_BYTESWAP }, // 11
3034 { "d78-03.43", 0x080000, 0xa8bc36e5, TAITO_CHARS }, // 12
3035
3036 { "d78-08.32", 0x020000, 0xa629d07c, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
3037 { "d78-09.33", 0x020000, 0x1f0efe01, TAITO_68KROM2_BYTESWAP }, // 14
3038
3039 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
3040 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
3041 };
3042
3043 STD_ROM_PICK(intcup94)
3044 STD_ROM_FN(intcup94)
3045
3046 struct BurnDriver BurnDrvIntcup94 = {
3047 "intcup94", NULL, NULL, NULL, "1994",
3048 "International Cup '94 (Ver 2.2O 1994/05/26)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3049 NULL, NULL, NULL, NULL,
3050 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
3051 NULL, intcup94RomInfo, intcup94RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3052 cupfinalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
3053 320, 224, 4, 3
3054 };
3055
3056
3057 // Hat Trick Hero '94 (Ver 2.2A 1994/05/26)
3058
3059 static struct BurnRomInfo hthero94RomDesc[] = {
3060 { "d78-07.20", 0x020000, 0x8525d990, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3061 { "d78-06.19", 0x020000, 0x42db1d41, TAITO_68KROM1_BYTESWAP32 }, // 1
3062 { "d78-05.18", 0x020000, 0x5f7fbbbc, TAITO_68KROM1_BYTESWAP32 }, // 2
3063 { "d78-10.17", 0x020000, 0xcc9a1911, TAITO_68KROM1_BYTESWAP32 }, // 3
3064
3065 { "d49-01.12", 0x200000, 0x1dc89f1c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3066 { "d49-02.8", 0x200000, 0x1e4c374f, TAITO_SPRITESA_BYTESWAP }, // 5
3067 { "d49-06.11", 0x100000, 0x71ef4ee1, TAITO_SPRITESA_BYTESWAP }, // 6
3068 { "d49-07.7", 0x100000, 0xe5655b8f, TAITO_SPRITESA_BYTESWAP }, // 7
3069 { "d49-03.4", 0x200000, 0xcf9a8727, TAITO_SPRITESA }, // 8
3070 { "d49-08.3", 0x100000, 0x7d3c6536, TAITO_SPRITESA }, // 9
3071
3072 { "d78-01.47", 0x080000, 0x543f8967, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
3073 { "d78-02.45", 0x080000, 0xe8289394, TAITO_CHARS_BYTESWAP }, // 11
3074 { "d78-03.43", 0x080000, 0xa8bc36e5, TAITO_CHARS }, // 12
3075
3076 { "d78-08.32", 0x020000, 0xa629d07c, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
3077 { "d78-09.33", 0x020000, 0x1f0efe01, TAITO_68KROM2_BYTESWAP }, // 14
3078
3079 { "d49-04.38", 0x200000, 0x44b365a9, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
3080 { "d49-05.41", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 16
3081 };
3082
3083 STD_ROM_PICK(hthero94)
3084 STD_ROM_FN(hthero94)
3085
3086 struct BurnDriver BurnDrvHthero94 = {
3087 "hthero94", "intcup94", NULL, NULL, "1994",
3088 "Hat Trick Hero '94 (Ver 2.2A 1994/05/26)\0", NULL, "Taito America Corporation", "Taito F3 System",
3089 NULL, NULL, NULL, NULL,
3090 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
3091 NULL, hthero94RomInfo, hthero94RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3092 cupfinalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
3093 320, 224, 4, 3
3094 };
3095
3096
3097 // Recalhorn (Ver 1.42J 1994/5/11) (Prototype)
3098
3099 static struct BurnRomInfo recalhRomDesc[] = {
3100 { "rh_mpr3.bin", 0x080000, 0x65202dd4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3101 { "rh_mpr2.bin", 0x080000, 0x3eda66db, TAITO_68KROM1_BYTESWAP32 }, // 1
3102 { "rh_mpr1.bin", 0x080000, 0x536e74ca, TAITO_68KROM1_BYTESWAP32 }, // 2
3103 { "rh_mpr0.bin", 0x080000, 0x38025817, TAITO_68KROM1_BYTESWAP32 }, // 3
3104
3105 { "rh_objl.bin", 0x100000, 0xc1772b55, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3106 { "rh_objm.bin", 0x100000, 0xef87c0fd, TAITO_SPRITESA_BYTESWAP }, // 5
3107
3108 { "rh_scrl.bin", 0x100000, 0x1e3f6b79, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
3109 { "rh_scrm.bin", 0x100000, 0x37200968, TAITO_CHARS_BYTESWAP }, // 7
3110
3111 { "rh_spr1.bin", 0x020000, 0x504cbc1d, TAITO_68KROM2_BYTESWAP }, // 8 68k Code
3112 { "rh_spr0.bin", 0x020000, 0x78fba467, TAITO_68KROM2_BYTESWAP }, // 9
3113
3114 { "rh_snd0.bin", 0x200000, 0x386f5e1b, TAITO_ES5505_BYTESWAP }, // 10 Ensoniq Samples
3115 { "rh_snd1.bin", 0x100000, 0xed894fe1, TAITO_ES5505_BYTESWAP }, // 11
3116 };
3117
3118 STD_ROM_PICK(recalh)
STD_ROM_FN(recalh)3119 STD_ROM_FN(recalh)
3120
3121 static INT32 recalhInit()
3122 {
3123 return DrvInit(NULL, f3_21bit_typeB_palette_update, 1, RECALH, 1, 0);
3124 }
3125
3126 struct BurnDriver BurnDrvRecalh = {
3127 "recalh", NULL, NULL, NULL, "1994",
3128 "Recalhorn (Ver 1.42J 1994/5/11) (Prototype)\0", NULL, "Taito Corporation", "Taito F3 System",
3129 NULL, NULL, NULL, NULL,
3130 BDF_GAME_WORKING | BDF_PROTOTYPE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3131 NULL, recalhRomInfo, recalhRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3132 recalhInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
3133 320, 232, 4, 3
3134 };
3135
3136
3137 // Kaiser Knuckle (Ver 2.1O 1994/07/29)
3138
3139 static struct BurnRomInfo kaiserknRomDesc[] = {
3140 { "d84-25.20", 0x080000, 0x2840893f, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3141 { "d84-24.19", 0x080000, 0xbf20c755, TAITO_68KROM1_BYTESWAP32 }, // 1
3142 { "d84-23.18", 0x080000, 0x39f12a9b, TAITO_68KROM1_BYTESWAP32 }, // 2
3143 { "d84-29.17", 0x080000, 0x9821f17a, TAITO_68KROM1_BYTESWAP32 }, // 3
3144
3145 { "d84-03.rom", 0x200000, 0xd786f552, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3146 { "d84-04.rom", 0x200000, 0xd1f32b5d, TAITO_SPRITESA_BYTESWAP }, // 5
3147 { "d84-06.rom", 0x200000, 0xfa924dab, TAITO_SPRITESA_BYTESWAP }, // 6
3148 { "d84-07.rom", 0x200000, 0x54517a6b, TAITO_SPRITESA_BYTESWAP }, // 7
3149 { "d84-09.rom", 0x200000, 0xfaa78d98, TAITO_SPRITESA_BYTESWAP }, // 8
3150 { "d84-10.rom", 0x200000, 0xb84b7320, TAITO_SPRITESA_BYTESWAP }, // 9
3151 { "d84-19.rom", 0x080000, 0x6ddf77e5, TAITO_SPRITESA_BYTESWAP }, // 10
3152 { "d84-20.rom", 0x080000, 0xf85041e5, TAITO_SPRITESA_BYTESWAP }, // 11
3153 { "d84-05.rom", 0x200000, 0x31a3c75d, TAITO_SPRITESA }, // 12
3154 { "d84-08.rom", 0x200000, 0x07347bf1, TAITO_SPRITESA }, // 13
3155 { "d84-11.rom", 0x200000, 0xa062c1d4, TAITO_SPRITESA }, // 14
3156 { "d84-21.rom", 0x080000, 0x89f68b66, TAITO_SPRITESA }, // 15
3157
3158 { "d84-12.rom", 0x200000, 0x66a7a9aa, TAITO_CHARS_BYTESWAP }, // 16 Layer Tiles
3159 { "d84-13.rom", 0x200000, 0xae125516, TAITO_CHARS_BYTESWAP }, // 17
3160 { "d84-16.rom", 0x100000, 0xbcff9b2d, TAITO_CHARS_BYTESWAP }, // 18
3161 { "d84-17.rom", 0x100000, 0x0be37cc3, TAITO_CHARS_BYTESWAP }, // 19
3162 { "d84-14.rom", 0x200000, 0x2b2e693e, TAITO_CHARS }, // 20
3163 { "d84-18.rom", 0x100000, 0xe812bcc5, TAITO_CHARS }, // 21
3164
3165 { "d84-26.32", 0x040000, 0x4f5b8563, TAITO_68KROM2_BYTESWAP }, // 22 68k Code
3166 { "d84-27.33", 0x040000, 0xfb0cb1ba, TAITO_68KROM2_BYTESWAP }, // 23
3167
3168 { "d84-01.rom", 0x200000, 0x9ad22149, TAITO_ES5505_BYTESWAP }, // 24 Ensoniq Samples
3169 { "d84-02.rom", 0x200000, 0x9e1827e4, TAITO_ES5505_BYTESWAP }, // 25
3170 { "d84-15.rom", 0x100000, 0x31ceb152, TAITO_ES5505_BYTESWAP }, // 26
3171 };
3172
3173 STD_ROM_PICK(kaiserkn)
STD_ROM_FN(kaiserkn)3174 STD_ROM_FN(kaiserkn)
3175
3176 static INT32 kaiserknInit()
3177 {
3178 return DrvInit(NULL, f3_24bit_palette_update, 0, KAISERKN, 2, 0x408100);
3179 }
3180
3181 struct BurnDriver BurnDrvKaiserkn = {
3182 "kaiserkn", NULL, NULL, NULL, "1994",
3183 "Kaiser Knuckle (Ver 2.1O 1994/07/29)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3184 NULL, NULL, NULL, NULL,
3185 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
3186 NULL, kaiserknRomInfo, kaiserknRomName, NULL, NULL, NULL, NULL, KnInputInfo, KnDIPInfo,
3187 kaiserknInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
3188 320, 224, 4, 3
3189 };
3190
3191
3192 // Kaiser Knuckle (Ver 2.1J 1994/07/29)
3193
3194 static struct BurnRomInfo kaiserknjRomDesc[] = {
3195 { "d84-25.20", 0x080000, 0x2840893f, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3196 { "d84-24.19", 0x080000, 0xbf20c755, TAITO_68KROM1_BYTESWAP32 }, // 1
3197 { "d84-23.18", 0x080000, 0x39f12a9b, TAITO_68KROM1_BYTESWAP32 }, // 2
3198 { "d84-22.17", 0x080000, 0x762f9056, TAITO_68KROM1_BYTESWAP32 }, // 3
3199
3200 { "d84-03.rom", 0x200000, 0xd786f552, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3201 { "d84-04.rom", 0x200000, 0xd1f32b5d, TAITO_SPRITESA_BYTESWAP }, // 5
3202 { "d84-06.rom", 0x200000, 0xfa924dab, TAITO_SPRITESA_BYTESWAP }, // 6
3203 { "d84-07.rom", 0x200000, 0x54517a6b, TAITO_SPRITESA_BYTESWAP }, // 7
3204 { "d84-09.rom", 0x200000, 0xfaa78d98, TAITO_SPRITESA_BYTESWAP }, // 8
3205 { "d84-10.rom", 0x200000, 0xb84b7320, TAITO_SPRITESA_BYTESWAP }, // 9
3206 { "d84-19.rom", 0x080000, 0x6ddf77e5, TAITO_SPRITESA_BYTESWAP }, // 10
3207 { "d84-20.rom", 0x080000, 0xf85041e5, TAITO_SPRITESA_BYTESWAP }, // 11
3208 { "d84-05.rom", 0x200000, 0x31a3c75d, TAITO_SPRITESA }, // 12
3209 { "d84-08.rom", 0x200000, 0x07347bf1, TAITO_SPRITESA }, // 13
3210 { "d84-11.rom", 0x200000, 0xa062c1d4, TAITO_SPRITESA }, // 14
3211 { "d84-21.rom", 0x080000, 0x89f68b66, TAITO_SPRITESA }, // 15
3212
3213 { "d84-12.rom", 0x200000, 0x66a7a9aa, TAITO_CHARS_BYTESWAP }, // 16 Layer Tiles
3214 { "d84-13.rom", 0x200000, 0xae125516, TAITO_CHARS_BYTESWAP }, // 17
3215 { "d84-16.rom", 0x100000, 0xbcff9b2d, TAITO_CHARS_BYTESWAP }, // 18
3216 { "d84-17.rom", 0x100000, 0x0be37cc3, TAITO_CHARS_BYTESWAP }, // 19
3217 { "d84-14.rom", 0x200000, 0x2b2e693e, TAITO_CHARS }, // 20
3218 { "d84-18.rom", 0x100000, 0xe812bcc5, TAITO_CHARS }, // 21
3219
3220 { "d84-26.32", 0x040000, 0x4f5b8563, TAITO_68KROM2_BYTESWAP }, // 22 68k Code
3221 { "d84-27.33", 0x040000, 0xfb0cb1ba, TAITO_68KROM2_BYTESWAP }, // 23
3222
3223 { "d84-01.rom", 0x200000, 0x9ad22149, TAITO_ES5505_BYTESWAP }, // 24 Ensoniq Samples
3224 { "d84-02.rom", 0x200000, 0x9e1827e4, TAITO_ES5505_BYTESWAP }, // 25
3225 { "d84-15.rom", 0x100000, 0x31ceb152, TAITO_ES5505_BYTESWAP }, // 26
3226 };
3227
3228 STD_ROM_PICK(kaiserknj)
3229 STD_ROM_FN(kaiserknj)
3230
3231 struct BurnDriver BurnDrvKaiserknj = {
3232 "kaiserknj", "kaiserkn", NULL, NULL, "1994",
3233 "Kaiser Knuckle (Ver 2.1J 1994/07/29)\0", NULL, "Taito Corporation", "Taito F3 System",
3234 NULL, NULL, NULL, NULL,
3235 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
3236 NULL, kaiserknjRomInfo, kaiserknjRomName, NULL, NULL, NULL, NULL, KnInputInfo, KnDIPInfo,
3237 kaiserknInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
3238 320, 224, 4, 3
3239 };
3240
3241
3242 // Global Champion (Ver 2.1A 1994/07/29)
3243
3244 static struct BurnRomInfo gblchmpRomDesc[] = {
3245 { "d84-25.20", 0x080000, 0x2840893f, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3246 { "d84-24.19", 0x080000, 0xbf20c755, TAITO_68KROM1_BYTESWAP32 }, // 1
3247 { "d84-23.18", 0x080000, 0x39f12a9b, TAITO_68KROM1_BYTESWAP32 }, // 2
3248 { "d84-28.17", 0x080000, 0xef26c1ec, TAITO_68KROM1_BYTESWAP32 }, // 3
3249
3250 { "d84-03.rom", 0x200000, 0xd786f552, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3251 { "d84-04.rom", 0x200000, 0xd1f32b5d, TAITO_SPRITESA_BYTESWAP }, // 5
3252 { "d84-06.rom", 0x200000, 0xfa924dab, TAITO_SPRITESA_BYTESWAP }, // 6
3253 { "d84-07.rom", 0x200000, 0x54517a6b, TAITO_SPRITESA_BYTESWAP }, // 7
3254 { "d84-09.rom", 0x200000, 0xfaa78d98, TAITO_SPRITESA_BYTESWAP }, // 8
3255 { "d84-10.rom", 0x200000, 0xb84b7320, TAITO_SPRITESA_BYTESWAP }, // 9
3256 { "d84-19.rom", 0x080000, 0x6ddf77e5, TAITO_SPRITESA_BYTESWAP }, // 10
3257 { "d84-20.rom", 0x080000, 0xf85041e5, TAITO_SPRITESA_BYTESWAP }, // 11
3258 { "d84-05.rom", 0x200000, 0x31a3c75d, TAITO_SPRITESA }, // 12
3259 { "d84-08.rom", 0x200000, 0x07347bf1, TAITO_SPRITESA }, // 13
3260 { "d84-11.rom", 0x200000, 0xa062c1d4, TAITO_SPRITESA }, // 14
3261 { "d84-21.rom", 0x080000, 0x89f68b66, TAITO_SPRITESA }, // 15
3262
3263 { "d84-12.rom", 0x200000, 0x66a7a9aa, TAITO_CHARS_BYTESWAP }, // 16 Layer Tiles
3264 { "d84-13.rom", 0x200000, 0xae125516, TAITO_CHARS_BYTESWAP }, // 17
3265 { "d84-16.rom", 0x100000, 0xbcff9b2d, TAITO_CHARS_BYTESWAP }, // 18
3266 { "d84-17.rom", 0x100000, 0x0be37cc3, TAITO_CHARS_BYTESWAP }, // 19
3267 { "d84-14.rom", 0x200000, 0x2b2e693e, TAITO_CHARS }, // 20
3268 { "d84-18.rom", 0x100000, 0xe812bcc5, TAITO_CHARS }, // 21
3269
3270 { "d84-26.32", 0x040000, 0x4f5b8563, TAITO_68KROM2_BYTESWAP }, // 22 68k Code
3271 { "d84-27.33", 0x040000, 0xfb0cb1ba, TAITO_68KROM2_BYTESWAP }, // 23
3272
3273 { "d84-01.rom", 0x200000, 0x9ad22149, TAITO_ES5505_BYTESWAP }, // 24 Ensoniq Samples
3274 { "d84-02.rom", 0x200000, 0x9e1827e4, TAITO_ES5505_BYTESWAP }, // 25
3275 { "d84-15.rom", 0x100000, 0x31ceb152, TAITO_ES5505_BYTESWAP }, // 26
3276 };
3277
3278 STD_ROM_PICK(gblchmp)
3279 STD_ROM_FN(gblchmp)
3280
3281 struct BurnDriver BurnDrvGblchmp = {
3282 "gblchmp", "kaiserkn", NULL, NULL, "1994",
3283 "Global Champion (Ver 2.1A 1994/07/29)\0", NULL, "Taito America Corporation", "Taito F3 System",
3284 NULL, NULL, NULL, NULL,
3285 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
3286 NULL, gblchmpRomInfo, gblchmpRomName, NULL, NULL, NULL, NULL, KnInputInfo, KnDIPInfo,
3287 kaiserknInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
3288 320, 224, 4, 3
3289 };
3290
3291
3292 // Dan-Ku-Ga (Ver 0.0J 1994/12/13) (Prototype)
3293
3294 static struct BurnRomInfo dankugaRomDesc[] = {
3295 { "dkg_mpr3.20", 0x080000, 0xee1531ca, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3296 { "dkg_mpr2.19", 0x080000, 0x18a4748b, TAITO_68KROM1_BYTESWAP32 }, // 1
3297 { "dkg_mpr1.18", 0x080000, 0x97566f69, TAITO_68KROM1_BYTESWAP32 }, // 2
3298 { "dkg_mpr0.17", 0x080000, 0xad6ada07, TAITO_68KROM1_BYTESWAP32 }, // 3
3299
3300 { "d84-03.rom", 0x200000, 0xd786f552, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3301 { "d84-04.rom", 0x200000, 0xd1f32b5d, TAITO_SPRITESA_BYTESWAP }, // 5
3302 { "d84-06.rom", 0x200000, 0xfa924dab, TAITO_SPRITESA_BYTESWAP }, // 6
3303 { "d84-07.rom", 0x200000, 0x54517a6b, TAITO_SPRITESA_BYTESWAP }, // 7
3304 { "d84-09.rom", 0x200000, 0xfaa78d98, TAITO_SPRITESA_BYTESWAP }, // 8
3305 { "d84-10.rom", 0x200000, 0xb84b7320, TAITO_SPRITESA_BYTESWAP }, // 9
3306 { "d84-19.rom", 0x080000, 0x6ddf77e5, TAITO_SPRITESA_BYTESWAP }, // 10
3307 { "d84-20.rom", 0x080000, 0xf85041e5, TAITO_SPRITESA_BYTESWAP }, // 11
3308 { "d84-05.rom", 0x200000, 0x31a3c75d, TAITO_SPRITESA }, // 12
3309 { "d84-08.rom", 0x200000, 0x07347bf1, TAITO_SPRITESA }, // 13
3310 { "d84-11.rom", 0x200000, 0xa062c1d4, TAITO_SPRITESA }, // 14
3311 { "d84-21.rom", 0x080000, 0x89f68b66, TAITO_SPRITESA }, // 15
3312
3313 { "d84-12.rom", 0x200000, 0x66a7a9aa, TAITO_CHARS_BYTESWAP }, // 16 Layer Tiles
3314 { "d84-13.rom", 0x200000, 0xae125516, TAITO_CHARS_BYTESWAP }, // 17
3315 { "d84-16.rom", 0x100000, 0xbcff9b2d, TAITO_CHARS_BYTESWAP }, // 18
3316 { "d84-17.rom", 0x100000, 0x0be37cc3, TAITO_CHARS_BYTESWAP }, // 19
3317 { "d84-14.rom", 0x200000, 0x2b2e693e, TAITO_CHARS }, // 20
3318 { "d84-18.rom", 0x100000, 0xe812bcc5, TAITO_CHARS }, // 21
3319
3320 { "d84-26.32", 0x040000, 0x4f5b8563, TAITO_68KROM2_BYTESWAP }, // 22 68k Code
3321 { "d84-27.33", 0x040000, 0xfb0cb1ba, TAITO_68KROM2_BYTESWAP }, // 23
3322
3323 { "d84-01.rom", 0x200000, 0x9ad22149, TAITO_ES5505_BYTESWAP }, // 24 Ensoniq Samples
3324 { "d84-02.rom", 0x200000, 0x9e1827e4, TAITO_ES5505_BYTESWAP }, // 25
3325 { "d84-15.rom", 0x100000, 0x31ceb152, TAITO_ES5505_BYTESWAP }, // 26
3326 };
3327
3328 STD_ROM_PICK(dankuga)
3329 STD_ROM_FN(dankuga)
3330
3331 struct BurnDriver BurnDrvDankuga = {
3332 "dankuga", NULL, NULL, NULL, "1994",
3333 "Dan-Ku-Ga (Ver 0.0J 1994/12/13) (Prototype)\0", "Missing graphics are normal in this prototype", "Taito Corporation", "Taito F3 System",
3334 NULL, NULL, NULL, NULL,
3335 BDF_GAME_WORKING | BDF_PROTOTYPE, 2, HARDWARE_TAITO_MISC, GBF_VSFIGHT, 0,
3336 NULL, dankugaRomInfo, dankugaRomName, NULL, NULL, NULL, NULL, KnInputInfo, KnDIPInfo,
3337 kaiserknInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
3338 320, 224, 4, 3
3339 };
3340
3341
3342 // Darius Gaiden - Silver Hawk (Ver 2.5O 1994/09/19)
3343
3344 static struct BurnRomInfo dariusgRomDesc[] = {
3345 { "d87-12.bin", 0x080000, 0xde78f328, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3346 { "d87-11.bin", 0x080000, 0xf7bed18e, TAITO_68KROM1_BYTESWAP32 }, // 1
3347 { "d87-10.bin", 0x080000, 0x4149f66f, TAITO_68KROM1_BYTESWAP32 }, // 2
3348 { "d87-16.bin", 0x080000, 0x8f7e5901, TAITO_68KROM1_BYTESWAP32 }, // 3
3349
3350 { "d87-03.bin", 0x200000, 0x4be1666e, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3351 { "d87-04.bin", 0x200000, 0x2616002c, TAITO_SPRITESA_BYTESWAP }, // 5
3352 { "d87-05.bin", 0x200000, 0x4e5891a9, TAITO_SPRITESA }, // 6
3353
3354 { "d87-06.bin", 0x200000, 0x3b97a07c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3355 { "d87-17.bin", 0x200000, 0xe601d63e, TAITO_CHARS_BYTESWAP }, // 8
3356 { "d87-08.bin", 0x200000, 0x76d23602, TAITO_CHARS }, // 9
3357
3358 { "d87-13.bin", 0x040000, 0x15b1fff4, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3359 { "d87-14.bin", 0x040000, 0xeecda29a, TAITO_68KROM2_BYTESWAP }, // 11
3360
3361 { "d87-01.bin", 0x200000, 0x3848a110, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3362 { "d87-02.bin", 0x200000, 0x9250abae, TAITO_ES5505_BYTESWAP }, // 13
3363 };
3364
3365 STD_ROM_PICK(dariusg)
STD_ROM_FN(dariusg)3366 STD_ROM_FN(dariusg)
3367
3368 static INT32 dariusgInit()
3369 {
3370 return DrvInit(NULL, f3_24bit_palette_update, 0, DARIUSG, 1, 0x406baa);
3371 }
3372
3373 struct BurnDriver BurnDrvDariusg = {
3374 "dariusg", NULL, NULL, NULL, "1994",
3375 "Darius Gaiden - Silver Hawk (Ver 2.5O 1994/09/19)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3376 NULL, NULL, NULL, NULL,
3377 BDF_GAME_WORKING | BDF_HISCORE_SUPPORTED, 2, HARDWARE_TAITO_MISC, GBF_HORSHOOT, 0,
3378 NULL, dariusgRomInfo, dariusgRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3379 dariusgInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
3380 320, 232, 4, 3
3381 };
3382
3383
3384 // Darius Gaiden - Silver Hawk (Ver 2.5J 1994/09/19)
3385
3386 static struct BurnRomInfo dariusgjRomDesc[] = {
3387 { "d87-12.bin", 0x080000, 0xde78f328, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3388 { "d87-11.bin", 0x080000, 0xf7bed18e, TAITO_68KROM1_BYTESWAP32 }, // 1
3389 { "d87-10.bin", 0x080000, 0x4149f66f, TAITO_68KROM1_BYTESWAP32 }, // 2
3390 { "d87-09.bin", 0x080000, 0x6170382d, TAITO_68KROM1_BYTESWAP32 }, // 3
3391
3392 { "d87-03.bin", 0x200000, 0x4be1666e, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3393 { "d87-04.bin", 0x200000, 0x2616002c, TAITO_SPRITESA_BYTESWAP }, // 5
3394 { "d87-05.bin", 0x200000, 0x4e5891a9, TAITO_SPRITESA }, // 6
3395
3396 { "d87-06.bin", 0x200000, 0x3b97a07c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3397 { "d87-17.bin", 0x200000, 0xe601d63e, TAITO_CHARS_BYTESWAP }, // 8
3398 { "d87-08.bin", 0x200000, 0x76d23602, TAITO_CHARS }, // 9
3399
3400 { "d87-13.bin", 0x040000, 0x15b1fff4, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3401 { "d87-14.bin", 0x040000, 0xeecda29a, TAITO_68KROM2_BYTESWAP }, // 11
3402
3403 { "d87-01.bin", 0x200000, 0x3848a110, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3404 { "d87-02.bin", 0x200000, 0x9250abae, TAITO_ES5505_BYTESWAP }, // 13
3405 };
3406
3407 STD_ROM_PICK(dariusgj)
3408 STD_ROM_FN(dariusgj)
3409
3410 struct BurnDriver BurnDrvDariusgj = {
3411 "dariusgj", "dariusg", NULL, NULL, "1994",
3412 "Darius Gaiden - Silver Hawk (Ver 2.5J 1994/09/19)\0", NULL, "Taito Corporation", "Taito F3 System",
3413 NULL, NULL, NULL, NULL,
3414 BDF_GAME_WORKING | BDF_CLONE | BDF_HISCORE_SUPPORTED, 2, HARDWARE_TAITO_MISC, GBF_HORSHOOT, 0,
3415 NULL, dariusgjRomInfo, dariusgjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3416 dariusgInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
3417 320, 232, 4, 3
3418 };
3419
3420
3421 // Darius Gaiden - Silver Hawk (Ver 2.5A 1994/09/19)
3422
3423 static struct BurnRomInfo dariusguRomDesc[] = {
3424 { "d87-12.bin", 0x080000, 0xde78f328, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3425 { "d87-11.bin", 0x080000, 0xf7bed18e, TAITO_68KROM1_BYTESWAP32 }, // 1
3426 { "d87-10.bin", 0x080000, 0x4149f66f, TAITO_68KROM1_BYTESWAP32 }, // 2
3427 { "d87-15.bin", 0x080000, 0xf8796997, TAITO_68KROM1_BYTESWAP32 }, // 3
3428
3429 { "d87-03.bin", 0x200000, 0x4be1666e, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3430 { "d87-04.bin", 0x200000, 0x2616002c, TAITO_SPRITESA_BYTESWAP }, // 5
3431 { "d87-05.bin", 0x200000, 0x4e5891a9, TAITO_SPRITESA }, // 6
3432
3433 { "d87-06.bin", 0x200000, 0x3b97a07c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3434 { "d87-17.bin", 0x200000, 0xe601d63e, TAITO_CHARS_BYTESWAP }, // 8
3435 { "d87-08.bin", 0x200000, 0x76d23602, TAITO_CHARS }, // 9
3436
3437 { "d87-13.bin", 0x040000, 0x15b1fff4, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3438 { "d87-14.bin", 0x040000, 0xeecda29a, TAITO_68KROM2_BYTESWAP }, // 11
3439
3440 { "d87-01.bin", 0x200000, 0x3848a110, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3441 { "d87-02.bin", 0x200000, 0x9250abae, TAITO_ES5505_BYTESWAP }, // 13
3442 };
3443
3444 STD_ROM_PICK(dariusgu)
3445 STD_ROM_FN(dariusgu)
3446
3447 struct BurnDriver BurnDrvDariusgu = {
3448 "dariusgu", "dariusg", NULL, NULL, "1994",
3449 "Darius Gaiden - Silver Hawk (Ver 2.5A 1994/09/19)\0", NULL, "Taito America Corporation", "Taito F3 System",
3450 NULL, NULL, NULL, NULL,
3451 BDF_GAME_WORKING | BDF_CLONE | BDF_HISCORE_SUPPORTED, 2, HARDWARE_TAITO_MISC, GBF_HORSHOOT, 0,
3452 NULL, dariusguRomInfo, dariusguRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3453 dariusgInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
3454 320, 232, 4, 3
3455 };
3456
3457
3458 // Darius Gaiden - Silver Hawk Extra Version (Ver 2.7J 1995/03/06) (Official Hack)
3459
3460 static struct BurnRomInfo dariusgxRomDesc[] = {
3461 { "dge_mpr3.bin", 0x080000, 0x1c1e24a7, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3462 { "dge_mpr2.bin", 0x080000, 0x7be23e23, TAITO_68KROM1_BYTESWAP32 }, // 1
3463 { "dge_mpr1.bin", 0x080000, 0xbc030f6f, TAITO_68KROM1_BYTESWAP32 }, // 2
3464 { "dge_mpr0.bin", 0x080000, 0xc5bd135c, TAITO_68KROM1_BYTESWAP32 }, // 3
3465
3466 { "d87-03.bin", 0x200000, 0x4be1666e, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3467 { "d87-04.bin", 0x200000, 0x2616002c, TAITO_SPRITESA_BYTESWAP }, // 5
3468 { "d87-05.bin", 0x200000, 0x4e5891a9, TAITO_SPRITESA }, // 6
3469
3470 { "d87-06.bin", 0x200000, 0x3b97a07c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3471 { "d87-17.bin", 0x200000, 0xe601d63e, TAITO_CHARS_BYTESWAP }, // 8
3472 { "d87-08.bin", 0x200000, 0x76d23602, TAITO_CHARS }, // 9
3473
3474 { "d87-13.bin", 0x040000, 0x15b1fff4, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3475 { "d87-14.bin", 0x040000, 0xeecda29a, TAITO_68KROM2_BYTESWAP }, // 11
3476
3477 { "d87-01.bin", 0x200000, 0x3848a110, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3478 { "d87-02.bin", 0x200000, 0x9250abae, TAITO_ES5505_BYTESWAP }, // 13
3479 };
3480
3481 STD_ROM_PICK(dariusgx)
3482 STD_ROM_FN(dariusgx)
3483
3484 struct BurnDriver BurnDrvDariusgx = {
3485 "dariusgx", NULL, NULL, NULL, "1994",
3486 "Darius Gaiden - Silver Hawk Extra Version (Ver 2.7J 1995/03/06) (Official Hack)\0", NULL, "Taito Corporation", "Taito F3 System",
3487 NULL, NULL, NULL, NULL,
3488 BDF_GAME_WORKING | BDF_HISCORE_SUPPORTED, 2, HARDWARE_TAITO_MISC, GBF_HORSHOOT, 0,
3489 NULL, dariusgxRomInfo, dariusgxRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3490 dariusgInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
3491 320, 232, 4, 3
3492 };
3493
3494
3495 // Bubble Bobble II (Ver 2.6O 1994/12/16)
3496
3497 static struct BurnRomInfo bublbob2RomDesc[] = {
3498 { "d90-21.ic20", 0x040000, 0x2a2b771a, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3499 { "d90-20.ic19", 0x040000, 0xf01f63b6, TAITO_68KROM1_BYTESWAP32 }, // 1
3500 { "d90-19.ic18", 0x040000, 0x86eef19a, TAITO_68KROM1_BYTESWAP32 }, // 2
3501 { "d90-18.ic17", 0x040000, 0xf5b8cdce, TAITO_68KROM1_BYTESWAP32 }, // 3
3502
3503 { "d90-03", 0x100000, 0x6fa894a1, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3504 { "d90-02", 0x100000, 0x5ab04ca2, TAITO_SPRITESA_BYTESWAP }, // 5
3505 { "d90-01", 0x100000, 0x8aedb9e5, TAITO_SPRITESA }, // 6
3506
3507 { "d90-08", 0x100000, 0x25a4fb2c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3508 { "d90-07", 0x100000, 0xb436b42d, TAITO_CHARS_BYTESWAP }, // 8
3509 { "d90-06", 0x100000, 0x166a72b8, TAITO_CHARS }, // 9
3510
3511 { "d90-13.ic32",0x040000, 0x6762bd90, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3512 { "d90-14.ic33",0x040000, 0x8e33357e, TAITO_68KROM2_BYTESWAP }, // 11
3513
3514 { "d90-04", 0x200000, 0xfeee5fda, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3515 { "d90-05", 0x200000, 0xc192331f, TAITO_ES5505_BYTESWAP }, // 13
3516
3517 { "d77-14_palce16v8q-15.ic21.bin", 0x117, 0x2c798a1c, BRF_OPT }, // 14 plds
3518 { "d77-12_palce16v8q-15.ic48.bin", 0x117, 0xb1cc6195, BRF_OPT }, // 15
3519 { "d77-11_palce16v8q-15.ic37.bin", 0x117, 0xa733f0de, BRF_OPT }, // 16
3520 };
3521
3522 STD_ROM_PICK(bublbob2)
STD_ROM_FN(bublbob2)3523 STD_ROM_FN(bublbob2)
3524
3525 static INT32 bublbob2Init()
3526 {
3527 return DrvInit(NULL, f3_24bit_palette_update, 1, BUBSYMPH, 1, 0x41f3fc);
3528 }
3529
3530 struct BurnDriver BurnDrvBublbob2 = {
3531 "bublbob2", NULL, NULL, NULL, "1994",
3532 "Bubble Bobble II (Ver 2.6O 1994/12/16)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3533 NULL, NULL, NULL, NULL,
3534 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3535 NULL, bublbob2RomInfo, bublbob2RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3536 bublbob2Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3537 320, 224, 4, 3
3538 };
3539
3540
3541 // Bubble Bobble II (Ver 2.5O 1994/10/05)
3542
3543 static struct BurnRomInfo bublbob2oRomDesc[] = {
3544 { "d90-12", 0x040000, 0x9e523996, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3545 { "d90-11", 0x040000, 0xedfdbb7f, TAITO_68KROM1_BYTESWAP32 }, // 1
3546 { "d90-10", 0x040000, 0x8e957d3d, TAITO_68KROM1_BYTESWAP32 }, // 2
3547 { "d90-17", 0x040000, 0x711f1894, TAITO_68KROM1_BYTESWAP32 }, // 3
3548
3549 { "d90-03", 0x100000, 0x6fa894a1, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3550 { "d90-02", 0x100000, 0x5ab04ca2, TAITO_SPRITESA_BYTESWAP }, // 5
3551 { "d90-01", 0x100000, 0x8aedb9e5, TAITO_SPRITESA }, // 6
3552
3553 { "d90-08", 0x100000, 0x25a4fb2c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3554 { "d90-07", 0x100000, 0xb436b42d, TAITO_CHARS_BYTESWAP }, // 8
3555 { "d90-06", 0x100000, 0x166a72b8, TAITO_CHARS }, // 9
3556
3557 { "d90-13.ic32",0x040000, 0x6762bd90, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3558 { "d90-14.ic33",0x040000, 0x8e33357e, TAITO_68KROM2_BYTESWAP }, // 11
3559
3560 { "d90-04", 0x200000, 0xfeee5fda, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3561 { "d90-05", 0x200000, 0xc192331f, TAITO_ES5505_BYTESWAP }, // 13
3562 };
3563
3564 STD_ROM_PICK(bublbob2o)
3565 STD_ROM_FN(bublbob2o)
3566
3567 struct BurnDriver BurnDrvBublbob2o = {
3568 "bublbob2o", "bublbob2", NULL, NULL, "1994",
3569 "Bubble Bobble II (Ver 2.5O 1994/10/05)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3570 NULL, NULL, NULL, NULL,
3571 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3572 NULL, bublbob2oRomInfo, bublbob2oRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3573 bublbob2Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3574 320, 224, 4, 3
3575 };
3576
3577
3578 // Bubble Symphony (Ver 2.5O 1994/10/05)
3579
3580 static struct BurnRomInfo bubsympheRomDesc[] = {
3581 { "d90-12", 0x040000, 0x9e523996, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3582 { "d90-11", 0x040000, 0xedfdbb7f, TAITO_68KROM1_BYTESWAP32 }, // 1
3583 { "d90-10", 0x040000, 0x8e957d3d, TAITO_68KROM1_BYTESWAP32 }, // 2
3584 { "d90-16", 0x040000, 0xd12ef19b, TAITO_68KROM1_BYTESWAP32 }, // 3
3585
3586 { "d90-03", 0x100000, 0x6fa894a1, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3587 { "d90-02", 0x100000, 0x5ab04ca2, TAITO_SPRITESA_BYTESWAP }, // 5
3588 { "d90-01", 0x100000, 0x8aedb9e5, TAITO_SPRITESA }, // 6
3589
3590 { "d90-08", 0x100000, 0x25a4fb2c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3591 { "d90-07", 0x100000, 0xb436b42d, TAITO_CHARS_BYTESWAP }, // 8
3592 { "d90-06", 0x100000, 0x166a72b8, TAITO_CHARS }, // 9
3593
3594 { "d90-13.ic32",0x040000, 0x6762bd90, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3595 { "d90-14.ic33",0x040000, 0x8e33357e, TAITO_68KROM2_BYTESWAP }, // 11
3596
3597 { "d90-04", 0x200000, 0xfeee5fda, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3598 { "d90-05", 0x200000, 0xc192331f, TAITO_ES5505_BYTESWAP }, // 13
3599 };
3600
3601 STD_ROM_PICK(bubsymphe)
3602 STD_ROM_FN(bubsymphe)
3603
3604 struct BurnDriver BurnDrvBubsymphe = {
3605 "bubsymphe", "bublbob2", NULL, NULL, "1994",
3606 "Bubble Symphony (Ver 2.5O 1994/10/05)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3607 NULL, NULL, NULL, NULL,
3608 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3609 NULL, bubsympheRomInfo, bubsympheRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3610 bublbob2Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3611 320, 224, 4, 3
3612 };
3613
3614
3615 // Bubble Symphony (Ver 2.5J 1994/10/05)
3616
3617 static struct BurnRomInfo bubsymphjRomDesc[] = {
3618 { "d90-12", 0x040000, 0x9e523996, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3619 { "d90-11", 0x040000, 0xedfdbb7f, TAITO_68KROM1_BYTESWAP32 }, // 1
3620 { "d90-10", 0x040000, 0x8e957d3d, TAITO_68KROM1_BYTESWAP32 }, // 2
3621 { "d90-09", 0x040000, 0x3f2090b7, TAITO_68KROM1_BYTESWAP32 }, // 3
3622
3623 { "d90-03", 0x100000, 0x6fa894a1, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3624 { "d90-02", 0x100000, 0x5ab04ca2, TAITO_SPRITESA_BYTESWAP }, // 5
3625 { "d90-01", 0x100000, 0x8aedb9e5, TAITO_SPRITESA }, // 6
3626
3627 { "d90-08", 0x100000, 0x25a4fb2c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
3628 { "d90-07", 0x100000, 0xb436b42d, TAITO_CHARS_BYTESWAP }, // 8
3629 { "d90-06", 0x100000, 0x166a72b8, TAITO_CHARS }, // 9
3630
3631 { "d90-13.ic32",0x040000, 0x6762bd90, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
3632 { "d90-14.ic33",0x040000, 0x8e33357e, TAITO_68KROM2_BYTESWAP }, // 11
3633
3634 { "d90-04", 0x200000, 0xfeee5fda, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
3635 { "d90-05", 0x200000, 0xc192331f, TAITO_ES5505_BYTESWAP }, // 13
3636
3637 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, BRF_OPT }, // 14 plds
3638 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, BRF_OPT }, // 15
3639 { "palce16v8q-d77-11.bin", 0x000117, 0xeacc294e, BRF_OPT }, // 16
3640 { "palce16v8q-d77-12.bin", 0x000117, 0xe9920cfe, BRF_OPT }, // 17
3641 { "palce16v8q-d77-14.bin", 0x000117, 0x7427e777, BRF_OPT }, // 18
3642 };
3643
3644 STD_ROM_PICK(bubsymphj)
3645 STD_ROM_FN(bubsymphj)
3646
3647 struct BurnDriver BurnDrvBubsymphj = {
3648 "bubsymphj", "bublbob2", NULL, NULL, "1994",
3649 "Bubble Symphony (Ver 2.5J 1994/10/05)\0", NULL, "Taito Corporation", "Taito F3 System",
3650 NULL, NULL, NULL, NULL,
3651 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3652 NULL, bubsymphjRomInfo, bubsymphjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3653 bublbob2Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3654 320, 224, 4, 3
3655 };
3656
3657
3658 // Bubble Bobble II (Ver 0.0J 1993/12/13, prototype)
3659
3660 static struct BurnRomInfo bublbob2pRomDesc[] = {
3661 { "soft-3-8c9b.ic60", 0x40000, 0x15d0594e, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3662 { "soft-2-0587.ic61", 0x40000, 0xd1a5231f, TAITO_68KROM1_BYTESWAP32 }, // 1
3663 { "soft-1-9a9c.ic62", 0x40000, 0xc11a4d26, TAITO_68KROM1_BYTESWAP32 }, // 2
3664 { "soft-0-a523.ic63", 0x40000, 0x58131f9e, TAITO_68KROM1_BYTESWAP32 }, // 3
3665
3666 { "cq80-obj-0l-c166.ic8", 0x80000, 0x9bff223b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
3667 { "cq80-obj-0m-24f4.ic30", 0x80000, 0xee71f643, TAITO_SPRITESA_BYTESWAP }, // 5
3668 { "cq80-obj-0h-990d.ic32", 0x80000, 0x4d3a78e0, TAITO_SPRITESA }, // 6
3669
3670 { "cq80-scr0-5ba4.ic7", 0x80000, 0x044dc38b, TAITO_CHARS_BYTESWAP32 }, // 7 Layer Tiles
3671 { "cq80-scr2-cc11.ic5", 0x80000, 0xb81aa2c7, TAITO_CHARS_BYTESWAP32 }, // 8
3672 { "cq80-scr1-a5f3.ic6", 0x80000, 0x3cf3a3ba, TAITO_CHARS_BYTESWAP32 }, // 9
3673 { "cq80-scr3-4266.ic4", 0x80000, 0xc114583f, TAITO_CHARS_BYTESWAP32 }, // 10
3674 { "cq80-scr4-7fe1.ic3", 0x80000, 0x2bba1728, TAITO_CHARS_BYTESWAP }, // 11
3675
3676 { "snd-h-348f.ic66", 0x20000, 0xf66e60f2, TAITO_68KROM2_BYTESWAP }, // 12 68k Code
3677 { "snd-l-4ec1.ic65", 0x20000, 0xd302d8bc, TAITO_68KROM2_BYTESWAP }, // 13
3678
3679 { "cq80-snd-data0-7b5f.ic43", 0x80000, 0xbf8f26d3, TAITO_ES5505_BYTESWAP }, // 14 Ensoniq Samples
3680 { "cq80-snd-data1-933b.ic44", 0x80000, 0x62b00475, TAITO_ES5505_BYTESWAP }, // 15
3681 { "cq80-snd3-std5-3a9c.ic10", 0x80000, 0x26312451, TAITO_ES5505_BYTESWAP }, // 16
3682 { "cq80-snd2-std6-a148.ic11", 0x80000, 0x2edaa9dc, TAITO_ES5505_BYTESWAP }, // 17
3683
3684 { "bb2proto-ic12.bin", 0x002e5, 0xacf20b88, 0 | BRF_OPT }, // 18 pals
3685 { "bb2proto-ic24.bin", 0x002e5, 0xd15a4987, 0 | BRF_OPT }, // 19
3686 { "pal16l8b.ic57.bin", 0x00104, 0x74b4d8be, 0 | BRF_OPT }, // 20
3687 { "pal16l8b.ic58.bin", 0x00104, 0x17e2c9b8, 0 | BRF_OPT }, // 21
3688 { "pal16l8b.ic59.bin", 0x00104, 0xdc0db200, 0 | BRF_OPT }, // 22
3689 { "pal16l8b.ic64.bin", 0x00104, 0x3aed3d98, 0 | BRF_OPT }, // 23
3690 };
3691
3692 STD_ROM_PICK(bublbob2p)
STD_ROM_FN(bublbob2p)3693 STD_ROM_FN(bublbob2p)
3694
3695 static INT32 bublbob2pRomCallback()
3696 {
3697 memcpy (TaitoES5505Rom + 0x600000, TaitoES5505Rom + 0x200000, 0x200000);
3698 memset (TaitoES5505Rom + 0x200000, 0, 0x200000);
3699
3700 return 0;
3701 }
3702
bublbob2pInit()3703 static INT32 bublbob2pInit()
3704 {
3705 return DrvInit(bublbob2pRomCallback, f3_24bit_palette_update, 1, BUBSYMPH, 1, 0);
3706 }
3707
3708 struct BurnDriver BurnDrvBublbob2p = {
3709 "bublbob2p", "bublbob2", NULL, NULL, "1994",
3710 "Bubble Bobble II (Ver 0.0J 1993/12/13, prototype)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
3711 NULL, NULL, NULL, NULL,
3712 BDF_GAME_WORKING | BDF_CLONE | BDF_PROTOTYPE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3713 NULL, bublbob2pRomInfo, bublbob2pRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3714 bublbob2pInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3715 320, 224, 4, 3
3716 };
3717
3718
3719 // Bubble Symphony (bootleg with OKI6295)
3720
3721 static struct BurnRomInfo bubsymphbRomDesc[] = {
3722 { "bsb_d12.bin", 0x40000, 0xd05160fc, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3723 { "bsb_d13.bin", 0x40000, 0x83fc0d2c, TAITO_68KROM1_BYTESWAP32 }, // 1
3724 { "bsb_d14.bin", 0x40000, 0xe6d49bb7, TAITO_68KROM1_BYTESWAP32 }, // 2
3725 { "bsb_d15.bin", 0x40000, 0x014cf8e0, TAITO_68KROM1_BYTESWAP32 }, // 3
3726
3727 { "bsb_d18.bin", 0x80000, 0x22d7eeb5, TAITO_SPRITESA }, // 4 Sprites
3728 { "bsb_d19.bin", 0x80000, 0xd36801fd, TAITO_SPRITESA }, // 5
3729 { "bsb_d20.bin", 0x80000, 0x20222e15, TAITO_SPRITESA }, // 6
3730 { "bsb_d17.bin", 0x80000, 0xea2eadfc, TAITO_SPRITESA }, // 7
3731 { "bsb_d16.bin", 0x80000, 0xedccd4e0, TAITO_SPRITESA }, // 8
3732
3733 { "bsb_d13b.bin", 0x80000, 0x430af2aa, TAITO_CHARS }, // 9 Layer Tiles
3734 { "bsb_d14b.bin", 0x80000, 0xc006e832, TAITO_CHARS }, // 10
3735 { "bsb_d15b.bin", 0x80000, 0x74644ad4, TAITO_CHARS }, // 11
3736 { "bsb_d12b.bin", 0x80000, 0xcb2e2abb, TAITO_CHARS }, // 12
3737 { "bsb_d11b.bin", 0x80000, 0xd0607829, TAITO_CHARS }, // 13
3738
3739 { "bsb_d11.bin", 0x80000, 0x26bdc617, TAITO_MSM6295 }, // 14 oki
3740 };
3741
3742 STD_ROM_PICK(bubsymphb)
STD_ROM_FN(bubsymphb)3743 STD_ROM_FN(bubsymphb)
3744
3745 static void bootlegpatch()
3746 {
3747 Taito68KRom1[0xed9ca] = 0x6d; // 2d
3748 Taito68KRom1[0xed9cb] = 0x4a; // 30
3749 Taito68KRom1[0xed9cc] = 0x00; // 8c
3750 Taito68KRom1[0xed9cd] = 0x80; // 82
3751 Taito68KRom1[0xed9ce] = 0x00; // 02
3752 Taito68KRom1[0xed9cf] = 0x66; // 6a
3753 Taito68KRom1[0xed9d0] = 0xcc; // 40
3754 Taito68KRom1[0xed9d1] = 0x00; // 44
3755 Taito68KRom1[0xed9d2] = 0x2d; // 40
3756 Taito68KRom1[0xed9d3] = 0x30; // 04
3757 Taito68KRom1[0xed9d4] = 0x8c; // 1a
3758 Taito68KRom1[0xed9d5] = 0x82; // 00
3759 Taito68KRom1[0xed9d6] = 0x40; // c0
3760 Taito68KRom1[0xed9d7] = 0x06; // 33
3761 Taito68KRom1[0xed9d8] = 0x29; // 66
3762 Taito68KRom1[0xed9da] = 0xc0; // 18
3763 Taito68KRom1[0xed9db] = 0x33; // 00
3764 Taito68KRom1[0xed9dc] = 0x66; // 2d
3765 Taito68KRom1[0xed9dd] = 0x00; // 30
3766 Taito68KRom1[0xed9de] = 0x18; // a0
3767 Taito68KRom1[0xed9df] = 0x00; // 82
3768 Taito68KRom1[0xed9e0] = 0x2d; // 02
3769 Taito68KRom1[0xed9e1] = 0x30; // 6a
3770 Taito68KRom1[0xed9e2] = 0xa0; // 40
3771 Taito68KRom1[0xed9e3] = 0x82; // 44
3772 Taito68KRom1[0xed9e5] = 0x06; // 04
3773 Taito68KRom1[0xed9e6] = 0x1f; // 00
3774 Taito68KRom1[0xed9f4] = 0xd8; // 2c
3775 Taito68KRom1[0xed9f5] = 0xff; // 00
3776 Taito68KRom1[0xeda1c] = 0xdc; // 2d
3777 Taito68KRom1[0xeda1d] = 0xff; // 00
3778 Taito68KRom1[0xeda44] = 0xe0; // 30
3779 Taito68KRom1[0xeda45] = 0xff; // 00
3780 Taito68KRom1[0xeda6c] = 0xe4; // 32
3781 Taito68KRom1[0xeda6d] = 0xff; // 00
3782 Taito68KRom1[0xedaa1] = 0x06; // 04
3783 Taito68KRom1[0xedaa2] = 0x9e; // 10
3784 Taito68KRom1[0xedba8] = 0x29; // f0
3785 Taito68KRom1[0xedba9] = 0x00; // ff
3786
3787 Taito68KRom1[0xee1d0] = 0x3e; // 00 // black backgrounds
3788 Taito68KRom1[0xee1d2] = 0xc0; // 00
3789 Taito68KRom1[0xee1d3] = 0x01; // 00
3790 Taito68KRom1[0xee1d4] = 0xfa; // 75
3791 Taito68KRom1[0xee1d5] = 0x41; // 4e
3792
3793 Taito68KRom1[0xf04e7] = 0x08; // 00 - demo logo
3794 }
3795
DrvGfxDecode()3796 static INT32 DrvGfxDecode()
3797 {
3798 INT32 Plane0[8] = { STEP8(0, 0x080000*8) };
3799 INT32 XOffs0[16] = { STEP8(7,-1), STEP8(15,-1) };
3800 INT32 YOffs0[16] = { STEP16(0,16) };
3801
3802 INT32 Plane1[5] = { 0x200000*8, STEP4(0,1) };
3803 INT32 XOffs1[16] = { 20,16,12,8, 4,0,28,24, 52,48,44,40, 36,32,60,56 };
3804 INT32 YOffs1[16] = { STEP16(0,64) };
3805
3806 UINT8 *tmp = (UINT8*)BurnMalloc(0x400000);
3807 if (tmp == NULL) {
3808 return 1;
3809 }
3810
3811 {
3812 UINT8 *gfx = TaitoChars;
3813
3814 for (INT32 i=0x200000;i<0x400000; i+=4)
3815 {
3816 UINT8 byte = gfx[i];
3817 gfx[i+0] = (byte & 0x80)? 1<<7 : 0<<4;
3818 gfx[i+0]|= (byte & 0x40)? 1<<3 : 0<<0;
3819 gfx[i+1] = (byte & 0x20)? 1<<7 : 0<<4;
3820 gfx[i+1]|= (byte & 0x10)? 1<<3 : 0<<0;
3821 gfx[i+2] = (byte & 0x08)? 1<<7 : 0<<4;
3822 gfx[i+2]|= (byte & 0x04)? 1<<3 : 0<<0;
3823 gfx[i+3] = (byte & 0x02)? 1<<7 : 0<<4;
3824 gfx[i+3]|= (byte & 0x01)? 1<<3 : 0<<0;
3825 }
3826 }
3827
3828 memcpy (tmp, TaitoSpritesA, 0x400000);
3829
3830 GfxDecode(0x4000, 6, 16, 16, Plane0, XOffs0, YOffs0, 0x100, tmp, TaitoSpritesA);
3831
3832 memcpy (tmp, TaitoChars, 0x400000);
3833
3834 GfxDecode(0x4000, 5, 16, 16, Plane1, XOffs1, YOffs1, 0x400, tmp, TaitoChars);
3835
3836 UINT8 tmp2[0x8];
3837
3838 for (INT32 i = 0x200000; i < 0x400000; i+=8) {
3839 memcpy (tmp2, TaitoChars + i, 8);
3840
3841 for (INT32 j = 0; j < 8; j++) {
3842 TaitoChars[i+j] &= 0xf;
3843 TaitoChars[i+j] |= 0x20;
3844 tmp2[j] &= 0x10;
3845 }
3846
3847 TaitoChars[i+0] |= tmp2[6];
3848 TaitoChars[i+1] |= tmp2[7];
3849 TaitoChars[i+2] |= tmp2[0];
3850 TaitoChars[i+3] |= tmp2[1];
3851 TaitoChars[i+4] |= tmp2[2];
3852 TaitoChars[i+5] |= tmp2[3];
3853 TaitoChars[i+6] |= tmp2[4];
3854 TaitoChars[i+7] |= tmp2[5];
3855 }
3856
3857 DrvCalculateTransTable(0x400000,0x400000);
3858
3859 BurnFree(tmp);
3860
3861 return 0;
3862 }
3863
bubsymphbInit()3864 static INT32 bubsymphbInit()
3865 {
3866 f3_game = BUBSYMPH;
3867
3868 TaitoSpriteARomSize = (0x300000 * 8) / 6;
3869 TaitoCharRomSize = 0x400000;
3870 TaitoF3ES5506RomSize = 0x80000;
3871 TaitoSpriteAModulo = (TaitoSpriteARomSize / 0x100);
3872 TaitoCharModulo = (TaitoCharRomSize / 0x100);
3873
3874 MemIndex();
3875 INT32 nLen = TaitoMemEnd - (UINT8 *)0;
3876 if ((TaitoMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1;
3877 memset(TaitoMem, 0, nLen);
3878 MemIndex();
3879
3880 {
3881 if (BurnLoadRom(Taito68KRom1 + 0x000001, 0, 4)) return 1;
3882 if (BurnLoadRom(Taito68KRom1 + 0x000000, 1, 4)) return 1;
3883 if (BurnLoadRom(Taito68KRom1 + 0x000003, 2, 4)) return 1;
3884 if (BurnLoadRom(Taito68KRom1 + 0x000002, 3, 4)) return 1;
3885
3886 if (BurnLoadRom(TaitoSpritesA + 0x080000, 4, 1)) return 1;
3887 if (BurnLoadRom(TaitoSpritesA + 0x100000, 5, 1)) return 1;
3888 if (BurnLoadRom(TaitoSpritesA + 0x180000, 6, 1)) return 1;
3889 if (BurnLoadRom(TaitoSpritesA + 0x200000, 7, 1)) return 1;
3890 if (BurnLoadRom(TaitoSpritesA + 0x280000, 8, 1)) return 1;
3891
3892 if (BurnLoadRom(TaitoChars + 0x000000, 9, 4)) return 1;
3893 if (BurnLoadRom(TaitoChars + 0x000001, 10, 4)) return 1;
3894 if (BurnLoadRom(TaitoChars + 0x000002, 11, 4)) return 1;
3895 if (BurnLoadRom(TaitoChars + 0x000003, 12, 4)) return 1;
3896 if (BurnLoadRom(TaitoChars + 0x200000, 13, 4)) return 1;
3897
3898 if (BurnLoadRom(TaitoF3ES5506Rom, 14, 1)) return 1;
3899
3900 DrvGfxDecode();
3901
3902 bootlegpatch();
3903 }
3904
3905 SekInit(0, 0x68ec020);
3906 SekOpen(0);
3907 SekMapMemory(Taito68KRom1, 0x000000, 0x1fffff, MAP_ROM);
3908 SekMapMemory(Taito68KRam1, 0x400000, 0x41ffff, MAP_RAM);
3909 SekMapMemory(Taito68KRam1, 0x420000, 0x43ffff, MAP_RAM); // mirror
3910 SekMapMemory(TaitoPaletteRam, 0x440000, 0x447fff, MAP_ROM); // write through handler
3911 SekMapMemory(TaitoSpriteRam, 0x600000, 0x60ffff, MAP_RAM);
3912 SekMapMemory(TaitoF3PfRAM, 0x610000, 0x617fff, MAP_ROM); // write through handler
3913 SekMapMemory(TaitoF3PfRAM + 0x8000, 0x618000, 0x61bfff, MAP_RAM);
3914 SekMapMemory(TaitoVideoRam, 0x61c000, 0x61dfff, MAP_RAM);
3915 SekMapMemory(DrvVRAMRAM, 0x61e000, 0x61ffff, MAP_ROM); // write through handler
3916 SekMapMemory(TaitoF3LineRAM, 0x620000, 0x62ffff, MAP_RAM);
3917 SekMapMemory(DrvPivotRAM, 0x630000, 0x63ffff, MAP_ROM); // write through handler
3918 SekMapMemory(TaitoF3CtrlRAM, 0x660000, 0x6603ff, MAP_WRITE); // 0-1f
3919 SekMapMemory(TaitoF3SharedRam, 0xc00000, 0xc007ff, MAP_RAM);
3920 SekSetWriteLongHandler(0, f3_main_write_long);
3921 SekSetWriteWordHandler(0, f3_main_write_word);
3922 SekSetWriteByteHandler(0, f3_main_write_byte);
3923 SekSetReadLongHandler(0, f3_main_read_long);
3924 SekSetReadWordHandler(0, f3_main_read_word);
3925 SekSetReadByteHandler(0, f3_main_read_byte);
3926
3927 SekMapHandler(1, 0x440000, 0x447fff, MAP_WRITE);
3928 SekSetWriteLongHandler(1, f3_palette_write_long);
3929 SekSetWriteWordHandler(1, f3_palette_write_word);
3930 SekSetWriteByteHandler(1, f3_palette_write_byte);
3931
3932 SekMapHandler(2, 0x61e000, 0x61ffff, MAP_WRITE);
3933 SekSetWriteLongHandler(2, f3_VRAM_write_long);
3934 SekSetWriteWordHandler(2, f3_VRAM_write_word);
3935 SekSetWriteByteHandler(2, f3_VRAM_write_byte);
3936
3937 SekMapHandler(3, 0x630000, 0x63ffff, MAP_WRITE);
3938 SekSetWriteLongHandler(3, f3_pivot_write_long);
3939 SekSetWriteWordHandler(3, f3_pivot_write_word);
3940 SekSetWriteByteHandler(3, f3_pivot_write_byte);
3941
3942 SekMapHandler(4, 0x610000, 0x617fff, MAP_WRITE);
3943 SekSetWriteLongHandler(4, f3_playfield_write_long);
3944 SekSetWriteWordHandler(4, f3_playfield_write_word);
3945 SekSetWriteByteHandler(4, f3_playfield_write_byte);
3946 SekClose();
3947
3948 TaitoF3SoundInit(1); // keep us safe from crashes!
3949
3950 MSM6295Init(0, 1000000 / 132, 0);
3951 MSM6295SetRoute(0, 0.80, BURN_SND_ROUTE_BOTH);
3952
3953 EEPROMInit(&eeprom_interface_93C46);
3954 EEPROMIgnoreErrMessage(1);
3955
3956 if (BurnDrvGetFlags() & BDF_ORIENTATION_VERTICAL) {
3957 BurnDrvGetVisibleSize(&nScreenHeight, &nScreenWidth);
3958 } else {
3959 BurnDrvGetVisibleSize(&nScreenWidth, &nScreenHeight);
3960 }
3961
3962 pPaletteUpdateCallback = f3_24bit_palette_update;
3963 extended_layers = 1;
3964 sprite_lag = 1;
3965
3966 TaitoF3VideoInit();
3967
3968 bitmap_width[0] = extended_layers ? 1024 : 512;
3969 bitmap_width[1] = extended_layers ? 1024 : 512;
3970 bitmap_width[2] = extended_layers ? 1024 : 512;
3971 bitmap_width[3] = extended_layers ? 1024 : 512;
3972 bitmap_width[4] = 512;
3973 bitmap_width[5] = 512;
3974 bitmap_width[6] = 512;
3975 bitmap_width[7] = 512;
3976
3977 DrvDoReset(1);
3978
3979 return 0;
3980 }
3981
3982
3983 struct BurnDriverD BurnDrvBubsymphb = {
3984 "bubsymphb", "bublbob2", NULL, NULL, "1994",
3985 "Bubble Symphony (bootleg with OKI6295)\0", NULL, "bootleg", "Taito F3 System",
3986 NULL, NULL, NULL, NULL,
3987 BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
3988 NULL, bubsymphbRomInfo, bubsymphbRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
3989 bubsymphbInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
3990 320, 224, 4, 3
3991 };
3992
3993
3994 // Seoul Symphony (Bubble Symphony bootleg with OKI6295)
3995 // extremely similar to bubsymphb (i.e. the only differences in the program ROMs are copyright removals). 2 PCB set: 70121 MAIN + ROM board
3996
3997 static struct BurnRomInfo bubsymphbaRomDesc[] = {
3998 { "2-27c2000.bin", 0x40000, 0xb26728fa, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
3999 { "3-27c2000.bin", 0x40000, 0xd7406de1, TAITO_68KROM1_BYTESWAP32 }, // 1
4000 { "4-27c2000.bin", 0x40000, 0x5a45a291, TAITO_68KROM1_BYTESWAP32 }, // 2
4001 { "5-27c2000.bin", 0x40000, 0xaad3806b, TAITO_68KROM1_BYTESWAP32 }, // 3
4002
4003 { "8-27c4000.bin", 0x80000, 0x22d7eeb5, TAITO_SPRITESA }, // 4 Sprites
4004 { "9-27c4000.bin", 0x80000, 0xb8f7b1c6, TAITO_SPRITESA }, // 5
4005 { "10-27c4000.bin", 0x80000, 0xd4981f73, TAITO_SPRITESA }, // 6
4006 { "7-27c4000.bin", 0x80000, 0xc1c35f7b, TAITO_SPRITESA }, // 7
4007 { "6-27c4000.bin", 0x80000, 0x35a60e28, TAITO_SPRITESA }, // 8
4008
4009 { "13-27c4000.bin", 0x80000, 0x5d87b202, TAITO_CHARS }, // 9 Layer Tiles
4010 { "12-27c4000.bin", 0x80000, 0x95add6ec, TAITO_CHARS }, // 10
4011 { "11-27c4000.bin", 0x80000, 0x69f814b1, TAITO_CHARS }, // 11
4012 { "14-27c4000.bin", 0x80000, 0x8be51e5a, TAITO_CHARS }, // 12
4013 { "15-27c4000.bin", 0x80000, 0x45b3cf43, TAITO_CHARS }, // 13
4014
4015 { "1-27c4000.bin", 0x80000, 0x26bdc617, TAITO_MSM6295 }, // 14 oki
4016 };
4017
4018 STD_ROM_PICK(bubsymphba)
4019 STD_ROM_FN(bubsymphba)
4020
4021 struct BurnDriverD BurnDrvBubsymphba = {
4022 "bubsymphba", "bublbob2", NULL, NULL, "1994",
4023 "Seoul Symphony (Bubble Symphony bootleg with OKI6295)\0", NULL, "bootleg (SOFTV)", "Taito F3 System",
4024 NULL, NULL, NULL, NULL,
4025 BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
4026 NULL, bubsymphbaRomInfo, bubsymphbaRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4027 bubsymphbInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
4028 320, 224, 4, 3
4029 };
4030
4031
4032 // Bubble Symphony (Ver 2.5A 1994/10/05)
4033
4034 static struct BurnRomInfo bubsymphuRomDesc[] = {
4035 { "d90-12", 0x040000, 0x9e523996, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4036 { "d90-11", 0x040000, 0xedfdbb7f, TAITO_68KROM1_BYTESWAP32 }, // 1
4037 { "d90-10", 0x040000, 0x8e957d3d, TAITO_68KROM1_BYTESWAP32 }, // 2
4038 { "d90-15", 0x040000, 0x06182802, TAITO_68KROM1_BYTESWAP32 }, // 3
4039
4040 { "d90-03", 0x100000, 0x6fa894a1, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4041 { "d90-02", 0x100000, 0x5ab04ca2, TAITO_SPRITESA_BYTESWAP }, // 5
4042 { "d90-01", 0x100000, 0x8aedb9e5, TAITO_SPRITESA }, // 6
4043
4044 { "d90-08", 0x100000, 0x25a4fb2c, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4045 { "d90-07", 0x100000, 0xb436b42d, TAITO_CHARS_BYTESWAP }, // 8
4046 { "d90-06", 0x100000, 0x166a72b8, TAITO_CHARS }, // 9
4047
4048 { "d90-13.ic32",0x040000, 0x6762bd90, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4049 { "d90-14.ic33",0x040000, 0x8e33357e, TAITO_68KROM2_BYTESWAP }, // 11
4050
4051 { "d90-04", 0x200000, 0xfeee5fda, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4052 { "d90-05", 0x200000, 0xc192331f, TAITO_ES5505_BYTESWAP }, // 13
4053 };
4054
4055 STD_ROM_PICK(bubsymphu)
4056 STD_ROM_FN(bubsymphu)
4057
4058 struct BurnDriver BurnDrvBubsymphu = {
4059 "bubsymphu", "bublbob2", NULL, NULL, "1994",
4060 "Bubble Symphony (Ver 2.5A 1994/10/05)\0", NULL, "Taito America Corporation", "Taito F3 System",
4061 NULL, NULL, NULL, NULL,
4062 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
4063 NULL, bubsymphuRomInfo, bubsymphuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4064 bublbob2Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
4065 320, 224, 4, 3
4066 };
4067
4068
4069 // Space Invaders DX (Ver 2.6J 1994/09/14) (F3 Version)
4070
4071 static struct BurnRomInfo spcinvdjRomDesc[] = {
4072 { "d93-04.bin", 0x20000, 0xcd9a4e5c, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4073 { "d93-03.bin", 0x20000, 0x0174bfc1, TAITO_68KROM1_BYTESWAP32 }, // 1
4074 { "d93-02.bin", 0x20000, 0x01922b31, TAITO_68KROM1_BYTESWAP32 }, // 2
4075 { "d93-01.bin", 0x20000, 0x4a74ab1c, TAITO_68KROM1_BYTESWAP32 }, // 3
4076
4077 { "d93-07.12", 0x80000, 0x8cf5b972, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4078 { "d93-08.08", 0x80000, 0x4c11af2b, TAITO_SPRITESA_BYTESWAP }, // 5
4079
4080 { "d93-09.47", 0x20000, 0x9076f663, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4081 { "d93-10.45", 0x20000, 0x8a3f531b, TAITO_CHARS_BYTESWAP }, // 7
4082
4083 { "d93-05.bin", 0x20000, 0xff365596, TAITO_68KROM2_BYTESWAP }, // 8 68k Code
4084 { "d93-06.bin", 0x20000, 0xef7ad400, TAITO_68KROM2_BYTESWAP }, // 9
4085
4086 { "d93-11.38", 0x80000, 0xdf5853de, TAITO_ES5505_BYTESWAP }, // 10 Ensoniq Samples
4087 { "d93-12.39", 0x80000, 0xb0f71d60, TAITO_ES5505_BYTESWAP }, // 11
4088 { "d93-13.40", 0x80000, 0x26312451, TAITO_ES5505_BYTESWAP }, // 12
4089 { "d93-14.41", 0x80000, 0x2edaa9dc, TAITO_ES5505_BYTESWAP }, // 13
4090 };
4091
4092 STD_ROM_PICK(spcinvdj)
STD_ROM_FN(spcinvdj)4093 STD_ROM_FN(spcinvdj)
4094
4095 static INT32 spcinvdjInit()
4096 {
4097 return DrvInit(NULL, f3_12bit_palette_update, 1, SPCINVDX, 1, 0x400218);
4098 }
4099
4100 struct BurnDriver BurnDrvSpcinvdj = {
4101 "spcinvdj", "spacedx", NULL, NULL, "1994",
4102 "Space Invaders DX (Ver 2.6J 1994/09/14) (F3 Version)\0", "Graphics issues in Cellophane mode - use parent!", "Taito Corporation", "Taito F3 System",
4103 NULL, NULL, NULL, NULL,
4104 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
4105 NULL, spcinvdjRomInfo, spcinvdjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4106 spcinvdjInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4107 320, 232, 4, 3
4108 };
4109
4110
4111 // Taito Power Goal (Ver 2.5O 1994/11/03)
4112
4113 static struct BurnRomInfo pwrgoalRomDesc[] = {
4114 { "d94-18.20", 0x040000, 0xb92681c3, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4115 { "d94-17.19", 0x040000, 0x6009333e, TAITO_68KROM1_BYTESWAP32 }, // 1
4116 { "d94-16.18", 0x040000, 0xc6dbc9c8, TAITO_68KROM1_BYTESWAP32 }, // 2
4117 { "d94-22.17", 0x040000, 0xf672e487, TAITO_68KROM1_BYTESWAP32 }, // 3
4118
4119 { "d94-09.bin", 0x200000, 0x425e6bec, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4120 { "d94-06.bin", 0x200000, 0x0ed1df55, TAITO_SPRITESA_BYTESWAP }, // 5
4121 { "d94-08.bin", 0x200000, 0xbd909caf, TAITO_SPRITESA_BYTESWAP }, // 6
4122 { "d94-05.bin", 0x200000, 0x121c8542, TAITO_SPRITESA_BYTESWAP }, // 7
4123 { "d94-07.bin", 0x200000, 0xc8c95e49, TAITO_SPRITESA_BYTESWAP }, // 8
4124 { "d94-04.bin", 0x200000, 0x24958b50, TAITO_SPRITESA_BYTESWAP }, // 9
4125 { "d94-03.bin", 0x200000, 0x95e32072, TAITO_SPRITESA }, // 10
4126 { "d94-02.bin", 0x200000, 0xf460b9ac, TAITO_SPRITESA }, // 11
4127 { "d94-01.bin", 0x200000, 0x410ffccd, TAITO_SPRITESA }, // 12
4128
4129 { "d94-14.bin", 0x100000, 0xb8ba5761, TAITO_CHARS_BYTESWAP }, // 13 Layer Tiles
4130 { "d94-13.bin", 0x100000, 0xcafc68ce, TAITO_CHARS_BYTESWAP }, // 14
4131 { "d94-12.bin", 0x100000, 0x47064189, TAITO_CHARS }, // 15
4132
4133 { "d94-19.bin", 0x040000, 0xc93dbcf4, TAITO_68KROM2_BYTESWAP }, // 16 68k Code
4134 { "d94-20.bin", 0x040000, 0xf232bf64, TAITO_68KROM2_BYTESWAP }, // 17
4135
4136 { "d94-10.bin", 0x200000, 0xa22563ae, TAITO_ES5505_BYTESWAP }, // 18 Ensoniq Samples
4137 { "d94-11.bin", 0x200000, 0x61ed83fa, TAITO_ES5505_BYTESWAP }, // 19
4138 };
4139
4140 STD_ROM_PICK(pwrgoal)
STD_ROM_FN(pwrgoal)4141 STD_ROM_FN(pwrgoal)
4142
4143 static INT32 pwrgoalInit()
4144 {
4145 return DrvInit(NULL, f3_24bit_palette_update, 0, HTHERO95, 1, 0);
4146 }
4147
4148 struct BurnDriver BurnDrvPwrgoal = {
4149 "pwrgoal", NULL, NULL, NULL, "1994",
4150 "Taito Power Goal (Ver 2.5O 1994/11/03)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
4151 NULL, NULL, NULL, NULL,
4152 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
4153 NULL, pwrgoalRomInfo, pwrgoalRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4154 pwrgoalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
4155 320, 224, 4, 3
4156 };
4157
4158
4159 // Hat Trick Hero '95 (Ver 2.5J 1994/11/03)
4160
4161 static struct BurnRomInfo hthero95RomDesc[] = {
4162 { "d94-18.20", 0x040000, 0xb92681c3, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4163 { "d94-17.19", 0x040000, 0x6009333e, TAITO_68KROM1_BYTESWAP32 }, // 1
4164 { "d94-16.18", 0x040000, 0xc6dbc9c8, TAITO_68KROM1_BYTESWAP32 }, // 2
4165 { "d94-15.17", 0x040000, 0x187c85ab, TAITO_68KROM1_BYTESWAP32 }, // 3
4166
4167 { "d94-09.bin", 0x200000, 0x425e6bec, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4168 { "d94-06.bin", 0x200000, 0x0ed1df55, TAITO_SPRITESA_BYTESWAP }, // 5
4169 { "d94-08.bin", 0x200000, 0xbd909caf, TAITO_SPRITESA_BYTESWAP }, // 6
4170 { "d94-05.bin", 0x200000, 0x121c8542, TAITO_SPRITESA_BYTESWAP }, // 7
4171 { "d94-07.bin", 0x200000, 0xc8c95e49, TAITO_SPRITESA_BYTESWAP }, // 8
4172 { "d94-04.bin", 0x200000, 0x24958b50, TAITO_SPRITESA_BYTESWAP }, // 9
4173 { "d94-03.bin", 0x200000, 0x95e32072, TAITO_SPRITESA }, // 10
4174 { "d94-02.bin", 0x200000, 0xf460b9ac, TAITO_SPRITESA }, // 11
4175 { "d94-01.bin", 0x200000, 0x410ffccd, TAITO_SPRITESA }, // 12
4176
4177 { "d94-14.bin", 0x100000, 0xb8ba5761, TAITO_CHARS_BYTESWAP }, // 13 Layer Tiles
4178 { "d94-13.bin", 0x100000, 0xcafc68ce, TAITO_CHARS_BYTESWAP }, // 14
4179 { "d94-12.bin", 0x100000, 0x47064189, TAITO_CHARS }, // 15
4180
4181 { "d94-19.bin", 0x040000, 0xc93dbcf4, TAITO_68KROM2_BYTESWAP }, // 16 68k Code
4182 { "d94-20.bin", 0x040000, 0xf232bf64, TAITO_68KROM2_BYTESWAP }, // 17
4183
4184 { "d94-10.bin", 0x200000, 0xa22563ae, TAITO_ES5505_BYTESWAP }, // 18 Ensoniq Samples
4185 { "d94-11.bin", 0x200000, 0x61ed83fa, TAITO_ES5505_BYTESWAP }, // 19
4186 };
4187
4188 STD_ROM_PICK(hthero95)
4189 STD_ROM_FN(hthero95)
4190
4191 struct BurnDriver BurnDrvHthero95 = {
4192 "hthero95", "pwrgoal", NULL, NULL, "1994",
4193 "Hat Trick Hero '95 (Ver 2.5J 1994/11/03)\0", NULL, "Taito Corporation", "Taito F3 System",
4194 NULL, NULL, NULL, NULL,
4195 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
4196 NULL, hthero95RomInfo, hthero95RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4197 pwrgoalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
4198 320, 224, 4, 3
4199 };
4200
4201
4202 // Hat Trick Hero '95 (Ver 2.5A 1994/11/03)
4203
4204 static struct BurnRomInfo hthero95uRomDesc[] = {
4205 { "d94-18.20", 0x040000, 0xb92681c3, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4206 { "d94-17.19", 0x040000, 0x6009333e, TAITO_68KROM1_BYTESWAP32 }, // 1
4207 { "d94-16.18", 0x040000, 0xc6dbc9c8, TAITO_68KROM1_BYTESWAP32 }, // 2
4208 { "d94-21.17", 0x040000, 0x8175d411, TAITO_68KROM1_BYTESWAP32 }, // 3
4209
4210 { "d94-09.bin", 0x200000, 0x425e6bec, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4211 { "d94-06.bin", 0x200000, 0x0ed1df55, TAITO_SPRITESA_BYTESWAP }, // 5
4212 { "d94-08.bin", 0x200000, 0xbd909caf, TAITO_SPRITESA_BYTESWAP }, // 6
4213 { "d94-05.bin", 0x200000, 0x121c8542, TAITO_SPRITESA_BYTESWAP }, // 7
4214 { "d94-07.bin", 0x200000, 0xc8c95e49, TAITO_SPRITESA_BYTESWAP }, // 8
4215 { "d94-04.bin", 0x200000, 0x24958b50, TAITO_SPRITESA_BYTESWAP }, // 9
4216 { "d94-03.bin", 0x200000, 0x95e32072, TAITO_SPRITESA }, // 10
4217 { "d94-02.bin", 0x200000, 0xf460b9ac, TAITO_SPRITESA }, // 11
4218 { "d94-01.bin", 0x200000, 0x410ffccd, TAITO_SPRITESA }, // 12
4219
4220 { "d94-14.bin", 0x100000, 0xb8ba5761, TAITO_CHARS_BYTESWAP }, // 13 Layer Tiles
4221 { "d94-13.bin", 0x100000, 0xcafc68ce, TAITO_CHARS_BYTESWAP }, // 14
4222 { "d94-12.bin", 0x100000, 0x47064189, TAITO_CHARS }, // 15
4223
4224 { "d94-19.bin", 0x040000, 0xc93dbcf4, TAITO_68KROM2_BYTESWAP }, // 16 68k Code
4225 { "d94-20.bin", 0x040000, 0xf232bf64, TAITO_68KROM2_BYTESWAP }, // 17
4226
4227 { "d94-10.bin", 0x200000, 0xa22563ae, TAITO_ES5505_BYTESWAP }, // 18 Ensoniq Samples
4228 { "d94-11.bin", 0x200000, 0x61ed83fa, TAITO_ES5505_BYTESWAP }, // 19
4229 };
4230
4231 STD_ROM_PICK(hthero95u)
4232 STD_ROM_FN(hthero95u)
4233
4234 struct BurnDriver BurnDrvHthero95u = {
4235 "hthero95u", "pwrgoal", NULL, NULL, "1994",
4236 "Hat Trick Hero '95 (Ver 2.5A 1994/11/03)\0", NULL, "Taito America Corporation", "Taito F3 System",
4237 NULL, NULL, NULL, NULL,
4238 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
4239 NULL, hthero95uRomInfo, hthero95uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4240 pwrgoalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
4241 320, 224, 4, 3
4242 };
4243
4244
4245 // Hat Trick Hero '95 (Ver 2.6Asia 1994/11/17)
4246
4247 static struct BurnRomInfo hthero95aRomDesc[] = {
4248 { "d94-26.20", 0x040000, 0x3170fa0b, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4249 { "d94-25.19", 0x040000, 0xdfd5cbf9, TAITO_68KROM1_BYTESWAP32 }, // 1
4250 { "d94-24.18", 0x040000, 0xd97269cc, TAITO_68KROM1_BYTESWAP32 }, // 2
4251 { "d94-23.17", 0x040000, 0x71092708, TAITO_68KROM1_BYTESWAP32 }, // 3
4252
4253 { "d94-09.bin", 0x200000, 0x425e6bec, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4254 { "d94-06.bin", 0x200000, 0x0ed1df55, TAITO_SPRITESA_BYTESWAP }, // 5
4255 { "d94-08.bin", 0x200000, 0xbd909caf, TAITO_SPRITESA_BYTESWAP }, // 6
4256 { "d94-05.bin", 0x200000, 0x121c8542, TAITO_SPRITESA_BYTESWAP }, // 7
4257 { "d94-07.bin", 0x200000, 0xc8c95e49, TAITO_SPRITESA_BYTESWAP }, // 8
4258 { "d94-04.bin", 0x200000, 0x24958b50, TAITO_SPRITESA_BYTESWAP }, // 9
4259 { "d94-03.bin", 0x200000, 0x95e32072, TAITO_SPRITESA }, // 10
4260 { "d94-02.bin", 0x200000, 0xf460b9ac, TAITO_SPRITESA }, // 11
4261 { "d94-01.bin", 0x200000, 0x410ffccd, TAITO_SPRITESA }, // 12
4262
4263 { "d94-14.bin", 0x100000, 0xb8ba5761, TAITO_CHARS_BYTESWAP }, // 13 Layer Tiles
4264 { "d94-13.bin", 0x100000, 0xcafc68ce, TAITO_CHARS_BYTESWAP }, // 14
4265 { "d94-12.bin", 0x100000, 0x47064189, TAITO_CHARS }, // 15
4266
4267 { "d94-19.bin", 0x040000, 0xc93dbcf4, TAITO_68KROM2_BYTESWAP }, // 16 68k Code
4268 { "d94-20.bin", 0x040000, 0xf232bf64, TAITO_68KROM2_BYTESWAP }, // 17
4269
4270 { "d94-10.bin", 0x200000, 0xa22563ae, TAITO_ES5505_BYTESWAP }, // 18 Ensoniq Samples
4271 { "d94-11.bin", 0x200000, 0x61ed83fa, TAITO_ES5505_BYTESWAP }, // 19
4272 };
4273
4274 STD_ROM_PICK(hthero95a)
4275 STD_ROM_FN(hthero95a)
4276
4277 struct BurnDriver BurnDrvHthero95a = {
4278 "hthero95a", "pwrgoal", NULL, NULL, "1994",
4279 "Hat Trick Hero '95 (Ver 2.6Asia 1994/11/17)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
4280 NULL, NULL, NULL, NULL,
4281 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_SPORTSFOOTBALL, 0,
4282 NULL, hthero95aRomInfo, hthero95aRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4283 pwrgoalInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
4284 320, 224, 4, 3
4285 };
4286
4287
4288 // Quiz Theater - 3tsu no Monogatari (Ver 2.3J 1994/11/10)
4289
4290 static struct BurnRomInfo qtheaterRomDesc[] = {
4291 { "d95-12.20", 0x080000, 0xfcee76ee, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4292 { "d95-11.19", 0x080000, 0xb3c2b8d5, TAITO_68KROM1_BYTESWAP32 }, // 1
4293 { "d95-10.18", 0x080000, 0x85236e40, TAITO_68KROM1_BYTESWAP32 }, // 2
4294 { "d95-09.17", 0x080000, 0xf456519c, TAITO_68KROM1_BYTESWAP32 }, // 3
4295
4296 { "d95-02.12", 0x200000, 0x74ce6f3e, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4297 { "d95-01.8", 0x200000, 0x141beb7d, TAITO_SPRITESA_BYTESWAP }, // 5
4298
4299 { "d95-06.47", 0x200000, 0x70a0dcbb, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4300 { "d95-05.45", 0x200000, 0x1a1a852b, TAITO_CHARS_BYTESWAP }, // 7
4301
4302 { "d95-07.32", 0x040000, 0x3c201d70, TAITO_68KROM2_BYTESWAP }, // 8 68k Code
4303 { "d95-08.33", 0x040000, 0x01c23354, TAITO_68KROM2_BYTESWAP }, // 9
4304
4305 { "d95-03.38", 0x200000, 0x4149ea67, TAITO_ES5505_BYTESWAP }, // 10 Ensoniq Samples
4306 { "d95-04.41", 0x200000, 0xe9049d16, TAITO_ES5505_BYTESWAP }, // 11
4307 };
4308
4309 STD_ROM_PICK(qtheater)
STD_ROM_FN(qtheater)4310 STD_ROM_FN(qtheater)
4311
4312 static INT32 qtheaterInit()
4313 {
4314 return DrvInit(NULL, f3_24bit_palette_update, 1, QTHEATER, 1, 0);
4315 }
4316
4317 struct BurnDriver BurnDrvQtheater = {
4318 "qtheater", NULL, NULL, NULL, "1994",
4319 "Quiz Theater - 3tsu no Monogatari (Ver 2.3J 1994/11/10)\0", NULL, "Taito Corporation", "Taito F3 System",
4320 NULL, NULL, NULL, NULL,
4321 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_QUIZ, 0,
4322 NULL, qtheaterRomInfo, qtheaterRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4323 qtheaterInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4324 320, 224, 4, 3
4325 };
4326
4327
4328 // Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5O 1995/06/14)
4329
4330 static struct BurnRomInfo spcinv95RomDesc[] = {
4331 { "e06-14.20", 0x020000, 0x71ba7f00, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4332 { "e06-13.19", 0x020000, 0xf506ba4b, TAITO_68KROM1_BYTESWAP32 }, // 1
4333 { "e06-12.18", 0x020000, 0x06cbd72b, TAITO_68KROM1_BYTESWAP32 }, // 2
4334 { "e06-16.17", 0x020000, 0xd1eb3195, TAITO_68KROM1_BYTESWAP32 }, // 3
4335
4336 { "e06-03", 0x100000, 0xa24070ef, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4337 { "e06-02", 0x100000, 0x8f646dea, TAITO_SPRITESA_BYTESWAP }, // 5
4338 { "e06-01", 0x100000, 0x51721b15, TAITO_SPRITESA }, // 6
4339
4340 { "e06-08", 0x100000, 0x72ae2fbf, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4341 { "e06-07", 0x100000, 0x4b02e8f5, TAITO_CHARS_BYTESWAP }, // 8
4342 { "e06-06", 0x100000, 0x9380db3c, TAITO_CHARS }, // 9
4343
4344 { "e06-09.32", 0x040000, 0x9bcafc87, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4345 { "e06-10.33", 0x040000, 0xb752b61f, TAITO_68KROM2_BYTESWAP }, // 11
4346
4347 { "e06-04", 0x200000, 0x1dac29df, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4348 { "e06-05", 0x200000, 0xf370ff15, TAITO_ES5505_BYTESWAP }, // 13
4349
4350 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, BRF_OPT }, // 14 plds
4351 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, BRF_OPT }, // 15
4352 { "palce16v8q-d77-11.bin", 0x000117, 0xeacc294e, BRF_OPT }, // 16
4353 { "palce16v8q-d77-12.bin", 0x000117, 0xe9920cfe, BRF_OPT }, // 17
4354 { "palce16v8q-d77-13.bin", 0x000117, 0x66e32e73, BRF_OPT }, // 18
4355 };
4356
4357 STD_ROM_PICK(spcinv95)
STD_ROM_FN(spcinv95)4358 STD_ROM_FN(spcinv95)
4359
4360 static INT32 spcinv95Init()
4361 {
4362 return DrvInit(NULL, f3_24bit_palette_update, 0, SPCINV95, 1, 0x408100);
4363 }
4364
4365 struct BurnDriver BurnDrvSpcinv95 = {
4366 "spcinv95", NULL, NULL, NULL, "1995",
4367 "Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5O 1995/06/14)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
4368 NULL, NULL, NULL, NULL,
4369 BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
4370 NULL, spcinv95RomInfo, spcinv95RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4371 spcinv95Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
4372 224, 320, 3, 4
4373 };
4374
4375
4376 // Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5A 1995/06/14)
4377
4378 static struct BurnRomInfo spcinv95uRomDesc[] = {
4379 { "e06-14.20", 0x020000, 0x71ba7f00, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4380 { "e06-13.19", 0x020000, 0xf506ba4b, TAITO_68KROM1_BYTESWAP32 }, // 1
4381 { "e06-12.18", 0x020000, 0x06cbd72b, TAITO_68KROM1_BYTESWAP32 }, // 2
4382 { "e06-15.17", 0x020000, 0xa6ec0103, TAITO_68KROM1_BYTESWAP32 }, // 3
4383
4384 { "e06-03", 0x100000, 0xa24070ef, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4385 { "e06-02", 0x100000, 0x8f646dea, TAITO_SPRITESA_BYTESWAP }, // 5
4386 { "e06-01", 0x100000, 0x51721b15, TAITO_SPRITESA }, // 6
4387
4388 { "e06-08", 0x100000, 0x72ae2fbf, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4389 { "e06-07", 0x100000, 0x4b02e8f5, TAITO_CHARS_BYTESWAP }, // 8
4390 { "e06-06", 0x100000, 0x9380db3c, TAITO_CHARS }, // 9
4391
4392 { "e06-09.32", 0x040000, 0x9bcafc87, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4393 { "e06-10.33", 0x040000, 0xb752b61f, TAITO_68KROM2_BYTESWAP }, // 11
4394
4395 { "e06-04", 0x200000, 0x1dac29df, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4396 { "e06-05", 0x200000, 0xf370ff15, TAITO_ES5505_BYTESWAP }, // 13
4397
4398 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, BRF_OPT }, // 14 plds
4399 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, BRF_OPT }, // 15
4400 { "palce16v8q-d77-11.bin", 0x000117, 0xeacc294e, BRF_OPT }, // 16
4401 { "palce16v8q-d77-12.bin", 0x000117, 0xe9920cfe, BRF_OPT }, // 17
4402 { "palce16v8q-d77-13.bin", 0x000117, 0x66e32e73, BRF_OPT }, // 18
4403 };
4404
4405 STD_ROM_PICK(spcinv95u)
4406 STD_ROM_FN(spcinv95u)
4407
4408 struct BurnDriver BurnDrvSpcinv95u = {
4409 "spcinv95u", "spcinv95", NULL, NULL, "1995",
4410 "Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5A 1995/06/14)\0", NULL, "Taito America Corporation", "Taito F3 System",
4411 NULL, NULL, NULL, NULL,
4412 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
4413 NULL, spcinv95uRomInfo, spcinv95uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4414 spcinv95Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
4415 224, 320, 3, 4
4416 };
4417
4418
4419 // Akkanbeder (Ver 2.5J 1995/06/14)
4420
4421 static struct BurnRomInfo akkanvdrRomDesc[] = {
4422 { "e06-14.20", 0x020000, 0x71ba7f00, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4423 { "e06-13.19", 0x020000, 0xf506ba4b, TAITO_68KROM1_BYTESWAP32 }, // 1
4424 { "e06-12.18", 0x020000, 0x06cbd72b, TAITO_68KROM1_BYTESWAP32 }, // 2
4425 { "e06-11.17", 0x020000, 0x3fe550b9, TAITO_68KROM1_BYTESWAP32 }, // 3
4426
4427 { "e06-03", 0x100000, 0xa24070ef, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4428 { "e06-02", 0x100000, 0x8f646dea, TAITO_SPRITESA_BYTESWAP }, // 5
4429 { "e06-01", 0x100000, 0x51721b15, TAITO_SPRITESA }, // 6
4430
4431 { "e06-08", 0x100000, 0x72ae2fbf, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4432 { "e06-07", 0x100000, 0x4b02e8f5, TAITO_CHARS_BYTESWAP }, // 8
4433 { "e06-06", 0x100000, 0x9380db3c, TAITO_CHARS }, // 9
4434
4435 { "e06-09.32", 0x040000, 0x9bcafc87, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4436 { "e06-10.33", 0x040000, 0xb752b61f, TAITO_68KROM2_BYTESWAP }, // 11
4437
4438 { "e06-04", 0x200000, 0x1dac29df, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4439 { "e06-05", 0x200000, 0xf370ff15, TAITO_ES5505_BYTESWAP }, // 13
4440 };
4441
4442 STD_ROM_PICK(akkanvdr)
4443 STD_ROM_FN(akkanvdr)
4444
4445 struct BurnDriver BurnDrvAkkanvdr = {
4446 "akkanvdr", "spcinv95", NULL, NULL, "1995",
4447 "Akkanbeder (Ver 2.5J 1995/06/14)\0", NULL, "Taito Corporation", "Taito F3 System",
4448 NULL, NULL, NULL, NULL,
4449 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
4450 NULL, akkanvdrRomInfo, akkanvdrRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4451 spcinv95Init, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
4452 224, 320, 3, 4
4453 };
4454
4455
4456 // Elevator Action Returns (Ver 2.2O 1995/02/20)
4457
4458 static struct BurnRomInfo elvactrRomDesc[] = {
4459 { "e02-12.20", 0x080000, 0xea5f5a32, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4460 { "e02-11.19", 0x080000, 0xbcced8ff, TAITO_68KROM1_BYTESWAP32 }, // 1
4461 { "e02-10.18", 0x080000, 0x72f1b952, TAITO_68KROM1_BYTESWAP32 }, // 2
4462 { "e02-16.17", 0x080000, 0xcd97182b, TAITO_68KROM1_BYTESWAP32 }, // 3
4463
4464 { "e02-03.12", 0x200000, 0xc884ebb5, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4465 { "e02-02.8", 0x200000, 0xc8e06cfb, TAITO_SPRITESA_BYTESWAP }, // 5
4466 { "e02-01.4", 0x200000, 0x2ba94726, TAITO_SPRITESA }, // 6
4467
4468 { "e02-08.47", 0x200000, 0x29c9bd02, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4469 { "e02-07.45", 0x200000, 0x5eeee925, TAITO_CHARS_BYTESWAP }, // 8
4470 { "e02-06.43", 0x200000, 0x4c8726e9, TAITO_CHARS }, // 9
4471
4472 { "e02-13.32", 0x040000, 0x80932702, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4473 { "e02-14.33", 0x040000, 0x706671a5, TAITO_68KROM2_BYTESWAP }, // 11
4474
4475 { "e02-04.38", 0x200000, 0xb74307af, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4476 { "e02-05.39", 0x200000, 0xeb729855, TAITO_ES5505_BYTESWAP }, // 13
4477
4478 { "ampal20l10a.a12", 0x0000cc, 0xe719542f, BRF_OPT }, // 14 plds
4479 { "pal20l10b.a24", 0x0000cc, 0x00000000, BRF_OPT | BRF_NODUMP }, // 15
4480 { "pal16l8b.b24", 0x000104, 0x0b73a7d1, BRF_OPT }, // 16
4481 { "pal16l8b.b57", 0x000104, 0x74b4d8be, BRF_OPT }, // 17
4482 { "pal16l8b.b58", 0x000104, 0x17e2c9b8, BRF_OPT }, // 18
4483 { "pal16l8b.b59", 0x000104, 0xdc0db200, BRF_OPT }, // 19
4484 { "pal16l8b.b64", 0x000104, 0x3aed3d98, BRF_OPT }, // 20
4485 };
4486
4487 STD_ROM_PICK(elvactr)
STD_ROM_FN(elvactr)4488 STD_ROM_FN(elvactr)
4489
4490 static INT32 elvactrInit()
4491 {
4492 return DrvInit(NULL, f3_24bit_palette_update, 1, EACTION2, 2, 0x4007a2);
4493 }
4494
4495 struct BurnDriver BurnDrvElvactr = {
4496 "elvactr", NULL, NULL, NULL, "1994",
4497 "Elevator Action Returns (Ver 2.2O 1995/02/20)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
4498 NULL, NULL, NULL, NULL,
4499 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
4500 NULL, elvactrRomInfo, elvactrRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4501 elvactrInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4502 320, 232, 4, 3
4503 };
4504
4505
4506 // Elevator Action Returns (Ver 2.2J 1995/02/20)
4507
4508 static struct BurnRomInfo elvactrjRomDesc[] = {
4509 { "e02-12.20", 0x080000, 0xea5f5a32, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4510 { "e02-11.19", 0x080000, 0xbcced8ff, TAITO_68KROM1_BYTESWAP32 }, // 1
4511 { "e02-10.18", 0x080000, 0x72f1b952, TAITO_68KROM1_BYTESWAP32 }, // 2
4512 { "e02-09.17", 0x080000, 0x23997907, TAITO_68KROM1_BYTESWAP32 }, // 3
4513
4514 { "e02-03.12", 0x200000, 0xc884ebb5, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4515 { "e02-02.8", 0x200000, 0xc8e06cfb, TAITO_SPRITESA_BYTESWAP }, // 5
4516 { "e02-01.4", 0x200000, 0x2ba94726, TAITO_SPRITESA }, // 6
4517
4518 { "e02-08.47", 0x200000, 0x29c9bd02, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4519 { "e02-07.45", 0x200000, 0x5eeee925, TAITO_CHARS_BYTESWAP }, // 8
4520 { "e02-06.43", 0x200000, 0x4c8726e9, TAITO_CHARS }, // 9
4521
4522 { "e02-13.32", 0x040000, 0x80932702, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4523 { "e02-14.33", 0x040000, 0x706671a5, TAITO_68KROM2_BYTESWAP }, // 11
4524
4525 { "e02-04.38", 0x200000, 0xb74307af, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4526 { "e02-05.39", 0x200000, 0xeb729855, TAITO_ES5505_BYTESWAP }, // 13
4527 };
4528
4529 STD_ROM_PICK(elvactrj)
4530 STD_ROM_FN(elvactrj)
4531
4532 struct BurnDriver BurnDrvElvactrj = {
4533 "elvactrj", "elvactr", NULL, NULL, "1994",
4534 "Elevator Action Returns (Ver 2.2J 1995/02/20)\0", NULL, "Taito Corporation", "Taito F3 System",
4535 NULL, NULL, NULL, NULL,
4536 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
4537 NULL, elvactrjRomInfo, elvactrjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4538 elvactrInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4539 320, 232, 4, 3
4540 };
4541
4542
4543 // Elevator Action II (Ver 2.2A 1995/02/20)
4544
4545 static struct BurnRomInfo elvact2uRomDesc[] = {
4546 { "e02-12.20", 0x080000, 0xea5f5a32, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4547 { "e02-11.19", 0x080000, 0xbcced8ff, TAITO_68KROM1_BYTESWAP32 }, // 1
4548 { "e02-10.18", 0x080000, 0x72f1b952, TAITO_68KROM1_BYTESWAP32 }, // 2
4549 { "e02-15.17", 0x080000, 0xba9028bd, TAITO_68KROM1_BYTESWAP32 }, // 3
4550
4551 { "e02-03.12", 0x200000, 0xc884ebb5, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4552 { "e02-02.8", 0x200000, 0xc8e06cfb, TAITO_SPRITESA_BYTESWAP }, // 5
4553 { "e02-01.4", 0x200000, 0x2ba94726, TAITO_SPRITESA }, // 6
4554
4555 { "e02-08.47", 0x200000, 0x29c9bd02, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4556 { "e02-07.45", 0x200000, 0x5eeee925, TAITO_CHARS_BYTESWAP }, // 8
4557 { "e02-06.43", 0x200000, 0x4c8726e9, TAITO_CHARS }, // 9
4558
4559 { "e02-13.32", 0x040000, 0x80932702, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4560 { "e02-14.33", 0x040000, 0x706671a5, TAITO_68KROM2_BYTESWAP }, // 11
4561
4562 { "e02-04.38", 0x200000, 0xb74307af, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4563 { "e02-05.39", 0x200000, 0xeb729855, TAITO_ES5505_BYTESWAP }, // 13
4564 };
4565
4566 STD_ROM_PICK(elvact2u)
4567 STD_ROM_FN(elvact2u)
4568
4569 struct BurnDriver BurnDrvElvact2u = {
4570 "elvact2u", "elvactr", NULL, NULL, "1994",
4571 "Elevator Action II (Ver 2.2A 1995/02/20)\0", NULL, "Taito America Corporation", "Taito F3 System",
4572 NULL, NULL, NULL, NULL,
4573 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
4574 NULL, elvact2uRomInfo, elvact2uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4575 elvactrInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4576 320, 232, 4, 3
4577 };
4578
4579
4580 // Twin Qix (Ver 1.0A 1995/01/17) (Prototype)
4581
4582 static struct BurnRomInfo twinqixRomDesc[] = {
4583 { "mpr0-3.b60", 0x40000, 0x1a63d0de, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4584 { "mpr0-2.b61", 0x40000, 0x45a70987, TAITO_68KROM1_BYTESWAP32 }, // 1
4585 { "mpr0-1.b62", 0x40000, 0x531f9447, TAITO_68KROM1_BYTESWAP32 }, // 2
4586 { "mpr0-0.b63", 0x40000, 0xa4c44c11, TAITO_68KROM1_BYTESWAP32 }, // 3
4587
4588 { "obj0-0.a08", 0x80000, 0xc6ea845c, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4589 { "obj0-1.a20", 0x80000, 0x8c12b7fb, TAITO_SPRITESA_BYTESWAP }, // 5
4590
4591 { "scr0-0.b07", 0x80000, 0x9a1b9b34, TAITO_CHARS_BYTESWAP32 }, // 6 Layer Tiles
4592 { "scr0-2.b05", 0x80000, 0xcac6854b, TAITO_CHARS_BYTESWAP32 }, // 7
4593 { "scr0-1.b06", 0x80000, 0xe9bef879, TAITO_CHARS_BYTESWAP32 }, // 8
4594 { "scr0-3.b04", 0x80000, 0xce063034, TAITO_CHARS_BYTESWAP32 }, // 9
4595 { "scr0-4.b03", 0x80000, 0xd32280fe, TAITO_CHARS_BYTESWAP }, // 10
4596 { "scr0-5.b02", 0x80000, 0xfdd1a85b, TAITO_CHARS_BYTESWAP }, // 11
4597
4598 { "spr0-1.b66", 0x40000, 0x4b20e99d, TAITO_68KROM2_BYTESWAP }, // 12 68k Code
4599 { "spr0-0.b65", 0x40000, 0x2569eb30, TAITO_68KROM2_BYTESWAP }, // 13
4600
4601 { "snd-0.b43", 0x80000, 0xad5405a9, TAITO_ES5505_BYTESWAP }, // 14 Ensoniq Samples
4602 { "snd-1.b44", 0x80000, 0x274864af, TAITO_ES5505_BYTESWAP }, // 15
4603 { "snd-14.b10", 0x80000, 0x26312451, TAITO_ES5505_BYTESWAP }, // 16
4604 { "snd-15.b11", 0x80000, 0x2edaa9dc, TAITO_ES5505_BYTESWAP }, // 17
4605
4606 { "pal20l10a.a12", 0x0cc, 0x00000000, 0 | BRF_NODUMP }, // 18 plds
4607 { "pal20l10a.a24", 0x0cc, 0x00000000, 0 | BRF_NODUMP }, // 19
4608 { "pal16l8b.b24", 0x104, 0x0b73a7d1, 0 }, // 20
4609 { "pal16l8b.b57", 0x104, 0x74b4d8be, 0 }, // 21
4610 { "pal16l8b.b58", 0x104, 0x17e2c9b8, 0 }, // 22
4611 { "pal16l8b.b59", 0x104, 0xdc0db200, 0 }, // 23
4612 { "pal16l8b.b64", 0x104, 0x3aed3d98, 0 }, // 24
4613 };
4614
4615 STD_ROM_PICK(twinqix)
STD_ROM_FN(twinqix)4616 STD_ROM_FN(twinqix)
4617
4618 static INT32 twinqixInit()
4619 {
4620 return DrvInit(NULL/*twinqixRomCallback*/, f3_21bit_typeB_palette_update, 1, TWINQIX, 1, 0x40011c);
4621 }
4622
4623 struct BurnDriver BurnDrvTwinqix = {
4624 "twinqix", NULL, NULL, NULL, "1995",
4625 "Twin Qix (Ver 1.0A 1995/01/17) (Prototype)\0", NULL, "Taito America Corporation", "Taito F3 System",
4626 NULL, NULL, NULL, NULL,
4627 BDF_GAME_WORKING | BDF_PROTOTYPE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
4628 NULL, twinqixRomInfo, twinqixRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4629 twinqixInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
4630 320, 224, 4, 3
4631 };
4632
4633
4634 // Moriguchi Hiroko no Quiz de Hyuu!Hyuu! (Ver 2.2J 1995/05/25)
4635
4636 static struct BurnRomInfo quizhuhuRomDesc[] = {
4637 { "e08-16.20", 0x080000, 0xfaa8f373, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4638 { "e08-15.19", 0x080000, 0x23acf231, TAITO_68KROM1_BYTESWAP32 }, // 1
4639 { "e08-14.18", 0x080000, 0x33a4951d, TAITO_68KROM1_BYTESWAP32 }, // 2
4640 { "e08-13.17", 0x080000, 0x0936fd2a, TAITO_68KROM1_BYTESWAP32 }, // 3
4641
4642 { "e08-06.12", 0x200000, 0x8dadc9ac, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4643 { "e08-04.8", 0x200000, 0x5423721d, TAITO_SPRITESA_BYTESWAP }, // 5
4644 { "e08-05.11", 0x100000, 0x79d2e516, TAITO_SPRITESA_BYTESWAP }, // 6
4645 { "e08-03.7", 0x100000, 0x07b9ab6a, TAITO_SPRITESA_BYTESWAP }, // 7
4646 { "e08-02.4", 0x200000, 0xd89eb067, TAITO_SPRITESA }, // 8
4647 { "e08-01.3", 0x100000, 0x90223c06, TAITO_SPRITESA }, // 9
4648
4649 { "e08-12.47", 0x100000, 0x6c711d36, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
4650 { "e08-11.45", 0x100000, 0x56775a60, TAITO_CHARS_BYTESWAP }, // 11
4651 { "e08-10.43", 0x100000, 0x60abc71b, TAITO_CHARS }, // 12
4652
4653 { "e08-18.32", 0x020000, 0xe695497e, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
4654 { "e08-17.33", 0x020000, 0xfafc7e4e, TAITO_68KROM2_BYTESWAP }, // 14
4655
4656 { "e08-07.38", 0x200000, 0xc05dc85b, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
4657 { "e08-08.39", 0x200000, 0x3eb94a99, TAITO_ES5505_BYTESWAP }, // 16
4658 { "e08-09.41", 0x200000, 0x200b26ee, TAITO_ES5505_BYTESWAP }, // 17
4659 };
4660
4661 STD_ROM_PICK(quizhuhu)
STD_ROM_FN(quizhuhu)4662 STD_ROM_FN(quizhuhu)
4663
4664 static INT32 quizhuhuInit()
4665 {
4666 return DrvInit(NULL, f3_24bit_palette_update, 1, QUIZHUHU, 1, 0);
4667 }
4668
4669 struct BurnDriver BurnDrvQuizhuhu = {
4670 "quizhuhu", NULL, NULL, NULL, "1995",
4671 "Moriguchi Hiroko no Quiz de Hyuu!Hyuu! (Ver 2.2J 1995/05/25)\0", NULL, "Taito Corporation", "Taito F3 System",
4672 NULL, NULL, NULL, NULL,
4673 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_QUIZ, 0,
4674 NULL, quizhuhuRomInfo, quizhuhuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4675 quizhuhuInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4676 320, 232, 4, 3
4677 };
4678
4679
4680 // Puzzle Bobble 2 (Ver 2.3O 1995/07/31)
4681
4682 static struct BurnRomInfo pbobble2RomDesc[] = {
4683 { "e10-24.bin", 0x040000, 0xf9d0794b, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4684 { "e10-23.bin", 0x040000, 0x56a66435, TAITO_68KROM1_BYTESWAP32 }, // 1
4685 { "e10-22.bin", 0x040000, 0x7b12105d, TAITO_68KROM1_BYTESWAP32 }, // 2
4686 { "e10-25.bin", 0x040000, 0xff0407d3, TAITO_68KROM1_BYTESWAP32 }, // 3
4687
4688 { "e10-02.rom", 0x100000, 0xc0564490, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4689 { "e10-01.rom", 0x100000, 0x8c26ff49, TAITO_SPRITESA_BYTESWAP }, // 5
4690
4691 { "e10-07.rom", 0x100000, 0xdcb3c29b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4692 { "e10-06.rom", 0x100000, 0x1b0f20e2, TAITO_CHARS_BYTESWAP }, // 7
4693 { "e10-05.rom", 0x100000, 0x81266151, TAITO_CHARS }, // 8
4694
4695 { "e10-12.32", 0x040000, 0xb92dc8ad, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
4696 { "e10-13.33", 0x040000, 0x87842c13, TAITO_68KROM2_BYTESWAP }, // 10
4697
4698 { "e10-04.rom", 0x200000, 0x5c0862a6, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
4699 { "e10-03.rom", 0x200000, 0x46d68ac8, TAITO_ES5505_BYTESWAP }, // 12
4700
4701 { "e10-21.bin", 0x000117, 0x458499b7, BRF_OPT }, // 13 extra
4702 };
4703
4704 STD_ROM_PICK(pbobble2)
STD_ROM_FN(pbobble2)4705 STD_ROM_FN(pbobble2)
4706
4707 static INT32 pbobble2Init()
4708 {
4709 return DrvInit(NULL, f3_24bit_palette_update, 0, PBOBBLE2, 1, 0x40451c);
4710 }
4711
pbobble23OCallback()4712 static INT32 pbobble23OCallback()
4713 {
4714 UINT32 *ROM = (UINT32 *)Taito68KRom1;
4715
4716 ROM[0x40090/4] = BURN_ENDIAN_SWAP_INT32(0x4e71815c);
4717 ROM[0x40094/4] = BURN_ENDIAN_SWAP_INT32(0x4e714e71);
4718
4719 return 0;
4720 }
4721
pbobble23OInit()4722 static INT32 pbobble23OInit()
4723 {
4724 return DrvInit(pbobble23OCallback, f3_24bit_palette_update, 0, PBOBBLE2, 1, 0x40451c);
4725 }
4726
4727 struct BurnDriver BurnDrvPbobble2 = {
4728 "pbobble2", NULL, NULL, NULL, "1995",
4729 "Puzzle Bobble 2 (Ver 2.3O 1995/07/31)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
4730 NULL, NULL, NULL, NULL,
4731 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
4732 NULL, pbobble2RomInfo, pbobble2RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4733 pbobble23OInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4734 320, 232, 4, 3
4735 };
4736
4737
4738 // Puzzle Bobble 2 (Ver 2.2O 1995/07/20)
4739
4740 static struct BurnRomInfo pbobble2oRomDesc[] = {
4741 { "e10-11.20", 0x040000, 0xb82f81da, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4742 { "e10-10.19", 0x040000, 0xf432267a, TAITO_68KROM1_BYTESWAP32 }, // 1
4743 { "e10-09.18", 0x040000, 0xe0b1b599, TAITO_68KROM1_BYTESWAP32 }, // 2
4744 { "e10-15.17", 0x040000, 0xa2c0a268, TAITO_68KROM1_BYTESWAP32 }, // 3
4745
4746 { "e10-02.rom", 0x100000, 0xc0564490, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4747 { "e10-01.rom", 0x100000, 0x8c26ff49, TAITO_SPRITESA_BYTESWAP }, // 5
4748
4749 { "e10-07.rom", 0x100000, 0xdcb3c29b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4750 { "e10-06.rom", 0x100000, 0x1b0f20e2, TAITO_CHARS_BYTESWAP }, // 7
4751 { "e10-05.rom", 0x100000, 0x81266151, TAITO_CHARS }, // 8
4752
4753 { "e10-12.32", 0x040000, 0xb92dc8ad, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
4754 { "e10-13.33", 0x040000, 0x87842c13, TAITO_68KROM2_BYTESWAP }, // 10
4755
4756 { "e10-04.rom", 0x200000, 0x5c0862a6, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
4757 { "e10-03.rom", 0x200000, 0x46d68ac8, TAITO_ES5505_BYTESWAP }, // 12
4758 };
4759
4760 STD_ROM_PICK(pbobble2o)
4761 STD_ROM_FN(pbobble2o)
4762
4763 struct BurnDriver BurnDrvPbobble2o = {
4764 "pbobble2o", "pbobble2", NULL, NULL, "1995",
4765 "Puzzle Bobble 2 (Ver 2.2O 1995/07/20)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
4766 NULL, NULL, NULL, NULL,
4767 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
4768 NULL, pbobble2oRomInfo, pbobble2oRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4769 pbobble2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4770 320, 232, 4, 3
4771 };
4772
4773
4774 // Puzzle Bobble 2 (Ver 2.2J 1995/07/20)
4775
4776 static struct BurnRomInfo pbobble2jRomDesc[] = {
4777 { "e10-11.20", 0x040000, 0xb82f81da, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4778 { "e10-10.19", 0x040000, 0xf432267a, TAITO_68KROM1_BYTESWAP32 }, // 1
4779 { "e10-09.18", 0x040000, 0xe0b1b599, TAITO_68KROM1_BYTESWAP32 }, // 2
4780 { "e10-08.17", 0x040000, 0x4ccec344, TAITO_68KROM1_BYTESWAP32 }, // 3
4781
4782 { "e10-02.rom", 0x100000, 0xc0564490, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4783 { "e10-01.rom", 0x100000, 0x8c26ff49, TAITO_SPRITESA_BYTESWAP }, // 5
4784
4785 { "e10-07.rom", 0x100000, 0xdcb3c29b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4786 { "e10-06.rom", 0x100000, 0x1b0f20e2, TAITO_CHARS_BYTESWAP }, // 7
4787 { "e10-05.rom", 0x100000, 0x81266151, TAITO_CHARS }, // 8
4788
4789 { "e10-12.32", 0x040000, 0xb92dc8ad, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
4790 { "e10-13.33", 0x040000, 0x87842c13, TAITO_68KROM2_BYTESWAP }, // 10
4791
4792 { "e10-04.rom", 0x200000, 0x5c0862a6, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
4793 { "e10-03.rom", 0x200000, 0x46d68ac8, TAITO_ES5505_BYTESWAP }, // 12
4794 };
4795
4796 STD_ROM_PICK(pbobble2j)
4797 STD_ROM_FN(pbobble2j)
4798
4799 struct BurnDriver BurnDrvPbobble2j = {
4800 "pbobble2j", "pbobble2", NULL, NULL, "1995",
4801 "Puzzle Bobble 2 (Ver 2.2J 1995/07/20)\0", NULL, "Taito Corporation", "Taito F3 System",
4802 NULL, NULL, NULL, NULL,
4803 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
4804 NULL, pbobble2jRomInfo, pbobble2jRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4805 pbobble2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4806 320, 232, 4, 3
4807 };
4808
4809
4810 // Bust-A-Move Again (Ver 2.3A 1995/07/31)
4811
4812 static struct BurnRomInfo pbobble2uRomDesc[] = {
4813 { "e10-20.20", 0x040000, 0x97eb15c6, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4814 { "e10-19.19", 0x040000, 0x7082d796, TAITO_68KROM1_BYTESWAP32 }, // 1
4815 { "e10-18.18", 0x040000, 0x2ffa3ef2, TAITO_68KROM1_BYTESWAP32 }, // 2
4816 { "e10-14.17", 0x040000, 0x4a19ed67, TAITO_68KROM1_BYTESWAP32 }, // 3
4817
4818 { "e10-02.rom", 0x100000, 0xc0564490, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4819 { "e10-01.rom", 0x100000, 0x8c26ff49, TAITO_SPRITESA_BYTESWAP }, // 5
4820
4821 { "e10-07.rom", 0x100000, 0xdcb3c29b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4822 { "e10-06.rom", 0x100000, 0x1b0f20e2, TAITO_CHARS_BYTESWAP }, // 7
4823 { "e10-05.rom", 0x100000, 0x81266151, TAITO_CHARS }, // 8
4824
4825 { "e10-16.32", 0x040000, 0x765ce77a, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
4826 { "e10-17.33", 0x040000, 0x0aec3b1e, TAITO_68KROM2_BYTESWAP }, // 10
4827
4828 { "e10-04.rom", 0x200000, 0x5c0862a6, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
4829 { "e10-03.rom", 0x200000, 0x46d68ac8, TAITO_ES5505_BYTESWAP }, // 12
4830 };
4831
4832 STD_ROM_PICK(pbobble2u)
4833 STD_ROM_FN(pbobble2u)
4834
4835 struct BurnDriver BurnDrvPbobble2u = {
4836 "pbobble2u", "pbobble2", NULL, NULL, "1995",
4837 "Bust-A-Move Again (Ver 2.3A 1995/07/31)\0", NULL, "Taito America Corporation", "Taito F3 System",
4838 NULL, NULL, NULL, NULL,
4839 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
4840 NULL, pbobble2uRomInfo, pbobble2uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4841 pbobble2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4842 320, 232, 4, 3
4843 };
4844
4845
4846 // Puzzle Bobble 2X (Ver 2.2J 1995/11/11)
4847
4848 static struct BurnRomInfo pbobble2xRomDesc[] = {
4849 { "e10-29.20", 0x040000, 0xf1e9ad3f, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4850 { "e10-28.19", 0x040000, 0x412a3602, TAITO_68KROM1_BYTESWAP32 }, // 1
4851 { "e10-27.18", 0x040000, 0x88cc0b5c, TAITO_68KROM1_BYTESWAP32 }, // 2
4852 { "e10-26.17", 0x040000, 0xa5c24047, TAITO_68KROM1_BYTESWAP32 }, // 3
4853
4854 { "e10-02.rom", 0x100000, 0xc0564490, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4855 { "e10-01.rom", 0x100000, 0x8c26ff49, TAITO_SPRITESA_BYTESWAP }, // 5
4856
4857 { "e10-07.rom", 0x100000, 0xdcb3c29b, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
4858 { "e10-06.rom", 0x100000, 0x1b0f20e2, TAITO_CHARS_BYTESWAP }, // 7
4859 { "e10-05.rom", 0x100000, 0x81266151, TAITO_CHARS }, // 8
4860
4861 { "e10-30.32", 0x040000, 0xbb090c1e, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
4862 { "e10-31.33", 0x040000, 0xf4b88d65, TAITO_68KROM2_BYTESWAP }, // 10
4863
4864 { "e10-04.rom", 0x200000, 0x5c0862a6, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
4865 { "e10-03.rom", 0x200000, 0x46d68ac8, TAITO_ES5505_BYTESWAP }, // 12
4866
4867 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, BRF_OPT }, // 13 plds
4868 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, BRF_OPT }, // 14
4869 { "palce16v8q-d77-11.bin", 0x000117, 0xeacc294e, BRF_OPT }, // 15
4870 { "palce16v8q-d77-12.bin", 0x000117, 0xe9920cfe, BRF_OPT }, // 16
4871 { "palce16v8q-d77-14.bin", 0x000117, 0x7427e777, BRF_OPT }, // 17
4872 };
4873
4874 STD_ROM_PICK(pbobble2x)
4875 STD_ROM_FN(pbobble2x)
4876
4877 struct BurnDriver BurnDrvPbobble2x = {
4878 "pbobble2x", "pbobble2", NULL, NULL, "1995",
4879 "Puzzle Bobble 2X (Ver 2.2J 1995/11/11)\0", NULL, "Taito Corporation", "Taito F3 System",
4880 NULL, NULL, NULL, NULL,
4881 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
4882 NULL, pbobble2xRomInfo, pbobble2xRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4883 pbobble2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4884 320, 232, 4, 3
4885 };
4886
4887
4888 // Gekirindan (Ver 2.3O 1995/09/21)
4889
4890 static struct BurnRomInfo gekiridnRomDesc[] = {
4891 { "e11-12.ic20", 0x040000, 0x6a7aaacf, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4892 { "e11-11.ic19", 0x040000, 0x2284a08e, TAITO_68KROM1_BYTESWAP32 }, // 1
4893 { "e11-10.ic18", 0x040000, 0x8795e6ba, TAITO_68KROM1_BYTESWAP32 }, // 2
4894 { "e11-15.ic17", 0x040000, 0x5aef1fd8, TAITO_68KROM1_BYTESWAP32 }, // 3
4895
4896 { "e11-03.ic12", 0x200000, 0xf73877c5, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4897 { "e11-02.ic8", 0x200000, 0x5722a83b, TAITO_SPRITESA_BYTESWAP }, // 5
4898 { "e11-01.ic4", 0x200000, 0xc2cd1069, TAITO_SPRITESA }, // 6
4899
4900 { "e11-08.ic47", 0x200000, 0x907f69d3, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4901 { "e11-07.ic45", 0x200000, 0xef018607, TAITO_CHARS_BYTESWAP }, // 8
4902 { "e11-06.ic43", 0x200000, 0x200ce305, TAITO_CHARS }, // 9
4903
4904 { "e11-13.ic32", 0x040000, 0xf5c5486a, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4905 { "e11-14.ic33", 0x040000, 0x7fa10f96, TAITO_68KROM2_BYTESWAP }, // 11
4906
4907 { "e11-04.ic38", 0x200000, 0xe0ff4fb1, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4908 { "e11-05.ic41", 0x200000, 0xa4d08cf1, TAITO_ES5505_BYTESWAP }, // 13
4909 };
4910
4911 STD_ROM_PICK(gekiridn)
STD_ROM_FN(gekiridn)4912 STD_ROM_FN(gekiridn)
4913
4914 static INT32 gekiridnInit()
4915 {
4916 return DrvInit(NULL, f3_24bit_palette_update, 0, GEKIRIDO, 1, 0x406bb0);
4917 }
4918
4919 struct BurnDriver BurnDrvGekiridn = {
4920 "gekiridn", NULL, NULL, NULL, "1995",
4921 "Gekirindan (Ver 2.3O 1995/09/21)\0", NULL, "Taito Corporation", "Taito F3 System",
4922 NULL, NULL, NULL, NULL,
4923 BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
4924 NULL, gekiridnRomInfo, gekiridnRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4925 gekiridnInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4926 232, 320, 3, 4
4927 };
4928
4929
4930 // Gekirindan (Ver 2.3J 1995/09/21)
4931
4932 static struct BurnRomInfo gekiridnjRomDesc[] = {
4933 { "e11-12.ic20", 0x040000, 0x6a7aaacf, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4934 { "e11-11.ic19", 0x040000, 0x2284a08e, TAITO_68KROM1_BYTESWAP32 }, // 1
4935 { "e11-10.ic18", 0x040000, 0x8795e6ba, TAITO_68KROM1_BYTESWAP32 }, // 2
4936 { "e11-09.ic17", 0x040000, 0xb4e17ef4, TAITO_68KROM1_BYTESWAP32 }, // 3
4937
4938 { "e11-03.ic12", 0x200000, 0xf73877c5, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4939 { "e11-02.ic8", 0x200000, 0x5722a83b, TAITO_SPRITESA_BYTESWAP }, // 5
4940 { "e11-01.ic4", 0x200000, 0xc2cd1069, TAITO_SPRITESA }, // 6
4941
4942 { "e11-08.ic47", 0x200000, 0x907f69d3, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
4943 { "e11-07.ic45", 0x200000, 0xef018607, TAITO_CHARS_BYTESWAP }, // 8
4944 { "e11-06.ic43", 0x200000, 0x200ce305, TAITO_CHARS }, // 9
4945
4946 { "e11-13.ic32", 0x040000, 0xf5c5486a, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
4947 { "e11-14.ic33", 0x040000, 0x7fa10f96, TAITO_68KROM2_BYTESWAP }, // 11
4948
4949 { "e11-04.ic38", 0x200000, 0xe0ff4fb1, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
4950 { "e11-05.ic41", 0x200000, 0xa4d08cf1, TAITO_ES5505_BYTESWAP }, // 13
4951 };
4952
4953 STD_ROM_PICK(gekiridnj)
4954 STD_ROM_FN(gekiridnj)
4955
4956 struct BurnDriver BurnDrvGekiridnj = {
4957 "gekiridnj", "gekiridn", NULL, NULL, "1995",
4958 "Gekirindan (Ver 2.3J 1995/09/21)\0", NULL, "Taito Corporation", "Taito F3 System",
4959 NULL, NULL, NULL, NULL,
4960 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
4961 NULL, gekiridnjRomInfo, gekiridnjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
4962 gekiridnInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
4963 232, 320, 3, 4
4964 };
4965
4966
4967 // Twin Cobra II (Ver 2.1O 1995/11/30)
4968
4969 static struct BurnRomInfo tcobra2RomDesc[] = {
4970 { "e15-14.ic20", 0x040000, 0xb527b733, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
4971 { "e15-13.ic19", 0x040000, 0x0f03daf7, TAITO_68KROM1_BYTESWAP32 }, // 1
4972 { "e15-12.ic18", 0x040000, 0x59d832f2, TAITO_68KROM1_BYTESWAP32 }, // 2
4973 { "e15-18.ic17", 0x040000, 0x4908c3aa, TAITO_68KROM1_BYTESWAP32 }, // 3
4974
4975 { "e15-04.ic12", 0x200000, 0x6ea8d9bd, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
4976 { "e15-02.ic8", 0x200000, 0xbf1232aa, TAITO_SPRITESA_BYTESWAP }, // 5
4977 { "e15-03.ic11", 0x100000, 0xbe45a52f, TAITO_SPRITESA_BYTESWAP }, // 6
4978 { "e15-01.ic7", 0x100000, 0x85421aac, TAITO_SPRITESA_BYTESWAP }, // 7
4979
4980 { "e15-10.ic47", 0x200000, 0xd8c96b00, TAITO_CHARS_BYTESWAP }, // 8 Layer Tiles
4981 { "e15-08.ic45", 0x200000, 0x4bdb2bf3, TAITO_CHARS_BYTESWAP }, // 9
4982 { "e15-09.ic46", 0x100000, 0x07c29f60, TAITO_CHARS_BYTESWAP }, // 10
4983 { "e15-07.ic44", 0x100000, 0x8164f7ee, TAITO_CHARS_BYTESWAP }, // 11
4984
4985 { "e15-15.ic32", 0x020000, 0x22126dfb, TAITO_68KROM2_BYTESWAP }, // 12 68k Code
4986 { "e15-16.ic33", 0x020000, 0xf8b58ea0, TAITO_68KROM2_BYTESWAP }, // 13
4987
4988 { "e15-05.ic38", 0x200000, 0x3e5da5f6, TAITO_ES5505_BYTESWAP }, // 14 Ensoniq Samples
4989 { "e15-06.ic41", 0x200000, 0xb182a3e1, TAITO_ES5505_BYTESWAP }, // 15
4990
4991 { "d77-12.ic48.bin", 0x117, 0x6f93a4d8, BRF_OPT },
4992 { "d77-14.ic21.bin", 0x117, 0xf2264f51, BRF_OPT },
4993 { "palce16v8.ic37.bin", 0x117, 0x6ccd8168, BRF_OPT },
4994 { "d77-09.ic14.bin", 0x001, 0x00000000, BRF_NODUMP },
4995 { "d77-10.ic28.bin", 0x001, 0x00000000, BRF_NODUMP },
4996 };
4997
4998 STD_ROM_PICK(tcobra2)
STD_ROM_FN(tcobra2)4999 STD_ROM_FN(tcobra2)
5000
5001 static INT32 tcobra2Init()
5002 {
5003 INT32 rc = DrvInit(NULL, f3_24bit_palette_update, 0, KTIGER2, 0, 0);
5004
5005 if (!rc) {
5006 ES550X_twincobra2_pan_fix = 1;
5007 }
5008
5009 return rc;
5010 }
5011
5012 struct BurnDriver BurnDrvTcobra2 = {
5013 "tcobra2", NULL, NULL, NULL, "1995",
5014 "Twin Cobra II (Ver 2.1O 1995/11/30)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
5015 NULL, NULL, NULL, NULL,
5016 BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
5017 NULL, tcobra2RomInfo, tcobra2RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5018 tcobra2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5019 232, 320, 3, 4
5020 };
5021
5022
5023 // Twin Cobra II (Ver 2.1A 1995/11/30)
5024
5025 static struct BurnRomInfo tcobra2uRomDesc[] = {
5026 { "e15-14.ic20", 0x040000, 0xb527b733, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5027 { "e15-13.ic19", 0x040000, 0x0f03daf7, TAITO_68KROM1_BYTESWAP32 }, // 1
5028 { "e15-12.ic18", 0x040000, 0x59d832f2, TAITO_68KROM1_BYTESWAP32 }, // 2
5029 { "e15-17.ic17", 0x040000, 0x3e0ff33c, TAITO_68KROM1_BYTESWAP32 }, // 3
5030
5031 { "e15-04.ic12", 0x200000, 0x6ea8d9bd, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5032 { "e15-02.ic8", 0x200000, 0xbf1232aa, TAITO_SPRITESA_BYTESWAP }, // 5
5033 { "e15-03.ic11", 0x100000, 0xbe45a52f, TAITO_SPRITESA_BYTESWAP }, // 6
5034 { "e15-01.ic7", 0x100000, 0x85421aac, TAITO_SPRITESA_BYTESWAP }, // 7
5035
5036 { "e15-10.ic47", 0x200000, 0xd8c96b00, TAITO_CHARS_BYTESWAP }, // 8 Layer Tiles
5037 { "e15-08.ic45", 0x200000, 0x4bdb2bf3, TAITO_CHARS_BYTESWAP }, // 9
5038 { "e15-09.ic46", 0x100000, 0x07c29f60, TAITO_CHARS_BYTESWAP }, // 10
5039 { "e15-07.ic44", 0x100000, 0x8164f7ee, TAITO_CHARS_BYTESWAP }, // 11
5040
5041 { "e15-15.ic32", 0x020000, 0x22126dfb, TAITO_68KROM2_BYTESWAP }, // 12 68k Code
5042 { "e15-16.ic33", 0x020000, 0xf8b58ea0, TAITO_68KROM2_BYTESWAP }, // 13
5043
5044 { "e15-05.ic38", 0x200000, 0x3e5da5f6, TAITO_ES5505_BYTESWAP }, // 14 Ensoniq Samples
5045 { "e15-06.ic41", 0x200000, 0xb182a3e1, TAITO_ES5505_BYTESWAP }, // 15
5046
5047 { "d77-12.ic48.bin", 0x117, 0x6f93a4d8, BRF_OPT },
5048 { "d77-14.ic21.bin", 0x117, 0xf2264f51, BRF_OPT },
5049 { "palce16v8.ic37.bin", 0x117, 0x6ccd8168, BRF_OPT },
5050 { "d77-09.ic14.bin", 0x001, 0x00000000, BRF_NODUMP },
5051 { "d77-10.ic28.bin", 0x001, 0x00000000, BRF_NODUMP },
5052 };
5053
5054 STD_ROM_PICK(tcobra2u)
5055 STD_ROM_FN(tcobra2u)
5056
5057 struct BurnDriver BurnDrvTcobra2u = {
5058 "tcobra2u", "tcobra2", NULL, NULL, "1995",
5059 "Twin Cobra II (Ver 2.1A 1995/11/30)\0", NULL, "Taito America Corporation", "Taito F3 System",
5060 NULL, NULL, NULL, NULL,
5061 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
5062 NULL, tcobra2uRomInfo, tcobra2uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5063 tcobra2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5064 232, 320, 3, 4
5065 };
5066
5067
5068 // Kyukyoku Tiger II (Ver 2.1J 1995/11/30)
5069
5070 static struct BurnRomInfo ktiger2RomDesc[] = {
5071 { "e15-14.ic20", 0x040000, 0xb527b733, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5072 { "e15-13.ic19", 0x040000, 0x0f03daf7, TAITO_68KROM1_BYTESWAP32 }, // 1
5073 { "e15-12.ic18", 0x040000, 0x59d832f2, TAITO_68KROM1_BYTESWAP32 }, // 2
5074 { "e15-11.ic17", 0x040000, 0xa706a286, TAITO_68KROM1_BYTESWAP32 }, // 3
5075
5076 { "e15-04.ic12", 0x200000, 0x6ea8d9bd, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5077 { "e15-02.ic8", 0x200000, 0xbf1232aa, TAITO_SPRITESA_BYTESWAP }, // 5
5078 { "e15-03.ic11", 0x100000, 0xbe45a52f, TAITO_SPRITESA_BYTESWAP }, // 6
5079 { "e15-01.ic7", 0x100000, 0x85421aac, TAITO_SPRITESA_BYTESWAP }, // 7
5080
5081 { "e15-10.ic47", 0x200000, 0xd8c96b00, TAITO_CHARS_BYTESWAP }, // 8 Layer Tiles
5082 { "e15-08.ic45", 0x200000, 0x4bdb2bf3, TAITO_CHARS_BYTESWAP }, // 9
5083 { "e15-09.ic46", 0x100000, 0x07c29f60, TAITO_CHARS_BYTESWAP }, // 10
5084 { "e15-07.ic44", 0x100000, 0x8164f7ee, TAITO_CHARS_BYTESWAP }, // 11
5085
5086 { "e15-15.ic32", 0x020000, 0x22126dfb, TAITO_68KROM2_BYTESWAP }, // 12 68k Code
5087 { "e15-16.ic33", 0x020000, 0xf8b58ea0, TAITO_68KROM2_BYTESWAP }, // 13
5088
5089 { "e15-05.ic38", 0x200000, 0x3e5da5f6, TAITO_ES5505_BYTESWAP }, // 14 Ensoniq Samples
5090 { "e15-06.ic41", 0x200000, 0xb182a3e1, TAITO_ES5505_BYTESWAP }, // 15
5091
5092 { "d77-12.ic48.bin", 0x117, 0x6f93a4d8, BRF_OPT },
5093 { "d77-14.ic21.bin", 0x117, 0xf2264f51, BRF_OPT },
5094 { "palce16v8.ic37.bin", 0x117, 0x6ccd8168, BRF_OPT },
5095 { "d77-09.ic14.bin", 0x001, 0x00000000, BRF_NODUMP },
5096 { "d77-10.ic28.bin", 0x001, 0x00000000, BRF_NODUMP },
5097 };
5098
5099 STD_ROM_PICK(ktiger2)
5100 STD_ROM_FN(ktiger2)
5101
5102 struct BurnDriver BurnDrvKtiger2 = {
5103 "ktiger2", "tcobra2", NULL, NULL, "1995",
5104 "Kyukyoku Tiger II (Ver 2.1J 1995/11/30)\0", NULL, "Taito Corporation", "Taito F3 System",
5105 NULL, NULL, NULL, NULL,
5106 BDF_GAME_WORKING | BDF_CLONE | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_TAITO_MISC, GBF_VERSHOOT, 0,
5107 NULL, ktiger2RomInfo, ktiger2RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5108 tcobra2Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5109 232, 320, 3, 4
5110 };
5111
5112
5113 // Bubble Memories: The Story Of Bubble Bobble III (Ver 2.4O 1996/02/15)
5114
5115 static struct BurnRomInfo bubblemRomDesc[] = {
5116 { "e21-21.20", 0x080000, 0xcac4169c, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5117 { "e21-20.19", 0x080000, 0x7727c673, TAITO_68KROM1_BYTESWAP32 }, // 1
5118 { "e21-19.18", 0x080000, 0xbe0b907d, TAITO_68KROM1_BYTESWAP32 }, // 2
5119 { "e21-18.17", 0x080000, 0xd14e313a, TAITO_68KROM1_BYTESWAP32 }, // 3
5120
5121 { "e21-02.rom", 0x200000, 0xb7cb9232, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5122 { "e21-01.rom", 0x200000, 0xa11f2f99, TAITO_SPRITESA_BYTESWAP }, // 5
5123
5124 { "e21-07.rom", 0x100000, 0x7789bf7c, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5125 { "e21-06.rom", 0x100000, 0x997fc0d7, TAITO_CHARS_BYTESWAP }, // 7
5126 { "e21-05.rom", 0x100000, 0x07eab58f, TAITO_CHARS }, // 8
5127
5128 { "e21-12.32", 0x040000, 0x34093de1, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5129 { "e21-13.33", 0x040000, 0x9e9ec437, TAITO_68KROM2_BYTESWAP }, // 10
5130
5131 { "e21-03.rom", 0x200000, 0x54c5f83d, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5132 { "e21-04.rom", 0x200000, 0xe5af2a2d, TAITO_ES5505_BYTESWAP }, // 12
5133
5134 { "bubblem.nv", 0x000080, 0x9a59326e, TAITO_DEFAULT_EEPROM }, // 13 eeprom
5135 };
5136
5137 STD_ROM_PICK(bubblem)
STD_ROM_FN(bubblem)5138 STD_ROM_FN(bubblem)
5139
5140 static INT32 bubblemInit()
5141 {
5142 return DrvInit(NULL, f3_24bit_palette_update, 1, BUBBLEM, 1, 0x40011c);
5143 }
5144
5145 struct BurnDriver BurnDrvBubblem = {
5146 "bubblem", NULL, NULL, NULL, "1995",
5147 "Bubble Memories: The Story Of Bubble Bobble III (Ver 2.4O 1996/02/15)\0", NULL, "Taito Corporation Japan", "Taito F3 System",
5148 NULL, NULL, NULL, NULL,
5149 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
5150 NULL, bubblemRomInfo, bubblemRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5151 bubblemInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
5152 320, 224, 4, 3
5153 };
5154
5155
5156 // Bubble Memories: The Story Of Bubble Bobble III (Ver 2.5A 1996/02/21)
5157
5158 static struct BurnRomInfo bubblemuRomDesc[] = {
5159 { "e21-17.20", 0x080000, 0x0b72e8f1, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5160 { "e21-16.19", 0x080000, 0xb47354cc, TAITO_68KROM1_BYTESWAP32 }, // 1
5161 { "e21-15.18", 0x080000, 0x64bf2c24, TAITO_68KROM1_BYTESWAP32 }, // 2
5162 { "e21-14.17", 0x080000, 0x48aecd47, TAITO_68KROM1_BYTESWAP32 }, // 3
5163
5164 { "e21-02.rom", 0x200000, 0xb7cb9232, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5165 { "e21-01.rom", 0x200000, 0xa11f2f99, TAITO_SPRITESA_BYTESWAP }, // 5
5166
5167 { "e21-07.rom", 0x100000, 0x7789bf7c, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5168 { "e21-06.rom", 0x100000, 0x997fc0d7, TAITO_CHARS_BYTESWAP }, // 7
5169 { "e21-05.rom", 0x100000, 0x07eab58f, TAITO_CHARS }, // 8
5170
5171 { "e21-12.32", 0x040000, 0x34093de1, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5172 { "e21-13.33", 0x040000, 0x9e9ec437, TAITO_68KROM2_BYTESWAP }, // 10
5173
5174 { "e21-03.rom", 0x200000, 0x54c5f83d, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5175 { "e21-04.rom", 0x200000, 0xe5af2a2d, TAITO_ES5505_BYTESWAP }, // 12
5176
5177 { "bubblemu.nv", 0x000080, 0xa503276c, TAITO_DEFAULT_EEPROM }, // 13 eeprom
5178 };
5179
5180 STD_ROM_PICK(bubblemu)
5181 STD_ROM_FN(bubblemu)
5182
5183 struct BurnDriver BurnDrvBubblemu = {
5184 "bubblemu", "bubblem", NULL, NULL, "1995",
5185 "Bubble Memories: The Story Of Bubble Bobble III (Ver 2.5A 1996/02/21)\0", NULL, "Taito America Corporation", "Taito F3 System",
5186 NULL, NULL, NULL, NULL,
5187 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
5188 NULL, bubblemuRomInfo, bubblemuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5189 bubblemInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
5190 320, 224, 4, 3
5191 };
5192
5193
5194 // Bubble Memories: The Story Of Bubble Bobble III (Ver 2.3J 1996/02/07)
5195
5196 static struct BurnRomInfo bubblemjRomDesc[] = {
5197 { "e21-11.20", 0x080000, 0xdf0eeae4, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5198 { "e21-10.19", 0x080000, 0xcdfb58f6, TAITO_68KROM1_BYTESWAP32 }, // 1
5199 { "e21-09.18", 0x080000, 0x6c305f17, TAITO_68KROM1_BYTESWAP32 }, // 2
5200 { "e21-08.17", 0x080000, 0x27381ae2, TAITO_68KROM1_BYTESWAP32 }, // 3
5201
5202 { "e21-02.rom", 0x200000, 0xb7cb9232, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5203 { "e21-01.rom", 0x200000, 0xa11f2f99, TAITO_SPRITESA_BYTESWAP }, // 5
5204
5205 { "e21-07.rom", 0x100000, 0x7789bf7c, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5206 { "e21-06.rom", 0x100000, 0x997fc0d7, TAITO_CHARS_BYTESWAP }, // 7
5207 { "e21-05.rom", 0x100000, 0x07eab58f, TAITO_CHARS }, // 8
5208
5209 { "e21-12.32", 0x040000, 0x34093de1, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5210 { "e21-13.33", 0x040000, 0x9e9ec437, TAITO_68KROM2_BYTESWAP }, // 10
5211
5212 { "e21-03.rom", 0x200000, 0x54c5f83d, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5213 { "e21-04.rom", 0x200000, 0xe5af2a2d, TAITO_ES5505_BYTESWAP }, // 12
5214
5215 { "bubblemj.nv", 0x000080, 0xcb4ef35c, TAITO_DEFAULT_EEPROM }, // 13 eeprom
5216 };
5217
5218 STD_ROM_PICK(bubblemj)
5219 STD_ROM_FN(bubblemj)
5220
5221 struct BurnDriver BurnDrvBubblemj = {
5222 "bubblemj", "bubblem", NULL, NULL, "1995",
5223 "Bubble Memories: The Story Of Bubble Bobble III (Ver 2.3J 1996/02/07)\0", NULL, "Taito Corporation", "Taito F3 System",
5224 NULL, NULL, NULL, NULL,
5225 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PLATFORM, 0,
5226 NULL, bubblemjRomInfo, bubblemjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5227 bubblemInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
5228 320, 224, 4, 3
5229 };
5230
5231
5232 // Cleopatra Fortune (Ver 2.1J 1996/09/05)
5233
5234 static struct BurnRomInfo cleopatrRomDesc[] = {
5235 { "e28-10.bin", 0x080000, 0x013fbc39, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5236 { "e28-09.bin", 0x080000, 0x1c48a1f9, TAITO_68KROM1_BYTESWAP32 }, // 1
5237 { "e28-08.bin", 0x080000, 0x7564f199, TAITO_68KROM1_BYTESWAP32 }, // 2
5238 { "e28-07.bin", 0x080000, 0xa507797b, TAITO_68KROM1_BYTESWAP32 }, // 3
5239
5240 { "e28-02.bin", 0x080000, 0xb20d47cb, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5241 { "e28-01.bin", 0x080000, 0x4440e659, TAITO_SPRITESA_BYTESWAP }, // 5
5242
5243 { "e28-06.bin", 0x100000, 0x21d0c454, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5244 { "e28-05.bin", 0x100000, 0x2870dbbc, TAITO_CHARS_BYTESWAP }, // 7
5245 { "e28-04.bin", 0x100000, 0x57aef029, TAITO_CHARS }, // 8
5246
5247 { "e28-11.bin", 0x020000, 0x01a06950, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5248 { "e28-12.bin", 0x020000, 0xdc19260f, TAITO_68KROM2_BYTESWAP }, // 10
5249
5250 { "e28-03.bin", 0x200000, 0x15c7989d, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5251 };
5252
5253 STD_ROM_PICK(cleopatr)
STD_ROM_FN(cleopatr)5254 STD_ROM_FN(cleopatr)
5255
5256 static INT32 cleopatrInit()
5257 {
5258 return DrvInit(NULL, f3_21bit_typeA_palette_update, 0, CLEOPATR, 1, 0);
5259 }
5260
5261 struct BurnDriver BurnDrvCleopatr = {
5262 "cleopatr", NULL, NULL, NULL, "1996",
5263 "Cleopatra Fortune (Ver 2.1J 1996/09/05)\0", NULL, "Taito Corporation", "Taito F3 System",
5264 NULL, NULL, NULL, NULL,
5265 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5266 NULL, cleopatrRomInfo, cleopatrRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5267 cleopatrInit, DrvExit, DrvFrame, DrvDraw224A_Flipped, DrvScan, &TaitoF3PalRecalc, 0x2000,
5268 320, 224, 4, 3
5269 };
5270
5271
5272 // Puzzle Bobble 3 (Ver 2.1O 1996/09/27)
5273
5274 static struct BurnRomInfo pbobble3RomDesc[] = {
5275 { "e29-12.rom", 0x080000, 0x9eb19a00, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5276 { "e29-11.rom", 0x080000, 0xe54ada97, TAITO_68KROM1_BYTESWAP32 }, // 1
5277 { "e29-10.rom", 0x080000, 0x1502a122, TAITO_68KROM1_BYTESWAP32 }, // 2
5278 { "e29-16.rom", 0x080000, 0xaac293da, TAITO_68KROM1_BYTESWAP32 }, // 3
5279
5280 { "e29-02.rom", 0x100000, 0x437391d3, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5281 { "e29-01.rom", 0x100000, 0x52547c77, TAITO_SPRITESA_BYTESWAP }, // 5
5282
5283 { "e29-08.rom", 0x100000, 0x7040a3d5, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5284 { "e29-07.rom", 0x100000, 0xfca2ea9b, TAITO_CHARS_BYTESWAP }, // 7
5285 { "e29-06.rom", 0x100000, 0xc16184f8, TAITO_CHARS }, // 8
5286
5287 { "e29-13.rom", 0x040000, 0x1ef551ef, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5288 { "e29-14.rom", 0x040000, 0x7ee7e688, TAITO_68KROM2_BYTESWAP }, // 10
5289
5290 { "e29-03.rom", 0x200000, 0xa4371658, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5291 { "e29-04.rom", 0x200000, 0xd1f42457, TAITO_ES5505_BYTESWAP }, // 12
5292 { "e29-05.rom", 0x200000, 0xe33c1234, TAITO_ES5505_BYTESWAP }, // 13
5293 };
5294
5295 STD_ROM_PICK(pbobble3)
STD_ROM_FN(pbobble3)5296 STD_ROM_FN(pbobble3)
5297
5298 static INT32 pbobble3Init()
5299 {
5300 return DrvInit(NULL, f3_24bit_palette_update, 0, PBOBBLE3, 1, 0x4055c0);
5301 }
5302
5303 struct BurnDriver BurnDrvPbobble3 = {
5304 "pbobble3", NULL, NULL, NULL, "1996",
5305 "Puzzle Bobble 3 (Ver 2.1O 1996/09/27)\0", NULL, "Taito Corporation", "Taito F3 System",
5306 NULL, NULL, NULL, NULL,
5307 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5308 NULL, pbobble3RomInfo, pbobble3RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5309 pbobble3Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5310 320, 232, 4, 3
5311 };
5312
5313
5314 // Puzzle Bobble 3 (Ver 2.1A 1996/09/27)
5315
5316 static struct BurnRomInfo pbobble3uRomDesc[] = {
5317 { "e29-12.rom", 0x080000, 0x9eb19a00, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5318 { "e29-11.rom", 0x080000, 0xe54ada97, TAITO_68KROM1_BYTESWAP32 }, // 1
5319 { "e29-10.rom", 0x080000, 0x1502a122, TAITO_68KROM1_BYTESWAP32 }, // 2
5320 { "e29-15.bin", 0x080000, 0xddc5a34c, TAITO_68KROM1_BYTESWAP32 }, // 3
5321
5322 { "e29-02.rom", 0x100000, 0x437391d3, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5323 { "e29-01.rom", 0x100000, 0x52547c77, TAITO_SPRITESA_BYTESWAP }, // 5
5324
5325 { "e29-08.rom", 0x100000, 0x7040a3d5, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5326 { "e29-07.rom", 0x100000, 0xfca2ea9b, TAITO_CHARS_BYTESWAP }, // 7
5327 { "e29-06.rom", 0x100000, 0xc16184f8, TAITO_CHARS }, // 8
5328
5329 { "e29-13.rom", 0x040000, 0x1ef551ef, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5330 { "e29-14.rom", 0x040000, 0x7ee7e688, TAITO_68KROM2_BYTESWAP }, // 10
5331
5332 { "e29-03.rom", 0x200000, 0xa4371658, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5333 { "e29-04.rom", 0x200000, 0xd1f42457, TAITO_ES5505_BYTESWAP }, // 12
5334 { "e29-05.rom", 0x200000, 0xe33c1234, TAITO_ES5505_BYTESWAP }, // 13
5335 };
5336
5337 STD_ROM_PICK(pbobble3u)
5338 STD_ROM_FN(pbobble3u)
5339
5340 struct BurnDriver BurnDrvPbobble3u = {
5341 "pbobble3u", "pbobble3", NULL, NULL, "1996",
5342 "Puzzle Bobble 3 (Ver 2.1A 1996/09/27)\0", NULL, "Taito Corporation", "Taito F3 System",
5343 NULL, NULL, NULL, NULL,
5344 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5345 NULL, pbobble3uRomInfo, pbobble3uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5346 pbobble3Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5347 320, 232, 4, 3
5348 };
5349
5350
5351 // Puzzle Bobble 3 (Ver 2.1J 1996/09/27)
5352
5353 static struct BurnRomInfo pbobble3jRomDesc[] = {
5354 { "e29-12.ic20", 0x080000, 0x9eb19a00, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5355 { "e29-11.ic19", 0x080000, 0xe54ada97, TAITO_68KROM1_BYTESWAP32 }, // 1
5356 { "e29-10.ic18", 0x080000, 0x1502a122, TAITO_68KROM1_BYTESWAP32 }, // 2
5357 { "e29-09.ic17", 0x080000, 0x44ccf2f6, TAITO_68KROM1_BYTESWAP32 }, // 3
5358
5359 { "e29-02.ic8", 0x100000, 0x437391d3, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5360 { "e29-01.ic12", 0x100000, 0x52547c77, TAITO_SPRITESA_BYTESWAP }, // 5
5361
5362 { "e29-08.ic47", 0x100000, 0x7040a3d5, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5363 { "e29-07.ic45", 0x100000, 0xfca2ea9b, TAITO_CHARS_BYTESWAP }, // 7
5364 { "e29-06.ic43", 0x100000, 0xc16184f8, TAITO_CHARS }, // 8
5365
5366 { "e29-13.ic32", 0x040000, 0x1ef551ef, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5367 { "e29-14.ic33", 0x040000, 0x7ee7e688, TAITO_68KROM2_BYTESWAP }, // 10
5368
5369 { "e29-03.ic38", 0x200000, 0xa4371658, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5370 { "e29-04.ic39", 0x200000, 0xd1f42457, TAITO_ES5505_BYTESWAP }, // 12
5371 { "e29-05.ic41", 0x200000, 0xe33c1234, TAITO_ES5505_BYTESWAP }, // 13
5372
5373 { "d77-12.ic48.bin", 0x000001, 0x00000000, BRF_OPT | BRF_NODUMP },
5374 { "d77-14.ic21.bin", 0x000001, 0x00000000, BRF_OPT | BRF_NODUMP },
5375 { "d77-11.ic37.bin", 0x000001, 0x00000000, BRF_OPT | BRF_NODUMP },
5376 { "d77-09.ic14.bin", 0x000001, 0x00000000, BRF_OPT | BRF_NODUMP },
5377 { "d77-10.ic28.bin", 0x000001, 0x00000000, BRF_OPT | BRF_NODUMP },
5378 };
5379
5380 STD_ROM_PICK(pbobble3j)
5381 STD_ROM_FN(pbobble3j)
5382
5383 struct BurnDriver BurnDrvPbobble3j = {
5384 "pbobble3j", "pbobble3", NULL, NULL, "1996",
5385 "Puzzle Bobble 3 (Ver 2.1J 1996/09/27)\0", NULL, "Taito Corporation", "Taito F3 System",
5386 NULL, NULL, NULL, NULL,
5387 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5388 NULL, pbobble3jRomInfo, pbobble3jRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5389 pbobble3Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5390 320, 232, 4, 3
5391 };
5392
5393
5394 // Arkanoid Returns (Ver 2.02O 1997/02/10)
5395
5396 static struct BurnRomInfo arkretrnRomDesc[] = {
5397 { "e36-11.20", 0x040000, 0xb50cfb92, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5398 { "e36-10.19", 0x040000, 0xc940dba1, TAITO_68KROM1_BYTESWAP32 }, // 1
5399 { "e36-09.18", 0x040000, 0xf16985e0, TAITO_68KROM1_BYTESWAP32 }, // 2
5400 { "e36-15.17", 0x040000, 0x4467ff37, TAITO_68KROM1_BYTESWAP32 }, // 3
5401
5402 { "e36-03.12", 0x040000, 0x1ea8558b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5403 { "e36-02.8", 0x040000, 0x694eda31, TAITO_SPRITESA_BYTESWAP }, // 5
5404 { "e36-01.4", 0x040000, 0x54b9b2cd, TAITO_SPRITESA }, // 6
5405
5406 { "e36-07.47", 0x080000, 0x266bf1c1, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
5407 { "e36-06.45", 0x080000, 0x110ab729, TAITO_CHARS_BYTESWAP }, // 8
5408 { "e36-05.43", 0x080000, 0xdb18bce2, TAITO_CHARS }, // 9
5409
5410 { "e36-12.32", 0x040000, 0x3bae39be, TAITO_68KROM2_BYTESWAP}, // 10 68k Code
5411 { "e36-13.33", 0x040000, 0x94448e82, TAITO_68KROM2_BYTESWAP}, // 11
5412
5413 { "e36-04.38", 0x200000, 0x2250959b, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
5414
5415 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, 0 }, // 13 plds
5416 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, 0 }, // 14
5417 { "palce16v8-d77-11.bin", 0x000117, 0xeacc294e, 0 }, // 15
5418 { "palce16v8-d77-12.bin", 0x000117, 0xe9920cfe, 0 }, // 16
5419 { "palce16v8-d77-14.bin", 0x000117, 0x7427e777, 0 }, // 17
5420 };
5421
5422 STD_ROM_PICK(arkretrn)
STD_ROM_FN(arkretrn)5423 STD_ROM_FN(arkretrn)
5424
5425 static INT32 arkretrnInit()
5426 {
5427 return DrvInit(NULL, f3_24bit_palette_update, 1, ARKRETRN, 1, 0);
5428 }
5429
5430 struct BurnDriver BurnDrvArkretrn = {
5431 "arkretrn", NULL, NULL, NULL, "1997",
5432 "Arkanoid Returns (Ver 2.02O 1997/02/10)\0", NULL, "Taito Corporation", "Taito F3 System",
5433 NULL, NULL, NULL, NULL,
5434 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_BREAKOUT, 0,
5435 NULL, arkretrnRomInfo, arkretrnRomName, NULL, NULL, NULL, NULL, F3AnalogInputInfo, F3AnalogDIPInfo,
5436 arkretrnInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5437 320, 232, 4, 3
5438 };
5439
5440
5441 // Arkanoid Returns (Ver 2.02A 1997/02/10)
5442
5443 static struct BurnRomInfo arkretrnuRomDesc[] = {
5444 { "e36-11.20", 0x040000, 0xb50cfb92, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5445 { "e36-10.19", 0x040000, 0xc940dba1, TAITO_68KROM1_BYTESWAP32 }, // 1
5446 { "e36-09.18", 0x040000, 0xf16985e0, TAITO_68KROM1_BYTESWAP32 }, // 2
5447 { "e36-14.17", 0x040000, 0x3360cfa1, TAITO_68KROM1_BYTESWAP32 }, // 3
5448
5449 { "e36-03.12", 0x040000, 0x1ea8558b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5450 { "e36-02.8", 0x040000, 0x694eda31, TAITO_SPRITESA_BYTESWAP }, // 5
5451 { "e36-01.4", 0x040000, 0x54b9b2cd, TAITO_SPRITESA }, // 6
5452
5453 { "e36-07.47", 0x080000, 0x266bf1c1, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
5454 { "e36-06.45", 0x080000, 0x110ab729, TAITO_CHARS_BYTESWAP }, // 8
5455 { "e36-05.43", 0x080000, 0xdb18bce2, TAITO_CHARS }, // 9
5456
5457 { "e36-12.32", 0x040000, 0x3bae39be, TAITO_68KROM2_BYTESWAP}, // 10 68k Code
5458 { "e36-13.33", 0x040000, 0x94448e82, TAITO_68KROM2_BYTESWAP}, // 11
5459
5460 { "e36-04.38", 0x200000, 0x2250959b, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
5461
5462 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, 0 }, // 13 plds
5463 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, 0 }, // 14
5464 { "palce16v8-d77-11.bin", 0x000117, 0xeacc294e, 0 }, // 15
5465 { "palce16v8-d77-12.bin", 0x000117, 0xe9920cfe, 0 }, // 16
5466 { "palce16v8-d77-14.bin", 0x000117, 0x7427e777, 0 }, // 17
5467 };
5468
5469 STD_ROM_PICK(arkretrnu)
5470 STD_ROM_FN(arkretrnu)
5471
5472 struct BurnDriver BurnDrvArkretrnu = {
5473 "arkretrnu", "arkretrn", NULL, NULL, "1997",
5474 "Arkanoid Returns (Ver 2.02A 1997/02/10)\0", NULL, "Taito Corporation", "Taito F3 System",
5475 NULL, NULL, NULL, NULL,
5476 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_BREAKOUT, 0,
5477 NULL, arkretrnuRomInfo, arkretrnuRomName, NULL, NULL, NULL, NULL, F3AnalogInputInfo, F3AnalogDIPInfo,
5478 arkretrnInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5479 320, 232, 4, 3
5480 };
5481
5482
5483 // Arkanoid Returns (Ver 2.02J 1997/02/10)
5484
5485 static struct BurnRomInfo arkretrnjRomDesc[] = {
5486 { "e36-11.20", 0x040000, 0xb50cfb92, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5487 { "e36-10.19", 0x040000, 0xc940dba1, TAITO_68KROM1_BYTESWAP32 }, // 1
5488 { "e36-09.18", 0x040000, 0xf16985e0, TAITO_68KROM1_BYTESWAP32 }, // 2
5489 { "e36-08.17", 0x040000, 0xaa699e1b, TAITO_68KROM1_BYTESWAP32 }, // 3
5490
5491 { "e36-03.12", 0x040000, 0x1ea8558b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5492 { "e36-02.8", 0x040000, 0x694eda31, TAITO_SPRITESA_BYTESWAP }, // 5
5493 { "e36-01.4", 0x040000, 0x54b9b2cd, TAITO_SPRITESA }, // 6
5494
5495 { "e36-07.47", 0x080000, 0x266bf1c1, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
5496 { "e36-06.45", 0x080000, 0x110ab729, TAITO_CHARS_BYTESWAP }, // 8
5497 { "e36-05.43", 0x080000, 0xdb18bce2, TAITO_CHARS }, // 9
5498
5499 { "e36-12.32", 0x040000, 0x3bae39be, TAITO_68KROM2_BYTESWAP}, // 10 68k Code
5500 { "e36-13.33", 0x040000, 0x94448e82, TAITO_68KROM2_BYTESWAP}, // 11
5501
5502 { "e36-04.38", 0x200000, 0x2250959b, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
5503
5504 { "pal16l8a-d77-09.bin", 0x000104, 0xb371532b, 0 }, // 13 plds
5505 { "pal16l8a-d77-10.bin", 0x000104, 0x42f59227, 0 }, // 14
5506 { "palce16v8-d77-11.bin", 0x000117, 0xeacc294e, 0 }, // 15
5507 { "palce16v8-d77-12.bin", 0x000117, 0xe9920cfe, 0 }, // 16
5508 { "palce16v8-d77-14.bin", 0x000117, 0x7427e777, 0 }, // 17
5509 };
5510
5511 STD_ROM_PICK(arkretrnj)
5512 STD_ROM_FN(arkretrnj)
5513
5514 struct BurnDriver BurnDrvArkretrnj = {
5515 "arkretrnj", "arkretrn", NULL, NULL, "1997",
5516 "Arkanoid Returns (Ver 2.02J 1997/02/10)\0", NULL, "Taito Corporation", "Taito F3 System",
5517 NULL, NULL, NULL, NULL,
5518 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_BREAKOUT, 0,
5519 NULL, arkretrnjRomInfo, arkretrnjRomName, NULL, NULL, NULL, NULL, F3AnalogInputInfo, F3AnalogDIPInfo,
5520 arkretrnInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5521 320, 232, 4, 3
5522 };
5523
5524
5525 // Kirameki Star Road (Ver 2.10J 1997/08/29)
5526
5527 static struct BurnRomInfo kiramekiRomDesc[] = {
5528 { "e44-19.20", 0x080000, 0x2f3b239a, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5529 { "e44-18.19", 0x080000, 0x3137c8bc, TAITO_68KROM1_BYTESWAP32 }, // 1
5530 { "e44-17.18", 0x080000, 0x5905cd20, TAITO_68KROM1_BYTESWAP32 }, // 2
5531 { "e44-16.17", 0x080000, 0x5e9ac3fd, TAITO_68KROM1_BYTESWAP32 }, // 3
5532
5533 { "e44-06.12", 0x400000, 0x80526d58, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5534 { "e44-04.8", 0x400000, 0x28c7c295, TAITO_SPRITESA_BYTESWAP }, // 5
5535 { "e44-05.11", 0x200000, 0x0fbc2b26, TAITO_SPRITESA_BYTESWAP }, // 6
5536 { "e44-03.7", 0x200000, 0xd9e63fb0, TAITO_SPRITESA_BYTESWAP }, // 7
5537 { "e44-02.4", 0x400000, 0x5481efde, TAITO_SPRITESA }, // 8
5538 { "e44-01.3", 0x200000, 0xc4bdf727, TAITO_SPRITESA }, // 9
5539
5540 { "e44-14.47", 0x200000, 0x4597c034, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
5541 { "e44-12.45", 0x200000, 0x7160a181, TAITO_CHARS_BYTESWAP }, // 11
5542 { "e44-13.46", 0x100000, 0x0b016c4e, TAITO_CHARS_BYTESWAP }, // 12
5543 { "e44-11.44", 0x100000, 0x34d84143, TAITO_CHARS_BYTESWAP }, // 13
5544 { "e44-10.43", 0x200000, 0x326f738e, TAITO_CHARS }, // 14
5545 { "e44-09.42", 0x100000, 0xa8e68eb7, TAITO_CHARS }, // 15
5546
5547 { "e44-20.51", 0x080000, 0x4df7e051, TAITO_68KROM2_BYTESWAP }, // 16 68k Code
5548 { "e44-21.52", 0x080000, 0xd31b94b8, TAITO_68KROM2_BYTESWAP }, // 17
5549 { "e44-15.53", 0x200000, 0x5043b608, TAITO_68KROM2 }, // 18
5550
5551 { "e44-07.38", 0x400000, 0xa9e28544, TAITO_ES5505_BYTESWAP }, // 19 Ensoniq Samples
5552 { "e44-08.39", 0x400000, 0x33ba3037, TAITO_ES5505_BYTESWAP }, // 20
5553
5554 { "d77-20.37", 0x000117, 0x6bfbec07, BRF_OPT },
5555 };
5556
5557 STD_ROM_PICK(kirameki)
STD_ROM_FN(kirameki)5558 STD_ROM_FN(kirameki)
5559
5560 static INT32 kiramekiInit()
5561 {
5562 return DrvInit(NULL, f3_24bit_palette_update, 0, KIRAMEKI, 1, 0);
5563 }
5564
5565 struct BurnDriver BurnDrvKirameki = {
5566 "kirameki", NULL, NULL, NULL, "1997",
5567 "Kirameki Star Road (Ver 2.10J 1997/08/29)\0", "No sound", "Taito Corporation", "Taito F3 System",
5568 NULL, NULL, NULL, NULL,
5569 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_QUIZ, 0,
5570 NULL, kiramekiRomInfo, kiramekiRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5571 kiramekiInit, DrvExit, DrvFrame, DrvDraw224A, DrvScan, &TaitoF3PalRecalc, 0x2000,
5572 320, 224, 4, 3
5573 };
5574
5575
5576 // Puchi Carat (Ver 2.02O 1997/10/29)
5577
5578 static struct BurnRomInfo puchicarRomDesc[] = {
5579 { "e46-16.ic20", 0x080000, 0xcf2accdf, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5580 { "e46-15.ic19", 0x080000, 0xc32c6ed8, TAITO_68KROM1_BYTESWAP32 }, // 1
5581 { "e46-14.ic18", 0x080000, 0xa154c300, TAITO_68KROM1_BYTESWAP32 }, // 2
5582 { "e46-18.ic17", 0x080000, 0x396e3122, TAITO_68KROM1_BYTESWAP32 }, // 3
5583
5584 { "e46-06.ic12", 0x200000, 0xb74336f2, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5585 { "e46-04.ic8", 0x200000, 0x463ecc4c, TAITO_SPRITESA_BYTESWAP }, // 5
5586 { "e46-05.ic11", 0x200000, 0x83a32eee, TAITO_SPRITESA_BYTESWAP }, // 6
5587 { "e46-03.ic7", 0x200000, 0xeb768193, TAITO_SPRITESA_BYTESWAP }, // 7
5588 { "e46-02.ic4", 0x200000, 0xfb046018, TAITO_SPRITESA }, // 8
5589 { "e46-01.ic3", 0x200000, 0x34fc2103, TAITO_SPRITESA }, // 9
5590
5591 { "e46-12.ic47", 0x100000, 0x1f3a9851, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
5592 { "e46-11.ic45", 0x100000, 0xe9f10bf1, TAITO_CHARS_BYTESWAP }, // 11
5593 { "e46-10.ic43", 0x100000, 0x1999b76a, TAITO_CHARS }, // 12
5594
5595 { "e46-21.ic32", 0x040000, 0xb466cff6, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
5596 { "e46-22.ic33", 0x040000, 0xc67b767e, TAITO_68KROM2_BYTESWAP }, // 14
5597
5598 { "e46-07.ic38", 0x200000, 0xf20af91e, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
5599 { "e46-08.ic39", 0x200000, 0xf7f96e1d, TAITO_ES5505_BYTESWAP }, // 16
5600 { "e46-09.ic40", 0x200000, 0x824135f8, TAITO_ES5505_BYTESWAP }, // 17
5601
5602 { "pal16l8a-d77-09a.bin", 0x104, 0xb371532b, BRF_OPT }, // 14 plds
5603 { "pal16l8a-d77-10a.bin", 0x104, 0x42f59227, BRF_OPT }, // 15
5604 { "palce16v8q-d77-11a.bin", 0x117, 0xeacc294e, BRF_OPT }, // 16
5605 { "palce16v8q-d77-12a.bin", 0x117, 0xe9920cfe, BRF_OPT }, // 17
5606 { "palce16v8q-d77-15a.bin", 0x117, 0x0edf820a, BRF_OPT }, // 18
5607 };
5608
5609 STD_ROM_PICK(puchicar)
STD_ROM_FN(puchicar)5610 STD_ROM_FN(puchicar)
5611
5612 static INT32 puchicarInit()
5613 {
5614 return DrvInit(NULL, f3_24bit_palette_update, 1, PUCHICAR, 1, 0);
5615 }
5616
5617 struct BurnDriver BurnDrvPuchicar = {
5618 "puchicar", NULL, NULL, NULL, "1997",
5619 "Puchi Carat (Ver 2.02O 1997/10/29)\0", NULL, "Taito Corporation", "Taito F3 System",
5620 NULL, NULL, NULL, NULL,
5621 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5622 NULL, puchicarRomInfo, puchicarRomName, NULL, NULL, NULL, NULL, F3AnalogInputInfo, F3AnalogDIPInfo,
5623 puchicarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5624 320, 232, 4, 3
5625 };
5626
5627
5628 // Puchi Carat (Ver 2.02J 1997/10/29)
5629
5630 static struct BurnRomInfo puchicarjRomDesc[] = {
5631 { "e46-16.ic20", 0x080000, 0xcf2accdf, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5632 { "e46-15.ic19", 0x080000, 0xc32c6ed8, TAITO_68KROM1_BYTESWAP32 }, // 1
5633 { "e46-14.ic18", 0x080000, 0xa154c300, TAITO_68KROM1_BYTESWAP32 }, // 2
5634 { "e46-13.ic17", 0x080000, 0x59fbdf3a, TAITO_68KROM1_BYTESWAP32 }, // 3
5635
5636 { "e46-06.ic12", 0x200000, 0xb74336f2, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5637 { "e46-04.ic8", 0x200000, 0x463ecc4c, TAITO_SPRITESA_BYTESWAP }, // 5
5638 { "e46-05.ic11", 0x200000, 0x83a32eee, TAITO_SPRITESA_BYTESWAP }, // 6
5639 { "e46-03.ic7", 0x200000, 0xeb768193, TAITO_SPRITESA_BYTESWAP }, // 7
5640 { "e46-02.ic4", 0x200000, 0xfb046018, TAITO_SPRITESA }, // 8
5641 { "e46-01.ic3", 0x200000, 0x34fc2103, TAITO_SPRITESA }, // 9
5642
5643 { "e46-12.ic47", 0x100000, 0x1f3a9851, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
5644 { "e46-11.ic45", 0x100000, 0xe9f10bf1, TAITO_CHARS_BYTESWAP }, // 11
5645 { "e46-10.ic43", 0x100000, 0x1999b76a, TAITO_CHARS }, // 12
5646
5647 { "e46-19.ic32", 0x040000, 0x2624eba0, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
5648 { "e46-20.ic33", 0x040000, 0x065e934f, TAITO_68KROM2_BYTESWAP }, // 14
5649
5650 { "e46-07.ic38", 0x200000, 0xf20af91e, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
5651 { "e46-08.ic39", 0x200000, 0xf7f96e1d, TAITO_ES5505_BYTESWAP }, // 16
5652 { "e46-09.ic40", 0x200000, 0x824135f8, TAITO_ES5505_BYTESWAP }, // 17
5653
5654 { "pal16l8a-d77-09a.bin", 0x104, 0xb371532b, BRF_OPT }, // 14 plds
5655 { "pal16l8a-d77-10a.bin", 0x104, 0x42f59227, BRF_OPT }, // 15
5656 { "palce16v8q-d77-11a.bin", 0x117, 0xeacc294e, BRF_OPT }, // 16
5657 { "palce16v8q-d77-12a.bin", 0x117, 0xe9920cfe, BRF_OPT }, // 17
5658 { "palce16v8q-d77-15a.bin", 0x117, 0x0edf820a, BRF_OPT }, // 18
5659 };
5660
5661 STD_ROM_PICK(puchicarj)
5662 STD_ROM_FN(puchicarj)
5663
5664 struct BurnDriver BurnDrvPuchicarj = {
5665 "puchicarj", "puchicar", NULL, NULL, "1997",
5666 "Puchi Carat (Ver 2.02J 1997/10/29)\0", NULL, "Taito Corporation", "Taito F3 System",
5667 NULL, NULL, NULL, NULL,
5668 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5669 NULL, puchicarjRomInfo, puchicarjRomName, NULL, NULL, NULL, NULL, F3AnalogInputInfo, F3AnalogDIPInfo,
5670 puchicarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5671 320, 232, 4, 3
5672 };
5673
5674
5675 // Puchi Carat (Ver 2.04A 1997/11/08)
5676
5677 static struct BurnRomInfo puchicaruRomDesc[] = {
5678 { "e46-29.ic20", 0x080000, 0x6df39fc3, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5679 { "e46-28.ic19", 0x080000, 0x06a29747, TAITO_68KROM1_BYTESWAP32 }, // 1
5680 { "e46-27.ic18", 0x080000, 0x9441cc7c, TAITO_68KROM1_BYTESWAP32 }, // 2
5681 { "e46-17.ic17", 0x080000, 0xa0ff0e8c, TAITO_68KROM1_BYTESWAP32 }, // 3
5682
5683 { "e46-06.ic12", 0x200000, 0xb74336f2, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5684 { "e46-04.ic8", 0x200000, 0x463ecc4c, TAITO_SPRITESA_BYTESWAP }, // 5
5685 { "e46-05.ic11", 0x200000, 0x83a32eee, TAITO_SPRITESA_BYTESWAP }, // 6
5686 { "e46-03.ic7", 0x200000, 0xeb768193, TAITO_SPRITESA_BYTESWAP }, // 7
5687 { "e46-02.ic4", 0x200000, 0xfb046018, TAITO_SPRITESA }, // 8
5688 { "e46-01.ic3", 0x200000, 0x34fc2103, TAITO_SPRITESA }, // 9
5689
5690 { "e46-12.ic47", 0x100000, 0x1f3a9851, TAITO_CHARS_BYTESWAP }, // 10 Layer Tiles
5691 { "e46-11.ic45", 0x100000, 0xe9f10bf1, TAITO_CHARS_BYTESWAP }, // 11
5692 { "e46-10.ic43", 0x100000, 0x1999b76a, TAITO_CHARS }, // 12
5693
5694 { "e46-21.ic32", 0x040000, 0xb466cff6, TAITO_68KROM2_BYTESWAP }, // 13 68k Code
5695 { "e46-22.ic33", 0x040000, 0xc67b767e, TAITO_68KROM2_BYTESWAP }, // 14
5696
5697 { "e46-07.ic38", 0x200000, 0xf20af91e, TAITO_ES5505_BYTESWAP }, // 15 Ensoniq Samples
5698 { "e46-08.ic39", 0x200000, 0xf7f96e1d, TAITO_ES5505_BYTESWAP }, // 16
5699 { "e46-09.ic40", 0x200000, 0x824135f8, TAITO_ES5505_BYTESWAP }, // 17
5700
5701 { "pal16l8a-d77-09a.bin", 0x104, 0xb371532b, BRF_OPT }, // 14 plds
5702 { "pal16l8a-d77-10a.bin", 0x104, 0x42f59227, BRF_OPT }, // 15
5703 { "palce16v8q-d77-11a.bin", 0x117, 0xeacc294e, BRF_OPT }, // 16
5704 { "palce16v8q-d77-12a.bin", 0x117, 0xe9920cfe, BRF_OPT }, // 17
5705 { "palce16v8q-d77-15a.bin", 0x117, 0x0edf820a, BRF_OPT }, // 18
5706 };
5707
5708 STD_ROM_PICK(puchicaru)
5709 STD_ROM_FN(puchicaru)
5710
5711 struct BurnDriver BurnDrvPuchicaru = {
5712 "puchicaru", "puchicar", NULL, NULL, "1997",
5713 "Puchi Carat (Ver 2.04A 1997/11/08)\0", NULL, "Taito America Corporation", "Taito F3 System",
5714 NULL, NULL, NULL, NULL,
5715 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5716 NULL, puchicaruRomInfo, puchicaruRomName, NULL, NULL, NULL, NULL, F3AnalogInputInfo, F3AnalogDIPInfo,
5717 puchicarInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5718 320, 232, 4, 3
5719 };
5720
5721
5722 // Puzzle Bobble 4 (Ver 2.04O 1997/12/19)
5723
5724 static struct BurnRomInfo pbobble4RomDesc[] = {
5725 { "e49-12.20", 0x080000, 0xfffea203, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5726 { "e49-11.19", 0x080000, 0xbf69a087, TAITO_68KROM1_BYTESWAP32 }, // 1
5727 { "e49-10.18", 0x080000, 0x0307460b, TAITO_68KROM1_BYTESWAP32 }, // 2
5728 { "e49-16.17", 0x080000, 0x0a021624, TAITO_68KROM1_BYTESWAP32 }, // 3
5729
5730 { "e49-02", 0x100000, 0xc7d2f40b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5731 { "e49-01", 0x100000, 0xa3dd5f85, TAITO_SPRITESA_BYTESWAP }, // 5
5732
5733 { "e49-08", 0x100000, 0x87408106, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5734 { "e49-07", 0x100000, 0x1e1e8e1c, TAITO_CHARS_BYTESWAP }, // 7
5735 { "e49-06", 0x100000, 0xec85f7ce, TAITO_CHARS }, // 8
5736
5737 { "e49-13.32", 0x040000, 0x83536f7f, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5738 { "e49-14.33", 0x040000, 0x19815bdb, TAITO_68KROM2_BYTESWAP }, // 10
5739
5740 { "e49-03", 0x200000, 0xf64303e0, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5741 { "e49-04", 0x200000, 0x09be229c, TAITO_ES5505_BYTESWAP }, // 12
5742 { "e49-05", 0x200000, 0x5ce90ee2, TAITO_ES5505_BYTESWAP }, // 13
5743
5744 { "pal16l8a-d77-09.bin", 0x104, 0xb371532b, BRF_OPT }, // 14 plds
5745 { "pal16l8a-d77-10.bin", 0x104, 0x42f59227, BRF_OPT }, // 15
5746 { "palce16v8q-d77-11.bin", 0x117, 0xeacc294e, BRF_OPT }, // 16
5747 { "palce16v8q-d77-12.bin", 0x117, 0xe9920cfe, BRF_OPT }, // 17
5748 { "palce16v8q-d77-15.bin", 0x117, 0x00000000, BRF_NODUMP },// 18
5749 };
5750
5751 STD_ROM_PICK(pbobble4)
STD_ROM_FN(pbobble4)5752 STD_ROM_FN(pbobble4)
5753
5754 static INT32 pbobble4Init()
5755 {
5756 return DrvInit(NULL, f3_24bit_palette_update, 0, PBOBBLE4, 1, 0x4053c0);
5757 }
5758
5759 struct BurnDriver BurnDrvPbobble4 = {
5760 "pbobble4", NULL, NULL, NULL, "1997",
5761 "Puzzle Bobble 4 (Ver 2.04O 1997/12/19)\0", NULL, "Taito Corporation", "Taito F3 System",
5762 NULL, NULL, NULL, NULL,
5763 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5764 NULL, pbobble4RomInfo, pbobble4RomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5765 pbobble4Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5766 320, 232, 4, 3
5767 };
5768
5769
5770 // Puzzle Bobble 4 (Ver 2.04J 1997/12/19)
5771
5772 static struct BurnRomInfo pbobble4jRomDesc[] = {
5773 { "e49-12.20", 0x080000, 0xfffea203, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5774 { "e49-11.19", 0x080000, 0xbf69a087, TAITO_68KROM1_BYTESWAP32 }, // 1
5775 { "e49-10.18", 0x080000, 0x0307460b, TAITO_68KROM1_BYTESWAP32 }, // 2
5776 { "e49-09.17", 0x080000, 0xe40c7708, TAITO_68KROM1_BYTESWAP32 }, // 3
5777
5778 { "e49-02", 0x100000, 0xc7d2f40b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5779 { "e49-01", 0x100000, 0xa3dd5f85, TAITO_SPRITESA_BYTESWAP }, // 5
5780
5781 { "e49-08", 0x100000, 0x87408106, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5782 { "e49-07", 0x100000, 0x1e1e8e1c, TAITO_CHARS_BYTESWAP }, // 7
5783 { "e49-06", 0x100000, 0xec85f7ce, TAITO_CHARS }, // 8
5784
5785 { "e49-13.32", 0x040000, 0x83536f7f, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5786 { "e49-14.33", 0x040000, 0x19815bdb, TAITO_68KROM2_BYTESWAP }, // 10
5787
5788 { "e49-03", 0x200000, 0xf64303e0, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5789 { "e49-04", 0x200000, 0x09be229c, TAITO_ES5505_BYTESWAP }, // 12
5790 { "e49-05", 0x200000, 0x5ce90ee2, TAITO_ES5505_BYTESWAP }, // 13
5791
5792 { "pal16l8a-d77-09.bin", 0x104, 0xb371532b, BRF_OPT }, // 14 plds
5793 { "pal16l8a-d77-10.bin", 0x104, 0x42f59227, BRF_OPT }, // 15
5794 { "palce16v8q-d77-11.bin", 0x117, 0xeacc294e, BRF_OPT }, // 16
5795 { "palce16v8q-d77-12.bin", 0x117, 0xe9920cfe, BRF_OPT }, // 17
5796 { "palce16v8q-d77-15.bin", 0x117, 0x00000000, BRF_NODUMP },// 18
5797 };
5798
5799 STD_ROM_PICK(pbobble4j)
5800 STD_ROM_FN(pbobble4j)
5801
5802 struct BurnDriver BurnDrvPbobble4j = {
5803 "pbobble4j", "pbobble4", NULL, NULL, "1997",
5804 "Puzzle Bobble 4 (Ver 2.04J 1997/12/19)\0", NULL, "Taito Corporation", "Taito F3 System",
5805 NULL, NULL, NULL, NULL,
5806 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5807 NULL, pbobble4jRomInfo, pbobble4jRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5808 pbobble4Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5809 320, 232, 4, 3
5810 };
5811
5812
5813 // Puzzle Bobble 4 (Ver 2.04A 1997/12/19)
5814
5815 static struct BurnRomInfo pbobble4uRomDesc[] = {
5816 { "e49-12.20", 0x080000, 0xfffea203, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5817 { "e49-11.19", 0x080000, 0xbf69a087, TAITO_68KROM1_BYTESWAP32 }, // 1
5818 { "e49-10.18", 0x080000, 0x0307460b, TAITO_68KROM1_BYTESWAP32 }, // 2
5819 { "e49-15.17", 0x080000, 0x7d0526b2, TAITO_68KROM1_BYTESWAP32 }, // 3
5820
5821 { "e49-02", 0x100000, 0xc7d2f40b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5822 { "e49-01", 0x100000, 0xa3dd5f85, TAITO_SPRITESA_BYTESWAP }, // 5
5823
5824 { "e49-08", 0x100000, 0x87408106, TAITO_CHARS_BYTESWAP }, // 6 Layer Tiles
5825 { "e49-07", 0x100000, 0x1e1e8e1c, TAITO_CHARS_BYTESWAP }, // 7
5826 { "e49-06", 0x100000, 0xec85f7ce, TAITO_CHARS }, // 8
5827
5828 { "e49-13.32", 0x040000, 0x83536f7f, TAITO_68KROM2_BYTESWAP }, // 9 68k Code
5829 { "e49-14.33", 0x040000, 0x19815bdb, TAITO_68KROM2_BYTESWAP }, // 10
5830
5831 { "e49-03", 0x200000, 0xf64303e0, TAITO_ES5505_BYTESWAP }, // 11 Ensoniq Samples
5832 { "e49-04", 0x200000, 0x09be229c, TAITO_ES5505_BYTESWAP }, // 12
5833 { "e49-05", 0x200000, 0x5ce90ee2, TAITO_ES5505_BYTESWAP }, // 13
5834
5835 { "pal16l8a-d77-09.bin", 0x104, 0xb371532b, BRF_OPT }, // 14 plds
5836 { "pal16l8a-d77-10.bin", 0x104, 0x42f59227, BRF_OPT }, // 15
5837 { "palce16v8q-d77-11.bin", 0x117, 0xeacc294e, BRF_OPT }, // 16
5838 { "palce16v8q-d77-12.bin", 0x117, 0xe9920cfe, BRF_OPT }, // 17
5839 { "palce16v8q-d77-15.bin", 0x117, 0x00000000, BRF_NODUMP },// 18
5840 };
5841
5842 STD_ROM_PICK(pbobble4u)
5843 STD_ROM_FN(pbobble4u)
5844
5845 struct BurnDriver BurnDrvPbobble4u = {
5846 "pbobble4u", "pbobble4", NULL, NULL, "1997",
5847 "Puzzle Bobble 4 (Ver 2.04A 1997/12/19)\0", NULL, "Taito Corporation", "Taito F3 System",
5848 NULL, NULL, NULL, NULL,
5849 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5850 NULL, pbobble4uRomInfo, pbobble4uRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5851 pbobble4Init, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5852 320, 232, 4, 3
5853 };
5854
5855
5856 // Pop'n Pop (Ver 2.07O 1998/02/09)
5857
5858 static struct BurnRomInfo popnpopRomDesc[] = {
5859 { "e51-12.20", 0x080000, 0x86a237d5, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5860 { "e51-11.19", 0x080000, 0x8a49f34f, TAITO_68KROM1_BYTESWAP32 }, // 1
5861 { "e51-10.18", 0x080000, 0x4bce68f8, TAITO_68KROM1_BYTESWAP32 }, // 2
5862 { "e51-16.17", 0x080000, 0x2a9d8e0f, TAITO_68KROM1_BYTESWAP32 }, // 3
5863
5864 { "e51-03.12", 0x100000, 0xa24c4607, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5865 { "e51-02.8", 0x100000, 0x6aa8b96c, TAITO_SPRITESA_BYTESWAP }, // 5
5866 { "e51-01.4", 0x100000, 0x70347e24, TAITO_SPRITESA }, // 6
5867
5868 { "e51-08.47", 0x200000, 0x3ad41f02, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
5869 { "e51-07.45", 0x200000, 0x95873e46, TAITO_CHARS_BYTESWAP }, // 8
5870 { "e51-06.43", 0x200000, 0xc240d6c8, TAITO_CHARS }, // 9
5871
5872 { "e51-13.32", 0x040000, 0x3b9e3986, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
5873 { "e51-14.33", 0x040000, 0x1f9a5015, TAITO_68KROM2_BYTESWAP }, // 11
5874
5875 { "e51-04.38", 0x200000, 0x66790f55, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
5876 { "e51-05.41", 0x200000, 0x4d08b26d, TAITO_ES5505_BYTESWAP }, // 13
5877
5878 { "pal16l8a-d77-09.ic14", 0x104, 0xb371532b, 0 }, // 14 plds
5879 { "pal16l8a-d77-10.ic28", 0x104, 0x42f59227, 0 }, // 15
5880 { "palce16v8q-d77-11.ic37", 0x117, 0xeacc294e, 0 }, // 16
5881 { "palce16v8q-d77-12.ic48", 0x117, 0xe9920cfe, 0 }, // 17
5882 { "palce16v8q-d77-15.ic21", 0x117, 0x00000000, 0 | BRF_NODUMP },// 18
5883 };
5884
5885 STD_ROM_PICK(popnpop)
STD_ROM_FN(popnpop)5886 STD_ROM_FN(popnpop)
5887
5888 static INT32 popnpopInit()
5889 {
5890 return DrvInit(NULL, f3_24bit_palette_update, 1, POPNPOP, 1, 0);
5891 }
5892
5893 struct BurnDriver BurnDrvPopnpop = {
5894 "popnpop", NULL, NULL, NULL, "1997",
5895 "Pop'n Pop (Ver 2.07O 1998/02/09)\0", NULL, "Taito Corporation", "Taito F3 System",
5896 NULL, NULL, NULL, NULL,
5897 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5898 NULL, popnpopRomInfo, popnpopRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5899 popnpopInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5900 320, 232, 4, 3
5901 };
5902
5903
5904 // Pop'n Pop (Ver 2.07J 1998/02/09)
5905
5906 static struct BurnRomInfo popnpopjRomDesc[] = {
5907 { "e51-12.20", 0x080000, 0x86a237d5, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5908 { "e51-11.19", 0x080000, 0x8a49f34f, TAITO_68KROM1_BYTESWAP32 }, // 1
5909 { "e51-10.18", 0x080000, 0x4bce68f8, TAITO_68KROM1_BYTESWAP32 }, // 2
5910 { "e51-09.17", 0x080000, 0x4a086017, TAITO_68KROM1_BYTESWAP32 }, // 3
5911
5912 { "e51-03.12", 0x100000, 0xa24c4607, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5913 { "e51-02.8", 0x100000, 0x6aa8b96c, TAITO_SPRITESA_BYTESWAP }, // 5
5914 { "e51-01.4", 0x100000, 0x70347e24, TAITO_SPRITESA }, // 6
5915
5916 { "e51-08.47", 0x200000, 0x3ad41f02, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
5917 { "e51-07.45", 0x200000, 0x95873e46, TAITO_CHARS_BYTESWAP }, // 8
5918 { "e51-06.43", 0x200000, 0xc240d6c8, TAITO_CHARS }, // 9
5919
5920 { "e51-13.32", 0x040000, 0x3b9e3986, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
5921 { "e51-14.33", 0x040000, 0x1f9a5015, TAITO_68KROM2_BYTESWAP }, // 11
5922
5923 { "e51-04.38", 0x200000, 0x66790f55, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
5924 { "e51-05.41", 0x200000, 0x4d08b26d, TAITO_ES5505_BYTESWAP }, // 13
5925
5926 { "pal16l8a-d77-09.ic14", 0x104, 0xb371532b, 0 }, // 14 plds
5927 { "pal16l8a-d77-10.ic28", 0x104, 0x42f59227, 0 }, // 15
5928 { "palce16v8q-d77-11.ic37", 0x117, 0xeacc294e, 0 }, // 16
5929 { "palce16v8q-d77-12.ic48", 0x117, 0xe9920cfe, 0 }, // 17
5930 { "palce16v8q-d77-15.ic21", 0x117, 0x00000000, 0 | BRF_NODUMP },// 18
5931 };
5932
5933 STD_ROM_PICK(popnpopj)
5934 STD_ROM_FN(popnpopj)
5935
5936 struct BurnDriver BurnDrvPopnpopj = {
5937 "popnpopj", "popnpop", NULL, NULL, "1997",
5938 "Pop'n Pop (Ver 2.07J 1998/02/09)\0", NULL, "Taito Corporation", "Taito F3 System",
5939 NULL, NULL, NULL, NULL,
5940 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5941 NULL, popnpopjRomInfo, popnpopjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5942 popnpopInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5943 320, 232, 4, 3
5944 };
5945
5946
5947 // Pop'n Pop (Ver 2.07A 1998/02/09)
5948
5949 static struct BurnRomInfo popnpopuRomDesc[] = {
5950 { "e51-12.20", 0x080000, 0x86a237d5, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5951 { "e51-11.19", 0x080000, 0x8a49f34f, TAITO_68KROM1_BYTESWAP32 }, // 1
5952 { "e51-10.18", 0x080000, 0x4bce68f8, TAITO_68KROM1_BYTESWAP32 }, // 2
5953 { "e51-15.17", 0x080000, 0x1ad77903, TAITO_68KROM1_BYTESWAP32 }, // 3
5954
5955 { "e51-03.12", 0x100000, 0xa24c4607, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5956 { "e51-02.8", 0x100000, 0x6aa8b96c, TAITO_SPRITESA_BYTESWAP }, // 5
5957 { "e51-01.4", 0x100000, 0x70347e24, TAITO_SPRITESA }, // 6
5958
5959 { "e51-08.47", 0x200000, 0x3ad41f02, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
5960 { "e51-07.45", 0x200000, 0x95873e46, TAITO_CHARS_BYTESWAP }, // 8
5961 { "e51-06.43", 0x200000, 0xc240d6c8, TAITO_CHARS }, // 9
5962
5963 { "e51-13.32", 0x040000, 0x3b9e3986, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
5964 { "e51-14.33", 0x040000, 0x1f9a5015, TAITO_68KROM2_BYTESWAP }, // 11
5965
5966 { "e51-04.38", 0x200000, 0x66790f55, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
5967 { "e51-05.41", 0x200000, 0x4d08b26d, TAITO_ES5505_BYTESWAP }, // 13
5968
5969 { "pal16l8a-d77-09.ic14", 0x104, 0xb371532b, 0 }, // 14 plds
5970 { "pal16l8a-d77-10.ic28", 0x104, 0x42f59227, 0 }, // 15
5971 { "palce16v8q-d77-11.ic37", 0x117, 0xeacc294e, 0 }, // 16
5972 { "palce16v8q-d77-12.ic48", 0x117, 0xe9920cfe, 0 }, // 17
5973 { "palce16v8q-d77-15.ic21", 0x117, 0x00000000, 0 | BRF_NODUMP },// 18
5974 };
5975
5976 STD_ROM_PICK(popnpopu)
5977 STD_ROM_FN(popnpopu)
5978
5979 struct BurnDriver BurnDrvPopnpopu = {
5980 "popnpopu", "popnpop", NULL, NULL, "1997",
5981 "Pop'n Pop (Ver 2.07A 1998/02/09)\0", NULL, "Taito Corporation", "Taito F3 System",
5982 NULL, NULL, NULL, NULL,
5983 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
5984 NULL, popnpopuRomInfo, popnpopuRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
5985 popnpopInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
5986 320, 232, 4, 3
5987 };
5988
5989
5990 // Land Maker (Ver 2.02O 1998/06/02)
5991
5992 static struct BurnRomInfo landmakrRomDesc[] = {
5993 { "e61-19.20", 0x080000, 0xf92eccd0, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
5994 { "e61-18.19", 0x080000, 0x5a26c9e0, TAITO_68KROM1_BYTESWAP32 }, // 1
5995 { "e61-17.18", 0x080000, 0x710776a8, TAITO_68KROM1_BYTESWAP32 }, // 2
5996 { "e61-16.17", 0x080000, 0xb073cda9, TAITO_68KROM1_BYTESWAP32 }, // 3
5997
5998 { "e61-03.12", 0x200000, 0xe8abfc46, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
5999 { "e61-02.08", 0x200000, 0x1dc4a164, TAITO_SPRITESA_BYTESWAP }, // 5
6000 { "e61-01.04", 0x200000, 0x6cdd8311, TAITO_SPRITESA }, // 6
6001
6002 { "e61-09.47", 0x200000, 0x6ba29987, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
6003 { "e61-08.45", 0x200000, 0x76c98e14, TAITO_CHARS_BYTESWAP }, // 8
6004 { "e61-07.43", 0x200000, 0x4a57965d, TAITO_CHARS }, // 9
6005
6006 { "e61-14.32", 0x040000, 0x18961bbb, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
6007 { "e61-15.33", 0x040000, 0x2c64557a, TAITO_68KROM2_BYTESWAP }, // 11
6008
6009 { "e61-04.38", 0x200000, 0xc27aec0c, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
6010 { "e61-05.39", 0x200000, 0x83920d9d, TAITO_ES5505_BYTESWAP }, // 13
6011 { "e61-06.40", 0x200000, 0x2e717bfe, TAITO_ES5505_BYTESWAP }, // 14
6012
6013 { "pal16l8a-d77-09.ic14", 0x104, 0xb371532b, 0 }, // 15 plds
6014 { "pal16l8a-d77-10.ic28", 0x104, 0x42f59227, 0 }, // 16
6015 { "palce16v8q-d77-11.ic37", 0x117, 0xeacc294e, 0 }, // 17
6016 { "palce16v8q-d77-12.ic48", 0x117, 0xe9920cfe, 0 }, // 18
6017 { "palce16v8q-d77-15.ic21", 0x117, 0x00000000, 0 | BRF_NODUMP },// 19
6018 };
6019
6020 STD_ROM_PICK(landmakr)
STD_ROM_FN(landmakr)6021 STD_ROM_FN(landmakr)
6022
6023 static INT32 landmakrInit()
6024 {
6025 return DrvInit(NULL, f3_24bit_palette_update, 1, LANDMAKR, 1, 0x400826);
6026 }
6027
6028 struct BurnDriver BurnDrvLandmakr = {
6029 "landmakr", NULL, NULL, NULL, "1998",
6030 "Land Maker (Ver 2.02O 1998/06/02)\0", NULL, "Taito Corporation", "Taito F3 System",
6031 NULL, NULL, NULL, NULL,
6032 BDF_GAME_WORKING, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
6033 NULL, landmakrRomInfo, landmakrRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
6034 landmakrInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
6035 320, 232, 4, 3
6036 };
6037
6038
6039 // Land Maker (Ver 2.01J 1998/06/01)
6040
6041 static struct BurnRomInfo landmakrjRomDesc[] = {
6042 { "e61-13.20", 0x080000, 0x0af756a2, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
6043 { "e61-12.19", 0x080000, 0x636b3df9, TAITO_68KROM1_BYTESWAP32 }, // 1
6044 { "e61-11.18", 0x080000, 0x279a0ee4, TAITO_68KROM1_BYTESWAP32 }, // 2
6045 { "e61-10.17", 0x080000, 0xdaabf2b2, TAITO_68KROM1_BYTESWAP32 }, // 3
6046
6047 { "e61-03.12", 0x200000, 0xe8abfc46, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
6048 { "e61-02.08", 0x200000, 0x1dc4a164, TAITO_SPRITESA_BYTESWAP }, // 5
6049 { "e61-01.04", 0x200000, 0x6cdd8311, TAITO_SPRITESA }, // 6
6050
6051 { "e61-09.47", 0x200000, 0x6ba29987, TAITO_CHARS_BYTESWAP }, // 7 Layer Tiles
6052 { "e61-08.45", 0x200000, 0x76c98e14, TAITO_CHARS_BYTESWAP }, // 8
6053 { "e61-07.43", 0x200000, 0x4a57965d, TAITO_CHARS }, // 9
6054
6055 { "e61-14.32", 0x040000, 0x18961bbb, TAITO_68KROM2_BYTESWAP }, // 10 68k Code
6056 { "e61-15.33", 0x040000, 0x2c64557a, TAITO_68KROM2_BYTESWAP }, // 11
6057
6058 { "e61-04.38", 0x200000, 0xc27aec0c, TAITO_ES5505_BYTESWAP }, // 12 Ensoniq Samples
6059 { "e61-05.39", 0x200000, 0x83920d9d, TAITO_ES5505_BYTESWAP }, // 13
6060 { "e61-06.40", 0x200000, 0x2e717bfe, TAITO_ES5505_BYTESWAP }, // 14
6061
6062 { "pal16l8a-d77-09.ic14", 0x104, 0xb371532b, 0 }, // 15 plds
6063 { "pal16l8a-d77-10.ic28", 0x104, 0x42f59227, 0 }, // 16
6064 { "palce16v8q-d77-11.ic37", 0x117, 0xeacc294e, 0 }, // 17
6065 { "palce16v8q-d77-12.ic48", 0x117, 0xe9920cfe, 0 }, // 18
6066 { "palce16v8q-d77-15.ic21", 0x117, 0x00000000, 0 | BRF_NODUMP },// 19
6067 };
6068
6069 STD_ROM_PICK(landmakrj)
6070 STD_ROM_FN(landmakrj)
6071
6072 struct BurnDriver BurnDrvLandmakrj = {
6073 "landmakrj", "landmakr", NULL, NULL, "1998",
6074 "Land Maker (Ver 2.01J 1998/06/01)\0", NULL, "Taito Corporation", "Taito F3 System",
6075 NULL, NULL, NULL, NULL,
6076 BDF_GAME_WORKING | BDF_CLONE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
6077 NULL, landmakrjRomInfo, landmakrjRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
6078 landmakrInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
6079 320, 232, 4, 3
6080 };
6081
6082
6083 // Land Maker (Ver 2.02O 1998/06/02) (Prototype)
6084
6085 static struct BurnRomInfo landmakrpRomDesc[] = {
6086 { "mpro-3.60", 0x80000, 0xf92eccd0, TAITO_68KROM1_BYTESWAP32 }, // 0 68ec20 Code
6087 { "mpro-2.61", 0x80000, 0x5a26c9e0, TAITO_68KROM1_BYTESWAP32 }, // 1
6088 { "mpro-1.62", 0x80000, 0x710776a8, TAITO_68KROM1_BYTESWAP32 }, // 2
6089 { "mpro-0.63", 0x80000, 0xbc71dd2f, TAITO_68KROM1_BYTESWAP32 }, // 3
6090
6091 { "obj0-0.8", 0x80000, 0x4b862c1b, TAITO_SPRITESA_BYTESWAP }, // 4 Sprites
6092 { "obj0-1.20", 0x80000, 0x1dc6e1ae, TAITO_SPRITESA_BYTESWAP }, // 5
6093 { "obj1-0.7", 0x80000, 0x90502355, TAITO_SPRITESA_BYTESWAP }, // 6
6094 { "obj1-1.19", 0x80000, 0xa24edb24, TAITO_SPRITESA_BYTESWAP }, // 7
6095 { "obj2-0.6", 0x80000, 0x3bffe4b2, TAITO_SPRITESA_BYTESWAP }, // 8
6096 { "obj2-1.18", 0x80000, 0x1b2a87f3, TAITO_SPRITESA_BYTESWAP }, // 9
6097 { "obj3-0.5", 0x80000, 0x3a0e1479, TAITO_SPRITESA_BYTESWAP }, // 10
6098 { "obj3-1.17", 0x80000, 0xc7e91180, TAITO_SPRITESA_BYTESWAP }, // 11
6099 { "obj0-2.32", 0x80000, 0x94cc01d0, TAITO_SPRITESA }, // 12
6100 { "obj1-2.31", 0x80000, 0xc2757722, TAITO_SPRITESA }, // 13
6101 { "obj2-2.30", 0x80000, 0x934556ff, TAITO_SPRITESA }, // 14
6102 { "obj3-2.29", 0x80000, 0x97f0f777, TAITO_SPRITESA }, // 15
6103
6104 { "scr0-0.7", 0x80000, 0xda6ba562, TAITO_CHARS_BYTESWAP32 }, // 16 Layer Tiles
6105 { "scr0-2.5", 0x80000, 0x36756b9c, TAITO_CHARS_BYTESWAP32 }, // 17
6106 { "scr0-1.6", 0x80000, 0x8c201d27, TAITO_CHARS_BYTESWAP32 }, // 18
6107 { "scr0-3.4", 0x80000, 0x4e0274f3, TAITO_CHARS_BYTESWAP32 }, // 19
6108 { "scr1-0.19", 0x80000, 0x2689f716, TAITO_CHARS_BYTESWAP32 }, // 20
6109 { "scr1-2.17", 0x80000, 0x7841468a, TAITO_CHARS_BYTESWAP32 }, // 21
6110 { "scr1-1.18", 0x80000, 0xf3086949, TAITO_CHARS_BYTESWAP32 }, // 22
6111 { "scr1-3.16", 0x80000, 0x926ad229, TAITO_CHARS_BYTESWAP32 }, // 23
6112 { "scr0-4.3", 0x80000, 0x5b3cf564, TAITO_CHARS_BYTESWAP }, // 24
6113 { "scr0-5.2", 0x80000, 0x8e1ea0fe, TAITO_CHARS_BYTESWAP }, // 25
6114 { "scr1-4.15", 0x80000, 0x783b6d10, TAITO_CHARS_BYTESWAP }, // 26
6115 { "scr1-5.14", 0x80000, 0x24aba128, TAITO_CHARS_BYTESWAP }, // 27
6116
6117 { "spro-1.66", 0x40000, 0x18961bbb, TAITO_68KROM2_BYTESWAP }, // 28 68k Code
6118 { "spro-0.65", 0x40000, 0x2c64557a, TAITO_68KROM2_BYTESWAP }, // 29
6119
6120 { "snd-0.43", 0x80000, 0x0e5ef5c8, TAITO_ES5505_BYTESWAP }, // 30 Ensoniq Samples
6121 { "snd-1.44", 0x80000, 0x2998fd65, TAITO_ES5505_BYTESWAP }, // 31
6122 { "snd-2.45", 0x80000, 0xda7477ad, TAITO_ES5505_BYTESWAP }, // 32
6123 { "snd-3.46", 0x80000, 0x141670b9, TAITO_ES5505_BYTESWAP }, // 33
6124 { "snd-4.32", 0x80000, 0xe9dc18f6, TAITO_ES5505_BYTESWAP }, // 34
6125 { "snd-5.33", 0x80000, 0x8af91ca8, TAITO_ES5505_BYTESWAP }, // 35
6126 { "snd-6.34", 0x80000, 0x6f520b82, TAITO_ES5505_BYTESWAP }, // 36
6127 { "snd-7.35", 0x80000, 0x69410f0f, TAITO_ES5505_BYTESWAP }, // 37
6128 { "snd-8.20", 0x80000, 0xd98c275e, TAITO_ES5505_BYTESWAP }, // 38
6129 { "snd-9.21", 0x80000, 0x82a76cfc, TAITO_ES5505_BYTESWAP }, // 39
6130 { "snd-10.22", 0x80000, 0x0345f585, TAITO_ES5505_BYTESWAP }, // 40
6131 { "snd-11.23", 0x80000, 0x4caf571a, TAITO_ES5505_BYTESWAP }, // 41
6132 };
6133
6134 STD_ROM_PICK(landmakrp)
STD_ROM_FN(landmakrp)6135 STD_ROM_FN(landmakrp)
6136
6137 static INT32 landmakrpRomCallback()
6138 {
6139 UINT32 *ROM = (UINT32 *)Taito68KRom1;
6140
6141 ROM[0x1ffff8 / 4] = BURN_ENDIAN_SWAP_INT32(0xffffffff);
6142 ROM[0x1ffffc / 4] = BURN_ENDIAN_SWAP_INT32(0x0003ffff);
6143
6144 return 0;
6145 }
6146
landmakrpInit()6147 static INT32 landmakrpInit()
6148 {
6149 return DrvInit(landmakrpRomCallback, f3_24bit_palette_update, 1, LANDMAKR, 1, 0);
6150 }
6151
6152 struct BurnDriver BurnDrvLandmakrp = {
6153 "landmakrp", "landmakr", NULL, NULL, "1998",
6154 "Land Maker (Ver 2.02O 1998/06/02) (Prototype)\0", NULL, "Taito Corporation", "Taito F3 System",
6155 NULL, NULL, NULL, NULL,
6156 BDF_GAME_WORKING | BDF_CLONE | BDF_PROTOTYPE, 2, HARDWARE_TAITO_MISC, GBF_PUZZLE, 0,
6157 NULL, landmakrpRomInfo, landmakrpRomName, NULL, NULL, NULL, NULL, F3InputInfo, F3DIPInfo,
6158 landmakrpInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &TaitoF3PalRecalc, 0x2000,
6159 320, 232, 4, 3
6160 };
6161