1 // license:BSD-3-Clause
2 // copyright-holders:Luca Elia, David Haywood, Angelo Salese, Roberto Fresca
3 /***************************************************************************
4 
5               -= Subsino's Gambling Games =-
6 
7             Driver by   Luca Elia (l.elia@tin.it)
8    Additional work by   David Haywood, Angelo Salese and Roberto Fresca.
9 
10 
11   CPU: Black epoxy box containing:
12        1x CXK58257M (32768 x 8-Bit) High Speed CMOS SRAM.
13        1x HD647180X0P6, HD643180X0P6 or HD641180X0P6 Z180-CPU.
14        1x X-TAL (unknown frequency).
15        1x Battery.
16 
17   GFX:    1 Tilemap (8x8 tiles, no scrolling)
18   CUSTOM: 2 x SUBSINO SS9100, SUBSINO SS9101
19   SOUND:  M6295, YM2413 or YM3812
20   OTHER:  Battery
21 
22 To Do:
23 
24 - Remove ROM patches from smoto, stbsub and tesorone, emulate the protection instead.
25 - Hopper emulation currently hooked up in stbsub, tesorone and smoto. Add to others.
26 
27 ****************************************************************************
28 
29   Game Notes:
30   ----------
31 
32 
33   * Victor5, Victor 21, Shark Party.
34 
35   To enter the bookkeeping mode press STATS (key 9).
36   Press START/DEAL (key 2) to exit.
37 
38 
39   * Treasure Island.
40 
41   To enter test mode, keep STATS/TEST (key 9) pressed during boot.
42   HOLD3 (key C) to increase the tune/sound number, START (key 2) to decrease it.
43 
44   To enter the bookkeeping mode press STATS/TEST (key 9).
45   Press START/TAKE (key 2) to exit.
46 
47 
48   * Poker Carnival (crsbingo)
49 
50   To adjust the game rate, press SETTINGS (key 0) and then use HOLD4 (key V)
51   to choose the individual game to set. Press HOLD5 (key B) to change value.
52   Press START/DEAL (key 2) to exit.
53 
54   To enter the bookkeeping mode press STATS (key 9).
55   Press START/DEAL (key 2) to exit.
56 
57 
58   * Super Rider, Super Moto
59 
60   To enter test mode, keep STATS/TEST (key 9) pressed during boot.
61   HOLD5 (key B) to select between VOICE <-> MUSIC.
62   HOLD4 (key V) to increase the tune/sound number, START (key 2) to decrease it.
63 
64   To enter the bookkeeping mode press STATS/TEST (key 9).
65   Press START/DEAL (key 2) to exit.
66 
67 
68 ****************************************************************************
69 
70   Updates:
71 
72   2010-01-01 / 2010-01-16
73   -----------------------
74 
75   (general):
76 
77   - Lowered CPU clock to 1.5 MHz.
78   - Reworked former inputs.
79   - Added specific game and technical notes.
80   - Added lamps support.
81   - Cleaned-up a bit the driver.
82 
83   Victor 5:
84 
85   - Mapped the M6295 but commented out due to missing sample roms.
86   - Added keyin, keyout, payout, stats and settings inputs.
87   - Added coin/keyin/keyout counters.
88   - Limited the bet and coin pulses to avoid repeats and coin jams.
89   - Added complete coinage and keyin DIP switches.
90   - Added main game and double-up rates DIP switches.
91   - Added minimum bet DIP switches.
92   - Added maximum bet DIP switches.
93   - Added attract music DIP switch.
94   - Added button-lamps layout.
95 
96   Victor 21:
97 
98   - Mapped the M6295 but commented out due to missing sample roms.
99   - Added bet x10, keyin, keyout, stats and settings inputs.
100   - Added coin/keyin/keyout/payout counters.
101   - Limited the bet and coin pulses to avoid repeats and coin jams.
102   - Added complete coinage and keyin DIP switches.
103   - Added main game rate DIP switches.
104   - Added minimum bet DIP switches.
105   - Added attract music DIP switch.
106   - Added button-lamps layout.
107 
108   Poker Carnival (crsbingo):
109 
110   - Added change card, keyin, keyout, stats and settings inputs.
111   - Added coin/keyin/keyout/payout counters.
112   - Limited the bet and coin pulses to avoid repeats and coin jams.
113   - Added complete coinage and keyin DIP switches.
114   - Added double-up rate DIP switches.
115   - Added minimum bet DIP switches.
116   - Added maximum bet DIP switches.
117   - Added cards graphics DIP switches.
118   - Added double-up type DIP switches.
119   - Added button-lamps layout.
120 
121   Super Rider, Super Moto:
122 
123   - Added stats and settings inputs.
124   - Added coin counters.
125   - Added main game and double-up rates DIP switches.
126   - Added double-up and control type DIP switches.
127   - Added coinage and demo sounds DIP switches.
128   - Added button-lamps layout.
129 
130   Shark Party:
131 
132   - Added stats and settings inputs.
133   - Added coin counters.
134   - Added main game and double-up rates DIP switches.
135   - Added double-up, coinage and demo sounds DIP switches.
136   - Added button-lamps layout.
137 
138 
139   2010-02-03
140   ----------
141 
142   Treasure Island:
143 
144   - Added proper inputs.
145   - Added coin/keyin/keyout/payout counters.
146   - Limited the bet and coin pulses to avoid repeats and coin jams.
147   - Added complete coinage and keyin DIP switches.
148   - Added main game and double-up rates DIP switches.
149   - Added minimum bet DIP switches.
150   - Added maximum bet DIP switches.
151   - Added main game and double-up limit DIP switches.
152   - Added payout mode and auto take DIP switches.
153   - Added DIP locations as seen in the settings mode.
154   - Added demo sounds DIP switch.
155   - Created proper button-lamps layout.
156   - Added technical notes.
157   - Some clean-ups...
158 
159 
160   2010-04-20
161   ----------
162 
163   Shark Party (English, Alpha license):
164 
165   - Created complete inputs from the scratch.
166   - Added coin/keyin/keyout counters.
167   - Added main game and double-up rates DIP switches.
168   - Added minimum bet DIP switches.
169   - Added maximum bet DIP switches.
170   - Added complete coinage and remote credits DIP switches.
171   - Added jokers and demo sounds DIP switches.
172   - Figured out and documented all the game outputs.
173   - Created proper button-lamps layout.
174 
175   Now the game is in full-working state.
176 
177 
178   2010-04-22
179   ----------
180 
181   Treasure Bonus (Subsino)
182 
183   - Reworked and cleaned-up the inputs.
184      Most buttons have more than one single function.
185   - Added DIP locations.
186   - Figured out the following DIP Switches:
187      Complete Coinage (1/2/5/10/20/25/50/100).
188      Remote Credits (1/2/5/10/20/25/50/100).
189      Minimum Bet (1/8/16/32).
190      Max Bet (16/32/64/80).
191      Demo Sounds (Off/On).
192      Game Limit (10000/20000/30000/60000).
193      Double-Up (No/Yes).
194      Win Rate (84/86/88/90/92/94/96%).
195      Double-Up Level (0/1/2/3/4/5/6/7).
196      Double-Up Game (Dancers / Panties Colors / Cards / Seven-Bingo).
197 
198   - Fixed inverted functions and buggy inputs.
199   - Added lamps support.
200   - Created button-lamps layout.
201   - Remapped inputs to reflect the controls layout. This way is more
202      user-friendly since controls are straight with button-lamps.
203   - Added coin/keyin/keyout/payout counters.
204   - Removed the pulse limitation in the BET input. This allow it to work
205      as BET and STOP2 properly.
206   - Added technical notes.
207 
208 
209   2010-10-12
210   ----------
211 
212   - Added Victor 6 (3 sets).
213   - Created proper inputs for all sets.
214 
215 
216   2019-07-31
217   ----------
218 
219   - Added Victor 5 (otiginal set, now parent).
220   - Dumped the samples ROMs of Victor 5 and Victor 21, and hooked the OKI6295.
221 
222 
223 ***************************************************************************/
224 
225 #include "emu.h"
226 #include "cpu/z180/hd647180x.h"
227 #include "machine/i8255.h"
228 #include "machine/nvram.h"
229 #include "machine/subsino.h"
230 #include "machine/ticket.h"
231 #include "sound/okim6295.h"
232 #include "sound/ym2413.h"
233 #include "sound/3812intf.h"
234 #include "video/ramdac.h"
235 #include "emupal.h"
236 #include "screen.h"
237 #include "speaker.h"
238 #include "tilemap.h"
239 
240 #include "victor5.lh"
241 #include "victor21.lh"
242 #include "crsbingo.lh"
243 #include "sharkpy.lh"
244 #include "sharkpye.lh"
245 #include "smoto.lh"
246 #include "tisub.lh"
247 #include "stisub.lh"
248 
249 class subsino_state : public driver_device
250 {
251 public:
subsino_state(const machine_config & mconfig,device_type type,const char * tag)252 	subsino_state(const machine_config &mconfig, device_type type, const char *tag) :
253 		driver_device(mconfig, type, tag),
254 		m_colorram(*this, "colorram"),
255 		m_videoram(*this, "videoram"),
256 		m_reel_scroll(*this, "reel_scroll.%u", 0U),
257 		m_reel_ram(*this, "reel_ram.%u", 0U),
258 		m_stbsub_out_c(*this, "stbsub_out_c"),
259 		m_maincpu(*this, "maincpu"),
260 		m_gfxdecode(*this, "gfxdecode"),
261 		m_palette(*this, "palette"),
262 		m_hopper(*this, "hopper"),
263 		m_lamps(*this, "lamp%u", 0U) {
264 	}
265 
266 	void mtrainnv(machine_config &config);
267 	void stbsub(machine_config &config);
268 	void tisub(machine_config &config);
269 	void crsbingo(machine_config &config);
270 	void srider(machine_config &config);
271 	void victor21(machine_config &config);
272 	void sharkpy(machine_config &config);
273 	void victor5(machine_config &config);
274 
275 	void init_stbsub();
276 	void init_stisub();
277 	void init_tesorone();
278 	void init_tesorone230();
279 	void init_smoto20();
280 	void init_sharkpy();
281 	void init_smoto16();
282 	void init_crsbingo();
283 	void init_victor21();
284 	void init_victor5();
285 	void init_tisuba();
286 	void init_sharkpye();
287 	void init_tisub();
288 	void init_mtrainnv();
289 
290 protected:
291 	virtual void machine_start() override;
292 
293 private:
294 	required_shared_ptr<uint8_t> m_colorram;
295 	required_shared_ptr<uint8_t> m_videoram;
296 	optional_shared_ptr_array<uint8_t, 3> m_reel_scroll;
297 	optional_shared_ptr_array<uint8_t, 3> m_reel_ram;
298 	optional_shared_ptr<uint8_t> m_stbsub_out_c;
299 	required_device<cpu_device> m_maincpu;
300 	required_device<gfxdecode_device> m_gfxdecode;
301 	required_device<palette_device> m_palette;
302 	required_device<ticket_dispenser_device> m_hopper;
303 	output_finder<16> m_lamps;
304 
305 	tilemap_t *m_tmap;
306 	tilemap_t *m_reel_tilemap[3];
307 	int m_tiles_offset;
308 	uint8_t m_out_c;
309 	std::unique_ptr<uint8_t[]> m_reel_attr[3];
310 	uint8_t m_flash_val;
311 	uint8_t m_flash_packet;
312 	uint8_t m_flash_packet_start;
313 
314 	void tiles_offset_w(offs_t offset, uint8_t data);
315 	void videoram_w(offs_t offset, uint8_t data);
316 	void colorram_w(offs_t offset, uint8_t data);
317 	template<uint8_t Reel> void reel_ram_w(offs_t offset, uint8_t data);
318 	void out_a_w(uint8_t data);
319 	void out_b_w(uint8_t data);
320 	uint8_t flash_r();
321 	void flash_w(uint8_t data);
322 	uint8_t hwcheck_r();
323 	void out_c_w(uint8_t data);
324 	void reel_scrollattr_w(offs_t offset, uint8_t data);
325 	uint8_t reel_scrollattr_r(offs_t offset);
326 
327 	TILE_GET_INFO_MEMBER(get_tile_info);
328 	TILE_GET_INFO_MEMBER(get_stbsub_tile_info);
329 	template<uint8_t Reel> TILE_GET_INFO_MEMBER(get_reel_tile_info);
330 	template<uint8_t Reel> TILE_GET_INFO_MEMBER(get_stbsub_reel_tile_info);
331 	DECLARE_VIDEO_START(subsino);
332 	void _2proms_palette(palette_device &palette) const;
333 	void _3proms_palette(palette_device &palette) const;
334 	DECLARE_VIDEO_START(reels);
335 	DECLARE_VIDEO_START(stbsub);
336 	uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
337 	uint32_t screen_update_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
338 	uint32_t screen_update_stbsub_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
339 
340 	void crsbingo_map(address_map &map);
341 	void mtrainnv_map(address_map &map);
342 	void ramdac_map(address_map &map);
343 	void sharkpy_map(address_map &map);
344 	void srider_map(address_map &map);
345 	void stbsub_map(address_map &map);
346 	void subsino_iomap(address_map &map);
347 	void tisub_map(address_map &map);
348 	void victor21_map(address_map &map);
349 	void victor5_map(address_map &map);
350 };
351 
machine_start()352 void subsino_state::machine_start()
353 {
354 	m_lamps.resolve();
355 
356 	save_item(NAME(m_tiles_offset));
357 	save_item(NAME(m_out_c));
358 }
359 
360 /***************************************************************************
361 *                              Video Hardware                              *
362 ***************************************************************************/
363 
364 
tiles_offset_w(offs_t offset,uint8_t data)365 void subsino_state::tiles_offset_w(offs_t offset, uint8_t data)
366 {
367 	m_tiles_offset = (data & 1) ? 0x1000: 0;
368 	m_tmap->mark_tile_dirty(offset);
369 //  popmessage("gfx %02x",data);
370 }
371 
videoram_w(offs_t offset,uint8_t data)372 void subsino_state::videoram_w(offs_t offset, uint8_t data)
373 {
374 	m_videoram[offset] = data;
375 	m_tmap->mark_tile_dirty(offset);
376 }
377 
colorram_w(offs_t offset,uint8_t data)378 void subsino_state::colorram_w(offs_t offset, uint8_t data)
379 {
380 	m_colorram[offset] = data;
381 	m_tmap->mark_tile_dirty(offset);
382 }
383 
TILE_GET_INFO_MEMBER(subsino_state::get_tile_info)384 TILE_GET_INFO_MEMBER(subsino_state::get_tile_info)
385 {
386 	uint16_t code = m_videoram[ tile_index ] + (m_colorram[ tile_index ] << 8);
387 	uint16_t color = (code >> 8) & 0x0f;
388 	code = ((code & 0xf000) >> 4) + ((code & 0xff) >> 0);
389 	code += m_tiles_offset;
390 	tileinfo.set(0, code, color, 0);
391 }
392 
TILE_GET_INFO_MEMBER(subsino_state::get_stbsub_tile_info)393 TILE_GET_INFO_MEMBER(subsino_state::get_stbsub_tile_info)
394 {
395 	uint16_t code = m_videoram[ tile_index ] + (m_colorram[ tile_index ] << 8);
396 	code&= 0x3fff;
397 	tileinfo.set(0, code, 0, 0);
398 }
399 
400 
VIDEO_START_MEMBER(subsino_state,subsino)401 VIDEO_START_MEMBER(subsino_state,subsino)
402 {
403 	m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 0x40,0x20);
404 	m_tmap->set_transparent_pen(0 );
405 	m_tiles_offset = 0;
406 }
407 
408 
409 template<uint8_t Reel>
reel_ram_w(offs_t offset,uint8_t data)410 void subsino_state::reel_ram_w(offs_t offset, uint8_t data)
411 {
412 	m_reel_ram[Reel][offset] = data;
413 	m_reel_tilemap[Reel]->mark_tile_dirty(offset);
414 }
415 
416 template<uint8_t Reel>
TILE_GET_INFO_MEMBER(subsino_state::get_reel_tile_info)417 TILE_GET_INFO_MEMBER(subsino_state::get_reel_tile_info)
418 {
419 	int code = m_reel_ram[Reel][tile_index];
420 	int colour = (m_out_c&0x7) + 8;
421 
422 	tileinfo.set(1,
423 			code,
424 			colour,
425 			0);
426 }
427 
428 template<uint8_t Reel>
TILE_GET_INFO_MEMBER(subsino_state::get_stbsub_reel_tile_info)429 TILE_GET_INFO_MEMBER(subsino_state::get_stbsub_reel_tile_info)
430 {
431 	int code = m_reel_ram[Reel][tile_index];
432 	int attr = m_reel_attr[Reel][tile_index];
433 
434 	tileinfo.set(1,
435 			code | (attr << 8),
436 			0,
437 			0);
438 }
439 
440 
VIDEO_START_MEMBER(subsino_state,reels)441 VIDEO_START_MEMBER(subsino_state, reels)
442 {
443 	VIDEO_START_CALL_MEMBER( subsino );
444 
445 	m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
446 	m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
447 	m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
448 
449 	m_reel_tilemap[0]->set_scroll_cols(64);
450 	m_reel_tilemap[1]->set_scroll_cols(64);
451 	m_reel_tilemap[2]->set_scroll_cols(64);
452 
453 }
454 
VIDEO_START_MEMBER(subsino_state,stbsub)455 VIDEO_START_MEMBER(subsino_state,stbsub)
456 {
457 	m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20);
458 	m_tmap->set_transparent_pen(0 );
459 
460 	m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
461 	m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
462 	m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8);
463 
464 	m_reel_tilemap[0]->set_scroll_cols(64);
465 	m_reel_tilemap[1]->set_scroll_cols(64);
466 	m_reel_tilemap[2]->set_scroll_cols(64);
467 
468 	m_out_c = 0x08;
469 }
470 
471 
screen_update(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)472 uint32_t subsino_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
473 {
474 	bitmap.fill(0, cliprect);
475 	m_tmap->draw(screen, bitmap, cliprect, 0, 0);
476 	return 0;
477 }
478 
screen_update_reels(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)479 uint32_t subsino_state::screen_update_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
480 {
481 	bitmap.fill(0, cliprect);
482 
483 	for (uint8_t reel = 0; reel < 3; reel++)
484 	{
485 		for (int i = 0; i < 64; i++)
486 		{
487 			m_reel_tilemap[reel]->set_scrolly(i, m_reel_scroll[reel][i]);
488 		}
489 	}
490 
491 	if (m_out_c&0x08)
492 	{
493 		// are these hardcoded, or registers?
494 		const rectangle visible1(0*8, (14+48)*8-1,  4*8,  (4+7)*8-1);
495 		const rectangle visible2(0*8, (14+48)*8-1, 10*8, (10+7)*8-1);
496 		const rectangle visible3(0*8, (14+48)*8-1, 18*8, (18+7)*8-1);
497 
498 		m_reel_tilemap[0]->draw(screen, bitmap, visible1, 0, 0);
499 		m_reel_tilemap[1]->draw(screen, bitmap, visible2, 0, 0);
500 		m_reel_tilemap[2]->draw(screen, bitmap, visible3, 0, 0);
501 	}
502 
503 	m_tmap->draw(screen, bitmap, cliprect, 0, 0);
504 	return 0;
505 }
506 
507 
screen_update_stbsub_reels(screen_device & screen,bitmap_ind16 & bitmap,const rectangle & cliprect)508 uint32_t subsino_state::screen_update_stbsub_reels(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
509 {
510 	bitmap.fill(0, cliprect);
511 
512 	if (m_reel_attr[0])
513 	{
514 		for (uint8_t reel = 0; reel < 3; reel++)
515 			m_reel_tilemap[reel]->mark_all_dirty();
516 	}
517 
518 	for (uint8_t reel = 0; reel < 3; reel++)
519 	{
520 		for (int i = 0; i < 64; i++)
521 		{
522 			m_reel_tilemap[reel]->set_scrolly(i, m_reel_scroll[reel][i]);
523 		}
524 	}
525 
526 	if (m_out_c & 0x08)
527 	{
528 		// areas based on d-up game in attract mode
529 		const rectangle visible1(0, 511,  0,  87);
530 		const rectangle visible2(0, 511,  88, 143);
531 		const rectangle visible3(0, 511,  144, 223);
532 
533 		m_reel_tilemap[0]->draw(screen, bitmap, visible1, 0, 0);
534 		m_reel_tilemap[1]->draw(screen, bitmap, visible2, 0, 0);
535 		m_reel_tilemap[2]->draw(screen, bitmap, visible3, 0, 0);
536 	}
537 
538 	m_tmap->draw(screen, bitmap, cliprect, 0, 0);
539 	return 0;
540 }
541 
542 
_2proms_palette(palette_device & palette) const543 void subsino_state::_2proms_palette(palette_device &palette) const
544 {
545 	uint8_t const *const color_prom = memregion("proms")->base();
546 	for (int i = 0; i < 256; i++)
547 	{
548 		int bit0, bit1, bit2;
549 		int const val = color_prom[i | 0x100] | (color_prom[i | 0x000] << 4);
550 
551 		bit0 = 0;
552 		bit1 = BIT(val, 6);
553 		bit2 = BIT(val, 7);
554 		int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
555 
556 		bit0 = BIT(val, 3);
557 		bit1 = BIT(val, 4);
558 		bit2 = BIT(val, 5);
559 		int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
560 
561 		bit0 = BIT(val, 0);
562 		bit1 = BIT(val, 1);
563 		bit2 = BIT(val, 2);
564 		int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
565 
566 		palette.set_pen_color(i, rgb_t(r, g, b));
567 	}
568 }
569 
_3proms_palette(palette_device & palette) const570 void subsino_state::_3proms_palette(palette_device &palette) const
571 {
572 	uint8_t const *const color_prom = memregion("proms")->base();
573 	for (int i = 0; i < 256; i++)
574 	{
575 		int bit0, bit1, bit2;
576 		int const val = color_prom[i | 0x000] | (color_prom[i | 0x100] << 3) | (color_prom[i | 0x200] << 6);
577 
578 		bit0 = 0;
579 		bit1 = BIT(val, 7);
580 		bit2 = BIT(val, 6);
581 		int const b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
582 
583 		bit0 = BIT(val, 5);
584 		bit1 = BIT(val, 4);
585 		bit2 = BIT(val, 3);
586 		int const g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
587 
588 		bit0 = BIT(val, 2);
589 		bit1 = BIT(val, 1);
590 		bit2 = BIT(val, 0);
591 		int const r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
592 
593 		palette.set_pen_color(i, rgb_t(r, g, b));
594 	}
595 }
596 
597 
598 /***************************************************************************
599 *                          Lamps & other outputs.                          *
600 ***************************************************************************/
601 
out_a_w(uint8_t data)602 void subsino_state::out_a_w(uint8_t data)
603 {
604 /***** COIN PULSE: *****
605 
606 
607   * Victor 5, Victor 21, Poker Carnival (crsbingo),
608     Shark Party (English, Alpha license), Treasure Bonus (Subsino).
609 
610   7654 3210
611   ---- ---x  Coin pulse.
612   ---- --x-  Key In pulse.
613   ---x ----  Key Out pulse.
614   --x- ----  Payout pulse.
615 
616 
617   * Treasure Island.
618 
619   7654 3210
620   ---- ---x  Key In pulse.
621   ---- --x-  Coin pulse.
622   ---x ----  Key Out pulse.
623   --x- ----  Payout pulse.
624 
625 
626   * Super Rider, Super Moto, Shark Party.
627 
628   7654 3210
629   ---- --x-  Coin pulse.
630 
631 */
632 
633 	for (int i = 0; i < 8; i++) // Lamps 8 - 15
634 		m_lamps[i + 8] = BIT(data, i);
635 
636 	machine().bookkeeping().coin_counter_w(0, data & 0x01 );    /* coin / keyin */
637 	machine().bookkeeping().coin_counter_w(1, data & 0x02 );    /* keyin / coin */
638 	machine().bookkeeping().coin_counter_w(2, data & 0x10 );    /* keyout */
639 	machine().bookkeeping().coin_counter_w(3, data & 0x20 );    /* payout */
640 
641 	m_hopper->motor_w(BIT(data, 5));   // hopper motor
642 
643 //  popmessage("Out A %02x",data);
644 }
645 
out_b_w(uint8_t data)646 void subsino_state::out_b_w(uint8_t data)
647 {
648 /***** LAMPS: *****
649 
650   * Victor 5.
651 
652   7654 3210
653   ---- ---x  HOLD2.
654   ---- --x-  BET.
655   ---- -x--  ???.
656   ---- x---  START / TAKE.
657   ---x ----  HOLD1.
658   --x- ----  HOLD5 / SMALL.
659   -x-- ----  HOLD3 / HALF TAKE.
660   x--- ----  HOLD4 / BIG.
661 
662 
663   * Victor 21.
664 
665   7654 3210
666   ---- ---x  DOUBLE (or SPLIT?).
667   ---- --x-  BET.
668   ---- -x--  SPLIT (or DOUBLE?).
669   ---- x---  STAND.
670   ---x ----  ???.
671   --x- ----  DEAL / HIT.
672   -x-- ----  ???.
673   x--- ----  GAME OVER?.
674 
675 
676   * Treasure Island.
677 
678   7654 3210
679   ---- ---x  HOLD1.
680   ---- --x-  HOLD2 / BIG.
681   ---- -x--  ???.
682   ---- x---  BET.
683   ---x ----  DOUBLE / INFO.
684   --x- ----  START / TAKE.
685   -x-- ----  HOLD3 / SMALL.
686   x--- ----  ???.
687 
688 
689   * Poker Carnival (crsbingo).
690 
691   7654 3210
692   ---- ---x  HOLD2 / DOUBLE.
693   ---- --x-  BET.
694   ---- -x--  ???.
695   ---- x---  START / TAKE.
696   ---x ----  HOLD1.
697   --x- ----  HOLD5 / SMALL.
698   -x-- ----  HOLD3 / CHANGE.
699   x--- ----  HOLD4 / BIG.
700 
701 
702   * Super Rider, Super Moto.
703 
704   7654 3210
705   ---- ---x  HOLD1 / SELECT.
706   ---- --x-  HOLD2.
707   ---- -x--  ???.
708   ---- x---  BET.
709   ---x ----  HOLD3.
710   --x- ----  START / TAKE.
711   -x-- ----  HOLD4.
712   x--- ----  HOLD5. Also TEST button (bookkeeping) lamp is routed here.
713 
714 
715   * Shark Party.
716 
717   7654 3210
718   ---- ---x  HOLD3.
719   ---- --x-  HOLD4 / BIG.
720   ---- -x--  ???.
721   ---- x---  BET.
722   ---x ----  HOLD1 / DOUBLE.
723   --x- ----  START / TAKE.
724   -x-- ----  HOLD2.
725   x--- ----  HOLD5 / SMALL.
726 
727 
728   * Shark Party (English, Alpha license).
729 
730   7654 3210
731   ---- ---x  ???.
732   ---- --x-  HOLD3 / D-UP.
733   ---- -x--  START.
734   ---- x---  HOLD1 / BET.
735   ---x ----  ???.
736   --x- ----  HOLD2 / TAKE.
737   -x-- ----  ???.
738   x--- ----  HOLD4 & HOLD5.
739 
740 
741   * Treasure Bonus (Subsino).
742 
743   7654 3210
744   ---- ---x  SMALL / RED / STOP3.
745   ---- --x-  D-UP / INFO.
746   ---- -x--  START / STOP ALL.
747   ---- x---  BET / STOP2.
748   ---x ----  ???.
749   --x- ----  TAKE / STOP1.
750   -x-- ----  ???.
751   x--- ----  BIG / BLACK.
752 
753 
754   After seeing the button/lamps functions, I think that controls layout should be
755   arranged the following way:
756 
757    ________    ________    ________    ________    ________       __________
758   |        |  |        |  |        |  |        |  |        |     |          |
759   |  D-UP  |  |  TAKE  |  |  BET   |  | SMALL  |  |  BIG   |     |  START   |
760   |  INFO  |  | STOP 1 |  | STOP 2 |  | STOP 3 |  |        |     | STOP ALL |
761   |________|  |________|  |________|  |________|  |________|     |__________|
762 
763    Key 'Z'     Key 'X'     Key 'C'     Key 'V'     Key 'B'        Key 'N'
764 
765   Mapped to the above keys to be more user-friendly.
766 
767 */
768 
769 	// Lamps 0 - 7
770 	for (int i = 0; i < 8; i++)
771 		m_lamps[i] = BIT(data, i);
772 
773 //  popmessage("Out B %02x",data);
774 }
775 
776 
777 /***************************************************************************
778 *                              Memory Maps                                 *
779 ***************************************************************************/
780 
srider_map(address_map & map)781 void subsino_state::srider_map(address_map &map)
782 {
783 	map(0x00000, 0x0bfff).rom();
784 	map(0x0c000, 0x0cfff).ram();
785 	map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read));
786 	map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read));
787 	map(0x0d009, 0x0d009).w(FUNC(subsino_state::out_b_w));
788 	map(0x0d00a, 0x0d00a).w(FUNC(subsino_state::out_a_w));
789 	map(0x0d00c, 0x0d00c).portr("INC");
790 	map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write));
791 	map(0x0d018, 0x0d018).w("oki", FUNC(okim6295_device::write));
792 	map(0x0d01b, 0x0d01b).w(FUNC(subsino_state::tiles_offset_w));
793 	map(0x0e000, 0x0e7ff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
794 	map(0x0e800, 0x0efff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
795 }
796 
sharkpy_map(address_map & map)797 void subsino_state::sharkpy_map(address_map &map)
798 {
799 	map(0x00000, 0x13fff).rom(); //overlap unmapped regions
800 	map(0x09800, 0x09fff).ram();
801 	map(0x09000, 0x09002).r("ppi1", FUNC(i8255_device::read));
802 	map(0x09004, 0x09006).r("ppi2", FUNC(i8255_device::read));
803 	map(0x09009, 0x09009).w(FUNC(subsino_state::out_b_w));
804 	map(0x0900a, 0x0900a).w(FUNC(subsino_state::out_a_w));
805 	map(0x0900c, 0x0900c).portr("INC");
806 	map(0x09016, 0x09017).w("ymsnd", FUNC(ym3812_device::write));
807 	map(0x09018, 0x09018).w("oki", FUNC(okim6295_device::write));
808 	map(0x0901b, 0x0901b).w(FUNC(subsino_state::tiles_offset_w));
809 	map(0x07800, 0x07fff).ram();
810 	map(0x08000, 0x087ff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
811 	map(0x08800, 0x08fff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
812 }
813 
814 /*
815 Victor 21 protection is absolutely trivial. At every number of presetted hands, there's an animation
816 that announces to the player that the card deck changes. If the protection check fails (at start-up),
817 this event makes the game to reset without any money in the bank.
818 */
819 
victor21_map(address_map & map)820 void subsino_state::victor21_map(address_map &map)
821 {
822 	map(0x00000, 0x08fff).rom(); //overlap unmapped regions
823 	map(0x09800, 0x09fff).ram();
824 	map(0x09000, 0x09003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write));
825 	map(0x09004, 0x09004).portr("INA");
826 	map(0x09005, 0x09005).portr("INB");
827 	map(0x09006, 0x09006).portr("SW1");
828 	map(0x09007, 0x09007).portr("SW2");
829 	map(0x09008, 0x09008).portr("SW3");
830 	map(0x0900b, 0x0900b).ram(); //protection
831 	map(0x0900c, 0x0900c).w("oki", FUNC(okim6295_device::write));
832 	map(0x0900e, 0x0900f).w("ymsnd", FUNC(ym2413_device::write));
833 	map(0x0900d, 0x0900d).w(FUNC(subsino_state::tiles_offset_w));
834 	map(0x07800, 0x07fff).ram();
835 	map(0x08000, 0x087ff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
836 	map(0x08800, 0x08fff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
837 	map(0x10000, 0x13fff).rom();
838 }
839 
840 
841 /*
842 Victor 5 has a protection device that calculates the combinations of the screen.
843 0x00 = you lose
844 0x01 = royal flush
845 0x02 = 5 of a kind
846  ...
847 0x0a = jacks of better
848 
849 0xd9 is asked at the POST, game refuses to run otherwise.
850 
851 The fun thing is that the main CPU actually calculates the combinations then it routes to this port
852 thru packet writes, 0xd* starts the packet, 0xe* ends the packet.
853 I'm fairly sure that this thing can do a lot more, the POST check makes me think that 0xd9 is actually a result of a RNG.
854 For now we'll emulate the bare minimum to let this game to work, obviously we need tests/tracing on the real board to understand
855 what it is exactly and what it can possibly do.
856 */
857 
858 
flash_r()859 uint8_t subsino_state::flash_r()
860 {
861 //  printf("R %02x\n",m_flash_val);
862 
863 	if(m_flash_val == 0xff)
864 		return 0xd9;
865 	else if(m_flash_val <= 0xa)
866 		return m_flash_val;
867 	else if(m_flash_val == 0x92)
868 		return 0xeb; //protected GFXs in Cross Bingo
869 	else
870 		return 0xd9;
871 }
872 
flash_w(uint8_t data)873 void subsino_state::flash_w(uint8_t data)
874 {
875 	switch(m_flash_packet_start)
876 	{
877 		case 0:
878 			m_flash_packet = data;
879 			if((m_flash_packet & 0xf8) == 0xd0)
880 				m_flash_packet_start = 1; //start of packet
881 			break;
882 		case 1:
883 			m_flash_packet = data;
884 			if((m_flash_packet & 0xf8) == 0xe0)
885 				m_flash_packet_start = 0; //end of packet
886 			else
887 				m_flash_val = data;
888 			break;
889 	}
890 }
891 
victor5_map(address_map & map)892 void subsino_state::victor5_map(address_map &map)
893 {
894 	victor21_map(map);
895 	map(0x0900a, 0x0900a).rw(FUNC(subsino_state::flash_r), FUNC(subsino_state::flash_w));
896 	map(0x0900b, 0x0900b).nopr(); //"flash" status, bit 0
897 	map(0x0900c, 0x0900c).w("oki", FUNC(okim6295_device::write));
898 }
899 
900 
hwcheck_r()901 uint8_t subsino_state::hwcheck_r()
902 {
903 	/* Wants this at POST otherwise an "Hardware Error" occurs. */
904 	return 0x55;
905 }
906 
crsbingo_map(address_map & map)907 void subsino_state::crsbingo_map(address_map &map)
908 {
909 	map(0x00000, 0x8fff).rom(); //overlap unmapped regions
910 
911 	map(0x09800, 0x09fff).ram();
912 
913 	map(0x09000, 0x09000).portr("SW1");
914 	map(0x09001, 0x09001).portr("SW2");
915 	map(0x09002, 0x09002).portr("INA");
916 	map(0x09003, 0x09003).portr("INB");
917 	map(0x09004, 0x09004).portr("INC");
918 	map(0x09005, 0x09005).w(FUNC(subsino_state::out_a_w));
919 
920 	map(0x09008, 0x09008).portr("SW4");
921 	map(0x09009, 0x09009).portr("SW3");  // .w(FUNC(subsino_state::out_a_w));
922 	map(0x0900a, 0x0900a).rw(FUNC(subsino_state::hwcheck_r), FUNC(subsino_state::out_b_w));
923 
924 	map(0x09010, 0x09010).rw(FUNC(subsino_state::flash_r), FUNC(subsino_state::flash_w));
925 //  map(0x09011, 0x09011) //"flash" status, bit 0
926 //  map(0x0900c, 0x0900c).portr("INC");
927 	map(0x0900c, 0x0900d).w("ymsnd", FUNC(ym2413_device::write));
928 
929 //  map(0x09018, 0x09018).w("oki", FUNC(okim6295_device::write));
930 
931 //  map(0x0900d, 0x0900d).w(FUNC(subsino_state::tiles_offset_w));
932 
933 	map(0x07800, 0x07fff).ram();
934 	map(0x08000, 0x087ff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
935 	map(0x08800, 0x08fff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
936 
937 	map(0x10000, 0x13fff).rom(); //overlap unmapped regions
938 
939 }
940 
out_c_w(uint8_t data)941 void subsino_state::out_c_w(uint8_t data)
942 {
943 	// not 100% sure on this
944 
945 	// ???? eccc
946 	// e = enable reels?
947 	// c = reel colour bank?
948 	m_out_c = data;
949 
950 	for (uint8_t reel = 0; reel < 3; reel++)
951 		m_reel_tilemap[reel]->mark_all_dirty();
952 //  popmessage("data %02x\n",data);
953 }
954 
tisub_map(address_map & map)955 void subsino_state::tisub_map(address_map &map)
956 {
957 	map(0x00000, 0x0bfff).rom(); // overlap unmapped regions
958 	map(0x09800, 0x09fff).ram();
959 
960 	map(0x09000, 0x09002).r("ppi1", FUNC(i8255_device::read));
961 	map(0x09004, 0x09006).r("ppi2", FUNC(i8255_device::read));
962 
963 	/* 0x09008: is marked as OUTPUT C in the test mode. */
964 	map(0x09008, 0x09008).w(FUNC(subsino_state::out_c_w));
965 	map(0x09009, 0x09009).w(FUNC(subsino_state::out_b_w));
966 	map(0x0900a, 0x0900a).w(FUNC(subsino_state::out_a_w));
967 
968 	map(0x0900c, 0x0900c).portr("INC");
969 
970 	map(0x09016, 0x09017).w("ymsnd", FUNC(ym3812_device::write));
971 
972 //  map(0x0900c, 0x0900c).w("oki", FUNC(okim6295_device::write));
973 
974 	map(0x0901b, 0x0901b).w(FUNC(subsino_state::tiles_offset_w));
975 
976 	map(0x07800, 0x07fff).ram();
977 	map(0x08800, 0x08fff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
978 	map(0x08000, 0x087ff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
979 
980 	map(0x10000, 0x13fff).rom();
981 	map(0x14000, 0x14fff).rom(); // reads the card face data here (see rom copy in rom loading)
982 
983 	map(0x150c0, 0x150ff).ram().share("reel_scroll.2");
984 	map(0x15140, 0x1517f).ram().share("reel_scroll.1");
985 	map(0x15180, 0x151bf).ram().share("reel_scroll.0");
986 
987 	map(0x15800, 0x159ff).ram().w(FUNC(subsino_state::reel_ram_w<0>)).share("reel_ram.0");
988 	map(0x15a00, 0x15bff).ram().w(FUNC(subsino_state::reel_ram_w<1>)).share("reel_ram.1");
989 	map(0x15c00, 0x15dff).ram().w(FUNC(subsino_state::reel_ram_w<2>)).share("reel_ram.2");
990 }
991 
ramdac_map(address_map & map)992 void subsino_state::ramdac_map(address_map &map)
993 {
994 	map(0x000, 0x3ff).rw("ramdac", FUNC(ramdac_device::ramdac_pal_r), FUNC(ramdac_device::ramdac_rgb666_w));
995 }
996 
997 // this stuff is banked..
998 // not 100% sure on the bank bits.. other bits are also set
reel_scrollattr_w(offs_t offset,uint8_t data)999 void subsino_state::reel_scrollattr_w(offs_t offset, uint8_t data)
1000 {
1001 	if (*m_stbsub_out_c & 0x20)
1002 	{
1003 		if (offset<0x200)
1004 		{
1005 			m_reel_attr[0][offset&0x1ff] = data;
1006 		}
1007 		else if (offset<0x400)
1008 		{
1009 			m_reel_attr[1][offset&0x1ff] = data;
1010 		}
1011 		else if (offset<0x600)
1012 		{
1013 			m_reel_attr[2][offset&0x1ff] = data;
1014 		}
1015 		else
1016 		{
1017 			// ??
1018 		}
1019 	}
1020 	else
1021 	{
1022 		offset &=0xff;
1023 
1024 		if (offset<0x40)
1025 		{
1026 			// ??
1027 		}
1028 		else if (offset<0x80)
1029 		{
1030 			m_reel_scroll[1][offset&0x3f] = data;
1031 		}
1032 		else if (offset<0xc0)
1033 		{
1034 			m_reel_scroll[0][offset&0x3f] = data;
1035 		}
1036 		else
1037 		{
1038 			m_reel_scroll[2][offset&0x3f] = data;
1039 		}
1040 	}
1041 }
1042 
reel_scrollattr_r(offs_t offset)1043 uint8_t subsino_state::reel_scrollattr_r(offs_t offset)
1044 {
1045 	return m_reel_attr[0][offset];
1046 }
1047 
stbsub_map(address_map & map)1048 void subsino_state::stbsub_map(address_map &map)
1049 {
1050 	map(0x00000, 0x0bfff).rom();
1051 
1052 	map(0x0c000, 0x0cfff).ram().share("nvram");
1053 
1054 	map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read));
1055 	map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read));
1056 
1057 	map(0x0d008, 0x0d008).ram().share("stbsub_out_c");
1058 
1059 	map(0x0d009, 0x0d009).w(FUNC(subsino_state::out_b_w));
1060 	map(0x0d00a, 0x0d00a).w(FUNC(subsino_state::out_a_w));
1061 
1062 	map(0x0d00c, 0x0d00c).portr("INC");
1063 
1064 	map(0x0d010, 0x0d010).w("ramdac", FUNC(ramdac_device::index_w));
1065 	map(0x0d011, 0x0d011).w("ramdac", FUNC(ramdac_device::pal_w));
1066 	map(0x0d012, 0x0d012).w("ramdac", FUNC(ramdac_device::mask_w));
1067 
1068 	map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write));
1069 
1070 //  map(0x0d01b, 0x0d01b).w(FUNC(subsino_state::tiles_offset_w));
1071 
1072 	map(0x0e000, 0x0e7ff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
1073 	map(0x0e800, 0x0efff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
1074 
1075 	map(0xf000, 0xf7ff).rw(FUNC(subsino_state::reel_scrollattr_r), FUNC(subsino_state::reel_scrollattr_w));
1076 
1077 	map(0xf800, 0xf9ff).ram().w(FUNC(subsino_state::reel_ram_w<0>)).share("reel_ram.0");
1078 	map(0xfa00, 0xfbff).ram().w(FUNC(subsino_state::reel_ram_w<1>)).share("reel_ram.1");
1079 	map(0xfc00, 0xfdff).ram().w(FUNC(subsino_state::reel_ram_w<2>)).share("reel_ram.2");
1080 }
1081 
1082 
1083 /***************************************************************************
1084                         Magic Train (Clear NVRAM ROM?)
1085 ***************************************************************************/
1086 
mtrainnv_map(address_map & map)1087 void subsino_state::mtrainnv_map(address_map &map)
1088 {
1089 	map(0x00000, 0x0bfff).rom();
1090 
1091 	map(0x0c000, 0x0cfff).ram().share("nvram");
1092 
1093 	map(0x0d000, 0x0d002).r("ppi1", FUNC(i8255_device::read));
1094 	map(0x0d004, 0x0d006).r("ppi2", FUNC(i8255_device::read));
1095 
1096 	map(0x0d008, 0x0d008).ram().share("stbsub_out_c");
1097 //  map(0x0d009, 0x0d009).w(FUNC(subsino_state::));
1098 //  map(0x0d00a, 0x0d00a).w(FUNC(subsino_state::));
1099 //  map(0x0d00b, 0x0d00b).w(FUNC(subsino_state::));
1100 	map(0x0d00c, 0x0d00c).portr("INC");
1101 
1102 	map(0x0d010, 0x0d010).w("ramdac", FUNC(ramdac_device::index_w));
1103 	map(0x0d011, 0x0d011).w("ramdac", FUNC(ramdac_device::pal_w));
1104 	map(0x0d012, 0x0d012).w("ramdac", FUNC(ramdac_device::mask_w));
1105 
1106 //  map(0x0d012, 0x0d012).w(FUNC(subsino_state::));
1107 
1108 	map(0x0d016, 0x0d017).w("ymsnd", FUNC(ym3812_device::write));
1109 
1110 //  map(0x0d018, 0x0d018).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
1111 
1112 	map(0x0e000, 0x0e7ff).ram().w(FUNC(subsino_state::colorram_w)).share("colorram");
1113 	map(0x0e800, 0x0efff).ram().w(FUNC(subsino_state::videoram_w)).share("videoram");
1114 
1115 	map(0xf000, 0xf7ff).rw(FUNC(subsino_state::reel_scrollattr_r), FUNC(subsino_state::reel_scrollattr_w));
1116 
1117 	map(0xf800, 0xf9ff).ram().w(FUNC(subsino_state::reel_ram_w<0>)).share("reel_ram.0");
1118 	map(0xfa00, 0xfbff).ram().w(FUNC(subsino_state::reel_ram_w<1>)).share("reel_ram.1");
1119 	map(0xfc00, 0xfdff).ram().w(FUNC(subsino_state::reel_ram_w<2>)).share("reel_ram.2");
1120 }
1121 
1122 
subsino_iomap(address_map & map)1123 void subsino_state::subsino_iomap(address_map &map)
1124 {
1125 	map(0x0000, 0x003f).ram(); // internal regs
1126 }
1127 
1128 
1129 /***************************************************************************
1130 *                              Input Ports                                 *
1131 ***************************************************************************/
1132 
1133 static INPUT_PORTS_START( victor21 )
1134 
1135 	PORT_START( "SW1" )
1136 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1137 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
1138 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
1139 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1140 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
1141 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
1142 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
1143 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
1144 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
1145 	PORT_DIPNAME( 0x08, 0x08, "Key In" )
1146 	PORT_DIPSETTING(    0x08, "100 Points/Pulse" )
1147 	PORT_DIPSETTING(    0x00, "200 Points/Pulse" )
1148 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1149 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1150 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1151 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1152 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1153 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1154 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1155 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1156 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1157 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1158 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1159 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1160 
1161 	PORT_START( "SW2" )
1162 	PORT_DIPNAME( 0x03, 0x03, "Main Game Rate" )
1163 	PORT_DIPSETTING(    0x00, "75%" )
1164 	PORT_DIPSETTING(    0x01, "80%" )
1165 	PORT_DIPSETTING(    0x03, "85%" )
1166 	PORT_DIPSETTING(    0x02, "90%" )
1167 	PORT_DIPNAME( 0x04, 0x04, "Max Rate" )
1168 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1169 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1170 	PORT_DIPNAME( 0x18, 0x18, "Minimum Bet" )
1171 	PORT_DIPSETTING(    0x10, "1" )
1172 	PORT_DIPSETTING(    0x08, "5" )
1173 	PORT_DIPSETTING(    0x18, "10" )
1174 	PORT_DIPSETTING(    0x00, "20" )
1175 	PORT_DIPNAME( 0x20, 0x20, "Attract Music" )
1176 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
1177 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
1178 	PORT_DIPNAME( 0x40, 0x40, "SW2 - 40" )
1179 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1180 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1181 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1182 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1183 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1184 
1185 	PORT_START( "SW3" )
1186 	PORT_DIPNAME( 0x01, 0x01, "SW3" )
1187 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1188 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1189 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1190 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1191 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1192 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1193 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1194 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1195 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1196 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1197 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1198 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1199 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1200 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1201 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1202 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1203 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1204 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1205 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1206 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1207 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1208 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1209 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1210 
1211 	PORT_START( "INA" )
1212 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1213 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )        PORT_CODE(KEYCODE_V)    PORT_NAME("Split")
1214 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1215 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_CODE(KEYCODE_Z)    PORT_NAME("Deal / Hit")
1216 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_IMPULSE(3)
1217 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_STAND )   PORT_CODE(KEYCODE_X)
1218 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )        PORT_CODE(KEYCODE_A)    PORT_NAME("Bet x10")    // multibet
1219 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )    PORT_CODE(KEYCODE_C)
1220 
1221 	PORT_START( "INB" )
1222 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin 1
1223 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )   // key in
1224 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 )          PORT_IMPULSE(3) // coin 2
1225 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 )          PORT_IMPULSE(3) // coin 3
1226 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats")  // Bookkeeping.
1227 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate.
1228 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // no payout?
1229 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out
1230 
1231 	PORT_START( "INC" )
1232 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1233 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1234 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1235 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1236 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1237 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1238 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1239 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1240 INPUT_PORTS_END
1241 
1242 
1243 static INPUT_PORTS_START( victor5 )
1244 
1245 	PORT_START( "SW1" )
1246 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1247 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
1248 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
1249 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1250 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
1251 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
1252 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
1253 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
1254 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
1255 	PORT_DIPNAME( 0x08, 0x08, "Key In" )
1256 	PORT_DIPSETTING(    0x08, "100 Points/Pulse" )
1257 	PORT_DIPSETTING(    0x00, "500 Points/Pulse" )
1258 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1259 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1260 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1261 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1262 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1263 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1264 	PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
1265 	PORT_DIPSETTING(    0x80, "20" )
1266 	PORT_DIPSETTING(    0x40, "40" )
1267 	PORT_DIPSETTING(    0xc0, "50" )
1268 	PORT_DIPSETTING(    0x00, "80" )
1269 
1270 	PORT_START( "SW2" )
1271 	PORT_DIPNAME( 0x03, 0x03, "Main Game Rate" )
1272 	PORT_DIPSETTING(    0x00, "68%" )
1273 	PORT_DIPSETTING(    0x01, "76%" )
1274 	PORT_DIPSETTING(    0x03, "84%" )
1275 	PORT_DIPSETTING(    0x02, "92%" )
1276 	PORT_DIPNAME( 0x0c, 0x0c, "Double-Up Rate" )
1277 	PORT_DIPSETTING(    0x00, "74%" )
1278 	PORT_DIPSETTING(    0x04, "80%" )
1279 	PORT_DIPSETTING(    0x0c, "86%" )
1280 	PORT_DIPSETTING(    0x08, "92%" )
1281 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1282 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1283 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1284 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1285 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1286 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1287 	PORT_DIPNAME( 0xc0, 0xc0, "Minimum Bet" )
1288 	PORT_DIPSETTING(    0x80, "1" )
1289 	PORT_DIPSETTING(    0x40, "5" )
1290 	PORT_DIPSETTING(    0xc0, "10" )
1291 	PORT_DIPSETTING(    0x00, "20" )
1292 
1293 	PORT_START( "SW3" )
1294 	PORT_DIPNAME( 0x01, 0x01, "SW3" )
1295 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1296 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1297 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1298 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1299 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1300 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1301 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1302 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1303 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1304 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1305 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1306 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1307 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1308 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1309 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1310 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1311 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1312 	PORT_DIPNAME( 0x40, 0x00, "Attract Music" )
1313 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1314 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1315 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1316 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1317 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1318 
1319 	PORT_START( "INA" )
1320 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
1321 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
1322 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Half Take")
1323 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Big")
1324 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Small")
1325 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Deal / Take")
1326 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_IMPULSE(3)
1327 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1328 
1329 	PORT_START( "INB" )
1330 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
1331 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )   // key in
1332 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1333 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1334 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats")  // Bookkeeping.
1335 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
1336 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
1337 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out
1338 
1339 	PORT_START( "INC" )
1340 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1341 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1342 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1343 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1344 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1345 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1346 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1347 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1348 INPUT_PORTS_END
1349 
1350 
1351 static INPUT_PORTS_START( tisub )
1352 
1353 	PORT_START( "SW1" )
1354 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:1,2,3")   // SW1-123
1355 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
1356 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
1357 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1358 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
1359 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
1360 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
1361 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
1362 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
1363 	PORT_DIPNAME( 0x38, 0x38, "Key In" )                PORT_DIPLOCATION("SW1:4,5,6")   // SW1-456
1364 	PORT_DIPSETTING(    0x30, "4 Points/Pulse" )
1365 	PORT_DIPSETTING(    0x28, "8 Points/Pulse" )
1366 	PORT_DIPSETTING(    0x20, "20 Points/Pulse" )
1367 	PORT_DIPSETTING(    0x38, "40 Points/Pulse" )
1368 	PORT_DIPSETTING(    0x18, "80 Points/Pulse" )
1369 	PORT_DIPSETTING(    0x10, "100 Points/Pulse" )
1370 	PORT_DIPSETTING(    0x08, "200 Points/Pulse" )
1371 	PORT_DIPSETTING(    0x00, "400 Points/Pulse" )
1372 	PORT_DIPNAME( 0x40, 0x40, "Payout Mode" )           PORT_DIPLOCATION("SW1:7")   // SW1-7
1373 	PORT_DIPSETTING(    0x40, "Coin Value" )
1374 	PORT_DIPSETTING(    0x00, "Key In Value" )
1375 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:8")
1376 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1377 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1378 
1379 	PORT_START( "SW2" )
1380 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )           PORT_DIPLOCATION("SW2:1,2") // SW2-12
1381 	PORT_DIPSETTING(    0x03, "1" )
1382 	PORT_DIPSETTING(    0x02, "8" )
1383 	PORT_DIPSETTING(    0x01, "16" )
1384 	PORT_DIPSETTING(    0x00, "32" )
1385 	PORT_DIPNAME( 0x0c, 0x08, "Max Bet" )               PORT_DIPLOCATION("SW2:3,4") // SW2-34
1386 	PORT_DIPSETTING(    0x0c, "2" )
1387 	PORT_DIPSETTING(    0x00, "8" )
1388 	PORT_DIPSETTING(    0x04, "16" )
1389 	PORT_DIPSETTING(    0x08, "32" )
1390 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:5")   // Not in test mode.
1391 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1392 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1393 	PORT_DIPNAME( 0x20, 0x20, "Game Limit" )            PORT_DIPLOCATION("SW2:6")   // SW2-6
1394 	PORT_DIPSETTING(    0x20, "20000" )
1395 	PORT_DIPSETTING(    0x00, "30000" )
1396 	PORT_DIPNAME( 0x40, 0x40, "Auto Take" )             PORT_DIPLOCATION("SW2:7")   // SW2-7
1397 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1398 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1399 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW2:8")
1400 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1401 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1402 
1403 	PORT_START( "SW3" )
1404 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )        PORT_DIPLOCATION("SW3:1,2,3")   // SW3-123
1405 	PORT_DIPSETTING(    0x00, "77%" )
1406 	PORT_DIPSETTING(    0x01, "80%" )
1407 	PORT_DIPSETTING(    0x02, "83%" )
1408 	PORT_DIPSETTING(    0x03, "86%" )
1409 	PORT_DIPSETTING(    0x04, "89%" )
1410 	PORT_DIPSETTING(    0x07, "92%" )
1411 	PORT_DIPSETTING(    0x05, "95%" )
1412 	PORT_DIPSETTING(    0x06, "98%" )
1413 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:4")
1414 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1415 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1416 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:5")
1417 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1418 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1419 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:6")
1420 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1421 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1422 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:7")
1423 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1424 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1425 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:8")
1426 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1427 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1428 
1429 	PORT_START( "SW4" )
1430 	PORT_DIPNAME( 0x07, 0x07, "Double-Up Rate" )        PORT_DIPLOCATION("SW4:1,2,3")   // SW4-123
1431 	PORT_DIPSETTING(    0x00, "70%" )
1432 	PORT_DIPSETTING(    0x01, "74%" )
1433 	PORT_DIPSETTING(    0x02, "78%" )
1434 	PORT_DIPSETTING(    0x03, "82%" )
1435 	PORT_DIPSETTING(    0x04, "86%" )
1436 	PORT_DIPSETTING(    0x07, "90%" )
1437 	PORT_DIPSETTING(    0x05, "94%" )
1438 	PORT_DIPSETTING(    0x06, "98%" )
1439 	PORT_DIPNAME( 0x08, 0x08, "Double-Up Limit" )       PORT_DIPLOCATION("SW4:4")   // SW4-4
1440 	PORT_DIPSETTING(    0x08, "5000" )
1441 	PORT_DIPSETTING(    0x00, "10000" )
1442 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW4:5")
1443 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1444 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1445 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW4:6")
1446 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1447 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1448 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW4:7")
1449 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1450 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1451 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW4:8")
1452 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1453 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1454 
1455 	PORT_START( "INA" )
1456 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )    PORT_NAME("Double / Info")
1457 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SLOT_STOP1 )     PORT_NAME("Stop 1")
1458 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP2 )     PORT_NAME("Stop 2 / Big")
1459 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP3 )     PORT_NAME("Stop 3 / Small")
1460 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1461 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 )         PORT_NAME("Start / Take")
1462 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_IMPULSE(3)
1463 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1464 
1465 	PORT_START( "INB" )
1466 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
1467 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )   // key in
1468 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1469 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1470 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
1471 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")       // Current settings.
1472 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
1473 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out
1474 
1475 	PORT_START( "INC" )
1476 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1477 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1478 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1479 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1480 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1481 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1482 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1483 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1484 INPUT_PORTS_END
1485 
1486 
1487 static INPUT_PORTS_START( stbsub )
1488 	PORT_START("SW1")
1489 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:1,2,3")
1490 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
1491 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
1492 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1493 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
1494 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
1495 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
1496 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
1497 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
1498 	PORT_DIPNAME( 0x38, 0x00, "Remote Credits" )        PORT_DIPLOCATION("SW1:4,5,6")
1499 	PORT_DIPSETTING(    0x30, "1 Pulse / 1 Credits" )
1500 	PORT_DIPSETTING(    0x28, "1 Pulse / 2 Credits" )
1501 	PORT_DIPSETTING(    0x20, "1 Pulse / 5 Credits" )
1502 	PORT_DIPSETTING(    0x38, "1 Pulse / 10 Credits" )
1503 	PORT_DIPSETTING(    0x18, "1 Pulse / 20 Credits" )
1504 	PORT_DIPSETTING(    0x10, "1 Pulse / 25 Credits" )
1505 	PORT_DIPSETTING(    0x08, "1 Pulse / 50 Credits" )
1506 	PORT_DIPSETTING(    0x00, "1 Pulse / 100 Credits" )
1507 	PORT_DIPNAME( 0x40, 0x40, "Pay-out" )               PORT_DIPLOCATION("SW1:7")
1508 	PORT_DIPSETTING(    0x40, "Coin" )
1509 	PORT_DIPSETTING(    0x00, "Key" )
1510 	PORT_DIPNAME( 0x80, 0x80, "Hold Function" )         PORT_DIPLOCATION("SW1:8")
1511 	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
1512 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1513 
1514 	PORT_START("SW2")
1515 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )           PORT_DIPLOCATION("SW2:1,2")
1516 	PORT_DIPSETTING(    0x02, "1" )
1517 	PORT_DIPSETTING(    0x03, "8" )
1518 	PORT_DIPSETTING(    0x01, "16" )
1519 	PORT_DIPSETTING(    0x00, "32" )
1520 	PORT_DIPNAME( 0x0c, 0x0c, "Max Bet" )               PORT_DIPLOCATION("SW2:3,4")
1521 	PORT_DIPSETTING(    0x04, "16" )
1522 	PORT_DIPSETTING(    0x08, "32" )
1523 	PORT_DIPSETTING(    0x0c, "64" )
1524 	PORT_DIPSETTING(    0x00, "80" )
1525 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:5")
1526 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1527 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1528 	PORT_DIPNAME( 0x60, 0x60, "Game Limit" )            PORT_DIPLOCATION("SW2:6,7")
1529 	PORT_DIPSETTING(    0x40, "10000" )
1530 	PORT_DIPSETTING(    0x60, "20000" )
1531 	PORT_DIPSETTING(    0x20, "30000" )
1532 	PORT_DIPSETTING(    0x00, "60000" )
1533 	PORT_DIPNAME( 0x80, 0x80, "Double Up" )             PORT_DIPLOCATION("SW2:8")
1534 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1535 	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
1536 
1537 	PORT_START( "SW3" )
1538 	PORT_DIPNAME( 0x07, 0x07, "Win Rate" )              PORT_DIPLOCATION("SW3:1,2,3")
1539 	PORT_DIPSETTING(    0x00, "84%" )
1540 	PORT_DIPSETTING(    0x01, "84%" )   // yes, again!
1541 	PORT_DIPSETTING(    0x02, "86%" )
1542 	PORT_DIPSETTING(    0x03, "88%" )
1543 	PORT_DIPSETTING(    0x04, "90%" )
1544 	PORT_DIPSETTING(    0x07, "92%" )
1545 	PORT_DIPSETTING(    0x05, "94%" )
1546 	PORT_DIPSETTING(    0x06, "96%" )
1547 	PORT_DIPNAME( 0x08, 0x08, "Control Panel" )         PORT_DIPLOCATION("SW3:4")
1548 	PORT_DIPSETTING(    0x08, "Type A (No Hold)" )
1549 	PORT_DIPSETTING(    0x00, "Type B" )
1550 	PORT_DIPNAME( 0x30, 0x30, "Max Bonus" )             PORT_DIPLOCATION("SW3:5,6")
1551 	PORT_DIPSETTING(    0x30, "1000" )
1552 	PORT_DIPSETTING(    0x20, "2000" )
1553 	PORT_DIPSETTING(    0x10, "3000" )
1554 	PORT_DIPSETTING(    0x00, "5000" )
1555 	PORT_DIPNAME( 0x40, 0x40, "Gather Rate of Bonus" )  PORT_DIPLOCATION("SW3:7")
1556 	PORT_DIPSETTING(    0x40, "1.0%" )
1557 	PORT_DIPSETTING(    0x00, "0.5%" )
1558 	PORT_DIPNAME( 0x80, 0x80, "Reel Speed" )            PORT_DIPLOCATION("SW3:8")
1559 	PORT_DIPSETTING(    0x80, "Slow" )
1560 	PORT_DIPSETTING(    0x00, "Fast" )
1561 
1562 	PORT_START( "SW4" )
1563 	PORT_DIPNAME( 0x07, 0x07, "Double-Up Level" )       PORT_DIPLOCATION("SW4:1,2,3")
1564 	PORT_DIPSETTING(    0x07, "7 (Easy)" )
1565 	PORT_DIPSETTING(    0x06, "6" )
1566 	PORT_DIPSETTING(    0x05, "5" )
1567 	PORT_DIPSETTING(    0x04, "4" )
1568 	PORT_DIPSETTING(    0x03, "3" )
1569 	PORT_DIPSETTING(    0x02, "2" )
1570 	PORT_DIPSETTING(    0x01, "1" )
1571 	PORT_DIPSETTING(    0x00, "0 (Hard)" )
1572 	PORT_DIPNAME( 0x08, 0x08, "Double-Up Limit" )       PORT_DIPLOCATION("SW4:4")
1573 	PORT_DIPSETTING(    0x08, "5000" )
1574 	PORT_DIPSETTING(    0x00, "10000" )
1575 	PORT_DIPNAME( 0x10, 0x10, "Double-Up Game" )        PORT_DIPLOCATION("SW4:5")
1576 	PORT_DIPSETTING(    0x10, "Dancers / Panties Colors" )
1577 	PORT_DIPSETTING(    0x00, "Cards / Seven-Bingo" )
1578 	PORT_DIPNAME( 0xe0, 0xe0, "Clear Ticket Unit" )     PORT_DIPLOCATION("SW4:6,7,8")
1579 	PORT_DIPSETTING(    0x00, "500" )
1580 	PORT_DIPSETTING(    0x20, "100" )
1581 	PORT_DIPSETTING(    0x40, "50" )
1582 	PORT_DIPSETTING(    0x60, "25" )
1583 	PORT_DIPSETTING(    0x80, "20" )
1584 	PORT_DIPSETTING(    0xa0, "10" )
1585 	PORT_DIPSETTING(    0xc0, "5" )
1586 	PORT_DIPSETTING(    0xe0, "1" )
1587 
1588 	PORT_START("INA")
1589 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1590 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1591 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1592 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )                                 PORT_NAME("Start / Stop All")
1593 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP2 )                             PORT_NAME("Bet / Stop 2")
1594 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )    PORT_CODE(KEYCODE_Z)    PORT_NAME("Double / Info")
1595 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1596 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1597 
1598 	PORT_START( "INB" )
1599 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
1600 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )   // key in
1601 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1602 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1603 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
1604 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")       // Current settings.
1605 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
1606 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out
1607 
1608 	PORT_START("INC")
1609 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP3 )                             PORT_NAME("Small / Black / Stop 3")
1610 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper sensor
1611 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1612 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH )    PORT_CODE(KEYCODE_B)    PORT_NAME("Big / Red")
1613 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1614 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1615 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP1 )                             PORT_NAME("Take / Stop 1")
1616 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1617 INPUT_PORTS_END
1618 
1619 
1620 static INPUT_PORTS_START( tesorone )
1621 	PORT_START("SW1")
1622 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:1")
1623 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )        // 5
1624 	PORT_DIPSETTING(    0x01, "1 Coin / 10 Credits" )   // 16
1625 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:2")   // ?
1626 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1627 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1628 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:3")   // ?
1629 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1630 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1631 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:4")
1632 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1633 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1634 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:5")
1635 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1636 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1637 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:6")
1638 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1639 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1640 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:7")   // ?
1641 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1642 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1643 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:8")   // ?
1644 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1645 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1646 
1647 	PORT_START("SW2")
1648 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW2:1")   // ?
1649 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1650 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1651 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW2:2")   // ?
1652 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1653 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1654 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW2:3")   // ?
1655 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1656 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1657 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW2:4")
1658 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1659 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1660 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) )  PORT_DIPLOCATION("SW2:5")
1661 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1662 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1663 	PORT_DIPNAME( 0x60, 0x60, "Game Limit" )            PORT_DIPLOCATION("SW2:6,7")
1664 	PORT_DIPSETTING(    0x40, "5000" )
1665 	PORT_DIPSETTING(    0x60, "10000" )
1666 	PORT_DIPSETTING(    0x20, "20000" )
1667 	PORT_DIPSETTING(    0x00, "30000" )
1668 	PORT_DIPNAME( 0x80, 0x80, "Double Up" )             PORT_DIPLOCATION("SW2:8")
1669 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1670 	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
1671 
1672 	PORT_START( "SW3" )
1673 	PORT_DIPNAME( 0x07, 0x07, "Win Rate" )              PORT_DIPLOCATION("SW3:1,2,3")
1674 	PORT_DIPSETTING(    0x00, "59%" )
1675 	PORT_DIPSETTING(    0x01, "64%" )
1676 	PORT_DIPSETTING(    0x02, "69%" )
1677 	PORT_DIPSETTING(    0x03, "74%" )
1678 	PORT_DIPSETTING(    0x04, "79%" )
1679 	PORT_DIPSETTING(    0x07, "84%" )
1680 	PORT_DIPSETTING(    0x05, "89%" )
1681 	PORT_DIPSETTING(    0x06, "94%" )
1682 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:4")   // ?
1683 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1684 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1685 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:5")
1686 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1687 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1688 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:6")
1689 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1690 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1691 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW3:7")
1692 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1693 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1694 	PORT_DIPNAME( 0x80, 0x80, "Reel Speed" )            PORT_DIPLOCATION("SW3:8")
1695 	PORT_DIPSETTING(    0x80, "Slow" )
1696 	PORT_DIPSETTING(    0x00, "Fast" )
1697 
1698 	PORT_START( "SW4" )
1699 	PORT_DIPNAME( 0x07, 0x07, "Double-Up Level" )       PORT_DIPLOCATION("SW4:1,2,3")
1700 	PORT_DIPSETTING(    0x07, "7 (Easy)" )
1701 	PORT_DIPSETTING(    0x06, "6" )
1702 	PORT_DIPSETTING(    0x05, "5" )
1703 	PORT_DIPSETTING(    0x04, "4" )
1704 	PORT_DIPSETTING(    0x03, "3" )
1705 	PORT_DIPSETTING(    0x02, "2" )
1706 	PORT_DIPSETTING(    0x01, "1" )
1707 	PORT_DIPSETTING(    0x00, "0 (Hard)" )
1708 	PORT_DIPNAME( 0x08, 0x08, "Double-Up Limit" )       PORT_DIPLOCATION("SW4:4")
1709 	PORT_DIPSETTING(    0x08, "5000" )
1710 	PORT_DIPSETTING(    0x00, "10000" )
1711 	PORT_DIPNAME( 0x70, 0x70, "Remote Credits" )        PORT_DIPLOCATION("SW4:5,6,7")
1712 //  PORT_DIPSETTING(    0x00, "50" )
1713 //  PORT_DIPSETTING(    0x10, "50" )
1714 //  PORT_DIPSETTING(    0x20, "50" )
1715 	PORT_DIPSETTING(    0x30, "50" )
1716 	PORT_DIPSETTING(    0x70, "100" )
1717 	PORT_DIPSETTING(    0x60, "200" )
1718 	PORT_DIPSETTING(    0x50, "400" )
1719 	PORT_DIPSETTING(    0x40, "800" )
1720 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW4:8")   // ?
1721 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1722 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1723 
1724 	PORT_START("INA")
1725 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1726 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1727 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1728 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )                                 PORT_NAME("Start / Stop All")
1729 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP2 )                             PORT_NAME("Bet / Stop 2")
1730 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )    PORT_CODE(KEYCODE_Z)    PORT_NAME("Double / Info")
1731 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1732 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1733 
1734 	PORT_START( "INB" )
1735 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
1736 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )   // key in
1737 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1738 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1739 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
1740 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")       // Current settings.
1741 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
1742 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out
1743 
1744 	PORT_START("INC")
1745 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SLOT_STOP3 )                             PORT_NAME("Small / Black / Stop 3")
1746 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper sensor
1747 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1748 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH )    PORT_CODE(KEYCODE_B)    PORT_NAME("Big / Red")
1749 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1750 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1751 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP1 )                             PORT_NAME("Take / Stop 1")
1752 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1753 INPUT_PORTS_END
1754 
1755 
1756 static INPUT_PORTS_START( crsbingo )
1757 
1758 	PORT_START( "SW1" )
1759 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1760 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
1761 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
1762 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1763 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
1764 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
1765 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
1766 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
1767 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
1768 	PORT_DIPNAME( 0x38, 0x38, "Key In" )
1769 	PORT_DIPSETTING(    0x30, "4 Points/Pulse" )
1770 	PORT_DIPSETTING(    0x28, "8 Points/Pulse" )
1771 	PORT_DIPSETTING(    0x20, "20 Points/Pulse" )
1772 	PORT_DIPSETTING(    0x10, "40 Points/Pulse" )
1773 	PORT_DIPSETTING(    0x18, "80 Points/Pulse" )
1774 	PORT_DIPSETTING(    0x38, "100 Points/Pulse" )
1775 	PORT_DIPSETTING(    0x08, "200 Points/Pulse" )
1776 	PORT_DIPSETTING(    0x00, "400 Points/Pulse" )
1777 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1778 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1779 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1780 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1781 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1782 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1783 
1784 	PORT_START( "SW2" )
1785 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )
1786 	PORT_DIPSETTING(    0x02, "1" )
1787 	PORT_DIPSETTING(    0x01, "5" )
1788 	PORT_DIPSETTING(    0x03, "10" )
1789 	PORT_DIPSETTING(    0x00, "20" )
1790 	PORT_DIPNAME( 0x0c, 0x0c, "Max Bet" )
1791 	PORT_DIPSETTING(    0x04, "5" )
1792 	PORT_DIPSETTING(    0x00, "10" )
1793 	PORT_DIPSETTING(    0x08, "20" )
1794 	PORT_DIPSETTING(    0x0c, "50" )
1795 	PORT_DIPNAME( 0x30, 0x30, "Cards Graphics" )
1796 	PORT_DIPSETTING(    0x00, "Classic Cards" )
1797 	PORT_DIPSETTING(    0x10, "Alternate Set" )
1798 	PORT_DIPSETTING(    0x20, "Fruits" )
1799 	PORT_DIPSETTING(    0x30, "Classic Cards" )
1800 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1801 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1802 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1803 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1804 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1805 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1806 
1807 	PORT_START( "SW3" )
1808 	PORT_DIPNAME( 0x01, 0x01, "SW3" )
1809 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
1810 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1811 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
1812 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
1813 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1814 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
1815 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
1816 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1817 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
1818 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
1819 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1820 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1821 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1822 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1823 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1824 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1825 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1826 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1827 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1828 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1829 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1830 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1831 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1832 
1833 	PORT_START( "SW4" )
1834 	PORT_DIPNAME( 0x07, 0x07, "Double-Up Rate" )
1835 	PORT_DIPSETTING(    0x00, "70%" )
1836 	PORT_DIPSETTING(    0x01, "74%" )
1837 	PORT_DIPSETTING(    0x02, "78%" )
1838 	PORT_DIPSETTING(    0x03, "82%" )
1839 	PORT_DIPSETTING(    0x04, "86%" )
1840 	PORT_DIPSETTING(    0x07, "90%" )
1841 	PORT_DIPSETTING(    0x05, "94%" )
1842 	PORT_DIPSETTING(    0x06, "98%" )
1843 	PORT_DIPNAME( 0x08, 0x08, "Double-Up Type" )
1844 	PORT_DIPSETTING(    0x08, "Type 1 (no change card)" )
1845 	PORT_DIPSETTING(    0x00, "Type 2 (with change card)" )
1846 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
1847 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
1848 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1849 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
1850 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
1851 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1852 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
1853 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1854 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1855 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
1856 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
1857 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1858 
1859 	PORT_START( "INA" )
1860 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
1861 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Double")
1862 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Change")
1863 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Big")
1864 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Small")
1865 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Deal / Take")
1866 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_IMPULSE(3)
1867 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1868 
1869 	PORT_START( "INB" )
1870 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
1871 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )   // key in
1872 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1873 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1874 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats")      // Bookkeeping.
1875 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
1876 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
1877 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out
1878 
1879 	PORT_START( "INC" )
1880 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1881 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1882 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1883 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1884 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1885 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1886 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1887 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1888 INPUT_PORTS_END
1889 
1890 
1891 static INPUT_PORTS_START( sharkpy )
1892 
1893 	PORT_START( "SW1" )
1894 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
1895 	PORT_DIPSETTING(    0x01, "1 Coin / 10 Credits" )
1896 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
1897 	PORT_DIPUNKNOWN( 0x02, 0x02 )
1898 	PORT_DIPUNKNOWN( 0x04, 0x04 )
1899 	PORT_DIPUNKNOWN( 0x08, 0x08 )
1900 	PORT_DIPUNKNOWN( 0x10, 0x10 )
1901 	PORT_DIPUNKNOWN( 0x20, 0x20 )
1902 	PORT_DIPUNKNOWN( 0x40, 0x40 )
1903 	PORT_DIPUNKNOWN( 0x80, 0x80 )
1904 
1905 	PORT_START( "SW2" )
1906 	PORT_DIPUNKNOWN( 0x01, 0x01 )
1907 	PORT_DIPUNKNOWN( 0x02, 0x02 )
1908 	PORT_DIPUNKNOWN( 0x04, 0x04 )
1909 	PORT_DIPUNKNOWN( 0x08, 0x08 )
1910 	PORT_DIPUNKNOWN( 0x10, 0x10 )
1911 	PORT_DIPUNKNOWN( 0x20, 0x20 )
1912 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
1913 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
1914 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
1915 	PORT_DIPNAME( 0x80, 0x80, "Double-Up" )
1916 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
1917 	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
1918 
1919 	PORT_START( "SW3" )
1920 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
1921 	PORT_DIPSETTING(    0x00, "55%" )
1922 	PORT_DIPSETTING(    0x01, "60%" )
1923 	PORT_DIPSETTING(    0x02, "65%" )
1924 	PORT_DIPSETTING(    0x03, "70%" )
1925 	PORT_DIPSETTING(    0x04, "75%" )
1926 	PORT_DIPSETTING(    0x07, "80%" )
1927 	PORT_DIPSETTING(    0x05, "85%" )
1928 	PORT_DIPSETTING(    0x06, "90%" )
1929 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
1930 	PORT_DIPSETTING(    0x30, "0" )
1931 	PORT_DIPSETTING(    0x28, "1" )
1932 	PORT_DIPSETTING(    0x38, "2" )
1933 	PORT_DIPSETTING(    0x20, "3" )
1934 	PORT_DIPSETTING(    0x18, "4" )
1935 	PORT_DIPSETTING(    0x10, "5" )
1936 	PORT_DIPSETTING(    0x08, "6" )
1937 	PORT_DIPSETTING(    0x00, "7" )
1938 	PORT_DIPUNKNOWN( 0x40, 0x40 )
1939 	PORT_DIPUNKNOWN( 0x80, 0x80 )
1940 
1941 	PORT_START( "SW4" )
1942 	PORT_DIPUNKNOWN( 0x01, 0x01 )
1943 	PORT_DIPUNKNOWN( 0x02, 0x02 )
1944 	PORT_DIPUNKNOWN( 0x04, 0x04 )
1945 	PORT_DIPUNKNOWN( 0x08, 0x08 )
1946 	PORT_DIPUNKNOWN( 0x10, 0x10 )
1947 	PORT_DIPUNKNOWN( 0x20, 0x20 )
1948 	PORT_DIPUNKNOWN( 0x40, 0x40 )
1949 	PORT_DIPUNKNOWN( 0x80, 0x80 )
1950 
1951 	PORT_START( "INA" )
1952 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Double (Select)")
1953 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
1954 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
1955 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Big")
1956 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Small")
1957 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Deal / Take")
1958 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_NAME("Bet")    PORT_IMPULSE(3)
1959 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1960 
1961 	PORT_START( "INB" )
1962 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
1963 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1964 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
1965 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1966 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
1967 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
1968 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout?
1969 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out?
1970 
1971 	PORT_START( "INC" )
1972 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
1973 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
1974 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
1975 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
1976 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
1977 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
1978 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
1979 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
1980 INPUT_PORTS_END
1981 
1982 
1983 static INPUT_PORTS_START( sharkpye )
1984 
1985 	PORT_START( "SW1" )
1986 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
1987 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
1988 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
1989 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
1990 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
1991 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
1992 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
1993 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
1994 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
1995 	PORT_DIPNAME( 0x38, 0x38, "Remote Credits" )
1996 	PORT_DIPSETTING(    0x30, "1 Pulse / 1 Credits" )
1997 	PORT_DIPSETTING(    0x28, "1 Pulse / 2 Credits" )
1998 	PORT_DIPSETTING(    0x20, "1 Pulse / 5 Credits" )
1999 	PORT_DIPSETTING(    0x18, "1 Pulse / 10 Credits" )
2000 	PORT_DIPSETTING(    0x10, "1 Pulse / 50 Credits" )
2001 	PORT_DIPSETTING(    0x38, "1 Pulse / 100 Credits" )
2002 	PORT_DIPSETTING(    0x08, "1 Pulse / 200 Credits" )
2003 	PORT_DIPSETTING(    0x00, "1 Pulse / 500 Credits" )
2004 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2005 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2006 
2007 	PORT_START( "SW2" )
2008 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )
2009 	PORT_DIPSETTING(    0x03, "1" )
2010 	PORT_DIPSETTING(    0x02, "5" )
2011 	PORT_DIPSETTING(    0x01, "10" )
2012 	PORT_DIPSETTING(    0x00, "20" )
2013 	PORT_DIPNAME( 0x0c, 0x0c, "Max Bet" )
2014 	PORT_DIPSETTING(    0x08, "10" )
2015 	PORT_DIPSETTING(    0x04, "40" )
2016 	PORT_DIPSETTING(    0x0c, "50" )
2017 	PORT_DIPSETTING(    0x00, "80" )
2018 	PORT_DIPNAME( 0x10, 0x10, "Jokers" )
2019 	PORT_DIPSETTING(    0x10, DEF_STR( No ) )
2020 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
2021 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2022 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
2023 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2024 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2025 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2026 
2027 	PORT_START( "SW3" )
2028 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
2029 	PORT_DIPSETTING(    0x00, "92%" )
2030 	PORT_DIPSETTING(    0x01, "93%" )
2031 	PORT_DIPSETTING(    0x02, "94%" )
2032 	PORT_DIPSETTING(    0x03, "95%" )
2033 	PORT_DIPSETTING(    0x04, "96%" )
2034 	PORT_DIPSETTING(    0x07, "97%" )
2035 	PORT_DIPSETTING(    0x05, "98%" )
2036 	PORT_DIPSETTING(    0x06, "99%" )
2037 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
2038 	PORT_DIPSETTING(    0x00, "82" )
2039 	PORT_DIPSETTING(    0x08, "84" )
2040 	PORT_DIPSETTING(    0x10, "86" )
2041 	PORT_DIPSETTING(    0x18, "88" )
2042 	PORT_DIPSETTING(    0x20, "90" )
2043 	PORT_DIPSETTING(    0x38, "92" )
2044 	PORT_DIPSETTING(    0x28, "94" )
2045 	PORT_DIPSETTING(    0x30, "96" )
2046 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2047 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2048 
2049 	PORT_START( "SW4" )
2050 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2051 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2052 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2053 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2054 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2055 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2056 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2057 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2058 
2059 	PORT_START( "INA" )
2060 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2061 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2062 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2063 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Start")
2064 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Bet")
2065 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Double-Up")
2066 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2067 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2068 
2069 	PORT_START( "INB" )
2070 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
2071 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
2072 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2073 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2074 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
2075 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
2076 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2077 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
2078 
2079 	PORT_START( "INC" )
2080 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Small")
2081 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2082 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset Switch")   // hard reset
2083 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Big")
2084 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2085 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2086 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Take")
2087 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2088 INPUT_PORTS_END
2089 
2090 
2091 static INPUT_PORTS_START( smoto16 )
2092 
2093 	PORT_START( "SW1" )
2094 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
2095 	PORT_DIPSETTING(    0x01, "1 Coin / 10 Credits" )
2096 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
2097 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2098 	PORT_DIPNAME( 0x04, 0x04, "Hopper" )
2099 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2100 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2101 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2102 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2103 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2104 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2105 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2106 
2107 	PORT_START( "SW2" )
2108 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2109 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2110 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2111 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2112 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2113 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2114 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
2115 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2116 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2117 	PORT_DIPNAME( 0x80, 0x80, "Double-Up" )
2118 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
2119 	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
2120 
2121 	PORT_START( "SW3" )
2122 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
2123 	PORT_DIPSETTING(    0x00, "55%" )
2124 	PORT_DIPSETTING(    0x01, "60%" )
2125 	PORT_DIPSETTING(    0x02, "65%" )
2126 	PORT_DIPSETTING(    0x03, "70%" )
2127 	PORT_DIPSETTING(    0x04, "75%" )
2128 	PORT_DIPSETTING(    0x07, "80%" )
2129 	PORT_DIPSETTING(    0x05, "85%" )
2130 	PORT_DIPSETTING(    0x06, "90%" )
2131 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
2132 	PORT_DIPSETTING(    0x00, "0" )
2133 	PORT_DIPSETTING(    0x08, "1" )
2134 	PORT_DIPSETTING(    0x10, "2" )
2135 	PORT_DIPSETTING(    0x18, "3" )
2136 	PORT_DIPSETTING(    0x20, "4" )
2137 	PORT_DIPSETTING(    0x28, "5" )
2138 	PORT_DIPSETTING(    0x30, "6" )
2139 	PORT_DIPSETTING(    0x38, "7" )
2140 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2141 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2142 
2143 	PORT_START( "SW4" )
2144 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2145 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2146 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2147 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2148 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2149 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2150 	PORT_DIPNAME( 0x40, 0x40, "Game Control" )
2151 	PORT_DIPSETTING(    0x40, "Normal Holds" )
2152 	PORT_DIPSETTING(    0x00, "Left-Right Marker" )
2153 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2154 
2155 	PORT_START( "INA" ) // d005
2156 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Double (Select)")
2157 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Right")
2158 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Left")
2159 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Select")
2160 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
2161 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Deal / Take")
2162 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_NAME("Bet / Speed")    PORT_IMPULSE(3)
2163 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2164 
2165 	PORT_START( "INB" ) // d006
2166 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
2167 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2168 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper sensor
2169 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2170 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
2171 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
2172 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
2173 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out?
2174 
2175 	PORT_START( "INC" ) // d00c
2176 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2177 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper sensor
2178 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
2179 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2180 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2181 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2182 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2183 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2184 INPUT_PORTS_END
2185 
2186 
2187 static INPUT_PORTS_START( smoto20 )
2188 
2189 	PORT_START( "SW1" )
2190 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) )
2191 	PORT_DIPSETTING(    0x01, "1 Coin / 10 Credits" )
2192 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_5C ) )
2193 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2194 	PORT_DIPNAME( 0x04, 0x04, "Hopper" )
2195 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
2196 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2197 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2198 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2199 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2200 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2201 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2202 
2203 	PORT_START( "SW2" )
2204 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2205 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2206 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2207 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2208 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2209 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2210 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
2211 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2212 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2213 	PORT_DIPNAME( 0x80, 0x80, "Double-Up" )
2214 	PORT_DIPSETTING(    0x00, DEF_STR( No ) )
2215 	PORT_DIPSETTING(    0x80, DEF_STR( Yes ) )
2216 
2217 	PORT_START( "SW3" )
2218 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
2219 	PORT_DIPSETTING(    0x00, "25%" )
2220 	PORT_DIPSETTING(    0x01, "30%" )
2221 	PORT_DIPSETTING(    0x02, "35%" )
2222 	PORT_DIPSETTING(    0x03, "40%" )
2223 	PORT_DIPSETTING(    0x04, "45%" )
2224 	PORT_DIPSETTING(    0x07, "50%" )
2225 	PORT_DIPSETTING(    0x05, "55%" )
2226 	PORT_DIPSETTING(    0x06, "60%" )
2227 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
2228 	PORT_DIPSETTING(    0x00, "0" )
2229 	PORT_DIPSETTING(    0x08, "1" )
2230 	PORT_DIPSETTING(    0x10, "2" )
2231 	PORT_DIPSETTING(    0x18, "3" )
2232 	PORT_DIPSETTING(    0x20, "4" )
2233 	PORT_DIPSETTING(    0x28, "5" )
2234 	PORT_DIPSETTING(    0x30, "6" )
2235 	PORT_DIPSETTING(    0x38, "7" )
2236 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2237 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2238 
2239 	PORT_START( "SW4" )
2240 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2241 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2242 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2243 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2244 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2245 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2246 	PORT_DIPNAME( 0x40, 0x40, "Game Control" )
2247 	PORT_DIPSETTING(    0x40, "Normal Holds" )
2248 	PORT_DIPSETTING(    0x00, "Left-Right Marker" )
2249 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2250 
2251 	PORT_START( "INA" ) // d005
2252 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Double (Select)")
2253 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Right")
2254 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Left")
2255 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Select")
2256 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
2257 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Deal / Take")
2258 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_BET )     PORT_NAME("Bet / Speed")    PORT_IMPULSE(3)
2259 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2260 
2261 	PORT_START( "INB" ) // d006
2262 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
2263 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2264 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper sensor
2265 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2266 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
2267 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
2268 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )  // payout
2269 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )  // key out?
2270 
2271 	PORT_START( "INC" ) // d00c
2272 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2273 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("hopper", ticket_dispenser_device, line_r) // hopper sensor
2274 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset")  // hard reset
2275 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2276 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2277 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2278 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2279 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2280 INPUT_PORTS_END
2281 
2282 
2283 static INPUT_PORTS_START( victor6 )
2284 
2285 	PORT_START( "SW1" )
2286 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
2287 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
2288 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
2289 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
2290 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
2291 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
2292 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
2293 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
2294 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
2295 	PORT_DIPNAME( 0x38, 0x38, "Remote Credits" )
2296 	PORT_DIPSETTING(    0x30, "1 Pulse / 1 Credits" )
2297 	PORT_DIPSETTING(    0x28, "1 Pulse / 2 Credits" )
2298 	PORT_DIPSETTING(    0x20, "1 Pulse / 5 Credits" )
2299 	PORT_DIPSETTING(    0x18, "1 Pulse / 10 Credits" )
2300 	PORT_DIPSETTING(    0x10, "1 Pulse / 50 Credits" )
2301 	PORT_DIPSETTING(    0x38, "1 Pulse / 100 Credits" )
2302 	PORT_DIPSETTING(    0x08, "1 Pulse / 200 Credits" )
2303 	PORT_DIPSETTING(    0x00, "1 Pulse / 500 Credits" )
2304 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2305 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2306 
2307 	PORT_START( "SW2" )
2308 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )
2309 	PORT_DIPSETTING(    0x03, "1" )
2310 	PORT_DIPSETTING(    0x02, "5" )
2311 	PORT_DIPSETTING(    0x01, "10" )
2312 	PORT_DIPSETTING(    0x00, "20" )
2313 	PORT_DIPNAME( 0x0c, 0x0c, "Max Bet" )
2314 	PORT_DIPSETTING(    0x00, "8" )
2315 	PORT_DIPSETTING(    0x08, "10" )
2316 	PORT_DIPSETTING(    0x04, "40" )
2317 	PORT_DIPSETTING(    0x0c, "50" )
2318 	PORT_DIPNAME( 0x10, 0x10, "Jokers" )
2319 	PORT_DIPSETTING(    0x10, DEF_STR( No ) )
2320 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
2321 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2322 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
2323 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2324 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2325 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2326 
2327 	PORT_START( "SW3" )
2328 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
2329 	PORT_DIPSETTING(    0x00, "87%" )
2330 	PORT_DIPSETTING(    0x01, "89%" )
2331 	PORT_DIPSETTING(    0x02, "91%" )
2332 	PORT_DIPSETTING(    0x03, "93%" )
2333 	PORT_DIPSETTING(    0x04, "95%" )
2334 	PORT_DIPSETTING(    0x07, "97%" )
2335 	PORT_DIPSETTING(    0x05, "99%" )
2336 	PORT_DIPSETTING(    0x06, "101%" )
2337 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
2338 	PORT_DIPSETTING(    0x00, "82" )
2339 	PORT_DIPSETTING(    0x08, "84" )
2340 	PORT_DIPSETTING(    0x10, "86" )
2341 	PORT_DIPSETTING(    0x18, "88" )
2342 	PORT_DIPSETTING(    0x20, "90" )
2343 	PORT_DIPSETTING(    0x38, "92" )
2344 	PORT_DIPSETTING(    0x28, "94" )
2345 	PORT_DIPSETTING(    0x30, "96" )
2346 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2347 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2348 
2349 	PORT_START( "SW4" )
2350 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2351 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2352 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2353 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2354 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2355 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2356 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2357 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2358 
2359 	PORT_START( "INA" )
2360 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2361 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2362 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2363 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Start")
2364 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Bet")
2365 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Double-Up")
2366 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2367 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2368 
2369 	PORT_START( "INB" )
2370 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
2371 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
2372 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2373 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2374 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
2375 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
2376 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2377 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
2378 
2379 	PORT_START( "INC" )
2380 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Small")
2381 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2382 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset Switch")   // hard reset
2383 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Big")
2384 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2385 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2386 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Take")
2387 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2388 INPUT_PORTS_END
2389 
2390 
2391 static INPUT_PORTS_START( victor6a )
2392 
2393 	PORT_START( "SW1" )
2394 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
2395 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
2396 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
2397 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
2398 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
2399 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
2400 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
2401 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
2402 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
2403 	PORT_DIPNAME( 0x38, 0x38, "Remote Credits" )
2404 	PORT_DIPSETTING(    0x30, "1 Pulse / 1 Credits" )
2405 	PORT_DIPSETTING(    0x28, "1 Pulse / 2 Credits" )
2406 	PORT_DIPSETTING(    0x20, "1 Pulse / 5 Credits" )
2407 	PORT_DIPSETTING(    0x18, "1 Pulse / 10 Credits" )
2408 	PORT_DIPSETTING(    0x10, "1 Pulse / 50 Credits" )
2409 	PORT_DIPSETTING(    0x38, "1 Pulse / 100 Credits" )
2410 	PORT_DIPSETTING(    0x08, "1 Pulse / 200 Credits" )
2411 	PORT_DIPSETTING(    0x00, "1 Pulse / 500 Credits" )
2412 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2413 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2414 
2415 	PORT_START( "SW2" )
2416 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )
2417 	PORT_DIPSETTING(    0x03, "1" )
2418 	PORT_DIPSETTING(    0x02, "5" )
2419 	PORT_DIPSETTING(    0x01, "10" )
2420 	PORT_DIPSETTING(    0x00, "20" )
2421 	PORT_DIPNAME( 0x0c, 0x0c, "Max Bet" )
2422 	PORT_DIPSETTING(    0x08, "10" )
2423 	PORT_DIPSETTING(    0x04, "40" )
2424 	PORT_DIPSETTING(    0x0c, "50" )
2425 	PORT_DIPSETTING(    0x00, "80" )
2426 	PORT_DIPNAME( 0x10, 0x10, "Jokers" )
2427 	PORT_DIPSETTING(    0x10, DEF_STR( No ) )
2428 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
2429 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2430 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
2431 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2432 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2433 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2434 
2435 	PORT_START( "SW3" )
2436 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
2437 	PORT_DIPSETTING(    0x00, "94%" )
2438 	PORT_DIPSETTING(    0x01, "95%" )
2439 	PORT_DIPSETTING(    0x02, "96%" )
2440 	PORT_DIPSETTING(    0x03, "97%" )
2441 	PORT_DIPSETTING(    0x04, "98%" )
2442 	PORT_DIPSETTING(    0x07, "99%" )
2443 	PORT_DIPSETTING(    0x05, "100%" )
2444 	PORT_DIPSETTING(    0x06, "101%" )
2445 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
2446 	PORT_DIPSETTING(    0x00, "82" )
2447 	PORT_DIPSETTING(    0x08, "84" )
2448 	PORT_DIPSETTING(    0x10, "86" )
2449 	PORT_DIPSETTING(    0x18, "88" )
2450 	PORT_DIPSETTING(    0x20, "90" )
2451 	PORT_DIPSETTING(    0x38, "92" )
2452 	PORT_DIPSETTING(    0x28, "94" )
2453 	PORT_DIPSETTING(    0x30, "96" )
2454 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2455 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2456 
2457 	PORT_START( "SW4" )
2458 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2459 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2460 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2461 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2462 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2463 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2464 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2465 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2466 
2467 	PORT_START( "INA" )
2468 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2469 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2470 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2471 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Start")
2472 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Bet")
2473 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Double-Up")
2474 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2475 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2476 
2477 	PORT_START( "INB" )
2478 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
2479 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
2480 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2481 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2482 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
2483 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
2484 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2485 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
2486 
2487 	PORT_START( "INC" )
2488 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Small")
2489 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2490 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset Switch")   // hard reset
2491 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Big")
2492 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2493 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2494 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Take")
2495 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2496 INPUT_PORTS_END
2497 
2498 
2499 static INPUT_PORTS_START( victor6b )
2500 
2501 	PORT_START( "SW1" )
2502 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
2503 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_1C ) )
2504 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_2C ) )
2505 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_5C ) )
2506 	PORT_DIPSETTING(    0x07, "1 Coin / 10 Credits" )
2507 	PORT_DIPSETTING(    0x03, "1 Coin / 20 Credits" )
2508 	PORT_DIPSETTING(    0x02, "1 Coin / 25 Credits" )
2509 	PORT_DIPSETTING(    0x01, "1 Coin / 50 Credits" )
2510 	PORT_DIPSETTING(    0x00, "1 Coin / 100 Credits" )
2511 	PORT_DIPNAME( 0x38, 0x38, "Remote Credits" )
2512 	PORT_DIPSETTING(    0x30, "1 Pulse / 1 Credits" )
2513 	PORT_DIPSETTING(    0x28, "1 Pulse / 2 Credits" )
2514 	PORT_DIPSETTING(    0x20, "1 Pulse / 5 Credits" )
2515 	PORT_DIPSETTING(    0x18, "1 Pulse / 10 Credits" )
2516 	PORT_DIPSETTING(    0x10, "1 Pulse / 50 Credits" )
2517 	PORT_DIPSETTING(    0x38, "1 Pulse / 100 Credits" )
2518 	PORT_DIPSETTING(    0x08, "1 Pulse / 200 Credits" )
2519 	PORT_DIPSETTING(    0x00, "1 Pulse / 500 Credits" )
2520 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2521 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2522 
2523 	PORT_START( "SW2" )
2524 	PORT_DIPNAME( 0x03, 0x03, "Minimum Bet" )
2525 	PORT_DIPSETTING(    0x03, "1" )
2526 	PORT_DIPSETTING(    0x02, "5" )
2527 	PORT_DIPSETTING(    0x01, "10" )
2528 	PORT_DIPSETTING(    0x00, "20" )
2529 	PORT_DIPNAME( 0x0c, 0x0c, "Max Bet" )
2530 	PORT_DIPSETTING(    0x08, "Invalid" )
2531 	PORT_DIPSETTING(    0x04, "40" )
2532 	PORT_DIPSETTING(    0x0c, "50" )
2533 	PORT_DIPSETTING(    0x00, "80" )
2534 	PORT_DIPNAME( 0x10, 0x10, "Jokers" )
2535 	PORT_DIPSETTING(    0x10, DEF_STR( No ) )
2536 	PORT_DIPSETTING(    0x00, DEF_STR( Yes ) )
2537 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2538 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Demo_Sounds ) )
2539 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
2540 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
2541 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2542 
2543 	PORT_START( "SW3" )
2544 	PORT_DIPNAME( 0x07, 0x07, "Main Game Rate" )
2545 	PORT_DIPSETTING(    0x00, "94%" )
2546 	PORT_DIPSETTING(    0x01, "95%" )
2547 	PORT_DIPSETTING(    0x02, "96%" )
2548 	PORT_DIPSETTING(    0x03, "97%" )
2549 	PORT_DIPSETTING(    0x04, "98%" )
2550 	PORT_DIPSETTING(    0x07, "99%" )
2551 	PORT_DIPSETTING(    0x05, "100%" )
2552 	PORT_DIPSETTING(    0x06, "101%" )
2553 	PORT_DIPNAME( 0x38, 0x38, "Double-Up Rate" )
2554 	PORT_DIPSETTING(    0x00, "82" )
2555 	PORT_DIPSETTING(    0x08, "84" )
2556 	PORT_DIPSETTING(    0x10, "86" )
2557 	PORT_DIPSETTING(    0x18, "88" )
2558 	PORT_DIPSETTING(    0x20, "90" )
2559 	PORT_DIPSETTING(    0x38, "92" )
2560 	PORT_DIPSETTING(    0x28, "94" )
2561 	PORT_DIPSETTING(    0x30, "96" )
2562 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2563 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2564 
2565 	PORT_START( "SW4" )
2566 	PORT_DIPUNKNOWN( 0x01, 0x01 )
2567 	PORT_DIPUNKNOWN( 0x02, 0x02 )
2568 	PORT_DIPUNKNOWN( 0x04, 0x04 )
2569 	PORT_DIPUNKNOWN( 0x08, 0x08 )
2570 	PORT_DIPUNKNOWN( 0x10, 0x10 )
2571 	PORT_DIPUNKNOWN( 0x20, 0x20 )
2572 	PORT_DIPUNKNOWN( 0x40, 0x40 )
2573 	PORT_DIPUNKNOWN( 0x80, 0x80 )
2574 
2575 	PORT_START( "INA" )
2576 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
2577 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2578 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2579 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )    PORT_NAME("Start")
2580 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )    PORT_NAME("Hold 1 / Bet")
2581 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )    PORT_NAME("Hold 3 / Double-Up")
2582 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2583 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2584 
2585 	PORT_START( "INB" )
2586 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )          PORT_IMPULSE(3) // coin
2587 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_KEYIN )
2588 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
2589 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
2590 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_BOOK )                            PORT_NAME("Stats / Test")   // Bookkeeping.
2591 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_SERVICE )                         PORT_NAME("Settings")   // Game Rate & others.
2592 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
2593 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
2594 
2595 	PORT_START( "INC" )
2596 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )    PORT_NAME("Hold 4 / Small")
2597 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
2598 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MEMORY_RESET )                           PORT_NAME("Reset Switch")   // hard reset
2599 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )    PORT_NAME("Hold 5 / Big")
2600 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
2601 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
2602 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )    PORT_NAME("Hold 2 / Take")
2603 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
2604 INPUT_PORTS_END
2605 
2606 
2607 /***************************************************************************
2608 *                             Graphics Layout                              *
2609 ***************************************************************************/
2610 
2611 static const gfx_layout layout_8x8x3 =
2612 {
2613 	8, 8,
2614 	RGN_FRAC(1, 3),
2615 	3,
2616 	{ RGN_FRAC(0,3), RGN_FRAC(1,3), RGN_FRAC(2,3) },
2617 	{ STEP8(0,1) },
2618 	{ STEP8(0,8) },
2619 	8*8
2620 };
2621 
2622 static const gfx_layout layout_8x8x4 =
2623 {
2624 	8, 8,
2625 	RGN_FRAC(1, 4),
2626 	4,
2627 	{ RGN_FRAC(2,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(1,4) },
2628 	{ STEP8(0,1) },
2629 	{ STEP8(0,8) },
2630 	8*8
2631 };
2632 
2633 static const gfx_layout layout_8x32x4 =
2634 {
2635 	8, 32,
2636 	RGN_FRAC(1, 4),
2637 	4,
2638 	{ RGN_FRAC(2,4), RGN_FRAC(3,4), RGN_FRAC(0,4), RGN_FRAC(1,4) },
2639 	{ STEP8(0,1) },
2640 	{ STEP32(0,8) },
2641 	8*8*4
2642 };
2643 
2644 static const gfx_layout layout_8x8x8 =
2645 {
2646 	8, 8,
2647 	RGN_FRAC(1,4),
2648 	8,
2649 	{ 0,1,2,3,4,5,6,7 },
2650 	{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4), RGN_FRAC(0,4)+8, RGN_FRAC(1,4)+8, RGN_FRAC(2,4)+8, RGN_FRAC(3,4)+8 },
2651 	{ 0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16 },
2652 	8*16
2653 };
2654 
2655 static const gfx_layout layout_8x32x8 =
2656 {
2657 	8, 32,
2658 	RGN_FRAC(1,4),
2659 	8,
2660 	{ 0,1,2,3,4,5,6,7 },
2661 	{ RGN_FRAC(0,4), RGN_FRAC(1,4), RGN_FRAC(2,4), RGN_FRAC(3,4), RGN_FRAC(0,4)+8, RGN_FRAC(1,4)+8, RGN_FRAC(2,4)+8, RGN_FRAC(3,4)+8 },
2662 	{ 0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16, 8*16,9*16,10*16,11*16,12*16,13*16,14*16,15*16,
2663 		16*16,17*16,18*16,19*16,20*16,21*16,22*16,23*16,24*16,25*16,26*16,27*16,28*16,29*16,30*16,31*16},
2664 	32*16
2665 };
2666 
2667 
2668 static GFXDECODE_START( subsino_depth3 )
2669 	GFXDECODE_ENTRY( "tilemap", 0, layout_8x8x3, 0, 16 )
2670 GFXDECODE_END
2671 
GFXDECODE_START(subsino_depth4)2672 static GFXDECODE_START( subsino_depth4 )
2673 	GFXDECODE_ENTRY( "tilemap", 0, layout_8x8x4, 0, 16 )
2674 GFXDECODE_END
2675 
2676 static GFXDECODE_START( subsino_depth4_reels )
2677 	GFXDECODE_ENTRY( "tilemap", 0, layout_8x8x4, 0, 16 )
2678 	GFXDECODE_ENTRY( "reels", 0, layout_8x32x4, 0, 16 )
2679 GFXDECODE_END
2680 
2681 static GFXDECODE_START( subsino_stbsub )
2682 	GFXDECODE_ENTRY( "tilemap", 0, layout_8x8x8, 0, 1 )
2683 	GFXDECODE_ENTRY( "reels", 0, layout_8x32x8, 0, 1 )
2684 GFXDECODE_END
2685 
2686 /***************************************************************************
2687 *                             Machine Drivers                              *
2688 ***************************************************************************/
2689 
2690 void subsino_state::victor21(machine_config &config)
2691 {
2692 	/* basic machine hardware */
2693 	HD647180X(config, m_maincpu, XTAL(12'000'000));   /* Unknown clock */
2694 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::victor21_map);
2695 	m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
2696 
2697 	i8255_device &ppi(I8255A(config, "ppi"));
2698 	ppi.out_pa_callback().set(FUNC(subsino_state::out_a_w));
2699 	ppi.tri_pa_callback().set_constant(0);
2700 	ppi.out_pb_callback().set(FUNC(subsino_state::out_b_w));
2701 	ppi.tri_pb_callback().set_constant(0);
2702 	ppi.in_pc_callback().set_ioport("INC");
2703 
2704 	TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2705 
2706 	/* video hardware */
2707 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
2708 	screen.set_refresh_hz(60);
2709 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
2710 	screen.set_size(512, 256);
2711 	screen.set_visarea(0, 512-1, 0+16, 256-16-1);
2712 	screen.set_screen_update(FUNC(subsino_state::screen_update));
2713 	screen.set_palette(m_palette);
2714 
2715 	GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth3);
2716 
2717 	PALETTE(config, m_palette, FUNC(subsino_state::_2proms_palette), 0x100);
2718 
2719 	MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino)
2720 
2721 	/* sound hardware */
2722 	SPEAKER(config, "mono").front_center();
2723 
2724 	YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
2725 
2726 	OKIM6295(config, "oki", XTAL(4'433'619) / 4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);  /* Clock frequency & pin 7 not verified */
2727 }
2728 
2729 /* same but with an additional protection. */
victor5(machine_config & config)2730 void subsino_state::victor5(machine_config &config)
2731 {
2732 	victor21(config);
2733 
2734 	/* basic machine hardware */
2735 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::victor5_map);
2736 }
2737 
2738 
crsbingo(machine_config & config)2739 void subsino_state::crsbingo(machine_config &config)
2740 {
2741 	/* basic machine hardware */
2742 	HD647180X(config, m_maincpu, XTAL(12'000'000));   /* Unknown CPU and clock */
2743 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::crsbingo_map);
2744 	m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
2745 
2746 	TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2747 
2748 	/* video hardware */
2749 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
2750 	screen.set_refresh_hz(60);
2751 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
2752 	screen.set_size(512, 256);
2753 	screen.set_visarea(0, 512-1, 0+16, 256-16-1);
2754 	screen.set_screen_update(FUNC(subsino_state::screen_update));
2755 	screen.set_palette(m_palette);
2756 
2757 	GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth4);
2758 
2759 	PALETTE(config, m_palette, FUNC(subsino_state::_2proms_palette), 0x100);
2760 
2761 	MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino)
2762 
2763 	/* sound hardware */
2764 	SPEAKER(config, "mono").front_center();
2765 
2766 	YM2413(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);   /* Unknown clock */
2767 }
2768 
2769 
srider(machine_config & config)2770 void subsino_state::srider(machine_config &config)
2771 {
2772 	/* basic machine hardware */
2773 	HD647180X(config, m_maincpu, XTAL(12'000'000));   /* Unknown clock */
2774 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::srider_map);
2775 	m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
2776 
2777 	i8255_device &ppi1(I8255A(config, "ppi1"));
2778 	ppi1.in_pa_callback().set_ioport("SW1");
2779 	ppi1.in_pb_callback().set_ioport("SW2");
2780 	ppi1.in_pc_callback().set_ioport("SW3");
2781 
2782 	i8255_device &ppi2(I8255A(config, "ppi2"));
2783 	ppi2.in_pa_callback().set_ioport("SW4");
2784 	ppi2.in_pb_callback().set_ioport("INA");
2785 	ppi2.in_pc_callback().set_ioport("INB");
2786 
2787 	TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2788 
2789 	/* video hardware */
2790 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
2791 	screen.set_refresh_hz(60);
2792 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
2793 	screen.set_size(512, 256);
2794 	screen.set_visarea(0, 512-1, 0+16, 256-16-1);
2795 	screen.set_screen_update(FUNC(subsino_state::screen_update));
2796 	screen.set_palette(m_palette);
2797 
2798 	GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth4);
2799 
2800 	PALETTE(config, m_palette, FUNC(subsino_state::_3proms_palette), 0x100);
2801 
2802 	MCFG_VIDEO_START_OVERRIDE(subsino_state,subsino)
2803 
2804 	/* sound hardware */
2805 	SPEAKER(config, "mono").front_center();
2806 
2807 	YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
2808 
2809 	OKIM6295(config, "oki", XTAL(4'433'619) / 4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0);  /* Clock frequency & pin 7 not verified */
2810 }
2811 
2812 
sharkpy(machine_config & config)2813 void subsino_state::sharkpy(machine_config &config)
2814 {
2815 	srider(config);
2816 
2817 	/* basic machine hardware */
2818 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::sharkpy_map);
2819 }
2820 
tisub(machine_config & config)2821 void subsino_state::tisub(machine_config &config)
2822 {
2823 	/* basic machine hardware */
2824 	HD647180X(config, m_maincpu, XTAL(12'000'000));   /* Unknown CPU and clock */
2825 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::tisub_map);
2826 	m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
2827 
2828 	i8255_device &ppi1(I8255A(config, "ppi1"));
2829 	ppi1.in_pa_callback().set_ioport("SW1");
2830 	ppi1.in_pb_callback().set_ioport("SW2");
2831 	ppi1.in_pc_callback().set_ioport("SW3");
2832 
2833 	i8255_device &ppi2(I8255A(config, "ppi2"));
2834 	ppi2.in_pa_callback().set_ioport("SW4");
2835 	ppi2.in_pb_callback().set_ioport("INA");
2836 	ppi2.in_pc_callback().set_ioport("INB");
2837 
2838 	TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2839 
2840 	/* video hardware */
2841 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
2842 	screen.set_refresh_hz(60);
2843 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
2844 	screen.set_size(512, 256);
2845 	screen.set_visarea(0, 512-1, 0+16, 256-16-1);
2846 	screen.set_screen_update(FUNC(subsino_state::screen_update_reels));
2847 	screen.set_palette(m_palette);
2848 
2849 	GFXDECODE(config, m_gfxdecode, m_palette, subsino_depth4_reels);
2850 
2851 	PALETTE(config, m_palette, FUNC(subsino_state::_3proms_palette), 0x100);
2852 
2853 	MCFG_VIDEO_START_OVERRIDE(subsino_state, reels)
2854 
2855 	/* sound hardware */
2856 	SPEAKER(config, "mono").front_center();
2857 
2858 	YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);   /* Unknown clock */
2859 }
2860 
stbsub(machine_config & config)2861 void subsino_state::stbsub(machine_config &config)
2862 {
2863 	/* basic machine hardware */
2864 	HD647180X(config, m_maincpu, XTAL(12'000'000));   /* Unknown clock */
2865 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::stbsub_map);
2866 	m_maincpu->set_addrmap(AS_IO, &subsino_state::subsino_iomap);
2867 
2868 	i8255_device &ppi1(I8255A(config, "ppi1"));
2869 	ppi1.in_pa_callback().set_ioport("SW1");
2870 	ppi1.in_pb_callback().set_ioport("SW2");
2871 	ppi1.in_pc_callback().set_ioport("SW3");
2872 
2873 	i8255_device &ppi2(I8255A(config, "ppi2"));
2874 	ppi2.in_pa_callback().set_ioport("SW4");
2875 	ppi2.in_pb_callback().set_ioport("INB");
2876 	ppi2.in_pc_callback().set_ioport("INA");
2877 
2878 	NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
2879 	TICKET_DISPENSER(config, m_hopper, attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW);
2880 
2881 	/* video hardware */
2882 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
2883 	screen.set_refresh_hz(60);
2884 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
2885 	screen.set_size(512, 256);
2886 	screen.set_visarea(0, 512-1, 0+16, 256-16-1);
2887 	screen.set_screen_update(FUNC(subsino_state::screen_update_stbsub_reels));
2888 	screen.set_palette(m_palette);
2889 
2890 	GFXDECODE(config, m_gfxdecode, m_palette, subsino_stbsub);
2891 
2892 	PALETTE(config, m_palette).set_entries(0x100);
2893 	//PALETTE(config, m_palette, FUNC(subsino_state::_3proms_palette), 0x100);
2894 
2895 	ramdac_device &ramdac(RAMDAC(config, "ramdac", 0, m_palette)); // HMC HM86171 VGA 256 colour RAMDAC
2896 	ramdac.set_addrmap(0, &subsino_state::ramdac_map);
2897 
2898 	MCFG_VIDEO_START_OVERRIDE(subsino_state,stbsub)
2899 
2900 	/* sound hardware */
2901 	SPEAKER(config, "mono").front_center();
2902 
2903 	YM3812(config, "ymsnd", XTAL(3'579'545)).add_route(ALL_OUTPUTS, "mono", 1.0);
2904 }
2905 
mtrainnv(machine_config & config)2906 void subsino_state::mtrainnv(machine_config &config)
2907 {
2908 	stbsub(config);
2909 
2910 	/* basic machine hardware */
2911 	m_maincpu->set_addrmap(AS_PROGRAM, &subsino_state::mtrainnv_map);
2912 }
2913 
2914 
2915 /***************************************************************************
2916 *                               ROMs Loading                               *
2917 ***************************************************************************/
2918 
2919 /***************************************************************************
2920 
2921   Victor 5
2922   (C)1991 Subsino / Buffy
2923 
2924   Original Subsino PCB
2925   with CPU brick.
2926 
2927   Dumped by Team Europe.
2928 
2929 ***************************************************************************/
2930 
2931 ROM_START( victor5 )
2932 	ROM_REGION( 0x14000, "maincpu", 0 )
CRC(bc4d6ed6)2933 	ROM_LOAD( "1.u1", 0x10000, 0x4000, CRC(bc4d6ed6) SHA1(6b2087360ea0ae9e48a623934cb2fb973a80f1ec) )
2934 	ROM_CONTINUE(0x0000,0xc000)
2935 
2936 	ROM_REGION( 0x18000, "tilemap", 0 )
2937 	ROM_LOAD( "2.u24", 0x10000, 0x8000, CRC(f7026c74) SHA1(75a72839ad6b349563110ed10ad235958d5c0170) )
2938 	ROM_LOAD( "3.u25", 0x08000, 0x8000, CRC(24ebe112) SHA1(61c32bb76c7600837880f468829dba176f8330f3) )
2939 	ROM_LOAD( "4.u26", 0x00000, 0x8000, CRC(889baf02) SHA1(a2d01f3c09a69bd5b38531b41c53c550a03de229) )
2940 
2941 	ROM_REGION( 0x20000, "oki", ROMREGION_ERASE )
2942 	ROM_LOAD( "6.u49", 0x00000, 0x10000, CRC(73fb4f7b) SHA1(23db0ff42503847c6c7ebb364985430a48de4d8a) )
2943 	ROM_LOAD( "5.u48", 0x10000, 0x10000, CRC(403d5632) SHA1(844e1a4bdf7cc9c1196f79e75a83f03a964feb16) )
2944 
2945 	ROM_REGION( 0x200, "proms", 0 )
2946 	ROM_LOAD( "82s129.u35", 0x000, 0x100, CRC(40094bed) SHA1(b25d96126b3f7bd06bf76dc9958f8669f83abdb7) )
2947 	ROM_LOAD( "82s129.u36", 0x100, 0x100, CRC(9ca021c5) SHA1(6a1d8d4f958d36e4a676dc4f4aee83d637933bc3) )
2948 ROM_END
2949 
2950 /***************************************************************************
2951 
2952 Victor 5
2953 (C)1991 Subsino
2954 
2955 Chips:
2956 
2957 1x unknown big black box
2958 1x M5L8255AP
2959 1x UM3567
2960 1x M6295
2961 1x oscillator 12.000
2962 1x oscillator 4.433619
2963 1x oscillator 3.579545
2964 
2965 ROMs:
2966 
2967 1x M27C512 (1)
2968 3x 27C256 (2,3,4)
2969 
2970 Notes:
2971 
2972 1x 36x2 edge connector (con3)
2973 1x 10x2 edge connector (con4)
2974 1x RS232 9pins connector (con5)
2975 2x batteries
2976 3x 8x2 switches dip
2977 1x pushbutton
2978 
2979 Sticker on PCB reads V552520
2980 
2981 Info by f205v (26/03/2008)
2982 
2983 ***************************************************************************/
2984 
2985 ROM_START( victor5a )
2986 	ROM_REGION( 0x14000, "maincpu", 0 )
2987 	ROM_LOAD( "1.u1", 0x10000, 0x4000, CRC(e3ada2fc) SHA1(eddb460dcb80a29fbbe3ed6c4733c75b892baf52) )
2988 	ROM_CONTINUE(0x0000,0xc000)
2989 
2990 	ROM_REGION( 0x18000, "tilemap", 0 )
2991 	ROM_LOAD( "2.u24", 0x10000, 0x8000, CRC(1229e951) SHA1(1e548625bb60e2d6f52a376a0dea9e5709f94135) )
2992 	ROM_LOAD( "3.u23", 0x08000, 0x8000, CRC(2d89bbf1) SHA1(d7fda0174a835e88b330dfd09bdb604bfe4c2e44) )
2993 	ROM_LOAD( "4.u22", 0x00000, 0x8000, CRC(ecf840a1) SHA1(9ecf522afb23e3557d37effc3c8568e8a14dad1a) )
2994 
2995 	ROM_REGION( 0x20000, "oki", ROMREGION_ERASE )
2996 	ROM_LOAD( "6.u49", 0x00000, 0x10000, CRC(73fb4f7b) SHA1(23db0ff42503847c6c7ebb364985430a48de4d8a) )
2997 	ROM_LOAD( "5.u48", 0x10000, 0x10000, CRC(403d5632) SHA1(844e1a4bdf7cc9c1196f79e75a83f03a964feb16) )
2998 
2999 	ROM_REGION( 0x200, "proms", 0 )
3000 	ROM_LOAD( "82s129.u35", 0x000, 0x100, CRC(40094bed) SHA1(b25d96126b3f7bd06bf76dc9958f8669f83abdb7) )
3001 	ROM_LOAD( "82s129.u36", 0x100, 0x100, CRC(9ca021c5) SHA1(6a1d8d4f958d36e4a676dc4f4aee83d637933bc3) )
3002 ROM_END
3003 
3004 
3005 /***************************************************************************
3006 
3007 Victor 21
3008 (C)1990 Subsino
3009 
3010 Chips:
3011 
3012 1x unknown big black box
3013 1x M5L8255AP
3014 1x UM3567
3015 1x M6295
3016 1x oscillator 12.000
3017 1x oscillator 4.433619
3018 1x oscillator 3.579545
3019 
3020 ROMs:
3021 
3022 1x M27C512 (1)
3023 3x 27C256 (2,3,4)
3024 
3025 Other:
3026 
3027 1x 36x2 edge connector (con3)
3028 1x 10x2 edge connector (con4)
3029 1x RS232 9pins connector (con5)
3030 2x batteries
3031 3x 8 switches dips
3032 1x pushbutton
3033 
3034 PCB layout is identical to "Victor 5"
3035 Sticker on PCB reads V12040
3036 
3037 Info by f205v, Corrado Tomaselli (20/04/2008)
3038 
3039 ***************************************************************************/
3040 
3041 ROM_START( victor21 )
3042 	ROM_REGION( 0x14000, "maincpu", 0 )
3043 	ROM_LOAD( "1.u1", 0x10000, 0x4000, CRC(43999b2d) SHA1(7ce26fd332ffe35fd826a1a6166b228d4bc370b8) )
3044 	ROM_CONTINUE(     0x00000, 0xc000)
3045 
3046 	ROM_REGION( 0x18000, "tilemap", 0 )
3047 	ROM_LOAD( "2.u24", 0x10000, 0x8000, CRC(f1181b93) SHA1(53cd4d2ce13973495b51d911a4745a69a9784983) )
3048 	ROM_LOAD( "3.u25", 0x08000, 0x8000, CRC(437abb27) SHA1(bd3790807d60a41d58e07f60fb990553076d6e96) )
3049 	ROM_LOAD( "4.u26", 0x00000, 0x8000, CRC(e2f66eee) SHA1(ece924fe626f21fd7d31faabf19225d80e2bcfd3) )
3050 
3051 	ROM_REGION( 0x20000, "oki", ROMREGION_ERASE )
3052 	ROM_LOAD( "6.u49", 0x00000, 0x10000, CRC(4153711c) SHA1(11b4f5f8ec3c93194d1d5b78ae35ca79d8f66a16) )
3053 	ROM_LOAD( "5.u48", 0x10000, 0x10000, CRC(3d451de6) SHA1(cbb22679fc9ce27e2ca90aa8035bf1b1c353c69e) )
3054 
3055 	ROM_REGION( 0x200, "proms", 0 )
3056 	ROM_LOAD( "82s129.u35", 0x000, 0x100, CRC(40094bed) SHA1(b25d96126b3f7bd06bf76dc9958f8669f83abdb7) )
3057 	ROM_LOAD( "82s129.u36", 0x100, 0x100, CRC(9ca021c5) SHA1(6a1d8d4f958d36e4a676dc4f4aee83d637933bc3) )
3058 ROM_END
3059 
3060 
3061 /***************************************************************************
3062 
3063   Treasure Island
3064   -- this has an extra layer for the reels, exactly the same as goldstar.c
3065 
3066 ***************************************************************************/
3067 
3068 ROM_START( tisub )
3069 	ROM_REGION( 0x18000, "maincpu", 0 )
3070 	ROM_LOAD( "rom_1.bin", 0x10000, 0x4000,  CRC(ed3b4a69) SHA1(c57985e8d19b2b495fc768e52b83cbbd75f027ad) )
3071 	ROM_CONTINUE(0x0000,0xc000)
3072 	ROM_COPY( "maincpu", 0x09000, 0x14000, 0x1000)
3073 
3074 	ROM_REGION( 0x40000, "tilemap", 0 )
3075 	ROM_LOAD( "rom_6.bin", 0x00000, 0x10000, CRC(c2c226df) SHA1(39762b390d6b271c3252342e843a181dd152a0cc) )
3076 	ROM_LOAD( "rom_4.bin", 0x10000, 0x10000, CRC(37724fda) SHA1(084653662c9f77afef2a77c607e1fb093aaf3adf) )
3077 	ROM_LOAD( "rom_5.bin", 0x20000, 0x10000, CRC(3d18acd8) SHA1(179545c18ad880097366c07c8e2fa821701a2758) )
3078 	ROM_LOAD( "rom_7.bin", 0x30000, 0x10000, CRC(9d7d99d8) SHA1(a3df5e023c2102028a5186101dc0b19d91e8965e) )
3079 
3080 	ROM_REGION( 0x8000, "reels", 0 )
3081 	ROM_LOAD( "rom_2.bin", 0x0000, 0x4000, CRC(836c756d) SHA1(fca1d5b600861eea30ed73ee13be735e7d167097) )
3082 	ROM_IGNORE(0x4000)
3083 	ROM_LOAD( "rom_3.bin", 0x4000, 0x4000, CRC(2ad82222) SHA1(68780b9528393b28eaa2f90501efb5a8c39bed63) )
3084 	ROM_IGNORE(0x4000)
3085 
3086 	ROM_REGION( 0x300, "proms", 0 )
3087 	ROM_LOAD( "n82s129n.u39", 0x000, 0x100, CRC(971843e5) SHA1(4cb5fc1085503dae2f2f02eb49cca051ac84b890) )
3088 	ROM_LOAD( "n82s129n.u40", 0x100, 0x100, CRC(b4bd872c) SHA1(c0f9fe68186636d6d6bc6f81415459631cf38edd) )
3089 	ROM_LOAD( "n82s129n.u41", 0x200, 0x100, CRC(db99f6da) SHA1(d281a2fa06f1890ef0b1c4d099e6828827db14fd) )
3090 ROM_END
3091 
3092 /*
3093 
3094   Treasure Island (Alt version)...
3095 
3096   ROMs 4 & 5 are missing. ROMs 6 & 7 are identical to parent set.
3097   So... Assuming that 4 & 5 should have the same bitplanes.
3098 
3099   ROM 3 is bad, but ROM 2 only has the first byte different,
3100   getting different values in each dump. The rest remains identical.
3101 
3102   Program ROM is different.
3103 
3104   Color PROMs are from this set.
3105 
3106 */
3107 
3108 ROM_START( tisuba )
3109 	ROM_REGION( 0x18000, "maincpu", 0 )
3110 	ROM_LOAD( "01.bin", 0x10000, 0x4000,  CRC(9967dd38) SHA1(63b74bc0c0952114b7321e8f399bd64dc293aade) )
3111 	ROM_CONTINUE(0x0000,0xc000)
3112 	ROM_COPY( "maincpu", 0x09000, 0x14000, 0x1000)
3113 
3114 	ROM_REGION( 0x40000, "tilemap", 0 )
3115 	ROM_LOAD( "rom_6.bin", 0x00000, 0x10000, CRC(c2c226df) SHA1(39762b390d6b271c3252342e843a181dd152a0cc) )
3116 	ROM_LOAD( "rom_4.bin", 0x10000, 0x10000, CRC(37724fda) SHA1(084653662c9f77afef2a77c607e1fb093aaf3adf) )
3117 	ROM_LOAD( "rom_5.bin", 0x20000, 0x10000, CRC(3d18acd8) SHA1(179545c18ad880097366c07c8e2fa821701a2758) )
3118 	ROM_LOAD( "rom_7.bin", 0x30000, 0x10000, CRC(9d7d99d8) SHA1(a3df5e023c2102028a5186101dc0b19d91e8965e) )
3119 
3120 	ROM_REGION( 0x8000, "reels", 0 )
3121 	ROM_LOAD( "rom_2.bin", 0x0000, 0x4000, CRC(836c756d) SHA1(fca1d5b600861eea30ed73ee13be735e7d167097) )
3122 	ROM_IGNORE(0x4000)
3123 	ROM_LOAD( "rom_3.bin", 0x4000, 0x4000, CRC(2ad82222) SHA1(68780b9528393b28eaa2f90501efb5a8c39bed63) )
3124 	ROM_IGNORE(0x4000)
3125 
3126 	ROM_REGION( 0x300, "proms", 0 )
3127 	ROM_LOAD( "n82s129n.u39", 0x000, 0x100, CRC(971843e5) SHA1(4cb5fc1085503dae2f2f02eb49cca051ac84b890) )
3128 	ROM_LOAD( "n82s129n.u40", 0x100, 0x100, CRC(b4bd872c) SHA1(c0f9fe68186636d6d6bc6f81415459631cf38edd) )
3129 	ROM_LOAD( "n82s129n.u41", 0x200, 0x100, CRC(db99f6da) SHA1(d281a2fa06f1890ef0b1c4d099e6828827db14fd) )
3130 ROM_END
3131 
3132 
3133 /***************************************************************************
3134 
3135 Cross Bingo
3136 (C)1991 Subsino
3137 
3138 Chips:
3139 
3140 1x big unknown epoxy block (main)
3141 1x unknown Subsino SS9101-173001 (DIP42)
3142 1x unknown blank quad chip (QFP68)
3143 1x UM3567 (sound)
3144 3x ULN2003AN (sound)
3145 1x LM324N (sound)
3146 1x oscillator 12.000
3147 1x oscillator 3.579545
3148 
3149 ROMs:
3150 
3151 3x M27512
3152 2x PROM N82S129N
3153 2x PLD 18CV8PC (read protected)
3154 
3155 Other:
3156 
3157 1x 22x2 edge connector
3158 1x 11x2 edge connector
3159 1x 10x2 edge connector (payout system)
3160 1x RS232 connector
3161 1x trimmer (volume)
3162 1x pushbutton
3163 4x 8x2 switches dip
3164 1x battery
3165 
3166 Info by f205v (14/12/2008)
3167 
3168 ***************************************************************************/
3169 
3170 ROM_START( crsbingo )
3171 	ROM_REGION( 0x14000, "maincpu", 0 )
3172 	ROM_LOAD( "1.u36", 0x10000, 0x4000, CRC(c5aff4eb) SHA1(74f06d7735975657fca9be5fff9e7d53f38fcd02) )
3173 	ROM_CONTINUE(0x0000,0xc000)
3174 
3175 	ROM_REGION( 0x20000, "tilemap", 0 )
3176 	ROM_LOAD( "2.u4",  0x00000, 0x10000, CRC(ce527722) SHA1(f3759cefab902259eb25f8d4be2fcafc1afd90b9) )
3177 	ROM_LOAD( "3.u15", 0x10000, 0x10000, CRC(23785451) SHA1(8574e59aa816a644ff4b102bd5754ef1284deea0) )
3178 
3179 	ROM_REGION( 0x200, "proms", 0 )
3180 	ROM_LOAD( "82s129.u13", 0x000, 0x100, CRC(89c06859) SHA1(b98d5335f36ea3842086677aca47b605030d442f) )
3181 	ROM_LOAD( "82s129.u14", 0x100, 0x100, CRC(eaddb54f) SHA1(51fbf31e910a93315204a892d10bcf982a6ed099) )
3182 
3183 	ROM_REGION( 0x40000, "oki", ROMREGION_ERASE00 )
3184 
3185 	ROM_REGION( 0x155 * 2, "plds", 0 )
3186 	ROM_LOAD( "18cv8.u22", 0x000, 0x155, NO_DUMP )
3187 	ROM_LOAD( "18cv8.u29", 0x155, 0x155, NO_DUMP )
3188 ROM_END
3189 
3190 
3191 /***************************************************************************
3192 
3193 Shark Party
3194 (C)1993 Subsino
3195 
3196 Chips:
3197 
3198 1x unknown big black box
3199 1x custom SUBSINO_SS9101_409235I (DIL42)(u48)
3200 2x KD89C55 (u49,u50)
3201 1x K-665 (u55)(equivalent to M6295)
3202 1x K-664 (u57)(equivalent to YM3014)
3203 1x K-666 (u52)(equivalent to YM3812)
3204 3x 45580D (amplifier)(u58,u59,u60)
3205 2x custom SUBSINO_SS9100_3512204V (SMT 44pins)(u10,u19)
3206 1x oscillator 4.433619MHz
3207 1x oscillator 12.000MHz
3208 
3209 ROMs:
3210 
3211 1x 27C1001 (u54)
3212 1x 27C512 (u18)
3213 2x 27C010 (u16,u17)
3214 3x N82S129AN (u11,u12,u13)
3215 4x GAL16V8B (u2,u37,u45,u46)(not dumped)
3216 2x TIBPAL16L8 (u43,u44)(not dumped)
3217 
3218 Other:
3219 
3220 1x 36x2 edge connector (con5)
3221 1x 10x2 edge connector (con4)
3222 1x battery
3223 1x trimmer (volume)
3224 1x pushbutton (sw5)
3225 4x 8x2 switches dip (sw1,sw2,sw3,sw4)
3226 
3227 Info by f205v (25/03/2008)
3228 
3229 ***************************************************************************/
3230 
3231 ROM_START( sharkpy )
3232 	ROM_REGION( 0x14000, "maincpu", 0 )
3233 	ROM_LOAD( "shark_n.1.u18", 0x0a000, 0x6000, CRC(25aeac2f) SHA1(d94e3e5cfffd150ac48e1463493a8323f42e7a89) ) // is this mapped correctly? - used during gameplay?
3234 	ROM_CONTINUE(0x0000, 0xa000)
3235 
3236 	ROM_REGION( 0x40000, "tilemap", 0 )
3237 	ROM_LOAD( "shark_n.3.u16", 0x00000, 0x08000, CRC(a7a715ce) SHA1(38b93e05377d9cb816688f5070e847480f195c6b) )
3238 	ROM_CONTINUE(              0x10000, 0x08000 )
3239 	ROM_CONTINUE(              0x08000, 0x08000 )
3240 	ROM_CONTINUE(              0x18000, 0x08000 )
3241 	ROM_LOAD( "shark_n.2.u17", 0x20000, 0x08000, CRC(c27f3d0a) SHA1(77c8eb0322c5b9c89777cb080d26ecf9abe01ae7) )
3242 	ROM_CONTINUE(              0x30000, 0x08000 )
3243 	ROM_CONTINUE(              0x28000, 0x08000 )
3244 	ROM_CONTINUE(              0x38000, 0x08000 )
3245 
3246 	ROM_REGION( 0x40000, "oki", 0 )
3247 	ROM_LOAD( "shark=ii=-italy_4_ver1.0.u54", 0x00000, 0x20000, CRC(9f384c59) SHA1(d2b087b8370b40b6f0944de661ea6aebaebea06f) )
3248 
3249 	ROM_REGION( 0x300, "proms", 0 )
3250 	ROM_LOAD( "n82s129an.u11", 0x000, 0x100, CRC(daf3657a) SHA1(93005938e2d60d54e7bbf1e234bba3802ee1af21) )
3251 	ROM_LOAD( "n82s129an.u12", 0x100, 0x100, CRC(5a7a25ed) SHA1(eebd679195e6ea50f64f3c46cd06ee21a1550491) )
3252 	ROM_LOAD( "n82s129an.u13", 0x200, 0x100, CRC(0ef5f218) SHA1(a02cf266661385aa078563bd83240d36549c1cf0) )
3253 ROM_END
3254 
3255 /***************************************************************************
3256 
3257 Shark Party (alt)
3258 (C)1993 Subsino
3259 
3260 Chips:
3261 
3262 1x unknown big black box
3263 1x custom SUBSINO_SS9101_409235I (DIL42)(u48)
3264 2x KD89C55 (u49,u50)
3265 1x K-665 (u55)(equivalent to M6295)
3266 1x K-664 (u57)(equivalent to YM3014)
3267 1x SM64JBCK (u52)(equivalent to YM3812)
3268 3x 45580D (amplifier)(u58,u59,u60)
3269 2x custom SUBSINO_SS9100_3512201V (SMT 44pins)(u10,u19)
3270 1x oscillator 4.433619MHz
3271 1x oscillator 12.000MHz
3272 
3273 ROMs:
3274 
3275 2x 27C1001 (u54,u17)
3276 1x 27C512 (u18)
3277 1x 27C010 (u16)
3278 3x N82S129AN (u11,u12,u13)
3279 4x GAL16V8B (u2,u37,u45,u46)(not dumped)
3280 2x TIBPAL16L8 (u43,u44)(not dumped)
3281 
3282 Other:
3283 
3284 1x 36x2 edge connector (con5)
3285 1x 10x2 edge connector (con4)
3286 1x battery
3287 1x trimmer (volume)
3288 1x pushbutton (sw5)
3289 4x 8x2 switches dip (sw1,sw2,sw3,sw4)
3290 
3291 Info by f205v (25/03/2008)
3292 
3293 ***************************************************************************/
3294 
3295 ROM_START( sharkpya )
3296 	ROM_REGION( 0x14000, "maincpu", 0 )
3297 	ROM_LOAD( "shark1.6.u18", 0x0a000, 0x6000, CRC(365312a0) SHA1(de8370b1f35e8d071185d2e5f2fbd2fdf74c55ac) )
3298 	ROM_CONTINUE(0x0000, 0xa000)
3299 
3300 	ROM_REGION( 0x40000, "tilemap", 0 )
3301 	ROM_LOAD( "shark_n.3.u16", 0x00000, 0x08000, CRC(a7a715ce) SHA1(38b93e05377d9cb816688f5070e847480f195c6b) )
3302 	ROM_CONTINUE(              0x10000, 0x08000 )
3303 	ROM_CONTINUE(              0x08000, 0x08000 )
3304 	ROM_CONTINUE(              0x18000, 0x08000 )
3305 	ROM_LOAD( "shark_n.2.u17", 0x20000, 0x08000, CRC(c27f3d0a) SHA1(77c8eb0322c5b9c89777cb080d26ecf9abe01ae7) )
3306 	ROM_CONTINUE(              0x30000, 0x08000 )
3307 	ROM_CONTINUE(              0x28000, 0x08000 )
3308 	ROM_CONTINUE(              0x38000, 0x08000 )
3309 
3310 	ROM_REGION( 0x40000, "oki", 0 )
3311 	ROM_LOAD( "shark=ii=-italy_4_ver1.0.u54", 0x00000, 0x20000, CRC(9f384c59) SHA1(d2b087b8370b40b6f0944de661ea6aebaebea06f) )
3312 
3313 	ROM_REGION( 0x300, "proms", 0 )
3314 	ROM_LOAD( "sn82s129an.u11", 0x000, 0x100, CRC(daf3657a) SHA1(93005938e2d60d54e7bbf1e234bba3802ee1af21) )
3315 	ROM_LOAD( "sn82s129an.u12", 0x100, 0x100, CRC(5a7a25ed) SHA1(eebd679195e6ea50f64f3c46cd06ee21a1550491) )
3316 	ROM_LOAD( "sn82s129an.u13", 0x200, 0x100, CRC(0ef5f218) SHA1(a02cf266661385aa078563bd83240d36549c1cf0) )
3317 ROM_END
3318 
3319 /***************************************************************************
3320 
3321   Shark Party (English, Alpha license)
3322 
3323   - Different inputs system.
3324   - Different DIP Switches.
3325   - Different Button-Lamps outputs.
3326 
3327 ***************************************************************************/
3328 
3329 ROM_START( sharkpye )
3330 	ROM_REGION( 0x14000, "maincpu", 0 )
3331 	ROM_LOAD( "sharkpye.u18", 0x0a000, 0x6000, CRC(12473814) SHA1(9c24ed41781aefee0161add912e730ba0d4f4d3e) )
3332 	ROM_CONTINUE(0x0000, 0xa000)
3333 
3334 	ROM_REGION( 0x40000, "tilemap", 0 )
3335 	ROM_LOAD( "sharkpye.u16", 0x00000, 0x08000, CRC(90862185) SHA1(9d632bfa707d3449a87d7f370eb2b5c36e61aadd) )
3336 	ROM_CONTINUE(             0x10000, 0x08000 )
3337 	ROM_CONTINUE(             0x08000, 0x08000 )
3338 	ROM_CONTINUE(             0x18000, 0x08000 )
3339 	ROM_LOAD( "sharkpye.u17", 0x20000, 0x08000, CRC(b7b6119a) SHA1(b61c77d2170d96fcb39ea31c4136387441b9037f) )
3340 	ROM_CONTINUE(             0x30000, 0x08000 )
3341 	ROM_CONTINUE(             0x28000, 0x08000 )
3342 	ROM_CONTINUE(             0x38000, 0x08000 )
3343 
3344 	ROM_REGION( 0x40000, "oki", 0 )
3345 	ROM_LOAD( "sharkpye.u54", 0x00000, 0x20000, CRC(9f384c59) SHA1(d2b087b8370b40b6f0944de661ea6aebaebea06f) )
3346 
3347 	ROM_REGION( 0x300, "proms", 0 )
3348 	ROM_LOAD( "n82s129an.u11", 0x000, 0x100, CRC(daf3657a) SHA1(93005938e2d60d54e7bbf1e234bba3802ee1af21) )
3349 	ROM_LOAD( "n82s129an.u12", 0x100, 0x100, CRC(5a7a25ed) SHA1(eebd679195e6ea50f64f3c46cd06ee21a1550491) )
3350 	ROM_LOAD( "n82s129an.u13", 0x200, 0x100, CRC(0ef5f218) SHA1(a02cf266661385aa078563bd83240d36549c1cf0) )
3351 ROM_END
3352 
3353 
3354 /****************************************************************************
3355 
3356   Victor 6 (Subsino/Alpha)
3357 
3358   SET        MAINRATE  MAXBET
3359   ----------------------------
3360   victor6    87-101%    50
3361   victor6a   94-101%    80
3362   victor6b   94-101%    80 (no 10 option)
3363 
3364 
3365 ****************************************************************************/
3366 
3367 ROM_START( victor6 )
3368 	ROM_REGION( 0x14000, "maincpu", 0 )
3369 	ROM_LOAD( "victor_6ii-rom_1.ver2.3n.u18", 0x0a000, 0x6000, CRC(d496ecbd) SHA1(1f982b42bc46c09298916a6cb2db0b38c6451ec3) )
3370 	ROM_CONTINUE(0x0000, 0xa000)
3371 
3372 	ROM_REGION( 0x40000, "tilemap", 0 )
3373 	ROM_LOAD( "victor_6ii-rom_3_ver1.0.u16", 0x00000, 0x08000, CRC(4e96c30a) SHA1(4989b10a52ba61459864aa44be9ebafe68b4d231) )
3374 	ROM_CONTINUE(             0x10000, 0x08000 )
3375 	ROM_CONTINUE(             0x08000, 0x08000 )
3376 	ROM_CONTINUE(             0x18000, 0x08000 )
3377 	ROM_LOAD( "victor_6ii-rom_2_ver1.0.u17", 0x20000, 0x08000, CRC(4630a1da) SHA1(a14df7d7047350a7b1ae485570869d9fa50a2f6d) )
3378 	ROM_CONTINUE(             0x30000, 0x08000 )
3379 	ROM_CONTINUE(             0x28000, 0x08000 )
3380 	ROM_CONTINUE(             0x38000, 0x08000 )
3381 
3382 	ROM_REGION( 0x40000, "oki", 0 )
3383 	ROM_LOAD( "victor_6ii-rom_4_ver1.0.u54", 0x00000, 0x20000, CRC(ed2a6ff8) SHA1(b776b85a350cd0176ffa04248084475d07ac5bfa) )
3384 
3385 	ROM_REGION( 0x300, "proms", 0 )
3386 	ROM_LOAD( "n82s129.u11", 0x000, 0x100, CRC(e8d7c8c3) SHA1(26ea907e45e70269956f842817b2d827cbc647ec) )
3387 	ROM_LOAD( "n82s129.u12", 0x100, 0x100, CRC(4cee9225) SHA1(bb784ff636f90de3965272021f610abb41e0d40d) )
3388 	ROM_LOAD( "n82s129.u13", 0x200, 0x100, CRC(b135c3eb) SHA1(54b04c5c4eb3a769123f2630740f0575e2ea6ff2) )
3389 ROM_END
3390 
3391 ROM_START( victor6a )
3392 	ROM_REGION( 0x14000, "maincpu", 0 )
3393 	ROM_LOAD( "victor_6ii_alpha_1_ver2.3.u18", 0x0a000, 0x6000, CRC(2a3eaecd) SHA1(18bf2dfec8cd5690d6465f750093942afda66475) )
3394 	ROM_CONTINUE(0x0000, 0xa000)
3395 
3396 	ROM_REGION( 0x40000, "tilemap", 0 )
3397 	ROM_LOAD( "victor_6ii-rom_3_ver1.0.u16", 0x00000, 0x08000, CRC(4e96c30a) SHA1(4989b10a52ba61459864aa44be9ebafe68b4d231) )
3398 	ROM_CONTINUE(             0x10000, 0x08000 )
3399 	ROM_CONTINUE(             0x08000, 0x08000 )
3400 	ROM_CONTINUE(             0x18000, 0x08000 )
3401 	ROM_LOAD( "victor_6ii-rom_2_ver1.0.u17", 0x20000, 0x08000, CRC(4630a1da) SHA1(a14df7d7047350a7b1ae485570869d9fa50a2f6d) )
3402 	ROM_CONTINUE(             0x30000, 0x08000 )
3403 	ROM_CONTINUE(             0x28000, 0x08000 )
3404 	ROM_CONTINUE(             0x38000, 0x08000 )
3405 
3406 	ROM_REGION( 0x40000, "oki", 0 )
3407 	ROM_LOAD( "victor_6ii-rom_4_ver1.0.u54", 0x00000, 0x20000, CRC(ed2a6ff8) SHA1(b776b85a350cd0176ffa04248084475d07ac5bfa) )
3408 
3409 	ROM_REGION( 0x300, "proms", 0 )
3410 	ROM_LOAD( "n82s129.u11", 0x000, 0x100, CRC(e8d7c8c3) SHA1(26ea907e45e70269956f842817b2d827cbc647ec) )
3411 	ROM_LOAD( "n82s129.u12", 0x100, 0x100, CRC(4cee9225) SHA1(bb784ff636f90de3965272021f610abb41e0d40d) )
3412 	ROM_LOAD( "n82s129.u13", 0x200, 0x100, CRC(b135c3eb) SHA1(54b04c5c4eb3a769123f2630740f0575e2ea6ff2) )
3413 ROM_END
3414 
3415 ROM_START( victor6b )
3416 	ROM_REGION( 0x14000, "maincpu", 0 )
3417 	ROM_LOAD( "victor_6ii_rom_1_ver1.2.u18", 0x0a000, 0x6000, CRC(309876fc) SHA1(305c4cf347b512607e2c58a580075a34b48bedd5) )
3418 	ROM_CONTINUE(0x0000, 0xa000)
3419 
3420 	ROM_REGION( 0x40000, "tilemap", 0 )
3421 	ROM_LOAD( "victor_6ii-rom_3_ver1.0.u16", 0x00000, 0x08000, CRC(4e96c30a) SHA1(4989b10a52ba61459864aa44be9ebafe68b4d231) )
3422 	ROM_CONTINUE(             0x10000, 0x08000 )
3423 	ROM_CONTINUE(             0x08000, 0x08000 )
3424 	ROM_CONTINUE(             0x18000, 0x08000 )
3425 	ROM_LOAD( "victor_6ii-rom_2_ver1.0.u17", 0x20000, 0x08000, CRC(4630a1da) SHA1(a14df7d7047350a7b1ae485570869d9fa50a2f6d) )
3426 	ROM_CONTINUE(             0x30000, 0x08000 )
3427 	ROM_CONTINUE(             0x28000, 0x08000 )
3428 	ROM_CONTINUE(             0x38000, 0x08000 )
3429 
3430 	ROM_REGION( 0x40000, "oki", 0 )
3431 	ROM_LOAD( "victor_6ii-rom_4_ver1.0.u54", 0x00000, 0x20000, CRC(ed2a6ff8) SHA1(b776b85a350cd0176ffa04248084475d07ac5bfa) )
3432 
3433 	ROM_REGION( 0x300, "proms", 0 )
3434 	ROM_LOAD( "n82s129.u11", 0x000, 0x100, CRC(e8d7c8c3) SHA1(26ea907e45e70269956f842817b2d827cbc647ec) )
3435 	ROM_LOAD( "n82s129.u12", 0x100, 0x100, CRC(4cee9225) SHA1(bb784ff636f90de3965272021f610abb41e0d40d) )
3436 	ROM_LOAD( "n82s129.u13", 0x200, 0x100, CRC(b135c3eb) SHA1(54b04c5c4eb3a769123f2630740f0575e2ea6ff2) )
3437 ROM_END
3438 
3439 
3440 /***************************************************************************
3441 
3442 Super Rider (Italy Ver 1.6)
3443 (C)1996 Subsino
3444 
3445 Chips:
3446 
3447 2x custom QFP44 label SUBSINOSS9100
3448 1x custom DIP42 label SUBSINOSS9101
3449 2x FILE KD89C55A (equivalent to 8255)
3450 1x custom QFP44 label M28 (sound)(equivalent to M6295)
3451 1x custom DIP24 label K-666 (sound)(equivalent to YM3812)
3452 1x custom DIP8 label K-664 (sound)(equivalent to YM3014)
3453 1x oscillator 12.000MHz (main)
3454 1x oscillator 4.43361MHz (sound)
3455 
3456 ROMs:
3457 
3458 1x TMS27C512 (1)
3459 2x TMS27C010A (2,3)(main)
3460 1x TMS27C010A (4) (sound)
3461 3x PROM N82S129AN
3462 
3463 Other:
3464 
3465 1x 10x2 edge connector (looks like a coin payout)
3466 1x 36x2 edge connector
3467 1x battery 3.6V NiCd
3468 1x pushbutton (sw5)
3469 4x 8 switches dips (sw1-4)
3470 1x trimmer (volume)
3471 1x BIG BLACK BOX (on top of the box there is a small door closing a button-battery; for sure there is more in it, but I do not know how to open it / tore it apart)
3472 
3473 This game is the official Italian version of "Super Rider" by Subsino
3474 
3475 Info by f205v (29/12/2005)
3476 
3477 ***************************************************************************/
3478 
3479 ROM_START( smoto16 )
3480 	ROM_REGION( 0x10000, "maincpu", 0 )
3481 	ROM_LOAD( "rideritaly_1ver1.6.u18", 0x0000, 0x10000, CRC(c7c0c3e8) SHA1(5dc80bc775f370653135a7b3ea9c8d3c92263804) )
3482 
3483 	ROM_REGION( 0x40000, "tilemap", 0 )
3484 	ROM_LOAD( "rideritaly_3ver1.6.u16", 0x00000, 0x08000, CRC(998a8feb) SHA1(27f08b23f2dd3736f4f12f489d9a3aa096c99e8a) )
3485 	ROM_CONTINUE(                       0x10000, 0x08000 )
3486 	ROM_CONTINUE(                       0x08000, 0x08000 )
3487 	ROM_CONTINUE(                       0x18000, 0x08000 )
3488 	ROM_LOAD( "rideritaly_2ver1.6.u17", 0x20000, 0x08000, CRC(bdf9bf26) SHA1(49e7c0b99fec06dca5816eb7e38aed025efcaaa7) )
3489 	ROM_CONTINUE(                       0x30000, 0x08000 )
3490 	ROM_CONTINUE(                       0x28000, 0x08000 )
3491 	ROM_CONTINUE(                       0x38000, 0x08000 )
3492 
3493 	ROM_REGION( 0x40000, "oki", 0 )
3494 	ROM_LOAD( "rideritaly_4ver1.6.u54", 0x00000, 0x20000, CRC(df828563) SHA1(f39324c5c37486ed9512e0ff934394556dd182ae) )
3495 
3496 	ROM_REGION( 0x300, "proms", 0 )
3497 	ROM_LOAD( "prom-n82s129an.u11", 0x000, 0x100, CRC(e17730a6) SHA1(50c730b24e1d3d205c70f9381e4136e2ba6e499a) )
3498 	ROM_LOAD( "prom-n82s129an.u12", 0x100, 0x100, CRC(df848861) SHA1(f7e382f8b56d6b9f2af6c7a48a19e3631a64bb6d) )
3499 	ROM_LOAD( "prom-n82s129an.u13", 0x200, 0x100, CRC(9cb4a5c0) SHA1(0e0a368329c6d1cb685ed655d699a4894988fdb1) )
3500 ROM_END
3501 
3502 void subsino_state::init_smoto16()
3503 {
3504 	uint8_t *rom = memregion( "maincpu" )->base();
3505 	rom[0x12d0] = 0x20; // "ERROR 951010"
3506 }
3507 
3508 /***************************************************************************
3509 
3510 Super Rider (Italy Ver 2.0)
3511 (C)1997 Subsino
3512 
3513 Chips:
3514 
3515 2x custom QFP44 label SUBSINOSS9100
3516 1x custom DIP42 label SUBSINOSS9101
3517 2x D8255AC-2 (equivalent to 8255)
3518 1x custom QFP44 label K-665 (sound)(equivalent to OKI M6295)
3519 1x custom DIP24 label SM64 (sound)(equivalent to YM3812)
3520 1x custom DIP8 label K-664 (sound)(equivalent to YM3014)
3521 1x oscillator 12.000MHz (main)
3522 1x oscillator 4.433619MHz (sound)
3523 
3524 ROMs:
3525 
3526 1x 27C512 (1)
3527 2x M27C1001 (2,3)(main)
3528 1x M27C1001 (4) (sound)
3529 3x PROM N82S129AN
3530 3x PALCE16V8H (not dumped)
3531 2x TIBPAL16L8B (not dumped)
3532 1x GAL16V8B (not dumped)
3533 
3534 Other:
3535 
3536 1x 10x2 edge connector (looks like a coin payout)
3537 1x 36x2 edge connector
3538 1x battery 3.6V NiCd
3539 4x 8 switches dips (sw1-4)
3540 1x trimmer (volume)
3541 1x BIG BLACK BOX (on top of the box there is a small door closing a button-battery; for sure there is more in it, but I do not know how to open it / tore it apart)
3542 
3543 This game is the official Italian version of "Super Rider" by Subsino
3544 
3545 Info by f205v, Corrado Tomaselli (20/04/2008)
3546 
3547 ***************************************************************************/
3548 
3549 ROM_START( smoto20 )
3550 	ROM_REGION( 0x10000, "maincpu", 0 )
3551 	ROM_LOAD( "italyv2.0-25.u18", 0x00000, 0x10000, CRC(91abc76e) SHA1(b0eb3afda1d94111056559017802b16b2e72a9a5) )
3552 
3553 	ROM_REGION( 0x40000, "tilemap", 0 )
3554 	ROM_LOAD( "3.u16", 0x00000, 0x08000, CRC(44b44385) SHA1(27c2865e52ab67aa8e077e8e1202cbf2addc0dfc) )
3555 	ROM_CONTINUE(      0x10000, 0x08000 )
3556 	ROM_CONTINUE(      0x08000, 0x08000 )
3557 	ROM_CONTINUE(      0x18000, 0x08000 )
3558 	ROM_LOAD( "2.u17", 0x20000, 0x08000, CRC(380fc964) SHA1(4a5076d90cb94e2ffeec7534ce64d4cdb320f374) )
3559 	ROM_CONTINUE(      0x30000, 0x08000 )
3560 	ROM_CONTINUE(      0x28000, 0x08000 )
3561 	ROM_CONTINUE(      0x38000, 0x08000 )
3562 
3563 	ROM_REGION( 0x40000, "oki", 0 )
CRC(df828563)3564 	ROM_LOAD( "rom4ver1.0.u54", 0x00000, 0x20000, CRC(df828563) SHA1(f39324c5c37486ed9512e0ff934394556dd182ae) )
3565 
3566 	ROM_REGION( 0x300, "proms", 0 )
3567 	ROM_LOAD( "82s129.u11", 0x000, 0x100, CRC(e17730a6) SHA1(50c730b24e1d3d205c70f9381e4136e2ba6e499a) )
3568 	ROM_LOAD( "82s129.u12", 0x100, 0x100, CRC(df848861) SHA1(f7e382f8b56d6b9f2af6c7a48a19e3631a64bb6d) )
3569 	ROM_LOAD( "82s129.u13", 0x200, 0x100, CRC(9cb4a5c0) SHA1(0e0a368329c6d1cb685ed655d699a4894988fdb1) )
3570 ROM_END
3571 
3572 
3573 /***************************************************************************
3574 
3575    Treasure Bonus
3576    (C) American Alpha
3577 
3578    CPU module marked 'Super Treasure Island'
3579 
3580 ***************************************************************************/
3581 
3582 ROM_START( stbsub )
3583 	ROM_REGION( 0x10000, "maincpu", 0 )
3584 	ROM_LOAD( "trbon-rlu16.u12", 0x00000, 0x10000, CRC(07771290) SHA1(c485943045396d8580271504a1fec7c88579f4a2) )
3585 
3586 	ROM_REGION( 0x100000, "tilemap", 0 )
3587 	ROM_LOAD( "sti-alpha_2-ver1.1.u30", 0x00000, 0x40000, CRC(3bc4c8c5) SHA1(12e868f4b4d4df6b59befcd785ab1fe5c1def58d) )
3588 	ROM_LOAD( "sti-alpha_3-ver1.1.u29", 0x40000, 0x40000, CRC(5473c41a) SHA1(94294887af8ffc4f2edbcbde1c51797f20c44efe) )
3589 	ROM_LOAD( "sti-alpha_4-ver1.1.u28", 0x80000, 0x40000, CRC(ccf895e1) SHA1(c12ecf0577b5b856d8202474f084003cc95da51c) )
3590 	ROM_LOAD( "sti-alpha_5-ver1.1.u27", 0xc0000, 0x40000, CRC(98eed855) SHA1(89291b1b143924caa79a6d694f10c14d93c57eac) )
3591 
3592 	ROM_REGION( 0x80000, "reels", 0 )
3593 	ROM_LOAD( "sti-alpha_6-ver1.1.u25", 0x00000, 0x20000, CRC(83471a70) SHA1(c63e4c1a8cfb6e7feae4fd97f7d77feaf63c949b) )
3594 	ROM_LOAD( "sti-alpha_7-ver1.1.u24", 0x20000, 0x20000, CRC(05bc7ed2) SHA1(23ae716cd149ee940ac4bdc114fbfeb290e91b11) )
3595 	ROM_LOAD( "sti-alpha_8-ver1.1.u23", 0x40000, 0x20000, CRC(d3c11545) SHA1(0383358d223c9bfe67c3b5de7a9cc3e43a9769b2) )
3596 	ROM_LOAD( "sti-alpha_9-ver1.1.u22", 0x60000, 0x20000, CRC(9710a223) SHA1(76ef6bd77ae33d91a9b6a9a615d07caee3356dfb) )
3597 ROM_END
3598 
3599 ROM_START( stisub )
3600 	ROM_REGION( 0x10000, "maincpu", 0 )
3601 	ROM_LOAD( "b1", 0x00000, 0x10000, CRC(3f7adf66) SHA1(6ff37d070c7866133853c7cb3e2fbcb5610d87e8) )
3602 
3603 	ROM_REGION( 0x100000, "tilemap", 0 )
3604 	ROM_LOAD( "-2.u30",  0x00000, 0x40000, CRC(60596c9c) SHA1(6cea104539957bacb857bb14f967633e8cd729c0) )
3605 	ROM_LOAD( "b-3.u29", 0x40000, 0x40000, CRC(eb0968d3) SHA1(5313150725d9b7019ddaddc0b1cdb92330ab0b49) )
3606 	ROM_LOAD( "b-4.u28", 0x80000, 0x40000, CRC(ee5024ba) SHA1(cf65bbee12f6aaf8bb22c2a03e7b360fa58f3b80) )
3607 	ROM_LOAD( "a-5.u27", 0xc0000, 0x40000, CRC(6748c76d) SHA1(1013f5924c584df4bd6a1a3dbd0fff96c1313ed3) )
3608 
3609 	ROM_REGION( 0x80000, "reels", 0 )
3610 	ROM_LOAD( "a-6.u25", 0x00000, 0x20000, CRC(69a19c43) SHA1(d90a59bfee500ea9b1a21f60bc2fd7c3ddadb6a6) )
3611 	ROM_LOAD( "b-7.u24", 0x20000, 0x20000, CRC(09173bec) SHA1(c9bf491a9d4009d1debf7a19657129a209f02768) )
3612 	ROM_LOAD( "b-8.u23", 0x40000, 0x20000, CRC(10ff8fdf) SHA1(1f07ce5517c816852e5b739e3170d104c080ea18) )
3613 	ROM_LOAD( "a-9.u22", 0x60000, 0x20000, CRC(ce1e9a3d) SHA1(263e396058e74ae55834dc028b477eb21ceab9b9) )
3614 ROM_END
3615 
3616 
3617 /***************************************************************************
3618 
3619 Tesorone Dell'Isola (2 sets)
3620 (C) Subsino
3621 
3622 Italian version of "Treasure Bonus"
3623 
3624 PCB: SN01256-3 CS186P006-1 (same as "Treasure Bonus")
3625 
3626 Chips:
3627 
3628 1x pLSI 1032-60
3629 2x FILE KD89C55A (equivalent to 8255)
3630 1x K-664 (equivalent to YM3014)
3631 1x K-665 (equivalent to M6295)
3632 1x K-666 (equivalent to YM3812)
3633 1x custom DIP42 SUBSINO SS9101
3634 1x HMC HM86171-80 (RAMDAC)
3635 
3636 2x oscillator 12.000MHz ?
3637 1x oscillator 4.43361MHz ?
3638 
3639 Other:
3640 
3641 1x empty ROM socket for upgrades
3642 1x battery (unpopulated)
3643 1x 6x2 edge connector (con2)
3644 1x 36x2 edge connector
3645 1x pushbutton (sw5)
3646 4x 8 switches dips (sw1-4)
3647 1x trimmer (volume)
3648 1x BIG BLACK BOX
3649 
3650 ***************************************************************************/
3651 
3652 ROM_START( tesorone )
3653 	ROM_REGION( 0x10000, "maincpu", 0 )
3654 	ROM_LOAD( "tesorone.d.isol.italy_1ver2.41.u12", 0x00000, 0x10000, CRC(b019b689) SHA1(ba7acd15842b29e6ac37795a4d6e0f93d99393a4) )
3655 
3656 	ROM_REGION( 0x100000, "tilemap", 0 )
3657 	ROM_LOAD( "tesorone.d.isol.italy_2ver1.7.u30", 0x00000, 0x40000, CRC(295887c5) SHA1(b36914977b276ac5e5e31902dff28796f3a28ea1) )
3658 	ROM_LOAD( "tesorone.d.isol.italy_3ver1.7.u29", 0x40000, 0x40000, CRC(89469522) SHA1(ba373900e0310aad3d04ff58909f6144d9b689a7) )
3659 	ROM_LOAD( "tesorone.d.isol.italy_4ver1.7.u28", 0x80000, 0x40000, CRC(2092a368) SHA1(05e1af15761e0186ea7ddb8b82c177e35fcdd382) )
3660 	ROM_LOAD( "tesorone.d.isol.italy_5ver1.7.u27", 0xc0000, 0x40000, CRC(57870bad) SHA1(7a3342c5cc3ed5f48d2dda224913eb357aeb401b) )
3661 
3662 	ROM_REGION( 0x80000, "reels", 0 )
3663 	ROM_LOAD( "tesorone.d.isol.italy_6ver1.7.u25", 0x00000, 0x20000, CRC(e5578d00) SHA1(28882131d13f052bc31c3fc1b6dc5d9e45d30e82) )
3664 	ROM_LOAD( "tesorone.d.isol.italy_7ver1.7.u24", 0x20000, 0x20000, CRC(c29a7841) SHA1(7bec4a4db0b545b9b9d9a4c14efa9442e7738d8a) )
3665 	ROM_LOAD( "tesorone.d.isol.italy_8ver1.7.u23", 0x40000, 0x20000, CRC(2b4b195a) SHA1(cb165f6737231ae52dbf9775fff13b778835fcac) )
3666 	ROM_LOAD( "tesorone.d.isol.italy_9ver1.7.u22", 0x60000, 0x20000, CRC(1c9f754e) SHA1(7b2feeeaaa4845d2fcfebb2c1bc4d6b69d937400) )
3667 ROM_END
3668 
3669 ROM_START( tesorone230 )
3670 	ROM_REGION( 0x10000, "maincpu", 0 )
3671 	ROM_LOAD( "tesorone.d.isol.italy_1ver2.3.u12", 0x00000, 0x10000, CRC(46cd019b) SHA1(40412ac1234ae0f31b13c4d3b48681da34f1ded9) )
3672 
3673 	ROM_REGION( 0x100000, "tilemap", 0 )
3674 	ROM_LOAD( "tesorone.d.isol.italy_2ver1.7.u30", 0x00000, 0x40000, CRC(295887c5) SHA1(b36914977b276ac5e5e31902dff28796f3a28ea1) )
3675 	ROM_LOAD( "tesorone.d.isol.italy_3ver1.7.u29", 0x40000, 0x40000, CRC(89469522) SHA1(ba373900e0310aad3d04ff58909f6144d9b689a7) )
3676 	ROM_LOAD( "tesorone.d.isol.italy_4ver1.7.u28", 0x80000, 0x40000, CRC(2092a368) SHA1(05e1af15761e0186ea7ddb8b82c177e35fcdd382) )
3677 	ROM_LOAD( "tesorone.d.isol.italy_5ver1.7.u27", 0xc0000, 0x40000, CRC(57870bad) SHA1(7a3342c5cc3ed5f48d2dda224913eb357aeb401b) )
3678 
3679 	ROM_REGION( 0x80000, "reels", 0 )
3680 	ROM_LOAD( "tesorone.d.isol.italy_6ver1.7.u25", 0x00000, 0x20000, CRC(e5578d00) SHA1(28882131d13f052bc31c3fc1b6dc5d9e45d30e82) )
3681 	ROM_LOAD( "tesorone.d.isol.italy_7ver1.7.u24", 0x20000, 0x20000, CRC(c29a7841) SHA1(7bec4a4db0b545b9b9d9a4c14efa9442e7738d8a) )
3682 	ROM_LOAD( "tesorone.d.isol.italy_8ver1.7.u23", 0x40000, 0x20000, CRC(2b4b195a) SHA1(cb165f6737231ae52dbf9775fff13b778835fcac) )
3683 	ROM_LOAD( "tesorone.d.isol.italy_9ver1.7.u22", 0x60000, 0x20000, CRC(1c9f754e) SHA1(7b2feeeaaa4845d2fcfebb2c1bc4d6b69d937400) )
3684 ROM_END
3685 
3686 ROM_START( tesorone240 )
3687 	ROM_REGION( 0x10000, "maincpu", 0 )
3688 	ROM_LOAD( "tesorone.d.isol.italy_1ver2.4.u12", 0x00000, 0x10000, CRC(6a7d5395) SHA1(448184b78b6a3e28f891731c83a4e2d1e283c205) )
3689 
3690 	ROM_REGION( 0x100000, "tilemap", 0 )
3691 	ROM_LOAD( "tesorone.d.isol.italy_2ver1.7.u30", 0x00000, 0x40000, CRC(295887c5) SHA1(b36914977b276ac5e5e31902dff28796f3a28ea1) )
3692 	ROM_LOAD( "tesorone.d.isol.italy_3ver1.7.u29", 0x40000, 0x40000, CRC(89469522) SHA1(ba373900e0310aad3d04ff58909f6144d9b689a7) )
3693 	ROM_LOAD( "tesorone.d.isol.italy_4ver1.7.u28", 0x80000, 0x40000, CRC(2092a368) SHA1(05e1af15761e0186ea7ddb8b82c177e35fcdd382) )
3694 	ROM_LOAD( "tesorone.d.isol.italy_5ver1.7.u27", 0xc0000, 0x40000, CRC(57870bad) SHA1(7a3342c5cc3ed5f48d2dda224913eb357aeb401b) )
3695 
3696 	ROM_REGION( 0x80000, "reels", 0 )
3697 	ROM_LOAD( "tesorone.d.isol.italy_6ver1.7.u25", 0x00000, 0x20000, CRC(e5578d00) SHA1(28882131d13f052bc31c3fc1b6dc5d9e45d30e82) )
3698 	ROM_LOAD( "tesorone.d.isol.italy_7ver1.7.u24", 0x20000, 0x20000, CRC(c29a7841) SHA1(7bec4a4db0b545b9b9d9a4c14efa9442e7738d8a) )
3699 	ROM_LOAD( "tesorone.d.isol.italy_8ver1.7.u23", 0x40000, 0x20000, CRC(2b4b195a) SHA1(cb165f6737231ae52dbf9775fff13b778835fcac) )
3700 	ROM_LOAD( "tesorone.d.isol.italy_9ver1.7.u22", 0x60000, 0x20000, CRC(1c9f754e) SHA1(7b2feeeaaa4845d2fcfebb2c1bc4d6b69d937400) )
3701 ROM_END
3702 
3703 
3704 /***************************************************************************
3705 
3706   This is allegedly Magic Train - Clear NVRAM ROM:
3707 
3708   Subsino sold a "Settings/Clear ROM" for some released titles.
3709   These devices are *extremely* expensive (and ultra rare, only sold
3710   to big casino corporations), and should be placed in the empty socket
3711   to fix a dead board due to NVRAM corruption.
3712 
3713   A version of Magic Train running on subsino.cpp (unlike mtrain, which is
3714   subsino2.cpp) is needed to match this program ROM.
3715 
3716 ***************************************************************************/
3717 
3718 ROM_START( mtrainnv )
3719 	ROM_REGION( 0x10000, "maincpu", 0 )
3720 	ROM_LOAD( "mtrain_settings.bin", 0x00000, 0x10000, CRC(584af1b5) SHA1(91d966d282823dddfdc455bb03728fcdf3713dd7) )
3721 
3722 	ROM_REGION( 0x10000, "tilemap", 0 )
3723 	ROM_LOAD( "mtrain_tilemap.bin", 0x00000, 0x10000, NO_DUMP )
3724 	ROM_COPY( "maincpu", 0x000000, 0x00000, 0x10000 ) // just to show something
3725 
3726 	ROM_REGION( 0x10000, "reels", 0 )
3727 	ROM_LOAD( "mtrain_reels.bin", 0x00000, 0x10000, NO_DUMP )
3728 	ROM_COPY( "maincpu", 0x000000, 0x00000, 0x10000 ) // just to show something
3729 ROM_END
3730 
3731 
3732 /***************************************************************************
3733 *                        Driver Init / Decryption                          *
3734 ***************************************************************************/
3735 
3736 void subsino_state::init_victor5()
3737 {
3738 	subsino_decrypt(machine(), victor5_bitswaps, victor5_xors, 0xc000);
3739 
3740 	save_item(NAME(m_flash_packet));
3741 	save_item(NAME(m_flash_packet_start));
3742 	save_item(NAME(m_flash_val));
3743 }
3744 
init_victor21()3745 void subsino_state::init_victor21()
3746 {
3747 	subsino_decrypt(machine(), victor21_bitswaps, victor21_xors, 0xc000);
3748 }
3749 
init_crsbingo()3750 void subsino_state::init_crsbingo()
3751 {
3752 	subsino_decrypt(machine(), crsbingo_bitswaps, crsbingo_xors, 0xc000);
3753 
3754 	save_item(NAME(m_flash_packet));
3755 	save_item(NAME(m_flash_packet_start));
3756 	save_item(NAME(m_flash_val));
3757 }
3758 
init_sharkpy()3759 void subsino_state::init_sharkpy()
3760 {
3761 	subsino_decrypt(machine(), sharkpy_bitswaps, sharkpy_xors, 0xa000);
3762 }
3763 
init_sharkpye()3764 void subsino_state::init_sharkpye()
3765 {
3766 	subsino_decrypt(machine(), victor5_bitswaps, victor5_xors, 0xa000);
3767 }
3768 
init_smoto20()3769 void subsino_state::init_smoto20()
3770 {
3771 	uint8_t *rom = memregion( "maincpu" )->base();
3772 	rom[0x12e1] = 0x20; // "ERROR 951010"
3773 }
3774 
init_tisub()3775 void subsino_state::init_tisub()
3776 {
3777 	uint8_t *rom = memregion( "maincpu" )->base();
3778 
3779 	init_victor5();
3780 
3781 	/* this trips a z180 MMU core bug? It unmaps a region then the program code jumps to that region... */
3782 	rom[0x64c8] = 0x00;
3783 	rom[0x64c9] = 0x00;
3784 	rom[0x64ca] = 0x00;
3785 	rom[0x64cd] = 0x00;
3786 	rom[0x64ce] = 0x00;
3787 	rom[0x64cf] = 0x00;
3788 }
3789 
init_tisuba()3790 void subsino_state::init_tisuba()
3791 {
3792 	uint8_t *rom = memregion( "maincpu" )->base();
3793 
3794 	init_victor5();
3795 
3796 	/* this trips a z180 MMU core bug? It unmaps a region then the program code jumps to that region... */
3797 	rom[0x6491] = 0x00;
3798 	rom[0x6492] = 0x00;
3799 	rom[0x6493] = 0x00;
3800 	rom[0x6496] = 0x00;
3801 	rom[0x6497] = 0x00;
3802 	rom[0x6498] = 0x00;
3803 }
3804 
init_stbsub()3805 void subsino_state::init_stbsub()
3806 {
3807 #if 1
3808 	uint8_t *rom = memregion( "maincpu" )->base();
3809 	rom[0x1005] = 0x1d; //patch protection check
3810 	rom[0x7ab] = 0x18; //patch "winning protection" check
3811 	rom[0x957] = 0x18; //patch "losing protection" check
3812 #endif
3813 
3814 	for (uint8_t reel = 0; reel < 3; reel++)
3815 	{
3816 		m_reel_scroll[reel].allocate(0x40);
3817 
3818 		m_reel_attr[reel] = std::make_unique<uint8_t[]>(0x200);
3819 
3820 		save_pointer(NAME(m_reel_attr[reel]), 0x200, reel);
3821 	}
3822 }
3823 
init_stisub()3824 void subsino_state::init_stisub()
3825 {
3826 	uint8_t *rom = memregion( "maincpu" )->base();
3827 	rom[0x0FA0] = 0x28;
3828 	rom[0x0FA1] = 0x1d; //patch protection check
3829 
3830 	for (uint8_t reel = 0; reel < 3; reel++)
3831 	{
3832 		m_reel_scroll[reel].allocate(0x40);
3833 
3834 		m_reel_attr[reel] = std::make_unique<uint8_t[]>(0x200);
3835 
3836 		save_pointer(NAME(m_reel_attr[reel]), 0x200, reel);
3837 	}
3838 }
3839 
init_tesorone()3840 void subsino_state::init_tesorone()
3841 {
3842 #if 1
3843 	uint8_t *rom = memregion( "maincpu" )->base();
3844 	rom[0x10a4] = 0x18; //patch protection check ("ERROR 08073"):
3845 	rom[0x10a5] = 0x11;
3846 	rom[0x8b6] = 0x18; //patch "winning protection" check
3847 	rom[0xa84] = 0x18; //patch "losing protection" check
3848 #endif
3849 
3850 	for (uint8_t reel = 0; reel < 3; reel++)
3851 	{
3852 		m_reel_scroll[reel].allocate(0x40);
3853 
3854 		m_reel_attr[reel] = std::make_unique<uint8_t[]>(0x200);
3855 
3856 		save_pointer(NAME(m_reel_attr[reel]), 0x200, reel);
3857 	}
3858 }
3859 
init_tesorone230()3860 void subsino_state::init_tesorone230()
3861 {
3862 #if 1
3863 	uint8_t *rom = memregion( "maincpu" )->base();            //check this patch!!!!
3864 	rom[0x10a8] = 0x18; //patch protection check ("ERROR 08073"):
3865 	rom[0x10a9] = 0x11;
3866 	rom[0x8ba] = 0x18; //patch "winning protection" check
3867 	rom[0xa88] = 0x18; //patch "losing protection" check
3868 #endif
3869 
3870 	for (uint8_t reel = 0; reel < 3; reel++)
3871 	{
3872 		m_reel_scroll[reel].allocate(0x40);
3873 
3874 		m_reel_attr[reel] = std::make_unique<uint8_t[]>(0x200);
3875 
3876 		save_pointer(NAME(m_reel_attr[reel]), 0x200, reel);
3877 	}
3878 }
3879 
3880 
init_mtrainnv()3881 void subsino_state::init_mtrainnv()
3882 {
3883 	for (uint8_t reel = 0; reel < 3; reel++)
3884 	{
3885 		m_reel_scroll[reel].allocate(0x40);
3886 
3887 		m_reel_attr[reel] = std::make_unique<uint8_t[]>(0x200);
3888 
3889 		save_pointer(NAME(m_reel_attr[reel]), 0x200, reel);
3890 	}
3891 }
3892 
3893 /***************************************************************************
3894 *                               Game Drivers                               *
3895 ***************************************************************************/
3896 
3897 //     YEAR  NAME         PARENT   MACHINE   INPUT     CLASS          INIT              ROT   COMPANY            FULLNAME                                FLAGS            LAYOUT
3898 GAMEL( 1990, victor21,    0,       victor21, victor21, subsino_state, init_victor21,    ROT0, "Subsino / Buffy", "Victor 21",                            0,               layout_victor21 )
3899 
3900 GAMEL( 1991, victor5,     0,       victor5,  victor5,  subsino_state, init_victor5,     ROT0, "Subsino / Buffy", "Victor 5",                             0,               layout_victor5  ) // Original PCB and game from Subsino.
3901 GAMEL( 1991, victor5a,    victor5, victor5,  victor5,  subsino_state, init_victor5,     ROT0, "Subsino",         "G.E.A.",                               0,               layout_victor5  ) // PCB black-box was marked 'victor 5' - in-game says G.E.A with no manufacturer info?
3902 
3903 GAMEL( 1992, tisub,       0,       tisub,    tisub,    subsino_state, init_tisub,       ROT0, "Subsino",         "Treasure Island (Subsino, set 1)",     0,               layout_tisub    )
3904 GAMEL( 1992, tisuba,      tisub,   tisub,    tisub,    subsino_state, init_tisuba,      ROT0, "Subsino",         "Treasure Island (Subsino, set 2)",     0,               layout_tisub    )
3905 
3906 GAMEL( 1991, crsbingo,    0,       crsbingo, crsbingo, subsino_state, init_crsbingo,    ROT0, "Subsino",         "Poker Carnival",                       0,               layout_crsbingo )
3907 
3908 GAMEL( 1995, stbsub,      0,       stbsub,   stbsub,   subsino_state, init_stbsub,      ROT0, "American Alpha",  "Treasure Bonus (Subsino, v1.6)",       0,               layout_stisub   ) // board CPU module marked 'Super Treasure Island' (alt title?)
3909 GAMEL( 1995, stisub,      stbsub,  stbsub,   stbsub,   subsino_state, init_stisub,      ROT0, "Subsino",         "Super Treasure Island (Italy, v1.6)",  MACHINE_NOT_WORKING, layout_stisub   ) // need proper patches
3910 GAMEL( 1995, tesorone,    stbsub,  stbsub,   tesorone, subsino_state, init_tesorone,    ROT0, "Subsino",         "Tesorone Dell'Isola (Italy, v2.41)",   0,               layout_stisub   )
3911 GAMEL( 1995, tesorone240, stbsub,  stbsub,   tesorone, subsino_state, init_tesorone,    ROT0, "Subsino",         "Tesorone Dell'Isola (Italy, v2.40)",   0,               layout_stisub   )
3912 GAMEL( 1995, tesorone230, stbsub,  stbsub,   tesorone, subsino_state, init_tesorone230, ROT0, "Subsino",         "Tesorone Dell'Isola (Italy, v2.30)",   0,               layout_stisub   )
3913 
3914 GAMEL( 1996, sharkpy,     0,       sharkpy,  sharkpy,  subsino_state, init_sharkpy,     ROT0, "Subsino",         "Shark Party (Italy, v1.3)",            0,               layout_sharkpy  ) // missing POST messages?
3915 GAMEL( 1996, sharkpya,    sharkpy, sharkpy,  sharkpy,  subsino_state, init_sharkpy,     ROT0, "Subsino",         "Shark Party (Italy, v1.6)",            0,               layout_sharkpy  ) // missing POST messages?
3916 GAMEL( 1995, sharkpye,    sharkpy, sharkpy,  sharkpye, subsino_state, init_sharkpye,    ROT0, "American Alpha",  "Shark Party (English, Alpha license)", 0,               layout_sharkpye ) // PCB black-box was marked 'victor 6'
3917 
3918 GAMEL( 1995, victor6,     0,       sharkpy,  victor6,  subsino_state, init_sharkpye,    ROT0, "American Alpha",  "Victor 6 (v2.3N)",                     0,               layout_sharkpye ) // ^^
3919 GAMEL( 1995, victor6a,    victor6, sharkpy,  victor6a, subsino_state, init_sharkpye,    ROT0, "American Alpha",  "Victor 6 (v2.3)",                      0,               layout_sharkpye ) // ^^
3920 GAMEL( 1995, victor6b,    victor6, sharkpy,  victor6b, subsino_state, init_sharkpye,    ROT0, "American Alpha",  "Victor 6 (v1.2)",                      0,               layout_sharkpye ) // ^^ Version # according to label, not displayed
3921 
3922 GAMEL( 1996, smoto20,     0,       srider,   smoto20,  subsino_state, init_smoto20,     ROT0, "Subsino",         "Super Rider (Italy, v2.0)",            0,               layout_smoto    )
3923 GAMEL( 1996, smoto16,     smoto20, srider,   smoto16,  subsino_state, init_smoto16,     ROT0, "Subsino",         "Super Moto (Italy, v1.6)",             0,               layout_smoto    )
3924 
3925 GAME(  1996, mtrainnv,    mtrain,  mtrainnv, stbsub,   subsino_state, init_mtrainnv,    ROT0, "Subsino",         "Magic Train (Clear NVRAM ROM?)",       MACHINE_NOT_WORKING )
3926