1 // FB Alpha Big Striker bootleg Hardware
2 // Based on MAME driver by David Haywood
3
4 // note:
5 // the dots in place of the title are normal
6 // note the glitches on the black on boot are normal
7
8 #include "tiles_generic.h"
9 #include "m68000_intf.h"
10 #include "msm6295.h"
11 #include "burn_pal.h"
12
13 static UINT8 *AllMem;
14 static UINT8 *MemEnd;
15 static UINT8 *AllRam;
16 static UINT8 *RamEnd;
17 static UINT8 *Drv68KROM;
18 static UINT8 *DrvGfxROM0;
19 static UINT8 *DrvGfxROM1;
20 static UINT8 *DrvGfxROM2;
21 static UINT8 *DrvSndROM0;
22 static UINT8 *DrvSndROM1;
23 static UINT8 *Drv68KRAM0;
24 static UINT8 *Drv68KRAM1;
25 static UINT8 *Drv68KRAM2;
26 static UINT8 *Drv68KRAM3;
27 static UINT8 *DrvFgRAM;
28 static UINT8 *DrvBgRAM;
29 static UINT8 *DrvTxRAM;
30 static UINT8 *DrvSprRAM;
31
32 static UINT16 scroll[2][2];
33
34 static UINT8 DrvRecalc;
35
36 static UINT8 DrvJoy1[8];
37 static UINT8 DrvJoy2[8];
38 static UINT8 DrvJoy3[8];
39 static UINT8 DrvDips[2];
40 static UINT8 DrvReset;
41 static UINT8 DrvInputs[3];
42
43 static struct BurnInputInfo BigstrkbInputList[] = {
44 {"P1 Coin", BIT_DIGITAL, DrvJoy1 + 0, "p1 coin" },
45 {"P1 Start", BIT_DIGITAL, DrvJoy2 + 7, "p1 start" },
46 {"P1 Up", BIT_DIGITAL, DrvJoy2 + 0, "p1 up" },
47 {"P1 Down", BIT_DIGITAL, DrvJoy2 + 1, "p1 down" },
48 {"P1 Left", BIT_DIGITAL, DrvJoy2 + 2, "p1 left" },
49 {"P1 Right", BIT_DIGITAL, DrvJoy2 + 3, "p1 right" },
50 {"P1 Button 1", BIT_DIGITAL, DrvJoy2 + 4, "p1 fire 1" },
51 {"P1 Button 2", BIT_DIGITAL, DrvJoy2 + 5, "p1 fire 2" },
52 {"P1 Button 3", BIT_DIGITAL, DrvJoy2 + 6, "p1 fire 3" },
53
54 {"P2 Coin", BIT_DIGITAL, DrvJoy1 + 1, "p2 coin" },
55 {"P2 Start", BIT_DIGITAL, DrvJoy3 + 7, "p2 start" },
56 {"P2 Up", BIT_DIGITAL, DrvJoy3 + 0, "p2 up" },
57 {"P2 Down", BIT_DIGITAL, DrvJoy3 + 1, "p2 down" },
58 {"P2 Left", BIT_DIGITAL, DrvJoy3 + 2, "p2 left" },
59 {"P2 Right", BIT_DIGITAL, DrvJoy3 + 3, "p2 right" },
60 {"P2 Button 1", BIT_DIGITAL, DrvJoy3 + 4, "p2 fire 1" },
61 {"P2 Button 2", BIT_DIGITAL, DrvJoy3 + 5, "p2 fire 2" },
62 {"P2 Button 3", BIT_DIGITAL, DrvJoy3 + 6, "p2 fire 3" },
63
64 {"Reset", BIT_DIGITAL, &DrvReset, "reset" },
65 {"Dip A", BIT_DIPSWITCH, DrvDips + 0, "dip" },
66 {"Dip B", BIT_DIPSWITCH, DrvDips + 1, "dip" },
67 };
68
69 STDINPUTINFO(Bigstrkb)
70
71 static struct BurnDIPInfo BigstrkbDIPList[]=
72 {
73 {0x13, 0xff, 0xff, 0xff, NULL },
74 {0x14, 0xff, 0xff, 0xff, NULL },
75
76 {0 , 0xfe, 0 , 11, "Coin A" },
77 {0x13, 0x01, 0x0f, 0x07, "4 Coins 1 Credits" },
78 {0x13, 0x01, 0x0f, 0x08, "3 Coins 1 Credits" },
79 {0x13, 0x01, 0x0f, 0x09, "2 Coins 1 Credits" },
80 {0x13, 0x01, 0x0f, 0x0f, "1 Coin 1 Credits" },
81 {0x13, 0x01, 0x0f, 0x06, "2 Coins 3 Credits" },
82 {0x13, 0x01, 0x0f, 0x0e, "1 Coin 2 Credits" },
83 {0x13, 0x01, 0x0f, 0x0d, "1 Coin 3 Credits" },
84 {0x13, 0x01, 0x0f, 0x0c, "1 Coin 4 Credits" },
85 {0x13, 0x01, 0x0f, 0x0b, "1 Coin 5 Credits" },
86 {0x13, 0x01, 0x0f, 0x0a, "1 Coin 6 Credits" },
87 {0x13, 0x01, 0x0f, 0x00, "Free Play" },
88
89 {0 , 0xfe, 0 , 11, "Coin B" },
90 {0x13, 0x01, 0xf0, 0x70, "4 Coins 1 Credits" },
91 {0x13, 0x01, 0xf0, 0x80, "3 Coins 1 Credits" },
92 {0x13, 0x01, 0xf0, 0x90, "2 Coins 1 Credits" },
93 {0x13, 0x01, 0xf0, 0xf0, "1 Coin 1 Credits" },
94 {0x13, 0x01, 0xf0, 0x60, "2 Coins 3 Credits" },
95 {0x13, 0x01, 0xf0, 0xe0, "1 Coin 2 Credits" },
96 {0x13, 0x01, 0xf0, 0xd0, "1 Coin 3 Credits" },
97 {0x13, 0x01, 0xf0, 0xc0, "1 Coin 4 Credits" },
98 {0x13, 0x01, 0xf0, 0xb0, "1 Coin 5 Credits" },
99 {0x13, 0x01, 0xf0, 0xa0, "1 Coin 6 Credits" },
100 {0x13, 0x01, 0xf0, 0x00, "Free Play" },
101
102 {0 , 0xfe, 0 , 2, "Flip Screen" },
103 {0x14, 0x01, 0x01, 0x01, "Off" },
104 {0x14, 0x01, 0x01, 0x00, "On" },
105
106 {0 , 0xfe, 0 , 4, "Difficulty" },
107 {0x14, 0x01, 0x06, 0x02, "Easy" },
108 {0x14, 0x01, 0x06, 0x06, "Normal" },
109 {0x14, 0x01, 0x06, 0x04, "Hard" },
110 {0x14, 0x01, 0x06, 0x00, "Hardest" },
111
112 {0 , 0xfe, 0 , 4, "Timer Speed" },
113 {0x14, 0x01, 0x18, 0x08, "Slow" },
114 {0x14, 0x01, 0x18, 0x18, "Normal" },
115 {0x14, 0x01, 0x18, 0x10, "Fast" },
116 {0x14, 0x01, 0x18, 0x00, "Fastest" },
117
118 {0 , 0xfe, 0 , 2, "2 Players Game" },
119 {0x14, 0x01, 0x40, 0x00, "1 Credit" },
120 {0x14, 0x01, 0x40, 0x40, "2 Credits" },
121
122 {0 , 0xfe, 0 , 2, "Unknown" },
123 {0x14, 0x01, 0x80, 0x80, "Off" },
124 {0x14, 0x01, 0x80, 0x00, "On" },
125 };
126
STDDIPINFO(Bigstrkb)127 STDDIPINFO(Bigstrkb)
128
129 static void __fastcall bigstrkb_write_word(UINT32 address, UINT16 data)
130 {
131 switch (address)
132 {
133 case 0x700020:
134 scroll[0][0] = data;
135 return;
136
137 case 0x700022:
138 scroll[0][1] = data;
139 return;
140
141 case 0x700030:
142 scroll[1][0] = data;
143 return;
144
145 case 0x700032:
146 scroll[1][1] = data;
147 return;
148
149 case 0xe00000:
150 MSM6295Write(0, data);
151 return;
152
153 case 0xe00002:
154 MSM6295Write(1, data);
155 return;
156
157 }
158 }
159
bigstrkb_write_byte(UINT32 address,UINT8 data)160 static void __fastcall bigstrkb_write_byte(UINT32 address, UINT8 data)
161 {
162 bprintf (0, _T("%5.5x, %2.2x\n"), address,data);
163 }
164
bigstrkb_read_word(UINT32 address)165 static UINT16 __fastcall bigstrkb_read_word(UINT32 address)
166 {
167 switch (address)
168 {
169 case 0x700000:
170 return DrvDips[0];
171
172 case 0x700002:
173 return DrvDips[1];
174
175 case 0x700004:
176 return DrvInputs[0];
177
178 case 0x70000a:
179 return DrvInputs[2];
180
181 case 0x70000c:
182 return DrvInputs[1];
183
184 case 0xe00000:
185 return MSM6295Read(0);
186
187 case 0xe00002:
188 return MSM6295Read(1);
189 }
190
191
192 bprintf (0, _T("Read unmapped word: %5.5x\n"), address);
193
194 return 0;
195 }
196
bigstrkb_read_byte(UINT32 address)197 static UINT8 __fastcall bigstrkb_read_byte(UINT32 address)
198 {
199 bprintf (0, _T("Read unmapped byte: %5.5x\n"), address);
200
201 return 0;
202 }
203
tilemap_scan(layer)204 static tilemap_scan( layer )
205 {
206 static INT32 offset;
207
208 offset = ((col & 0xf) * 16) + (row & 0xf);
209 offset += (col >> 4) * 0x100;
210 offset += (row >> 4) * 0x800;
211
212 return offset;
213 }
214
tilemap_callback(tx)215 static tilemap_callback( tx )
216 {
217 UINT16 *ram = (UINT16*)DrvTxRAM;
218
219 INT32 code = ram[offs];
220
221 TILE_SET_INFO(0, code & 0xfff, code >> 12, 0);
222 }
223
tilemap_callback(fg)224 static tilemap_callback( fg )
225 {
226 UINT16 *ram = (UINT16*)DrvFgRAM;
227
228 INT32 code = ram[offs];
229
230 TILE_SET_INFO(1, code & 0xfff, code >> 12, 0);
231 }
232
tilemap_callback(bg)233 static tilemap_callback( bg )
234 {
235 UINT16 *ram = (UINT16*)DrvBgRAM;
236
237 INT32 code = ram[offs];
238
239 TILE_SET_INFO(2, code & 0xfff, code >> 12, 0);
240 }
241
DrvDoReset()242 static INT32 DrvDoReset()
243 {
244 memset (AllRam, 0, RamEnd - AllRam);
245
246 SekOpen(0);
247 SekReset();
248 SekClose();
249
250 MSM6295Reset();
251
252 memset (scroll, 0, 2 * 2 * sizeof(UINT16));
253
254 return 0;
255 }
256
MemIndex()257 static INT32 MemIndex()
258 {
259 UINT8 *Next; Next = AllMem;
260
261 Drv68KROM = Next; Next += 0x080000;
262
263 DrvGfxROM0 = Next; Next += 0x080000;
264 DrvGfxROM1 = Next; Next += 0x400000;
265 DrvGfxROM2 = Next; Next += 0x100000;
266
267 MSM6295ROM = Next;
268 DrvSndROM0 = Next; Next += 0x040000;
269 DrvSndROM1 = Next; Next += 0x040000;
270
271 BurnPalette = (UINT32*)Next; Next += 0x0400 * sizeof(UINT32);
272
273 AllRam = Next;
274
275 Drv68KRAM0 = Next; Next += 0x010000;
276 Drv68KRAM1 = Next; Next += 0x010000;
277 Drv68KRAM2 = Next; Next += 0x010000;
278 Drv68KRAM3 = Next; Next += 0x100000;
279 DrvFgRAM = Next; Next += 0x004000;
280 DrvBgRAM = Next; Next += 0x004000;
281 DrvTxRAM = Next; Next += 0x004000;
282
283 BurnPalRAM = Drv68KRAM1 + 0x8000;
284 DrvSprRAM = Drv68KRAM2 + 0x8000;
285
286 RamEnd = Next;
287
288 MemEnd = Next;
289
290 return 0;
291 }
292
DrvGfxDecode()293 static INT32 DrvGfxDecode()
294 {
295 INT32 Plane0[4] = { (0x10000 * 8 * 3), (0x10000 * 8 * 2), (0x10000 * 8 * 1), (0x10000 * 8 * 0) };
296 INT32 Plane1[4] = { (0x80000 * 8 * 3), (0x80000 * 8 * 2), (0x80000 * 8 * 1), (0x80000 * 8 * 0) };
297 INT32 Plane2[4] = { (0x20000 * 8 * 3), (0x20000 * 8 * 2), (0x20000 * 8 * 1), (0x20000 * 8 * 0) };
298 INT32 XOffs[16] = { STEP16(0, 1) };
299 INT32 YOffs0[8] = { STEP8(0, 8) };
300 INT32 YOffs1[16] = { STEP16(0, 16) };
301
302 UINT8 *tmp = (UINT8*)BurnMalloc(0x200000);
303 if (tmp == NULL) {
304 return 1;
305 }
306
307 memcpy (tmp, DrvGfxROM0, 0x040000);
308
309 GfxDecode(0x2000, 4, 8, 8, Plane0, XOffs, YOffs0, 0x040, tmp, DrvGfxROM0);
310
311 for (INT32 i = 0; i < 0x200000; i++) tmp[i] = DrvGfxROM1[i] ^ 0xff; //memcpy (tmp, DrvGfxROM1, 0x200000);
312
313 GfxDecode(0x4000, 4, 16, 16, Plane1, XOffs, YOffs1, 0x100, tmp, DrvGfxROM1);
314
315 for (INT32 i = 0; i < 0x100000; i++) tmp[i] = DrvGfxROM2[i] ^ 0xff; //memcpy (tmp, DrvGfxROM2, 0x080000);
316
317 GfxDecode(0x1000, 4, 16, 16, Plane2, XOffs, YOffs1, 0x100, tmp, DrvGfxROM2);
318
319 BurnFree (tmp);
320
321 return 0;
322 }
323
DrvInit()324 static INT32 DrvInit()
325 {
326 AllMem = NULL;
327 MemIndex();
328 INT32 nLen = MemEnd - (UINT8 *)0;
329 if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1;
330 memset(AllMem, 0, nLen);
331 MemIndex();
332
333 {
334 if (BurnLoadRom(Drv68KROM + 0x000000, 0, 2)) return 1;
335 if (BurnLoadRom(Drv68KROM + 0x000001, 1, 2)) return 1;
336
337 if (BurnLoadRom(DrvGfxROM0 + 0x030000, 2, 1)) return 1;
338 if (BurnLoadRom(DrvGfxROM0 + 0x020000, 3, 1)) return 1;
339 if (BurnLoadRom(DrvGfxROM0 + 0x010000, 4, 1)) return 1;
340 if (BurnLoadRom(DrvGfxROM0 + 0x000000, 5, 1)) return 1;
341
342 if (BurnLoadRom(DrvGfxROM1 + 0x180000, 6, 1)) return 1;
343 if (BurnLoadRom(DrvGfxROM1 + 0x100000, 7, 1)) return 1;
344 if (BurnLoadRom(DrvGfxROM1 + 0x080000, 8, 1)) return 1;
345 if (BurnLoadRom(DrvGfxROM1 + 0x000000, 9, 1)) return 1;
346
347 if (BurnLoadRom(DrvGfxROM2 + 0x060000, 10, 1)) return 1;
348 if (BurnLoadRom(DrvGfxROM2 + 0x040000, 11, 1)) return 1;
349 if (BurnLoadRom(DrvGfxROM2 + 0x020000, 12, 1)) return 1;
350 if (BurnLoadRom(DrvGfxROM2 + 0x000000, 13, 1)) return 1;
351
352 if (BurnLoadRom(DrvSndROM0 + 0x000000, 14, 1)) return 1;
353
354 if (BurnLoadRom(DrvSndROM1 + 0x000000, 15, 1)) return 1;
355
356 DrvGfxDecode();
357 }
358
359 SekInit(0, 0x68000);
360 SekOpen(0);
361 SekMapMemory(Drv68KROM, 0x000000, 0x07ffff, MAP_ROM);
362 SekMapMemory(Drv68KRAM0, 0x0d0000, 0x0dffff, MAP_RAM);
363 SekMapMemory(DrvFgRAM, 0x0e0000, 0x0e3fff, MAP_RAM);
364 SekMapMemory(DrvBgRAM, 0x0e8000, 0x0ebfff, MAP_RAM);
365 SekMapMemory(DrvTxRAM, 0x0ec000, 0x0effff, MAP_RAM);
366 SekMapMemory(Drv68KRAM1, 0x0f0000, 0x0fffff, MAP_RAM);
367 // SekMapMemory(BurnPalRAM, 0x0f8000, 0x0f87ff, MAP_RAM);
368 SekMapMemory(Drv68KRAM2, 0x1f0000, 0x1fffff, MAP_RAM);
369 // SekMapMemory(DrvSprRAM, 0x1f8000, 0x1f87ff, MAP_RAM);
370 SekMapMemory(Drv68KRAM3, 0xf00000, 0xffffff, MAP_RAM);
371 SekSetWriteWordHandler(0, bigstrkb_write_word);
372 SekSetWriteByteHandler(0, bigstrkb_write_byte);
373 SekSetReadWordHandler(0, bigstrkb_read_word);
374 SekSetReadByteHandler(0, bigstrkb_read_byte);
375 SekClose();
376
377 MSM6295Init(0, 4000000 / 132, 1);
378 MSM6295Init(1, 4000000 / 132, 1);
379 MSM6295SetRoute(0, 0.30, BURN_SND_ROUTE_BOTH);
380 MSM6295SetRoute(1, 0.30, BURN_SND_ROUTE_BOTH);
381 MSM6295SetBank(0, DrvSndROM0, 0, 0x3ffff);
382 MSM6295SetBank(1, DrvSndROM1, 0, 0x3ffff);
383
384 GenericTilesInit();
385 GenericTilemapInit(0, TILEMAP_SCAN_COLS, tx_map_callback, 8, 8, 64, 32);
386 GenericTilemapInit(1, layer_map_scan, bg_map_callback, 16, 16, 128, 64);
387 GenericTilemapInit(2, layer_map_scan, fg_map_callback, 16, 16, 128, 64);
388 GenericTilemapSetGfx(0, DrvGfxROM0 + 0x000000, 4, 8, 8, 0x080000, 0x200, 0xf);
389 GenericTilemapSetGfx(1, DrvGfxROM1 + 0x000000, 4, 16, 16, 0x200000, 0x000, 0xf);
390 GenericTilemapSetGfx(2, DrvGfxROM1 + 0x200000, 4, 16, 16, 0x200000, 0x100, 0xf);
391 GenericTilemapSetTransparent(0, 0xf);
392 GenericTilemapSetTransparent(1, 0xf);
393 GenericTilemapSetTransparent(2, 0xf);
394 GenericTilemapSetOffsets(TMAP_GLOBAL, 0, -16);
395
396 DrvDoReset();
397
398 return 0;
399 }
400
DrvExit()401 static INT32 DrvExit()
402 {
403 GenericTilesExit();
404
405 MSM6295Exit();
406 SekExit();
407
408 BurnFree (AllMem);
409
410 MSM6295ROM = NULL;
411
412 return 0;
413 }
414
draw_sprites()415 static void draw_sprites()
416 {
417 UINT16 *ram = (UINT16*)DrvSprRAM;
418
419 for (INT32 i = 0; i < 0x800 / 2; i+=8)
420 {
421 INT32 code = ram[i + 0] & 0x0fff;
422 INT32 attr = ram[i + 1];
423 INT32 sx = ram[i + 2] - 126;
424 INT32 sy =(ram[i + 3] ^ 0xffff) - 32;
425 INT32 flipx = attr & 0x0100;
426 INT32 color = attr & 0x000f;
427
428 if (flipx) {
429 Render16x16Tile_Mask_FlipX_Clip(pTransDraw, code, sx, sy, color, 4, 0xf, 0x300, DrvGfxROM2);
430 } else {
431 Render16x16Tile_Mask_Clip(pTransDraw, code, sx, sy, color, 4, 0xf, 0x300, DrvGfxROM2);
432 }
433 }
434 }
435
DrvDraw()436 static INT32 DrvDraw()
437 {
438 if (DrvRecalc) {
439 BurnPaletteUpdate_RRRRGGGGBBBBRGBx();
440 DrvRecalc = 1;
441 }
442
443 GenericTilemapSetScrollX(2, scroll[0][0] + (256 - 14));
444 GenericTilemapSetScrollY(2, scroll[1][0]);
445 GenericTilemapSetScrollX(1, scroll[0][1] + (256 - 14));
446 GenericTilemapSetScrollY(1, scroll[1][1]);
447
448 if ((nBurnLayer & 1) == 0) BurnTransferClear();
449
450 if ((nBurnLayer & 1) == 1) GenericTilemapDraw(2, pTransDraw, 0);
451 if ((nBurnLayer & 2) == 2) GenericTilemapDraw(1, pTransDraw, 0);
452 if ((nBurnLayer & 4) == 4) draw_sprites();
453 if ((nBurnLayer & 8) == 8) GenericTilemapDraw(0, pTransDraw, 0);
454
455 BurnTransferCopy(BurnPalette);
456
457 return 0;
458 }
459
DrvFrame()460 static INT32 DrvFrame()
461 {
462 if (DrvReset) {
463 DrvDoReset();
464 }
465
466 {
467 memset (DrvInputs, 0xff, 3);
468
469 for (INT32 i = 0; i < 8; i++) {
470 DrvInputs[0] ^= (DrvJoy1[i] & 1) << i;
471 DrvInputs[1] ^= (DrvJoy2[i] & 1) << i;
472 DrvInputs[2] ^= (DrvJoy3[i] & 1) << i;
473 }
474 }
475
476 UINT32 nCycles = 12000000 / 60;
477
478 SekOpen(0);
479 SekRun((nCycles * 240)/256);
480 SekSetIRQLine(6, CPU_IRQSTATUS_AUTO);
481 SekRun((nCycles * 16 )/256);
482 SekClose();
483
484 if (pBurnSoundOut) {
485 BurnSoundClear();
486 MSM6295Render(pBurnSoundOut, nBurnSoundLen);
487 }
488
489 if (pBurnDraw) {
490 DrvDraw();
491 }
492
493 return 0;
494 }
495
DrvScan(INT32 nAction,INT32 * pnMin)496 static INT32 DrvScan(INT32 nAction, INT32 *pnMin)
497 {
498 struct BurnArea ba;
499
500 if (pnMin != NULL) {
501 *pnMin = 0x029698;
502 }
503
504 if (nAction & ACB_MEMORY_RAM) {
505 memset(&ba, 0, sizeof(ba));
506 ba.Data = AllRam;
507 ba.nLen = RamEnd-AllRam;
508 ba.szName = "All Ram";
509 BurnAcb(&ba);
510 }
511
512 if (nAction & ACB_DRIVER_DATA) {
513 SekScan(nAction);
514
515 MSM6295Scan(nAction, pnMin);
516
517 SCAN_VAR(scroll);
518 }
519
520 return 0;
521 }
522
523
524 // Big Striker (bootleg)
525
526 static struct BurnRomInfo bigstrkbRomDesc[] = {
527 { "footgaa.015", 0x40000, 0x33b1d7f3, 1 | BRF_PRG | BRF_ESS }, // 0 68k Code
528 { "footgaa.016", 0x40000, 0x1c6b8709, 1 | BRF_PRG | BRF_ESS }, // 1
529
530 { "footgaa.005", 0x10000, 0xd97c9bfe, 2 | BRF_GRA }, // 2 Characters
531 { "footgaa.006", 0x10000, 0x1ae56e8b, 2 | BRF_GRA }, // 3
532 { "footgaa.007", 0x10000, 0xa45fa6b6, 2 | BRF_GRA }, // 4
533 { "footgaa.008", 0x10000, 0x2700888c, 2 | BRF_GRA }, // 5
534
535 { "footgaa.001", 0x80000, 0x0e440841, 3 | BRF_GRA }, // 6 Tiles
536 { "footgaa.002", 0x80000, 0x92a15164, 3 | BRF_GRA }, // 7
537 { "footgaa.003", 0x80000, 0xda127b89, 3 | BRF_GRA }, // 8
538 { "footgaa.004", 0x80000, 0x3e6b0d92, 3 | BRF_GRA }, // 9
539
540 { "footgaa.011", 0x20000, 0xc3924fea, 4 | BRF_GRA }, // 10 Sprites
541 { "footgaa.012", 0x20000, 0xa581e9d7, 4 | BRF_GRA }, // 11
542 { "footgaa.013", 0x20000, 0x26ce4b7f, 4 | BRF_GRA }, // 12
543 { "footgaa.014", 0x20000, 0xc3cfc500, 4 | BRF_GRA }, // 13
544
545 { "footgaa.010", 0x40000, 0x53014576, 5 | BRF_SND }, // 14 MSM6295 #0 Samples
546
547 { "footgaa.009", 0x40000, 0x19bf0896, 6 | BRF_SND }, // 15 MSM6295 #1 Samples
548 };
549
550 STD_ROM_PICK(bigstrkb)
551 STD_ROM_FN(bigstrkb)
552
553 struct BurnDriver BurnDrvBigstrkb = {
554 "bigstrkb", "bigstrik", NULL, NULL, "1992",
555 "Big Striker (bootleg)\0", NULL, "bootleg", "Miscellaneous",
556 NULL, NULL, NULL, NULL,
557 BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_MISC_POST90S, GBF_SPORTSFOOTBALL, 0,
558 NULL, bigstrkbRomInfo, bigstrkbRomName, NULL, NULL, NULL, NULL, BigstrkbInputInfo, BigstrkbDIPInfo,
559 DrvInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &DrvRecalc, 0x400,
560 256, 224, 4, 3
561 };
562
563
564 // Big Striker (bootleg w/Italian teams)
565
566 static struct BurnRomInfo bigstrkbaRomDesc[] = {
567 { "16.cpu17", 0x40000, 0x3ba6997b, 1 | BRF_PRG | BRF_ESS }, // 0 68k Code
568 { "15.cpu16", 0x40000, 0x204551b5, 1 | BRF_PRG | BRF_ESS }, // 1
569
570 { "5.bin", 0x10000, 0xf51ea151, 2 | BRF_GRA }, // 2 Characters
571 { "6.bin", 0x10000, 0x754d750e, 2 | BRF_GRA }, // 3
572 { "7.bin", 0x10000, 0xfbc52546, 2 | BRF_GRA }, // 4
573 { "8.bin", 0x10000, 0x62c63eaa, 2 | BRF_GRA }, // 5
574
575 { "1.bin", 0x80000, 0xc4eb9746, 3 | BRF_GRA }, // 6 Tiles
576 { "2.bin", 0x80000, 0xaa0beb78, 3 | BRF_GRA }, // 7
577 { "3.bin", 0x80000, 0xd02298c5, 3 | BRF_GRA }, // 8
578 { "4.bin", 0x80000, 0x069ac008, 3 | BRF_GRA }, // 9
579
580 { "footgaa.011", 0x20000, 0xc3924fea, 4 | BRF_GRA }, // 10 Sprites
581 { "12.bin", 0x20000, 0x8e15ea09, 4 | BRF_GRA }, // 11
582 { "footgaa.013", 0x20000, 0x26ce4b7f, 4 | BRF_GRA }, // 12
583 { "footgaa.014", 0x20000, 0xc3cfc500, 4 | BRF_GRA }, // 13
584
585 { "footgaa.010", 0x40000, 0x53014576, 5 | BRF_SND }, // 14 MSM6295 #0 Samples
586
587 { "footgaa.009", 0x40000, 0x19bf0896, 6 | BRF_SND }, // 15 MSM6295 #1 Samples
588 };
589
590 STD_ROM_PICK(bigstrkba)
591 STD_ROM_FN(bigstrkba)
592
593 struct BurnDriver BurnDrvBigstrkba = {
594 "bigstrkba", "bigstrik", NULL, NULL, "1992",
595 "Big Striker (bootleg w/Italian teams)\0", NULL, "bootleg", "Miscellaneous",
596 NULL, NULL, NULL, NULL,
597 BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_MISC_POST90S, GBF_SPORTSFOOTBALL, 0,
598 NULL, bigstrkbaRomInfo, bigstrkbaRomName, NULL, NULL, NULL, NULL, BigstrkbInputInfo, BigstrkbDIPInfo,
599 DrvInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &DrvRecalc, 0x400,
600 256, 224, 4, 3
601 };
602