1 /***************************************************************************
2 
3 							  -= Paradise / Target Ball / Torus =-
4 
5 					driver by	Luca Elia (l.elia@tin.it)
6 
7 
8 CPU          :  Z8400B
9 Video Chips  :	TPC1024AFN-084C
10 Sound Chips  :	2 x AR17961 (OKI M6295) (only 1 in Torus)
11 
12 Notes:
13 
14 paradise: I'm not sure it's working correctly:
15 
16 - The high scores table can't be entered !?
17 - note added: complete 90% or more to play a bonus game.
18 
19 ***************************************************************************/
20 
21 #include "driver.h"
22 #include "vidhrdw/generic.h"
23 #include "paradise.h"
24 
25 /***************************************************************************
26 
27 								Memory Maps
28 
29 ***************************************************************************/
30 
WRITE_HANDLER(paradise_rombank_w)31 static WRITE_HANDLER( paradise_rombank_w )
32 {
33 	int bank = data;
34 	int bank_n = memory_region_length(REGION_CPU1)/0x4000 - 1;
35 	if (bank >= bank_n)
36 	{
37 		log_cb(RETRO_LOG_DEBUG, LOGPRE "PC %04X - invalid rom bank %x\n",activecpu_get_pc(),bank);
38 		bank %= bank_n;
39 	}
40 
41 	if (bank >= 3)	bank+=1;
42 	cpu_setbank(1, memory_region(REGION_CPU1) + bank * 0x4000);
43 }
44 
WRITE_HANDLER(paradise_okibank_w)45 static WRITE_HANDLER( paradise_okibank_w )
46 {
47 	if (data & ~0x02)	log_cb(RETRO_LOG_DEBUG, LOGPRE "CPU #0 - PC %04X: unknown oki bank bits %02X\n",activecpu_get_pc(),data);
48 	OKIM6295_set_bank_base(1, (data & 0x02) ? 0x40000 : 0);
49 }
50 
WRITE_HANDLER(torus_coin_counter_w)51 static WRITE_HANDLER( torus_coin_counter_w )
52 {
53 	coin_counter_w(0, data ^ 0xff);
54 }
55 
56 
MEMORY_READ_START(paradise_readmem)57 static MEMORY_READ_START( paradise_readmem )
58 	{ 0x0000, 0x7fff, MRA_ROM		},	/* ROM*/
59 	{ 0x8000, 0xbfff, MRA_BANK1		},	/* ROM (banked)*/
60 	{ 0xc000, 0xffff, MRA_RAM		},	/* RAM*/
61 MEMORY_END
62 
63 #define STANDARD_MAP	\
64 	{ 0x0000, 0x7fff, MWA_ROM		},	/* ROM*/	\
65 	{ 0x8000, 0xbfff, MWA_ROM		},	/* ROM (banked)*/ \
66 	{ 0xc000, 0xc7ff, paradise_vram_2_w,&paradise_vram_2	},	/* Background*/ \
67 	{ 0xc800, 0xcfff, paradise_vram_1_w,&paradise_vram_1	},	/* Midground*/ \
68 	{ 0xd000, 0xd7ff, paradise_vram_0_w,&paradise_vram_0	},	/* Foreground*/ \
69 
70 static MEMORY_WRITE_START( paradise_writemem )
71 	STANDARD_MAP
72 	{ 0xd800, 0xd8ff, MWA_RAM								},	/* RAM*/
73 	{ 0xd900, 0xe0ff, MWA_RAM, &spriteram, &spriteram_size	},	/* Sprites*/
74 	{ 0xe100, 0xffff, MWA_RAM								},	/* RAM*/
75 MEMORY_END
76 
77 static MEMORY_WRITE_START( tgtball_writemem )
78 	STANDARD_MAP
79 	{ 0xd800, 0xd8ff, MWA_RAM								},	/* RAM*/
80 	{ 0xd900, 0xd9ff, MWA_RAM, &spriteram, &spriteram_size	},	/* Sprites*/
81 	{ 0xda00, 0xffff, MWA_RAM								},	/* RAM*/
82 MEMORY_END
83 
84 static MEMORY_WRITE_START( torus_writemem )
85 	STANDARD_MAP
86 	{ 0xd800, 0xdfff, MWA_RAM, &spriteram, &spriteram_size	},	/* Sprites*/
87 	{ 0xea00, 0xffff, MWA_RAM								},	/* RAM*/
88 MEMORY_END
89 
90 static PORT_READ_START( paradise_readport )
91 	{ 0x0000, 0x17ff, paletteram_r			},	/* Palette*/
92 	{ 0x2010, 0x2010, OKIM6295_status_0_r	},	/* OKI 0*/
93 	{ 0x2030, 0x2030, OKIM6295_status_1_r	},	/* OKI 1*/
94 	{ 0x2020, 0x2020, input_port_0_r		},	/* DSW 1*/
95 	{ 0x2021, 0x2021, input_port_1_r		},	/* DSW 2*/
96 	{ 0x2022, 0x2022, input_port_2_r		},	/* P1*/
97 	{ 0x2023, 0x2023, input_port_3_r		},	/* P2*/
98 	{ 0x2024, 0x2024, input_port_4_r		},	/* Coins*/
99 	{ 0x8000, 0xffff, videoram_r			},	/* Pixmap*/
100 PORT_END
101 
102 static PORT_WRITE_START( paradise_writeport )
103 	{ 0x0000, 0x17ff, paradise_palette_w	},	/* Palette*/
104 	{ 0x1800, 0x1800, paradise_priority_w	},	/* Layers priority*/
105 	{ 0x2001, 0x2001, paradise_flipscreen_w	},	/* Flip Screen*/
106 	{ 0x2004, 0x2004, paradise_palbank_w	},	/* Layers palette bank*/
107 	{ 0x2006, 0x2006, paradise_rombank_w	},	/* ROM bank*/
108 	{ 0x2007, 0x2007, paradise_okibank_w	},	/* OKI 1 samples bank*/
109 	{ 0x2010, 0x2010, OKIM6295_data_0_w		},	/* OKI 0*/
110 	{ 0x2030, 0x2030, OKIM6295_data_1_w		},	/* OKI 1*/
111 	{ 0x8000, 0xffff, paradise_pixmap_w		},	/* Pixmap*/
112 PORT_END
113 
114 
115 /***************************************************************************
116 
117 								Input Ports
118 
119 ***************************************************************************/
120 
121 /***************************************************************************
122 								Paradise
123 ***************************************************************************/
124 
125 INPUT_PORTS_START( paradise )
126 	PORT_START	/* IN0 - port $2020 - DSW 1*/
127 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) )
128 	PORT_DIPSETTING(    0x03, "Easy" )
129 	PORT_DIPSETTING(    0x02, "Normal" )
130 	PORT_DIPSETTING(    0x01, "Hard" )
131 	PORT_DIPSETTING(    0x00, "Hardest" )
132 	PORT_DIPNAME( 0x0c, 0x08, "Fill Area" )
133 	PORT_DIPSETTING(    0x0c, "75%" )
134 	PORT_DIPSETTING(    0x08, "80%" )
135 	PORT_DIPSETTING(    0x04, "85%" )
136 	PORT_DIPSETTING(    0x00, "90%" )
137 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) )
138 	PORT_DIPSETTING(    0x00, "3" )
139 	PORT_DIPSETTING(    0x10, "5" )
140 	PORT_DIPNAME( 0x60, 0x20, "Time" )
141 	PORT_DIPSETTING(    0x00, "45" )
142 	PORT_DIPSETTING(    0x20, "60" )
143 	PORT_DIPSETTING(    0x40, "75" )
144 	PORT_DIPSETTING(    0x60, "90" )
145 	PORT_DIPNAME( 0x80, 0x80, "Sound Test" )
146 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
147 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
148 
149 	PORT_START	/* IN1 - port $2021 - DSW 2*/
150 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
151 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
152 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
153 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
154 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
155 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) /* Listed as "Unused" */
156 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
157 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
158 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) /* Listed as "Unused" */
159 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
160 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
161 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) /* Listed as "Unused" */
162 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
163 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
164 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Demo_Sounds ) )
165 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
166 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
167 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
168 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
169 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
170 	PORT_DIPNAME( 0x80, 0x80, "Slide Show" ) /* Player1 button used to advance one time through ALL backgrounds */
171 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
172 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
173 
174 	PORT_START	/* IN2 - port $2022 - Player 1*/
175 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER1 )
176 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 )
177 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 )
178 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
179 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1        | IPF_PLAYER1 )
180 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* alias for button1?*/
181 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* alias for button1?*/
182 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1  )
183 
184 	PORT_START	/* IN3 - port $2023 - Player 2*/
185 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2 )
186 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 )
187 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 )
188 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
189 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1        | IPF_PLAYER2 )
190 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* alias for button1?*/
191 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* alias for button1?*/
192 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2  )
193 
194 	PORT_START	/* IN4 - port $2024 - Coins*/
195 	PORT_BIT_IMPULSE(  0x01, IP_ACTIVE_LOW, IPT_COIN1, 5)
196 	PORT_BIT_IMPULSE(  0x02, IP_ACTIVE_LOW, IPT_COIN2, 5)
197 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
198 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
199 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
200 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
201 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_VBLANK  )
202 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
203 INPUT_PORTS_END
204 
205 INPUT_PORTS_START( tgtball )
206 	PORT_START	/* IN0 - port $2020 - DSW 1 */
207 	PORT_DIPNAME( 0x03, 0x02, "Time for 1 Player" )
208 	PORT_DIPSETTING(    0x03, "1:00" )
209 	PORT_DIPSETTING(    0x02, "1:20" )
210 	PORT_DIPSETTING(    0x01, "1:40" )
211 	PORT_DIPSETTING(    0x00, "2:00" )
212 	PORT_DIPNAME( 0x0c, 0x08, "Bonus Time?" ) /* Difficulty or Bonus (time)? */
213 	PORT_DIPSETTING(    0x0c, "15" )
214 	PORT_DIPSETTING(    0x08, "20" )
215 	PORT_DIPSETTING(    0x04, "25" )
216 	PORT_DIPSETTING(    0x00, "30" )
217 	PORT_DIPNAME( 0x30, 0x20, DEF_STR( Lives ) )
218 	PORT_DIPSETTING(    0x30, "4" )
219 	PORT_DIPSETTING(    0x20, "5" )
220 	PORT_DIPSETTING(    0x10, "6" )
221 	PORT_DIPSETTING(    0x00, "7" )
222 	PORT_DIPNAME( 0x40, 0x40, "Balls Sequence Length" )
223 	PORT_DIPSETTING(    0x40, "3" )
224 	PORT_DIPSETTING(    0x00, "5" )
225 	PORT_DIPNAME( 0x80, 0x80, "Game Goal" )
226 	PORT_DIPSETTING(    0x80, "Target Score" )
227 	PORT_DIPSETTING(    0x00, "Balls Sequence" )
228 
229 	PORT_START	/* IN1 - port $2021 - DSW 2 */
230 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
231 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
232 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
233 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
234 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
235 	PORT_DIPNAME( 0x0c, 0x08, "Time for 2 Players" )
236 	PORT_DIPSETTING(    0x0c, "2:00" )
237 	PORT_DIPSETTING(    0x08, "2:40" )
238 	PORT_DIPSETTING(    0x04, "3:20" )
239 	PORT_DIPSETTING(    0x00, "4:00" )
240 	PORT_DIPNAME( 0x10, 0x10, "Vs. Matches" )
241 	PORT_DIPSETTING(    0x10, "1" )
242 	PORT_DIPSETTING(    0x00, "3" )
243 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
244 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
245 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
246 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
247 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
248 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
249 	PORT_DIPNAME( 0x80, 0x80, "Slide Show" ) /* Player1 button used to advance one time through ALL backgrounds */
250 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
251 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
252 
253 	PORT_START	/* IN2 - port $2022 - Player 1 */
254 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
255 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
256 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
257 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
258 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
259 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
260 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
261 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1  )
262 
263 	PORT_START	/* IN3 - port $2023 - Player 2 */
264 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
265 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
266 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
267 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
268 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
269 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
270 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
271 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2  )
272 
273 	PORT_START	/* IN4 - port $2024 - Coins */
274 	PORT_BIT_IMPULSE(  0x01, IP_ACTIVE_LOW, IPT_COIN1, 5 )
275 	PORT_BIT_IMPULSE(  0x02, IP_ACTIVE_LOW, IPT_COIN2, 5 )
276 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
277 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_VBLANK  )
278 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
279 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
280 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
281 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
282 INPUT_PORTS_END
283 
284 INPUT_PORTS_START( torus )
285 	PORT_START	/* IN0 - port $2020 - DSW 1 */
286 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
287 	PORT_DIPSETTING(    0x00, DEF_STR( 3C_1C ) )
288 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
289 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
290 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
291 	PORT_DIPNAME( 0x0c, 0x0c, "Dropping Speed" )
292 	PORT_DIPSETTING(    0x0c, "Normal" )
293 	PORT_DIPSETTING(    0x08, "Fast" )
294 	PORT_DIPSETTING(    0x04, "Faster" )
295 	PORT_DIPSETTING(    0x00, "Fastest" )
296 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
297 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
298 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
299 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) )
300 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
301 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
302 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Flip_Screen ) )
303 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
304 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
305 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
306 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
307 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
308 
309 	PORT_START	/* IN1 - port $2021 - DSW 2 */
310 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
311 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
312 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
313 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
314 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
315 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
316 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
317 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
318 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
319 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
320 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
321 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
322 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
323 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
324 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
325 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
326 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
327 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
328 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
329 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
330 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
331 	PORT_DIPNAME( 0x80, 0x80, "Slide Show" )    /* Player1 Button to pull the blinds down in sections, continuous loop */
332 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
333 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
334 
335 	PORT_START	/* IN2 - port $2022 - Player 1 */
336 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
337 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
338 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
339 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
340 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
341 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
342 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
343 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1  )
344 
345 	PORT_START	/* IN3 - port $2023 - Player 2 */
346 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
347 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
348 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
349 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
350 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
351 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
352 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
353 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2  )
354 
355 	PORT_START	/* IN4 - port $2024 - Coins */
356 	PORT_BIT_IMPULSE(  0x01, IP_ACTIVE_LOW, IPT_COIN1, 5 )
357 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
358 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
359 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
360 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
361 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
362 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_VBLANK  )
363 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
364 INPUT_PORTS_END
365 
366 INPUT_PORTS_START( madball )
367 	PORT_START	/* 8bit DSW 1 */
368 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coinage ) )
369 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
370 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
371 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
372 	PORT_DIPSETTING(    0x01, DEF_STR( 1C_3C ) )
373 	PORT_DIPNAME( 0x0c, 0x08, DEF_STR( Lives ) )
374 	PORT_DIPSETTING(    0x0c, "3" )
375 	PORT_DIPSETTING(    0x08, "4" )
376 	PORT_DIPSETTING(    0x04, "5" )
377 	PORT_DIPSETTING(    0x00, "6" )
378 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) )
379 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
380 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
381 	PORT_DIPNAME( 0x20, 0x00, "Controls" )
382 	PORT_DIPSETTING(    0x20, "Spinner" )
383 	PORT_DIPSETTING(    0x00, "Joystick" )
384 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
385 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
386 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
387 	PORT_DIPNAME( 0x80, 0x80, "Slide Show" ) /* Use P1 button to advance */
388 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
389 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
390 
391 	PORT_START	/* 8bit DSW 2 */
392 	PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) )
393 	PORT_DIPSETTING(    0x02, "Easy" )
394 	PORT_DIPSETTING(    0x03, "Normal" )
395 	PORT_DIPSETTING(    0x01, "Hard" )
396 	PORT_DIPSETTING(    0x00, "Hardest" )
397 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
398 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
399 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
400 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
401 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
402 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
403 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
404 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
405 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
406 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
407 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
408 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
409 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
410 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
411 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
412 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
413 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
414 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
415 
416 	PORT_START	/* IN2 - port $2022 - Player 1 */
417 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER1 )
418 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER1 )
419 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER1 )
420 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 )
421 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
422 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
423 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
424 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START1  )
425 
426 	PORT_START	/* IN3 - port $2023 - Player 2 */
427 	PORT_BIT(  0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_PLAYER2 )
428 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_PLAYER2 )
429 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_PLAYER2 )
430 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 )
431 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
432 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
433 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
434 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_START2  )
435 
436 	PORT_START	/* IN4 - port $2024 - Coins */
437 	PORT_BIT_IMPULSE(  0x01, IP_ACTIVE_LOW, IPT_COIN1, 5 )
438 	PORT_BIT(  0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
439 	PORT_BIT(  0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
440 	PORT_BIT(  0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
441 	PORT_BIT(  0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
442 	PORT_BIT(  0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
443 	PORT_BIT(  0x40, IP_ACTIVE_LOW, IPT_VBLANK  )
444 	PORT_BIT(  0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
445 INPUT_PORTS_END
446 
447 
448 /***************************************************************************
449 
450 								Graphics Layouts
451 
452 ***************************************************************************/
453 
454 static struct GfxLayout layout_8x8x4 =
455 {
456 	8,8,
457 	RGN_FRAC(1,1),
458 	4,
459 	{ STEP4(0,1) },
460 	{ STEP8(0,4) },
461 	{ STEP8(0,4*8) },
462 	8*8*4
463 };
464 
465 static struct GfxLayout layout_8x8x8 =
466 {
467 	8,8,
468 	RGN_FRAC(1,2),
469 	8,
470 	{ STEP4(RGN_FRAC(1,2),1), STEP4(RGN_FRAC(0,2),1) },
471 	{ STEP8(0,4) },
472 	{ STEP8(0,4*8) },
473 	8*8*4
474 };
475 
476 static struct GfxLayout layout_16x16x8 =
477 {
478 	16,16,
479 	RGN_FRAC(1,2),
480 	8,
481 	{ STEP4(RGN_FRAC(1,2),1), STEP4(RGN_FRAC(0,2),1) },
482 	{ STEP8(8*8*4*0,4), STEP8(8*8*4*1,4) },
483 	{ STEP8(8*8*4*0,4*8), STEP8(8*8*4*2,4*8) },
484 	16*16*4
485 };
486 
487 static struct GfxLayout torus_layout_16x16x8 =
488 {
489 	16,16,
490 	RGN_FRAC(1,2),
491 	8,
492 	{ STEP4(RGN_FRAC(1,2),1), STEP4(RGN_FRAC(0,2),1) },
493 	{ STEP8(0,4),STEP8(4*8,4) },
494 	{ STEP16(0,8*8) },
495 	128*8
496 };
497 
498 static struct GfxDecodeInfo paradise_gfxdecodeinfo[] =
499 {
500 	{ REGION_GFX1, 0, &layout_16x16x8,	0x100, 1  }, /* [0] Sprites*/
501 	{ REGION_GFX2, 0, &layout_8x8x4,	0x400, 16 }, /* [1] Background*/
502 	{ REGION_GFX3, 0, &layout_8x8x8,	0x300, 1  }, /* [2] Midground*/
503 	{ REGION_GFX4, 0, &layout_8x8x8,	0x000, 1  }, /* [3] Foreground*/
504 	{ -1 }
505 };
506 
507 static struct GfxDecodeInfo torus_gfxdecodeinfo[] =
508 {
509 	{ REGION_GFX1, 0, &torus_layout_16x16x8, 0x100, 1  }, // [0] Sprites
510 	{ REGION_GFX2, 0, &layout_8x8x4,	 0x400, 16 }, // [1] Background
511 	{ REGION_GFX3, 0, &layout_8x8x8,	 0x300, 1  }, // [2] Midground
512 	{ REGION_GFX4, 0, &layout_8x8x8,	 0x000, 1  }, // [3] Foreground
513 	{ -1 }
514 };
515 
516 static struct GfxDecodeInfo madball_gfxdecodeinfo[] =
517 {
518 	{ REGION_GFX1, 0, &torus_layout_16x16x8, 0x500, 1  }, // [0] Sprites
519 	{ REGION_GFX2, 0, &layout_8x8x4,	 0x400, 16 }, // [1] Background
520 	{ REGION_GFX3, 0, &layout_8x8x8,	 0x300, 1  }, // [2] Midground
521 	{ REGION_GFX4, 0, &layout_8x8x8,	 0x000, 1  }, // [3] Foreground
522 	{ -1 }
523 };
524 
525 
526 /***************************************************************************
527 
528 								Machine Drivers
529 
530 ***************************************************************************/
531 
532 static struct OKIM6295interface paradise_okim6295_intf =
533 {
534 	2,
535 	{ 1000000/132,1000000/132 },		/* 1Mhz / 132 verified */
536 	{ REGION_SOUND1,REGION_SOUND2 },
537 	{ 50,50 }
538 };
539 
540 static MACHINE_DRIVER_START( paradise )
541 
542 	/* basic machine hardware */
543 	MDRV_CPU_ADD_TAG("main", Z80, 6000000)			/* Z8400B */
MDRV_CPU_FLAGS(CPU_16BIT_PORT)544 	MDRV_CPU_FLAGS(CPU_16BIT_PORT)
545 	MDRV_CPU_MEMORY(paradise_readmem,paradise_writemem)
546 	MDRV_CPU_PORTS(paradise_readport,paradise_writeport)
547 	MDRV_CPU_VBLANK_INT(irq0_line_hold,4)	/* No nmi routine */
548 
549 	MDRV_FRAMES_PER_SECOND(54) /* 54 verified */
550 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)	/* we're using IPT_VBLANK */
551 
552 	/* video hardware */
553 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN)
554 	MDRV_SCREEN_SIZE(256, 256)
555 	MDRV_VISIBLE_AREA(0, 256-1, 0+16, 256-1-16)
556 	MDRV_GFXDECODE(paradise_gfxdecodeinfo)
557 	MDRV_PALETTE_LENGTH(0x800 + 16)
558 
559 	MDRV_VIDEO_START(paradise)
560 	MDRV_VIDEO_UPDATE(paradise)
561 
562 	/* sound hardware */
563 	MDRV_SOUND_ADD(OKIM6295, paradise_okim6295_intf)
564 MACHINE_DRIVER_END
565 
566 static MACHINE_DRIVER_START( tgtball )
567 	/* basic machine hardware */
568 	MDRV_IMPORT_FROM( paradise )
569 	MDRV_CPU_MODIFY("main")
570 	MDRV_CPU_MEMORY(paradise_readmem,tgtball_writemem)
571 MACHINE_DRIVER_END
572 
573 static MACHINE_DRIVER_START( torus )
574 	/* basic machine hardware */
575 	MDRV_IMPORT_FROM(paradise)
576 	MDRV_CPU_MODIFY("main")
577 	MDRV_CPU_MEMORY(paradise_readmem,torus_writemem)
578 
579 	MDRV_GFXDECODE(torus_gfxdecodeinfo)
580 
581 	MDRV_VIDEO_UPDATE(torus)
582 MACHINE_DRIVER_END
583 
584 static MACHINE_DRIVER_START( madball )
585 	/* basic machine hardware */
586 	MDRV_IMPORT_FROM(paradise)
587 	MDRV_CPU_MODIFY("main")
588 	MDRV_CPU_MEMORY(paradise_readmem,torus_writemem)
589 
590 	MDRV_GFXDECODE(madball_gfxdecodeinfo)
591 
592 	MDRV_VIDEO_UPDATE(madball)
593 MACHINE_DRIVER_END
594 
595 
596 /***************************************************************************
597 
598 								ROMs Loading
599 
600 ***************************************************************************/
601 
602 /***************************************************************************
603 
604 									Paradise
605 
606 (c) yun sung  year ??
607 another porn qix alike game
608 1 main cpu tpc1024afn-084c  ??
609 1 sound z8400b ps
610 2 ar17961  (oki?)
611 1 12.000 oscillator cristal
612 
613 The year is not shown but must be >= 1994, since the development system
614 (cross compiler?) they used left a "1994.8-1989" in the rom
615 
616 ***************************************************************************/
617 
618 ROM_START( paradise )
619 	ROM_REGION( 0x44000, REGION_CPU1, 0 )		/* Z80 Code */
620 	ROM_LOAD( "u128", 0x00000, 0x0c000, CRC(8e5b5a24) SHA1(a4e559d9329f8a7a9d12cd90d98d0525958085d8) )
621 	ROM_CONTINUE(     0x10000, 0x34000    )
622 
623 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 16x16x8 Sprites */
624 	ROM_LOAD( "u114", 0x00000, 0x40000, CRC(c748ba3b) SHA1(ad23bda4e001ca539f849c1ca256de5daf7c233b) )
625 	ROM_LOAD( "u115", 0x40000, 0x40000, CRC(0d517bbb) SHA1(5bf7c5036f3d660901e26f14baaea1a3c0327dfe) )
626 
627 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x4 Background */
628 	ROM_LOAD( "u94", 0x00000, 0x20000, CRC(e3a99209) SHA1(5db79dc1a38d93b458b043499a58516285c65aa8) )
629 
630 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Foreground */
631 	ROM_LOAD( "u92", 0x00000, 0x80000, CRC(633d24f0) SHA1(26b25ec1014fba1a3d0d2bdba0c867c57034647d) )
632 	ROM_LOAD( "u93", 0x80000, 0x80000, CRC(bbf5c632) SHA1(9d31e136f014c2dd7dd988c3aee0adfcfea91bc9) )
633 
634 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Midground */
635 	ROM_LOAD( "u110", 0x00000, 0x20000, CRC(9807a7e6) SHA1(30e2a741a93954cfe672c61c93a990d0c3b25145) )
636 	ROM_LOAD( "u111", 0x20000, 0x20000, CRC(bc9f93f0) SHA1(dd4cfc849a0c0f918ac0dfeb7f00a67aae5a1c13) )
637 
638 	ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
639 	ROM_LOAD( "u85", 0x00000, 0x40000, CRC(bf3c3065) SHA1(54dd7ffea2fb3f31ed575e982b82691cddc2581a) )
640 
641 	ROM_REGION( 0x80000, REGION_SOUND2, ROMREGION_SOUNDONLY )	/* Samples (banked) */
642 	ROM_LOAD( "u113", 0x00000, 0x80000, CRC(53de6025) SHA1(c94b3778b57ff7f46ce4cff661841019fb187d5d) )
643 ROM_END
644 
645 ROM_START( tgtball )
646 	ROM_REGION( 0x44000, REGION_CPU1, 0 )		/* Z80 Code */
647 	ROM_LOAD( "rom7.bin", 0x00000, 0x0c000, CRC(8dbeab12) SHA1(7181c23459990aecbe2d13377aaf19f65108eac6) )
648 	ROM_CONTINUE(         0x10000, 0x34000    )
649 
650 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 16x16x8 Sprites */
651 	ROM_LOAD( "yunsung.114", 0x00000, 0x40000, CRC(3dbe1872) SHA1(754f90123a3944ca548fc66ee65a93615155bf30) )
652 	ROM_LOAD( "yunsung.115", 0x40000, 0x40000, CRC(30f49dac) SHA1(b70d37973bd03069c48641d6c0804be6f9aa6553) )
653 
654 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_ERASEFF)	/* 8x8x4 Background */
655 	/* not for this game? */
656 
657 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Foreground */
658 	ROM_LOAD( "rom2.bin", 0x00000, 0x80000, CRC(fe4004ec) SHA1(fde782665445ad465b8f8fb95df5f60cd24016ad) )
659 	ROM_LOAD( "rom1.bin", 0x80000, 0x80000, CRC(aef17762) SHA1(3dd8924695b67eec0f25549dbe2461b927268b8f) )
660 
661 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Midground */
662 	ROM_LOAD( "rom4.bin", 0x00000, 0x80000,  CRC(0a5abf62) SHA1(6900d598764300c81c90f5a7efb294639178bee6) )
663 	ROM_LOAD( "rom3.bin", 0x80000, 0x80000,  CRC(94822bbf) SHA1(9fa6595eb819f163b58181926c276346cfa5c332) )
664 
665 	ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
666 	ROM_LOAD( "yunsung.85", 0x00000, 0x20000, CRC(cdf3336b) SHA1(98029d6d5d8ffb3b24ae2bcf950618a7d5b404c3) )
667 
668 	ROM_REGION( 0x80000, REGION_SOUND2, ROMREGION_SOUNDONLY )	/* Samples (banked) */
669 	ROM_LOAD( "yunsung.113", 0x00000, 0x40000, CRC(150a6cc6) SHA1(b435fcf8ba48006f506db6b63ba54a30a6b3eade) )
670 ROM_END
671 
672 ROM_START( tgtballa )
673 	ROM_REGION( 0x44000, REGION_CPU1, 0 )		/* Z80 Code */
674 	ROM_LOAD( "yunsung.128", 0x00000, 0x0c000, CRC(cb0f3d46) SHA1(b56c4abbd4248074c1559a0f1902d2ea11cb01a8) )
675 	ROM_CONTINUE(         0x10000, 0x34000    )
676 
677 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 16x16x8 Sprites */
678 	ROM_LOAD( "yunsung.114", 0x00000, 0x40000, CRC(3dbe1872) SHA1(754f90123a3944ca548fc66ee65a93615155bf30) )
679 	ROM_LOAD( "yunsung.115", 0x40000, 0x40000, CRC(30f49dac) SHA1(b70d37973bd03069c48641d6c0804be6f9aa6553) )
680 
681 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_ERASEFF)	/* 8x8x4 Background */
682 	/* not for this game? */
683 
684 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Foreground */
685 	ROM_LOAD( "yunsung.92", 0x00000, 0x80000, CRC(bcf206a9) SHA1(0db2cee21c025b7b8d2d5b898c7231c77e36904d) )
686 	ROM_LOAD( "yunsung.93", 0x80000, 0x80000, CRC(64edb93c) SHA1(94f8d4fd159c682d952d6a4c38dc50f2c0c0824d) )
687 
688 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Midground */
689 	ROM_LOAD( "yunsung.110", 0x00000, 0x80000, CRC(c209201e) SHA1(ba1cb3a204f689f9a3636834628d2265927e34f7) )
690 	ROM_LOAD( "yunsung.111", 0x80000, 0x80000, CRC(82334337) SHA1(4b2a07196027b190366131cd7b8eca87a1bd0b1c) )
691 
692 	ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
693 	ROM_LOAD( "yunsung.85", 0x00000, 0x20000, CRC(cdf3336b) SHA1(98029d6d5d8ffb3b24ae2bcf950618a7d5b404c3) )
694 
695 	ROM_REGION( 0x80000, REGION_SOUND2, ROMREGION_SOUNDONLY )	/* Samples (banked) */
696 	ROM_LOAD( "yunsung.113", 0x00000, 0x40000, CRC(150a6cc6) SHA1(b435fcf8ba48006f506db6b63ba54a30a6b3eade) )
697 ROM_END
698 
699 ROM_START( torus )
700 	ROM_REGION( 0x14000, REGION_CPU1, 0 )		/* Z80 Code */
701 	ROM_LOAD( "bc13.bin",     0x00000, 0xc000, CRC(55d3ef3e) SHA1(195463271fdb3f9f5c19068efd1c99105f761fe9) )
702 	ROM_CONTINUE(             0x10000, 0x4000 )
703 
704 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 16x16x8 Sprites */
705 	ROM_LOAD( "bc5.bin",      0x00000, 0x40000, CRC(5b60ce9f) SHA1(d5c091145e0bae7cd776e642ea17895d086ed2b0) )
706 	ROM_LOAD( "bc6.bin",      0x40000, 0x40000, CRC(4caa0c50) SHA1(a971b6e87cd1162cf370d39cfeafefbb1557e14e) )
707 
708 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_ERASEFF)	/* 8x8x4 Background */
709 	/* not for this game */
710 
711 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Foreground */
712 	ROM_LOAD( "bc2.bin",      0x00000, 0x80000, CRC(67c5ba1a) SHA1(0e39752ddc5ee9469647140a3fc9e6bb69d6afa1) )
713 	ROM_LOAD( "bc1.bin",      0x80000, 0x80000, CRC(efb105e9) SHA1(7bfe6ff64b25797dd524a7077def5669f25f16ec) )
714 
715 	ROM_REGION( 0x40000, REGION_GFX4, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Midground */
716 	ROM_LOAD( "bc4.bin",      0x00000, 0x20000, CRC(ee914caf) SHA1(42f3d760a4c14658ac2eb0ba7f54fb9916368b50) )
717 	ROM_LOAD( "bc3.bin",      0x20000, 0x20000, CRC(aff1dab9) SHA1(ae488abd605c1e78b8b73452a2c1391cc0fe6b00) )
718 
719 	ROM_REGION( 0x40000, REGION_SOUND1, ROMREGION_SOUNDONLY )	/* Samples */
720 	ROM_LOAD( "bc15.bin",     0x00000, 0x40000, CRC(12d84839) SHA1(840d82253c0651ebe6799ea2bb5bae334e963e12) )
721 ROM_END
722 
723 /*
724 Yun Sung Mad Ball
725 PCB: YS-0402
726 Z80A
727 AD-65 (OKI M6295)
728 Actel A1020B PLC84C
729 OSC: 12.000 MHz, 4.000Mhz
730 RAM 4 Hyundai HY62256ALP-70
731     1 Hyundai HY6264LP-10 (by P rom & Z80A)
732 DSW 2 8-switch DIP
733 P.u1  Intel i27C010A - Program (next to Z80A)
734 s.u28 ST M27C4001    - Sound (next to AD-65)
735 1.u66  ST M27C2001
736 2.u67  ST M27C2001
737 3.u92  TI 27C040
738 4.u93  TI 27C040
739 5.u105 TI 27C040
740 6.u106 TI 27C040
741 All roms with manufacturer's IDs and routines
742 */
743 
744 ROM_START( madball ) /* Models in swimsuits only, no nudity */
745 	ROM_REGION( 0x24000, REGION_CPU1, 0 )		/* Z80 Code */
746 	ROM_LOAD( "p.u1",     0x00000, 0xc000, CRC(73008425) SHA1(6eded60fd5c637a63783247c858d999d5974d378) )
747 	ROM_CONTINUE(             0x10000, 0x14000 )
748 
749 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 16x16x8 Sprites */
750 	ROM_LOAD( "2.u67",      0x00000, 0x40000, CRC(1f3a6cd5) SHA1(7a17549f2fff003605d91703c84a398488b2f74c) )
751 	ROM_LOAD( "1.u66",      0x40000, 0x40000, CRC(8637c7b4) SHA1(e0026e48f0e8f3554a5b448e0d1f9d1c5551dbfb) )
752 
753 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_ERASEFF)	/* 8x8x4 Background */
754 	/* not for this game */
755 
756 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Foreground */
757 	ROM_LOAD( "5.u105",      0x00000, 0x80000, CRC(f26aac1e) SHA1(50ad34ee70bf45fa4e1dc9281b83bcdd7c7db3f8) )
758 	ROM_LOAD( "6.u106",      0x80000, 0x80000, CRC(27b78907) SHA1(ab6645457adc0d17b141e366aac7e00e8ce4296b) )
759 
760 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Midground */
761 	ROM_LOAD( "4.u93",      0x80000, 0x80000, CRC(c3be56ad) SHA1(9cfa0b38c60798deccca74dc6b0ce0826ff7f467) )
762 	ROM_LOAD( "3.u92",      0x00000, 0x80000, CRC(846019a6) SHA1(571bfa299e13b96ca263bd7e62c760bdbe3438bd) )
763 
764 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* Samples */
765 	ROM_LOAD( "s.u28",     0x00000, 0x80000, CRC(78f02584) SHA1(70542e126db73a573db9ef41399d3a07fb7ea94b) )
766 ROM_END
767 
768 ROM_START( madballn ) /* Even numbered stages show topless models.  Is nudity controlled by a dipswitch? */
769 	ROM_REGION( 0x24000, REGION_CPU1, 0 )		/* Z80 Code */
770 	ROM_LOAD( "bc13.u1",     0x00000, 0xc000, CRC(531fa919) SHA1(0eafc663b9ad50d0dfc5491fe96c9bcf30483991) )
771 	ROM_CONTINUE(             0x10000, 0x14000 )
772 
773 	ROM_REGION( 0x80000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 16x16x8 Sprites */
774 	ROM_LOAD( "2.u67",      0x00000, 0x40000, CRC(1f3a6cd5) SHA1(7a17549f2fff003605d91703c84a398488b2f74c) )
775 	ROM_LOAD( "1.u66",      0x40000, 0x40000, CRC(8637c7b4) SHA1(e0026e48f0e8f3554a5b448e0d1f9d1c5551dbfb) )
776 
777 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE | ROMREGION_ERASEFF)	/* 8x8x4 Background */
778 	/* not for this game */
779 
780 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Foreground */
781 	ROM_LOAD( "bc2.u105",      0x00000, 0x80000, CRC(d75faa62) SHA1(95badf932e8a8084e67aa7df8d6cb2cb2917d5fc) )
782 	ROM_LOAD( "bc1.u106",      0x80000, 0x80000, CRC(04b8f7a5) SHA1(97555880f200d0ecc521f8c76bcaa4a0f0eb1aa9) )
783 
784 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE | ROMREGION_INVERT)	/* 8x8x8 Midground */
785 	ROM_LOAD( "bc3.u93",      0x80000, 0x80000, CRC(f07a5fe6) SHA1(0b1117d8ff0f2a6c953ab1988065b75a33e2c949) )
786 	ROM_LOAD( "bc4.u92",      0x00000, 0x80000, CRC(7ed233ab) SHA1(8a4bc31741b4e6e1c03974f9b00f747a29c78ebf) )
787 
788 	ROM_REGION( 0x80000, REGION_SOUND1, 0 )	/* Samples */
789 	ROM_LOAD( "s.u28",     0x00000, 0x80000, CRC(78f02584) SHA1(70542e126db73a573db9ef41399d3a07fb7ea94b) )
790 ROM_END
791 
792 
793 DRIVER_INIT (paradise)
794 {
795 	paradise_sprite_inc = 0x20;
796 }
797 
798 /* Inverted flipscreen and sprites are packed in less memory (same number though) */
DRIVER_INIT(tgtball)799 DRIVER_INIT (tgtball)
800 {
801 	paradise_sprite_inc = 4;
802 	install_port_write_handler(0, 0x2001, 0x2001, tgtball_flipscreen_w );
803 }
804 
DRIVER_INIT(torus)805 DRIVER_INIT (torus)
806 {
807 	paradise_sprite_inc = 4;
808 	install_port_write_handler(0, 0x2070, 0x2070, torus_coin_counter_w);
809 }
810 
811 
812 /***************************************************************************
813 
814 								Game Drivers
815 
816 ***************************************************************************/
817 
818 GAME( 1994+, paradise, 0,       paradise, paradise, paradise, ROT90, "Yun Sung", "Paradise" )
819 GAME( 1995,  tgtball,  0,       tgtball,  tgtball,  tgtball,  ROT0,  "Yun Sung", "Target Ball (Nude)" )
820 GAME( 1995,  tgtballa, tgtball, tgtball,  tgtball,  tgtball,  ROT0,  "Yun Sung", "Target Ball" )
821 GAME( 1996,  torus,    0,       torus,    torus,    torus,    ROT90, "Yun Sung", "Torus" )
822 GAME( 1998,  madball,  0,       madball,  madball,  tgtball,  ROT0,  "Yun Sung", "Mad Ball V2.0" )
823 GAME( 1997,  madballn, madball, madball,  madball,  tgtball,  ROT0,  "Yun Sung", "Mad Ball V2.0 (With Nudity)" )
824