1 /***************************************************************************
2
3 -= Afega Games =-
4
5 driver by Luca Elia (l.elia@tin.it)
6
7
8 Main CPU : M68000
9 Video Chips : AFEGA AFI-GFSK (68 Pin PLCC)
10 AFEGA AFI-GFLK (208 Pin PQFP)
11
12 Sound CPU : Z80
13 Sound Chips : M6295 (AD-65) + YM2151 (BS901) + YM3014 (BS90?)
14
15 ---------------------------------------------------------------------------
16 Year + Game Notes
17 ---------------------------------------------------------------------------
18 97 Red Hawk US Version of Stagger 1
19 98 Sen Jin - Guardian Storm Some text missing (protection, see service mode)
20 98 Stagger I
21 98 Bubble 2000 By Tuning, but it seems to be the same HW
22 ---------------------------------------------------------------------------
23
24 The Sen Jin protection supplies some 68k code seen in the 2760-29cf range
25
26 ***************************************************************************/
27
28 #include "driver.h"
29 #include "vidhrdw/generic.h"
30
31 /* Variables defined in vidhrdw: */
32
33 extern data16_t *afega_vram_0, *afega_scroll_0;
34 extern data16_t *afega_vram_1, *afega_scroll_1;
35
36 /* Functions defined in vidhrdw: */
37
38 WRITE16_HANDLER( afega_vram_0_w );
39 WRITE16_HANDLER( afega_vram_1_w );
40 WRITE16_HANDLER( afega_palette_w );
41
42 PALETTE_INIT( grdnstrm );
43
44 VIDEO_START( afega );
45 VIDEO_UPDATE( afega );
46 VIDEO_UPDATE( bubl2000 );
47
48
49 /***************************************************************************
50
51
52 Memory Maps - Main CPU
53
54
55 ***************************************************************************/
56
READ16_HANDLER(afega_unknown_r)57 READ16_HANDLER( afega_unknown_r )
58 {
59 /* This fixes the text in Service Mode. */
60 return 0x0100;
61 }
62
WRITE16_HANDLER(afega_soundlatch_w)63 WRITE16_HANDLER( afega_soundlatch_w )
64 {
65 if (ACCESSING_LSB && Machine->sample_rate)
66 soundlatch_w(0,data&0xff);
67 }
68
69 /*
70 Lines starting with an empty comment in the following MemoryReadAddress
71 arrays are there for debug (e.g. the game does not read from those ranges
72 AFAIK)
73 */
74
MEMORY_READ16_START(afega_readmem)75 static MEMORY_READ16_START( afega_readmem )
76 { 0x000000, 0x07ffff, MRA16_ROM }, /* ROM*/
77 { 0x080000, 0x080001, input_port_0_word_r }, /* Buttons*/
78 { 0x080002, 0x080003, input_port_1_word_r }, /* P1 + P2*/
79 { 0x080004, 0x080005, input_port_2_word_r }, /* 2 x DSW*/
80 { 0x080012, 0x080013, afega_unknown_r },
81 /**/{ 0x088000, 0x0885ff, MRA16_RAM }, /* Palette*/
82 /**/{ 0x08c000, 0x08c003, MRA16_RAM }, /* Scroll*/
83 /**/{ 0x08c004, 0x08c007, MRA16_RAM }, /**/
84 /**/{ 0x090000, 0x091fff, MRA16_RAM }, /* Layer 0*/
85 /**/{ 0x092000, 0x093fff, MRA16_RAM }, /* ?*/
86 /**/{ 0x09c000, 0x09c7ff, MRA16_RAM }, /* Layer 1*/
87 { 0x3c0000, 0x3c7fff, MRA16_RAM }, /* RAM*/
88 { 0x3c8000, 0x3c8fff, MRA16_RAM }, /* Sprites*/
89 { 0x3c9000, 0x3cffff, MRA16_RAM }, /* RAM*/
90 { 0xff8000, 0xff8fff, MRA16_BANK1 }, /* Sprites Mirror*/
91 MEMORY_END
92
93 static MEMORY_WRITE16_START( afega_writemem )
94 { 0x000000, 0x07ffff, MWA16_ROM }, /* ROM*/
95 { 0x080000, 0x08001d, MWA16_RAM }, /**/
96 { 0x08001e, 0x08001f, afega_soundlatch_w }, /* To Sound CPU*/
97 { 0x080020, 0x087fff, MWA16_RAM }, /**/
98 { 0x088000, 0x0885ff, afega_palette_w, &paletteram16}, /* Palette*/
99 { 0x088600, 0x08bfff, MWA16_RAM }, /**/
100 { 0x08c000, 0x08c003, MWA16_RAM, &afega_scroll_0 }, /* Scroll*/
101 { 0x08c004, 0x08c007, MWA16_RAM, &afega_scroll_1 }, /**/
102 { 0x08c008, 0x08ffff, MWA16_RAM }, /**/
103 { 0x090000, 0x091fff, afega_vram_0_w, &afega_vram_0 }, /* Layer 0*/
104 { 0x092000, 0x093fff, MWA16_RAM }, /* ?*/
105 { 0x09c000, 0x09c7ff, afega_vram_1_w, &afega_vram_1 }, /* Layer 1*/
106 { 0x3c0000, 0x3c7fff, MWA16_RAM }, /* RAM*/
107 { 0x3c8000, 0x3c8fff, MWA16_RAM, &spriteram16, &spriteram_size }, /* Sprites*/
108 { 0x3c9000, 0x3cffff, MWA16_RAM }, /* RAM*/
109 { 0xff8000, 0xff8fff, MWA16_BANK1 }, /* Sprites Mirror*/
110 MEMORY_END
111
112 /* redhawk has main ram / sprites in a different location */
113
114 static MEMORY_READ16_START( redhawk_readmem )
115 { 0x000000, 0x07ffff, MRA16_ROM }, /* ROM*/
116 { 0x080000, 0x080001, input_port_0_word_r }, /* Buttons*/
117 { 0x080002, 0x080003, input_port_1_word_r }, /* P1 + P2*/
118 { 0x080004, 0x080005, input_port_2_word_r }, /* 2 x DSW*/
119 /**/{ 0x088000, 0x0885ff, MRA16_RAM }, /* Palette*/
120 /**/{ 0x08c000, 0x08c003, MRA16_RAM }, /* Scroll*/
121 /**/{ 0x08c004, 0x08c007, MRA16_RAM }, /**/
122 /**/{ 0x090000, 0x091fff, MRA16_RAM }, /* Layer 0*/
123 /**/{ 0x092000, 0x093fff, MRA16_RAM }, /* ?*/
124 /**/{ 0x09c000, 0x09c7ff, MRA16_RAM }, /* Layer 1*/
125 { 0x0c0000, 0x0c7fff, MRA16_RAM }, /* RAM*/
126 { 0x0c8000, 0x0c8fff, MRA16_RAM }, /* Sprites*/
127 { 0x0c9000, 0x0cffff, MRA16_RAM }, /* RAM*/
128 { 0xff8000, 0xff8fff, MRA16_BANK1 }, /* Sprites Mirror*/
129 MEMORY_END
130
131 static MEMORY_WRITE16_START( redhawk_writemem )
132 { 0x000000, 0x07ffff, MWA16_ROM }, /* ROM*/
133 { 0x080000, 0x08001d, MWA16_RAM }, /**/
134 { 0x08001e, 0x08001f, afega_soundlatch_w }, /* To Sound CPU*/
135 { 0x080020, 0x087fff, MWA16_RAM }, /**/
136 { 0x088000, 0x0885ff, afega_palette_w, &paletteram16}, /* Palette*/
137 { 0x088600, 0x08bfff, MWA16_RAM }, /**/
138 { 0x08c000, 0x08c003, MWA16_RAM, &afega_scroll_0 }, /* Scroll*/
139 { 0x08c004, 0x08c007, MWA16_RAM, &afega_scroll_1 }, /**/
140 { 0x08c008, 0x08ffff, MWA16_RAM }, /**/
141 { 0x090000, 0x091fff, afega_vram_0_w, &afega_vram_0 }, /* Layer 0*/
142 { 0x092000, 0x093fff, MWA16_RAM }, /* ?*/
143 { 0x09c000, 0x09c7ff, afega_vram_1_w, &afega_vram_1 }, /* Layer 1*/
144 { 0x0c0000, 0x0c7fff, MWA16_RAM }, /* RAM*/
145 { 0x0c8000, 0x0c8fff, MWA16_RAM, &spriteram16, &spriteram_size }, /* Sprites*/
146 { 0x0c9000, 0x0cffff, MWA16_RAM }, /* RAM*/
147 { 0xff8000, 0xff8fff, MWA16_BANK1 }, /* Sprites Mirror*/
148 MEMORY_END
149
150
151 /***************************************************************************
152
153
154 Memory Maps - Sound CPU
155
156
157 ***************************************************************************/
158
159 static MEMORY_READ_START( afega_sound_readmem )
160 { 0x0000, 0xefff, MRA_ROM }, /* ROM*/
161 { 0xf000, 0xf7ff, MRA_RAM }, /* RAM*/
162 { 0xf800, 0xf800, soundlatch_r }, /* From Main CPU*/
163 { 0xf809, 0xf809, YM2151_status_port_0_r }, /* YM2151*/
164 { 0xf80a, 0xf80a, OKIM6295_status_0_r }, /* M6295*/
165 MEMORY_END
166
167 static MEMORY_WRITE_START( afega_sound_writemem )
168 { 0x0000, 0xefff, MWA_ROM }, /* ROM*/
169 { 0xf000, 0xf7ff, MWA_RAM }, /* RAM*/
170 { 0xf808, 0xf808, YM2151_register_port_0_w }, /* YM2151*/
171 { 0xf809, 0xf809, YM2151_data_port_0_w }, /**/
172 { 0xf80a, 0xf80a, OKIM6295_data_0_w }, /* M6295*/
173 MEMORY_END
174
175
176 /***************************************************************************
177
178
179 Input Ports
180
181
182 ***************************************************************************/
183
184 /***************************************************************************
185 Stagger I
186 ***************************************************************************/
187
188 INPUT_PORTS_START( stagger1 )
189 PORT_START /* IN0 - $080000.w*/
190 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
191 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
192 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
193 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 )
194 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 )
195 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
196 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
197 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
198 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
199
200 PORT_START /* IN1 - $080002.w*/
201 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
202 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
203 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
204 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
205 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
206 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
207 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
208 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
209
210 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
211 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
212 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
213 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
214 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
215 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
216 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
217 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
218
219 PORT_START /* IN2 - $080004.w*/
220 PORT_SERVICE( 0x0001, IP_ACTIVE_LOW )
221 PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) )
222 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
223 PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
224 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unused ) )
225 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
226 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
227 PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unused ) )
228 PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
229 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
230 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
231 PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
232 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
233 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )
234 PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
235 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
236 PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Lives ) )
237 PORT_DIPSETTING( 0x0000, "1" )
238 PORT_DIPSETTING( 0x0080, "2" )
239 PORT_DIPSETTING( 0x00c0, "3" )
240 PORT_DIPSETTING( 0x0040, "5" )
241
242 PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Flip_Screen ) )
243 PORT_DIPSETTING( 0x0300, DEF_STR( Off ) )
244 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
245 PORT_DIPSETTING( 0x0200, "Horizontally" )
246 PORT_DIPSETTING( 0x0100, "Vertically" )
247 PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
248 PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
249 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
250 PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Difficulty ) )
251 PORT_DIPSETTING( 0x0800, "Easy" )
252 PORT_DIPSETTING( 0x1800, "Normal" )
253 PORT_DIPSETTING( 0x1000, "Hard" )
254 PORT_DIPSETTING( 0x0000, "Hardest" )
255 PORT_DIPNAME( 0xe000, 0xe000, DEF_STR( Coinage ) )
256 PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) )
257 PORT_DIPSETTING( 0x8000, DEF_STR( 3C_1C ) )
258 PORT_DIPSETTING( 0x4000, DEF_STR( 2C_1C ) )
259 PORT_DIPSETTING( 0xc000, DEF_STR( 3C_2C ) )
260 PORT_DIPSETTING( 0xe000, DEF_STR( 1C_1C ) )
261 PORT_DIPSETTING( 0x2000, DEF_STR( 2C_3C ) )
262 PORT_DIPSETTING( 0x6000, DEF_STR( 1C_2C ) )
263 PORT_DIPSETTING( 0xa000, DEF_STR( 1C_3C ) )
264 INPUT_PORTS_END
265
266
267 /***************************************************************************
268 Sen Jin - Guardian Storm
269 ***************************************************************************/
270
271 INPUT_PORTS_START( grdnstrm )
272 PORT_START /* IN0 - $080000.w*/
273 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
274 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
275 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
276 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 )
277 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 )
278 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
279 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
280 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
281 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
282
283 PORT_START /* IN1 - $080002.w*/
284 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
285 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
286 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
287 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
288 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
289 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
290 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
291 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
292
293 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
294 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
295 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
296 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
297 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
298 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
299 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
300 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
301
302 PORT_START /* IN2 - $080004.w*/
303 PORT_SERVICE( 0x0001, IP_ACTIVE_LOW )
304 PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Demo_Sounds ) )
305 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
306 PORT_DIPSETTING( 0x0002, DEF_STR( On ) )
307 PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Free_Play ) )
308 PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
309 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
310 PORT_DIPNAME( 0x0008, 0x0008, "Bombs" )
311 PORT_DIPSETTING( 0x0008, "2" )
312 PORT_DIPSETTING( 0x0000, "3" )
313 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
314 PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
315 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
316 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )
317 PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
318 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
319 PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Lives ) )
320 PORT_DIPSETTING( 0x0000, "1" )
321 PORT_DIPSETTING( 0x0080, "2" )
322 PORT_DIPSETTING( 0x00c0, "3" )
323 PORT_DIPSETTING( 0x0040, "5" )
324
325 PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Flip_Screen ) )
326 PORT_DIPSETTING( 0x0300, DEF_STR( Off ) )
327 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
328 PORT_DIPSETTING( 0x0200, "Horizontally" )
329 PORT_DIPSETTING( 0x0100, "Vertically" )
330 PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
331 PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
332 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
333 PORT_DIPNAME( 0x1800, 0x1800, DEF_STR( Difficulty ) )
334 PORT_DIPSETTING( 0x0800, "Easy" )
335 PORT_DIPSETTING( 0x1800, "Normal" )
336 PORT_DIPSETTING( 0x1000, "Hard" )
337 PORT_DIPSETTING( 0x0000, "Hardest" )
338 PORT_DIPNAME( 0xe000, 0xe000, DEF_STR( Coinage ) )
339 PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) )
340 PORT_DIPSETTING( 0x8000, DEF_STR( 3C_1C ) )
341 PORT_DIPSETTING( 0x4000, DEF_STR( 2C_1C ) )
342 PORT_DIPSETTING( 0xc000, DEF_STR( 3C_2C ) )
343 PORT_DIPSETTING( 0xe000, DEF_STR( 1C_1C ) )
344 PORT_DIPSETTING( 0x2000, DEF_STR( 2C_3C ) )
345 PORT_DIPSETTING( 0x6000, DEF_STR( 1C_2C ) )
346 PORT_DIPSETTING( 0xa000, DEF_STR( 1C_3C ) )
347 INPUT_PORTS_END
348
349
350 /***************************************************************************
351 Stagger I
352 ***************************************************************************/
353
354 INPUT_PORTS_START( bubl2000 )
355 PORT_START /* IN0 - $080000.w*/
356 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
357 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
358 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
359 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START1 )
360 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 )
361 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
362 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
363 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
364 PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
365
366 PORT_START /* IN1 - $080002.w*/
367 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
368 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
369 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
370 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
371 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
372 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
373 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
374 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
375
376 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
377 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
378 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
379 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
380 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
381 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
382 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
383 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
384
385 PORT_START /* IN2 - $080004.w*/
386 PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unused ) )
387 PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
388 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
389 PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unused ) )
390 PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
391 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
392 PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Difficulty ) )
393 PORT_DIPSETTING( 0x0008, "Easy" )
394 PORT_DIPSETTING( 0x000c, "Normal" )
395 PORT_DIPSETTING( 0x0004, "Hard" )
396 PORT_DIPSETTING( 0x0000, "Hardest" )
397 PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unused ) )
398 PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
399 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
400 PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unused ) )
401 PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
402 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
403 PORT_DIPNAME( 0x00c0, 0x00c0, "Free Credit" )
404 PORT_DIPSETTING( 0x0080, "500k" )
405 PORT_DIPSETTING( 0x00c0, "800k" )
406 PORT_DIPSETTING( 0x0040, "1000k" )
407 PORT_DIPSETTING( 0x0000, "1500k" )
408
409 PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unused ) )
410 PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
411 PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
412 PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Demo_Sounds ) )
413 PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
414 PORT_DIPSETTING( 0x0200, DEF_STR( On ) )
415 PORT_DIPNAME( 0x1c00, 0x1c00, DEF_STR( Coin_B ) )
416 PORT_DIPSETTING( 0x1000, DEF_STR( 4C_1C ) )
417 PORT_DIPSETTING( 0x0800, DEF_STR( 3C_1C ) )
418 PORT_DIPSETTING( 0x1800, DEF_STR( 2C_1C ) )
419 PORT_DIPSETTING( 0x1c00, DEF_STR( 1C_1C ) )
420 PORT_DIPSETTING( 0x0c00, DEF_STR( 1C_2C ) )
421 PORT_DIPSETTING( 0x1400, DEF_STR( 1C_3C ) )
422 PORT_DIPSETTING( 0x0400, DEF_STR( 1C_4C ) )
423 /* PORT_DIPSETTING( 0x0000, "Disabled" )*/
424 PORT_DIPNAME( 0xe000, 0xe000, DEF_STR( Coin_A ) )
425 PORT_DIPSETTING( 0x8000, DEF_STR( 4C_1C ) )
426 PORT_DIPSETTING( 0x4000, DEF_STR( 3C_1C ) )
427 PORT_DIPSETTING( 0xc000, DEF_STR( 2C_1C ) )
428 PORT_DIPSETTING( 0xe000, DEF_STR( 1C_1C ) )
429 PORT_DIPSETTING( 0x6000, DEF_STR( 1C_2C ) )
430 PORT_DIPSETTING( 0xa000, DEF_STR( 1C_3C ) )
431 PORT_DIPSETTING( 0x2000, DEF_STR( 1C_4C ) )
432 /* PORT_DIPSETTING( 0x0000, "Disabled" )*/
433 INPUT_PORTS_END
434
435
436 /***************************************************************************
437
438
439 Graphics Layouts
440
441
442 ***************************************************************************/
443
444 static struct GfxLayout layout_8x8x4 =
445 {
446 8,8,
447 RGN_FRAC(1,1),
448 4,
449 { STEP4(0,1) },
450 { STEP8(0,4) },
451 { STEP8(0,8*4) },
452 8*8*4
453 };
454
455 static struct GfxLayout layout_16x16x4 =
456 {
457 16,16,
458 RGN_FRAC(1,1),
459 4,
460 { STEP4(0,1) },
461 { STEP8(0,4), STEP8(8*8*4*2,4) },
462 { STEP8(0,8*4), STEP8(8*8*4*1,8*4) },
463 16*16*4
464 };
465
466 static struct GfxLayout layout_16x16x4_2 =
467 {
468 16,16,
469 RGN_FRAC(1,1),
470 4,
471 { STEP4(0,1) },
472 { STEP8(0,4), STEP8(8*8*4*2,4) },
473 { STEP8(0,8*4), STEP8(8*8*4*1,8*4) },
474 16*16*4
475 };
476
477 static struct GfxLayout layout_16x16x8 =
478 {
479 16,16,
480 RGN_FRAC(1,2),
481 8,
482 { STEP4(RGN_FRAC(0,2),1), STEP4(RGN_FRAC(1,2),1) },
483 { STEP8(0,4), STEP8(8*8*4*2,4) },
484 { STEP8(0,8*4), STEP8(8*8*4*1,8*4) },
485 16*16*4
486 };
487
488
489 static struct GfxDecodeInfo grdnstrm_gfxdecodeinfo[] =
490 {
491 { REGION_GFX1, 0, &layout_16x16x4, 256*1, 16 }, /* [0] Sprites*/
492 { REGION_GFX2, 0, &layout_16x16x8, 256*3, 16 }, /* [1] Layer 0*/
493 { REGION_GFX3, 0, &layout_8x8x4, 256*2, 16 }, /* [2] Layer 1*/
494 { -1 }
495 };
496
497 static struct GfxDecodeInfo stagger1_gfxdecodeinfo[] =
498 {
499 { REGION_GFX1, 0, &layout_16x16x4_2, 256*1, 16 }, /* [0] Sprites*/
500 { REGION_GFX2, 0, &layout_16x16x4, 256*0, 16 }, /* [1] Layer 0*/
501 { REGION_GFX3, 0, &layout_8x8x4, 256*2, 16 }, /* [2] Layer 1*/
502 { -1 }
503 };
504
505
506 /***************************************************************************
507
508
509 Machine Drivers
510
511
512 ***************************************************************************/
513
irq_handler(int irq)514 static void irq_handler(int irq)
515 {
516 cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
517 }
518
519 static struct YM2151interface afega_ym2151_intf =
520 {
521 1,
522 4000000, /* ? */
523 { YM3012_VOL(30,MIXER_PAN_LEFT,30,MIXER_PAN_RIGHT) },
524 { irq_handler }
525 };
526
527 static struct OKIM6295interface afega_m6295_intf =
528 {
529 1,
530 { 8000 }, /* ? */
531 { REGION_SOUND1 },
532 { 70 }
533 };
534
INTERRUPT_GEN(interrupt_afega)535 INTERRUPT_GEN( interrupt_afega )
536 {
537 switch ( cpu_getiloops() )
538 {
539 case 0: irq2_line_hold(); break;
540 case 1: irq4_line_hold(); break;
541 }
542 }
543
MACHINE_INIT(afega)544 MACHINE_INIT( afega )
545 {
546 /* Sprites Mirror required due to bug in the game code ( movem.w instead of movem.l ) */
547 cpu_setbank( 1, spriteram16 );
548 }
549
550 static MACHINE_DRIVER_START( stagger1 )
551
552 /* basic machine hardware */
553 MDRV_CPU_ADD_TAG("main",M68000,10000000) /* 3.072 MHz */
MDRV_CPU_MEMORY(afega_readmem,afega_writemem)554 MDRV_CPU_MEMORY(afega_readmem,afega_writemem)
555 MDRV_CPU_VBLANK_INT(interrupt_afega,2)
556
557 MDRV_CPU_ADD(Z80, 3000000)
558 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* ? */
559 MDRV_CPU_MEMORY(afega_sound_readmem,afega_sound_writemem)
560
561 MDRV_FRAMES_PER_SECOND(60)
562 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
563
564 MDRV_MACHINE_INIT(afega)
565
566 /* video hardware */
567 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
568 MDRV_SCREEN_SIZE(256, 256)
569 MDRV_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
570 MDRV_GFXDECODE(stagger1_gfxdecodeinfo)
571 MDRV_PALETTE_LENGTH(768)
572
573 MDRV_VIDEO_START(afega)
574 MDRV_VIDEO_UPDATE(afega)
575
576 /* sound hardware */
577 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
578 MDRV_SOUND_ADD(YM2151, afega_ym2151_intf)
579 MDRV_SOUND_ADD(OKIM6295, afega_m6295_intf)
580 MACHINE_DRIVER_END
581
582 static MACHINE_DRIVER_START( redhawk )
583
584 /* basic machine hardware */
585 MDRV_IMPORT_FROM(stagger1)
586 MDRV_CPU_MODIFY("main")
587 MDRV_CPU_MEMORY(redhawk_readmem,redhawk_writemem)
588
589 MACHINE_DRIVER_END
590
591 static MACHINE_DRIVER_START( grdnstrm )
592
593 /* basic machine hardware */
594 MDRV_CPU_ADD(M68000, 10000000)
595 MDRV_CPU_MEMORY(afega_readmem,afega_writemem)
596 MDRV_CPU_VBLANK_INT(interrupt_afega,2)
597
598 MDRV_CPU_ADD(Z80, 3000000)
599 MDRV_CPU_FLAGS(CPU_AUDIO_CPU) /* ? */
600 MDRV_CPU_MEMORY(afega_sound_readmem,afega_sound_writemem)
601
602 MDRV_FRAMES_PER_SECOND(60)
603 MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
604
605 MDRV_MACHINE_INIT(afega)
606
607 /* video hardware */
608 MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
609 MDRV_SCREEN_SIZE(256, 256)
610 MDRV_VISIBLE_AREA(0, 256-1, 0+16, 256-16-1)
611 MDRV_GFXDECODE(grdnstrm_gfxdecodeinfo)
612 MDRV_PALETTE_LENGTH(768)
613 MDRV_COLORTABLE_LENGTH(768 + 16*256)
614
615 MDRV_PALETTE_INIT(grdnstrm)
616 MDRV_VIDEO_START(afega)
617 MDRV_VIDEO_UPDATE(afega)
618
619 /* sound hardware */
620 MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
621 MDRV_SOUND_ADD(YM2151, afega_ym2151_intf)
622 MDRV_SOUND_ADD(OKIM6295, afega_m6295_intf)
623 MACHINE_DRIVER_END
624
625 static MACHINE_DRIVER_START( bubl2000 )
626
627 /* basic machine hardware */
628 MDRV_IMPORT_FROM(grdnstrm)
629
630 /* video hardware */
631 MDRV_VIDEO_UPDATE(bubl2000)
632 MACHINE_DRIVER_END
633
634 /***************************************************************************
635
636
637 ROMs Loading
638
639
640 ***************************************************************************/
641
642 /* Address lines scrambling */
643
644 static void decryptcode( int a23, int a22, int a21, int a20, int a19, int a18, int a17, int a16, int a15, int a14, int a13, int a12,
645 int a11, int a10, int a9, int a8, int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0 )
646 {
647 int i;
648 data8_t *RAM = memory_region( REGION_CPU1 );
649 size_t size = memory_region_length( REGION_CPU1 );
650 data8_t *buffer = malloc( size );
651
652 if( buffer )
653 {
654 memcpy( buffer, RAM, size );
655 for( i = 0; i < size; i++ )
656 {
657 RAM[ i ] = buffer[ BITSWAP24( i, a23, a22, a21, a20, a19, a18, a17, a16, a15, a14, a13, a12,
658 a11, a10, a9, a8, a7, a6, a5, a4, a3, a2, a1, a0 ) ];
659 }
660 free( buffer );
661 }
662 }
663
664 /***************************************************************************
665
666 Stagger I
667 (AFEGA 1998)
668
669 Parts:
670
671 1 MC68HC000P10
672 1 Z80
673 2 Lattice ispLSI 1032E
674
675 ***************************************************************************/
676
677 ROM_START( stagger1 )
678 ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 Code */
679 ROM_LOAD16_BYTE( "2.bin", 0x000000, 0x020000, CRC(8555929b) SHA1(b405d81c2a45191111b1a4458ac6b5c0a129b8f1) )
680 ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x020000, CRC(5b0b63ac) SHA1(239f793b6845a88d1630da790a2762da730a450d) )
681
682 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */
683 ROM_LOAD( "1.bin", 0x00000, 0x10000, CRC(5d8cf28e) SHA1(2a440bf5136f95af137b6688e566a14e65be94b1) )
684
685 ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites, 16x16x4 */
686 ROM_LOAD16_BYTE( "7.bin", 0x00000, 0x80000, CRC(048f7683) SHA1(7235b7dcfbb72abf44e60b114e3f504f16d29ebf) )
687 ROM_LOAD16_BYTE( "6.bin", 0x00001, 0x80000, CRC(051d4a77) SHA1(664182748e72b3e44202caa20f337d02e946ca62) )
688
689 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0, 16x16x4 */
690 ROM_LOAD( "4.bin", 0x00000, 0x80000, CRC(46463d36) SHA1(4265bc4d24ff64e39d9273965701c740d7e3fee0) )
691
692 ROM_REGION( 0x00100, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) /* Layer 1, 8x8x4 */
693 /* Unused*/
694
695 ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
CRC(e911ce33)696 ROM_LOAD( "5", 0x00000, 0x40000, CRC(e911ce33) SHA1(a29c4dea98a22235122303325c63c15fadd3431d) )
697 ROM_END
698
699
700 /***************************************************************************
701
702 Red Hawk (c)1997 Afega
703
704
705
706 6116 ym2145(?) MSM6295 5 4MHz
707 1
708 Z80 pLSI1032 4
709 76C88
710 6116 76C256 76C88
711 6116 76C256
712 2 76C256 76C256
713 3 76C256 76C256
714
715 68000-10 6116
716 6116
717 SW1 6
718 SW21 pLSI1032 7
719 12MHz
720
721 ***************************************************************************/
722
723 ROM_START( redhawk )
724 ROM_REGION( 0x40000, REGION_CPU1, 0 ) /* 68000 Code */
725 ROM_LOAD16_BYTE( "2", 0x000000, 0x020000, CRC(3ef5f326) SHA1(e89c7c24a05886a14995d7c399958dc00ad35d63) )
726 ROM_LOAD16_BYTE( "3", 0x000001, 0x020000, CRC(9b3a10ef) SHA1(d03480329b23474e5a9e42a75b09d2140eed4443) )
727
728 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */
729 ROM_LOAD( "1.bin", 0x00000, 0x10000, CRC(5d8cf28e) SHA1(2a440bf5136f95af137b6688e566a14e65be94b1) )
730
731 ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites, 16x16x4 */
732 ROM_LOAD16_BYTE( "6", 0x000001, 0x080000, CRC(61560164) SHA1(d727ab2d037dab40745dec9c4389744534fdf07d) )
733 ROM_LOAD16_BYTE( "7", 0x000000, 0x080000, CRC(66a8976d) SHA1(dd9b89cf29eb5557845599d55ef3a15f53c070a4) )
734
735 ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0, 16x16x8 */
736 ROM_LOAD( "4", 0x000000, 0x080000, CRC(d6427b8a) SHA1(556de1b5ce29d1c3c54bb315dcaa4dd0848ca462) )
737
738 ROM_REGION( 0x00100, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_ERASEFF ) /* Layer 1, 8x8x4 */
739 /* Unused*/
740
741 ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
742 ROM_LOAD( "5", 0x00000, 0x40000, CRC(e911ce33) SHA1(a29c4dea98a22235122303325c63c15fadd3431d) )
743 ROM_END
744
745 static DRIVER_INIT( redhawk )
746 {
747 decryptcode( 23, 22, 21, 20, 19, 18, 16, 15, 14, 17, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
748 }
749
750 /***************************************************************************
751
752 Sen Jin - Guardian Storm
753
754 (C) Afega 1998
755
756 CPU: 68HC000FN10 (68000, 68 pin PLCC)
757 SND: Z84C000FEC (Z80, 44 pin PQFP), AD-65 (44 pin PQFP, Probably OKI M6295),
758 BS901 (Probably YM2151 or YM3812, 24 pin DIP), BS901 (possibly YM3014 or similar? 16 pin DIP)
759 OSC: 12.000MHz (near 68000), 4.000MHz (Near Z84000)
760 RAM: LH52B256 x 8, 6116 x 7
761 DIPS: 2 x 8 position
762
763 Other Chips: AFEGA AFI-GFSK (68 pin PLCC, located next to 68000)
764 AFEGA AFI-GFLK (208 pin PQFP)
765
766 ROMS:
767 GST-01.U92 27C512, \
768 GST-02.U95 27C2000 > Sound Related, all located near Z80
769 GST-03.U4 27C512 /
770
771 GST-04.112 27C2000 \
772 GST-05.107 27C2000 /Main Program
773
774 GST-06.C13 read as 27C160 label = AF1-SP (Sprites?)
775 GST-07.C08 read as 27C160 label = AF1=B2 (Backgrounds?)
776 GST-08.C03 read as 27C160 label = AF1=B1 (Backgrounds?)
777
778 ***************************************************************************/
779
780 ROM_START( grdnstrm )
781 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 Code */
782 ROM_LOAD16_BYTE( "gst-04.112", 0x000000, 0x040000, CRC(922c931a) SHA1(1d1511033c8c424535a73f5c5bf58560a8b1842e) )
CRC(d22ca2dc)783 ROM_LOAD16_BYTE( "gst-05.107", 0x000001, 0x040000, CRC(d22ca2dc) SHA1(fa21c8ec804570d64f4b167b7f65fd5811435e46) )
784
785 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */
786 ROM_LOAD( "gst-01.u92", 0x00000, 0x10000, CRC(5d8cf28e) SHA1(2a440bf5136f95af137b6688e566a14e65be94b1) )
787
788 ROM_REGION( 0x200000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites, 16x16x4 */
789 ROM_LOAD( "gst-06.c13", 0x000000, 0x200000, CRC(7d4d4985) SHA1(15c6c1aecd3f12050c1db2376f929f1a26a1d1cf) )
790
791 ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0, 16x16x8 */
792 ROM_LOAD( "gst-07.c08", 0x000000, 0x200000, CRC(d68588c2) SHA1(c5f397d74a6ecfd2e375082f82e37c5a330fba62) )
793 ROM_LOAD( "gst-08.c03", 0x200000, 0x200000, CRC(f8b200a8) SHA1(a6c43dd57b752d87138d7125b47dc0df83df8987) )
794
795 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE ) /* Layer 1, 8x8x4 */
796 ROM_LOAD( "gst-03.u4", 0x00000, 0x10000, CRC(a1347297) SHA1(583f4da991eeedeb523cf4fa3b6900d40e342063) )
797
798 ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
799 ROM_LOAD( "gst-02.u95", 0x00000, 0x40000, CRC(e911ce33) SHA1(a29c4dea98a22235122303325c63c15fadd3431d) )
800 ROM_END
801
802 static DRIVER_INIT( grdnstrm )
803 {
804 decryptcode( 23, 22, 21, 20, 19, 18, 16, 17, 14, 15, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
805 }
806
807
808 /***************************************************************************
809
810 Bubble 2000 (c)1998 Tuning
811
812 Bubble 2000
813 Tuning, 1998
814
815 CPU : TMP68HC000P-10 (68000)
816 SOUND : Z840006 (Z80, 44 pin QFP), YM2151, OKI M6295
817 OSC : 4.000MHZ, 12.000MHz
818 DIPSW : 8 position (x2)
819 RAM : 6116 (x5, gfx related?) 6116 (x1, sound program ram), 6116 (x1, near rom3)
820 64256 (x4, gfx related?), 62256 (x2, main program ram), 6264 (x2, gfx related?)
821 PALs/PROMs: None
822 Custom: Unknown 208 pin QFP labelled LTC2 (Graphics generator)
823 Unknown 68 pin PLCC labelled LTC1 (?, near rom 2 and rom 3)
824 ROMs :
825
826 Filename Type Possible Use
827 ----------------------------------------------
828 rom01.92 27C512 Sound Program
829 rom02.95 27C020 Oki Samples
830 rom03.4 27C512 ? (located near rom 1 and 2 and near LTC1)
831 rom04.1 27C040 \
832 rom05.3 27C040 |
833 rom06.6 27C040 |
834 rom07.9 27C040 | Gfx
835 rom08.11 27C040 |
836 rom09.14 27C040 |
837 rom12.2 27C040 |
838 rom13.7 27C040 /
839
840 rom10.112 27C040 \ Main Program
841 rom11.107 27C040 /
842
843
844
845
846 ***************************************************************************/
847
848 ROM_START( bubl2000 )
849 ROM_REGION( 0x80000, REGION_CPU1, 0 ) /* 68000 Code */
850 ROM_LOAD16_BYTE( "rom10.112", 0x00000, 0x20000, CRC(87f960d7) SHA1(d22fe1740217ac20963bd9003245850598ccecf2) )
CRC(b386041a)851 ROM_LOAD16_BYTE( "rom11.107", 0x00001, 0x20000, CRC(b386041a) SHA1(cac36e22a39b5be0c5cd54dce5c912ff811edb28) )
852
853 ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Z80 Code */
854 ROM_LOAD( "rom01.92", 0x00000, 0x10000, CRC(5d8cf28e) SHA1(2a440bf5136f95af137b6688e566a14e65be94b1) ) /* same as the other games on this driver */
855
856 ROM_REGION( 0x080000, REGION_GFX1, ROMREGION_DISPOSE ) /* Sprites, 16x16x4 */
857 ROM_LOAD16_BYTE( "rom08.11", 0x000000, 0x040000, CRC(519dfd82) SHA1(116b06f6e7b283a5417338f716bbaab6cfadb41d) )
858 ROM_LOAD16_BYTE( "rom09.14", 0x000001, 0x040000, CRC(04fcb5c6) SHA1(7594fa6bf98fc01b8848473a222a621c7c9ff00d) )
859
860 ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* Layer 0, 16x16x8 */
861 ROM_LOAD( "rom06.6", 0x000000, 0x080000, CRC(ac1aabf5) SHA1(abce6ba381b189ab3ec703a8ef74bccbe10876e0) )
862 ROM_LOAD( "rom07.9", 0x080000, 0x080000, CRC(69aff769) SHA1(89b98c1023710861e622c8a186b6ec48f5109d42) )
863 ROM_LOAD( "rom13.7", 0x100000, 0x080000, CRC(3a5b7226) SHA1(1127740c5bc2f830d73a77c8831e1b0db6606375) )
864 ROM_LOAD( "rom04.1", 0x180000, 0x080000, CRC(46acd054) SHA1(1bd7a1b6b2ce6a3daa8c92843c546beb377af8fb) )
865 ROM_LOAD( "rom05.3", 0x200000, 0x080000, CRC(37deb6a1) SHA1(3a8a3d961800bb15fd389429b92fa1e5b5f416df) )
866 ROM_LOAD( "rom12.2", 0x280000, 0x080000, CRC(1fdc59dd) SHA1(d38e21c878241b4315a36e0590397211ca63f2c4) )
867
868 ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE ) /* Layer 1, 8x8x4 */
869 ROM_LOAD( "rom03.4", 0x00000, 0x10000, CRC(f4c15588) SHA1(a21ae71c0a8c7c1df63f9905fd86303bc2d3991c) )
870
871 ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY ) /* Samples */
872 ROM_LOAD( "rom02.95", 0x00000, 0x40000, CRC(859a86e5) SHA1(7b51964227411a40aac54b9cd9ff64f091bdf2b0) )
873 ROM_END
874
875 static DRIVER_INIT( bubl2000 )
876 {
877 decryptcode( 23, 22, 21, 20, 19, 18, 13, 14, 15, 16, 17, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 );
878 }
879
880 /***************************************************************************
881
882
883 Game Drivers
884
885
886 ***************************************************************************/
887
888 GAME ( 1998, stagger1, 0, stagger1, stagger1, 0, ROT270, "Afega", "Stagger I (Japan)" )
889 GAME ( 1997, redhawk, stagger1, redhawk, stagger1, redhawk, ROT270, "Afega", "Red Hawk (US)" )
890 GAME ( 1998, grdnstrm, 0, grdnstrm, grdnstrm, grdnstrm, ROT270, "Afega", "Sen Jin - Guardian Storm (Korea)" )
891 GAMEX( 1998, bubl2000, 0, bubl2000, bubl2000, bubl2000, ROT0, "Tuning", "Bubble 2000", GAME_IMPERFECT_GRAPHICS )
892