1 /***************************************************************************
2 
3 	D-Con									(c) 1992 Success
4 	SD Gundam Psycho Salamander no Kyoui	(c) 1991 Banpresto/Bandai
5 
6 	These games run on Seibu hardware.
7 
8 	Emulation by Bryan McPhail, mish@tendril.co.uk
9 
10 	Coin inputs are handled by the sound CPU, so they don't work with sound
11 	disabled. Use the service switch instead.
12 
13 ***************************************************************************/
14 
15 #include "driver.h"
16 #include "vidhrdw/generic.h"
17 #include "cpu/z80/z80.h"
18 #include "sndhrdw/seibu.h"
19 
20 WRITE16_HANDLER( dcon_gfxbank_w );
21 WRITE16_HANDLER( dcon_background_w );
22 WRITE16_HANDLER( dcon_foreground_w );
23 WRITE16_HANDLER( dcon_midground_w );
24 WRITE16_HANDLER( dcon_text_w );
25 WRITE16_HANDLER( dcon_control_w );
26 READ16_HANDLER( dcon_control_r );
27 
28 VIDEO_START( dcon );
29 VIDEO_UPDATE( dcon );
30 VIDEO_UPDATE( sdgndmps );
31 
32 extern data16_t *dcon_back_data,*dcon_fore_data,*dcon_mid_data,*dcon_scroll_ram,*dcon_textram;
33 
34 /***************************************************************************/
35 
MEMORY_READ16_START(readmem)36 static MEMORY_READ16_START( readmem )
37 	{ 0x00000, 0x7ffff, MRA16_ROM },
38 	{ 0x80000, 0x8bfff, MRA16_RAM },
39 	{ 0x8c000, 0x8c7ff, MRA16_RAM },
40 	{ 0x8c800, 0x8cfff, MRA16_RAM },
41 	{ 0x8d000, 0x8d7ff, MRA16_RAM },
42 	{ 0x8d800, 0x8e7ff, MRA16_RAM },
43 	{ 0x8e800, 0x8f7ff, MRA16_RAM },
44 	{ 0x8f800, 0x8ffff, MRA16_RAM },
45 	{ 0xa0000, 0xa000d, seibu_main_word_r },
46 	{ 0xc001c, 0xc001d, dcon_control_r },
47 	{ 0xe0000, 0xe0001, input_port_1_word_r },
48 	{ 0xe0002, 0xe0003, input_port_2_word_r },
49 	{ 0xe0004, 0xe0005, input_port_3_word_r },
50 MEMORY_END
51 
52 static MEMORY_WRITE16_START( writemem )
53 	{ 0x00000, 0x7ffff, MWA16_ROM },
54 	{ 0x80000, 0x8bfff, MWA16_RAM },
55 	{ 0x8c000, 0x8c7ff, dcon_background_w, &dcon_back_data },
56 	{ 0x8c800, 0x8cfff, dcon_foreground_w, &dcon_fore_data },
57 	{ 0x8d000, 0x8d7ff, dcon_midground_w, &dcon_mid_data },
58 	{ 0x8d800, 0x8e7ff, dcon_text_w, &dcon_textram },
59 	{ 0x8e800, 0x8f7ff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
60 	{ 0x8f800, 0x8ffff, MWA16_RAM, &spriteram16, &spriteram_size },
61 	{ 0x9d000, 0x9d7ff, dcon_gfxbank_w },
62 	{ 0xa0000, 0xa000d, seibu_main_word_w },
63 	{ 0xc001c, 0xc001d, dcon_control_w },
64 	{ 0xc0020, 0xc002f, MWA16_RAM, &dcon_scroll_ram },
65 	{ 0xc0080, 0xc0081, MWA16_NOP },
66 	{ 0xc00c0, 0xc00c1, MWA16_NOP },
67 MEMORY_END
68 
69 /******************************************************************************/
70 
71 #define DCON_PLAYERS_CONTROLS \
72 	PORT_START \
73 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 ) \
74 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 ) \
75 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 ) \
76 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 ) \
77 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) \
78 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) \
79 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) \
80 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED ) \
81 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 ) \
82 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 ) \
83 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 ) \
84 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 ) \
85 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) \
86 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) \
87 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) \
88 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
89 
90 #define DCON_SYSTEM \
91 	PORT_START \
92 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 ) \
93 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
94 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
95 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
96 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START2 ) \
97 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
98 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
99 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
100 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
101 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
102 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN) \
103 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
104 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
105 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
106 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
107 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
108 
109 INPUT_PORTS_START( dcon )
110 	SEIBU_COIN_INPUTS	/* Must be port 0: coin inputs read through sound cpu */
111 
112 	PORT_START
113 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coin_A ) )
114 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
115 	PORT_DIPSETTING(      0x0001, DEF_STR( 4C_1C ) )
116 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_1C ) )
117 	PORT_DIPSETTING(      0x0003, DEF_STR( 2C_1C ) )
118 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
119 	PORT_DIPSETTING(      0x0006, DEF_STR( 1C_2C ) )
120 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_3C ) )
121 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_4C ) )
122 	PORT_DIPNAME( 0x0038, 0x0038, DEF_STR( Coin_B ) )
123 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
124 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_1C ) )
125 	PORT_DIPSETTING(      0x0010, DEF_STR( 3C_1C ) )
126 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_1C ) )
127 	PORT_DIPSETTING(      0x0038, DEF_STR( 1C_1C ) )
128 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_2C ) )
129 	PORT_DIPSETTING(      0x0028, DEF_STR( 1C_3C ) )
130 	PORT_DIPSETTING(      0x0020, DEF_STR( 1C_4C ) )
131 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
132 	PORT_DIPSETTING(      0x0040, DEF_STR( Off ) )
133 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
134 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
135 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
136 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
137 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) )
138 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
139 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
140 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
141 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
142 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
143 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
144 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
145 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
146 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
147 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
148 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
149 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
150 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
151 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
152 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
153 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
154 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
155 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
156 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
157 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
158 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
159 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
160 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
161 
162 	DCON_PLAYERS_CONTROLS
163 
164 	DCON_SYSTEM
165 INPUT_PORTS_END
166 
167 INPUT_PORTS_START( sdgndmps )
168 	SEIBU_COIN_INPUTS	/* Must be port 0: coin inputs read through sound cpu */
169 
170 	PORT_START
171 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_B ) )
172 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_1C ) )
173 	PORT_DIPSETTING(      0x000a, DEF_STR( 3C_1C ) )
174 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
175 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_3C ) )
176 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_2C ) )
177 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_3C ) )
178 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
179 	PORT_DIPSETTING(      0x000c, DEF_STR( 3C_4C ) )
180 	PORT_DIPSETTING(      0x000e, DEF_STR( 2C_3C ) )
181 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_2C ) )
182 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
183 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_3C ) )
184 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_4C ) )
185 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_5C ) )
186 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_6C ) )
187 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
188 	PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_A ) )
189 	PORT_DIPSETTING(      0x0040, DEF_STR( 4C_1C ) )
190 	PORT_DIPSETTING(      0x00a0, DEF_STR( 3C_1C ) )
191 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
192 	PORT_DIPSETTING(      0x0020, DEF_STR( 3C_2C ) )
193 	PORT_DIPSETTING(      0x0080, DEF_STR( 4C_3C ) )
194 	PORT_DIPSETTING(      0x00f0, DEF_STR( 1C_1C ) )
195 	PORT_DIPSETTING(      0x00c0, DEF_STR( 3C_4C ) )
196 	PORT_DIPSETTING(      0x00e0, DEF_STR( 2C_3C ) )
197 	PORT_DIPSETTING(      0x0070, DEF_STR( 1C_2C ) )
198 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_5C ) )
199 	PORT_DIPSETTING(      0x00b0, DEF_STR( 1C_3C ) )
200 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_4C ) )
201 	PORT_DIPSETTING(      0x00d0, DEF_STR( 1C_5C ) )
202 	PORT_DIPSETTING(      0x0050, DEF_STR( 1C_6C ) )
203 	PORT_DIPSETTING(      0x0090, DEF_STR( 1C_7C ) )
204 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
205 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
206 	PORT_DIPSETTING(      0x0000, "6" )
207 	PORT_DIPSETTING(      0x0100, "4" )
208 	PORT_DIPSETTING(      0x0300, "3" )
209 	PORT_DIPSETTING(      0x0200, "2" )
210 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
211 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
212 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
213 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
214 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
215 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
216 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
217 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
218 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
219 	PORT_DIPNAME( 0x2000, 0x0000, "Allow Continue" )
220 	PORT_DIPSETTING(      0x2000, DEF_STR( No ) )
221 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
222 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
223 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
224 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
225 	PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) )
226 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
227 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
228 
229 	DCON_PLAYERS_CONTROLS
230 
231 	DCON_SYSTEM
232 INPUT_PORTS_END
233 
234 
235 /******************************************************************************/
236 
237 static struct GfxLayout dcon_charlayout =
238 {
239 	8,8,		/* 8*8 characters */
240 	RGN_FRAC(1,2),
241 	4,			/* 4 bits per pixel */
242 	{ 0,4,(0x10000*8)+0,0x10000*8+4,  },
243 	{ 3,2,1,0, 11,10,9,8 ,8,9,10,11,0,1,2,3, },
244 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
245 	128
246 };
247 
248 static struct GfxLayout dcon_tilelayout =
249 {
250 	16,16,	/* 16*16 tiles */
251 	RGN_FRAC(1,1),
252 	4,		/* 4 bits per pixel */
253 	{ 8, 12, 0,4 },
254 	{
255 		3,2,1,0,19,18,17,16,
256 		512+3,512+2,512+1,512+0,
257 		512+11+8,512+10+8,512+9+8,512+8+8,
258 	},
259 	{
260 		0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
261 		8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32,
262 	},
263 	1024
264 };
265 
266 static struct GfxDecodeInfo dcon_gfxdecodeinfo[] =
267 {
268 	{ REGION_GFX1, 0, &dcon_charlayout,    1024+768, 16 },
269 	{ REGION_GFX2, 0, &dcon_tilelayout,    1024+0,   16 },
270 	{ REGION_GFX3, 0, &dcon_tilelayout,    1024+512, 16 },
271 	{ REGION_GFX4, 0, &dcon_tilelayout,    1024+256, 16 },
272 	{ REGION_GFX5, 0, &dcon_tilelayout,           0, 64 },
273 	{ -1 } /* end of array */
274 };
275 
276 /******************************************************************************/
277 
278 /* Parameters: YM3812 frequency, Oki frequency, Oki memory region */
279 SEIBU_SOUND_SYSTEM_YM3812_HARDWARE(4000000,8000,REGION_SOUND1);
280 SEIBU_SOUND_SYSTEM_YM2151_HARDWARE(14318180/4,8000,REGION_SOUND1);
281 
282 static MACHINE_DRIVER_START( dcon )
283 
284 	/* basic machine hardware */
285 	MDRV_CPU_ADD(M68000, 10000000)
MDRV_CPU_MEMORY(readmem,writemem)286 	MDRV_CPU_MEMORY(readmem,writemem)
287 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
288 
289 	SEIBU_SOUND_SYSTEM_CPU(4000000) /* Perhaps 14318180/4? */
290 
291 	MDRV_FRAMES_PER_SECOND(60)
292 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
293 	MDRV_MACHINE_INIT(seibu_sound_1)
294 
295 	/* video hardware */
296 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
297 	MDRV_SCREEN_SIZE(40*8, 32*8)
298 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
299 	MDRV_GFXDECODE(dcon_gfxdecodeinfo)
300 	MDRV_PALETTE_LENGTH(2048)
301 
302 	MDRV_VIDEO_START(dcon)
303 	MDRV_VIDEO_UPDATE(dcon)
304 
305 	/* sound hardware */
306 	SEIBU_SOUND_SYSTEM_YM3812_INTERFACE
307 MACHINE_DRIVER_END
308 
309 static MACHINE_DRIVER_START( sdgndmps )
310 
311 	/* basic machine hardware */
312 	MDRV_CPU_ADD(M68000, 10000000)
313 	MDRV_CPU_MEMORY(readmem,writemem)
314 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
315 
316 	SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
317 
318 	MDRV_FRAMES_PER_SECOND(60)
319 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
320 	MDRV_MACHINE_INIT(seibu_sound_1)
321 
322 	/* video hardware */
323 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
324 	MDRV_SCREEN_SIZE(40*8, 32*8)
325 	MDRV_VISIBLE_AREA(0*8, 40*8-1, 2*8, 30*8-1)
326 	MDRV_GFXDECODE(dcon_gfxdecodeinfo)
327 	MDRV_PALETTE_LENGTH(2048)
328 
329 	MDRV_VIDEO_START(dcon)
330 	MDRV_VIDEO_UPDATE(sdgndmps)
331 
332 	/* sound hardware */
333 	SEIBU_SOUND_SYSTEM_YM2151_INTERFACE
334 MACHINE_DRIVER_END
335 
336 /***************************************************************************/
337 
338 ROM_START( dcon )
339 	ROM_REGION( 0x80000, REGION_CPU1, 0 )
340 	ROM_LOAD16_BYTE("p0-0",   0x000000, 0x20000, CRC(a767ec15) SHA1(5ceeba97b58c4e24d8c0991303dd6f7a2dfeda48) )
341 	ROM_LOAD16_BYTE("p0-1",   0x000001, 0x20000, CRC(a7efa091) SHA1(aa0e97d20f3bdc1adc019fe62112a8417bb3ddf1) )
342 	ROM_LOAD16_BYTE("p1-0",   0x040000, 0x20000, CRC(3ec1ef7d) SHA1(6195f1402dba5b3d3913e97cd78ba1e8865f7692) )
343 	ROM_LOAD16_BYTE("p1-1",   0x040001, 0x20000, CRC(4b8de320) SHA1(14a3ab347fc468869355951294c3e3a8f9211b6a) )
344 
345 	ROM_REGION( 0x20000, REGION_CPU2, 0 )	 /* 64k code for sound Z80 */
346 	ROM_LOAD( "fm",           0x000000, 0x08000, CRC(50450faa) SHA1(d4add7d357951b51d53ed7f143ece7f3bde7f4cb) )
347 	ROM_CONTINUE(             0x010000, 0x08000 )
348 	ROM_COPY( REGION_CPU2, 0, 0x018000, 0x08000 )
349 
350 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
351 	ROM_LOAD( "fix0",  0x000000, 0x10000, CRC(ab30061f) SHA1(14dba37fef7bd13c827fd542b24cc593dcdc9f99) ) /* chars */
352 	ROM_LOAD( "fix1",  0x010000, 0x10000, CRC(a0582115) SHA1(498d6e4f631a5dfe54d5c2813c47d40c466b694d) )
353 
354 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
355 	ROM_LOAD( "bg1",   0x000000, 0x80000, CRC(eac43283) SHA1(f5d384c98751002416013a9a920e2ab2cea61cb1) ) /* tiles */
356 
357 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
358 	ROM_LOAD( "bg3",   0x000000, 0x80000, CRC(1408a1e0) SHA1(d96fb8a60af02df313ffc9e0284611d7ca50540d) ) /* tiles */
359 
360 	ROM_REGION( 0x080000, REGION_GFX4, ROMREGION_DISPOSE )
361 	ROM_LOAD( "bg2",   0x000000, 0x80000, CRC(01864eb6) SHA1(78f755d7462a787bd1a378184e8fce8fa889f258) ) /* tiles */
362 
363 	ROM_REGION( 0x200000, REGION_GFX5, ROMREGION_DISPOSE )
364 	ROM_LOAD( "obj0",  0x000000, 0x80000, CRC(c3af37db) SHA1(7d6ee07b6302aaec8d792faf78a37898a2ac3c4e) ) /* sprites */
365 	ROM_LOAD( "obj1",  0x080000, 0x80000, CRC(be1f53ba) SHA1(061b80487e6c4040618af6ed9c5315fba44f5d0c) )
366 	ROM_LOAD( "obj2",  0x100000, 0x80000, CRC(24e0b51c) SHA1(434b4d58f785eefb5380c08a0704c8dea6609268) )
367 	ROM_LOAD( "obj3",  0x180000, 0x80000, CRC(5274f02d) SHA1(69b94363624177c92e1b3413244ce649c2e5a696) )
368 
369 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	 /* ADPCM samples */
370 	ROM_LOAD( "pcm", 0x000000, 0x20000, CRC(d2133b85) SHA1(a2e61c9893da8a95c35c0b47e2c43c315b654de8) )
371 ROM_END
372 
373 ROM_START( sdgndmps )
374 	ROM_REGION( 0x80000, REGION_CPU1, 0 )	/* 68000 code */
375 	ROM_LOAD16_BYTE( "911-a01.25",   0x00000, 0x20000, CRC(3362915d) SHA1(d98e2d4de402ca549664e148c9a6fe94fccfd5e9) )
376 	ROM_LOAD16_BYTE( "911-a02.29",   0x00001, 0x20000, CRC(fbc78285) SHA1(85d40b0e7bb923a0daacbd78ce7d5bb9c80b9ffc) )
377 	ROM_LOAD16_BYTE( "911-a03.27",   0x40000, 0x20000, CRC(6c24b4f2) SHA1(e9fb82884f47694bebcad9254cb57a0b01dcd9c8) )
378 	ROM_LOAD16_BYTE( "911-a04.28",   0x40001, 0x20000, CRC(6ff9d716) SHA1(303faec19a84afd6cbcf3ca5d4877693c11d406e) )
379 
380 	ROM_REGION( 0x20000*2, REGION_CPU2, 0 )	/* Z80 code, banked data */
381 	ROM_LOAD( "911-a05.010",   0x00000, 0x08000, CRC(90455406) SHA1(dd2c5b96ac4b51251a3d34d97cc9af360afaa38c) )
382 	ROM_CONTINUE(              0x10000, 0x08000 )
383 
384 	ROM_REGION( 0x020000, REGION_GFX1, ROMREGION_DISPOSE )
385 	ROM_LOAD( "911-a08.66",   0x000000, 0x10000, CRC(e7e04823) SHA1(d9b1ace5cd8218d5a4767cf5adbc267dce7c0668) )	/* chars */
386 	ROM_LOAD( "911-a07.73",   0x010000, 0x10000, CRC(6f40d4a9) SHA1(8abadb2dc07ac22081b2970358e9f92b90b174b0) )
387 
388 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
389 	ROM_LOAD( "911-a12.63",   0x000000, 0x080000, CRC(8976bbb6) SHA1(6f510d6506e54ddec7119d85dcc0a169d4901983) )
390 
391 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
392 	ROM_LOAD( "911-a11.65",   0x000000, 0x080000, CRC(3f3b7810) SHA1(0761c5fb0802fdd2ee7523f1f4e5cfb2c7a6fce6) )
393 
394 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
395 	ROM_LOAD( "911-a13.64",   0x000000, 0x100000, CRC(f38a584a) SHA1(16dd8e7086949d14e9185c37313290024d6dafdc) )
396 
397 	ROM_REGION( 0x200000, REGION_GFX5, ROMREGION_DISPOSE )
398 	ROM_LOAD( "911-a10.73",   0x000000, 0x100000, CRC(80e341fb) SHA1(619e71aefd0b13a01a6a2ed5d8613fe56242d209) )	/* sprites */
399 	ROM_LOAD( "911-a09.74",   0x100000, 0x100000, CRC(98f34519) SHA1(20319d546df104485ee553ce0e58364f927d1135) )
400 
401 	ROM_REGION( 0x040000, REGION_SOUND1, 0 )	/* ADPCM samples */
402 	ROM_LOAD( "911-a06.97",   0x00000, 0x40000, CRC(12c79440) SHA1(9e9987527f64dfd8a51a2ab49afc465e76c5e7ac) )
403 
404 	ROM_REGION( 512, REGION_PROMS, 0 )
405 	ROM_LOAD( "bnd-007.88",   0x00000, 512, CRC(96f7646e) SHA1(400a831b83d6ac4d2a46ef95b97b1ee237099e44) ) /* Priority */
406 ROM_END
407 
408 /***************************************************************************/
409 static DRIVER_INIT( sdgndmps )
410 {
411 	data16_t *RAM = (data16_t *)memory_region(REGION_CPU1);
412 	RAM[0x1356/2] = 0x4e71; /* beq -> nop */
413 	RAM[0x1358/2] = 0x4e71;
414 
415 	RAM[0x4de/2]  = 0x4245; /* ROM checksum */
416 	RAM[0x4e0/2]  = 0x4e71;
417 	RAM[0x4e2/2]  = 0x4e71;
418 }
419 
420 
421 GAMEX( 1991, sdgndmps, 0, sdgndmps, sdgndmps, sdgndmps, ROT0, "Banpresto / Bandai", "SD Gundam Psycho Salamander no Kyoui", GAME_NO_COCKTAIL )
422 GAMEX( 1992, dcon,     0, dcon,     dcon,     0, ROT0, "Success",            "D-Con", GAME_NO_COCKTAIL )
423