diff options
Diffstat (limited to 'src/mame/drivers/videopkr.cpp')
-rw-r--r-- | src/mame/drivers/videopkr.cpp | 1581 |
1 files changed, 0 insertions, 1581 deletions
diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp deleted file mode 100644 index 3d5a7af9568..00000000000 --- a/src/mame/drivers/videopkr.cpp +++ /dev/null @@ -1,1581 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Roberto Fresca, Grull Osgo -/************************************************************************* - - VIDEO POKER - IGT/INTERFLIP - --------------------------- - - Original driver by Grull Osgo. - Rewrite and additional work by Roberto Fresca. - Fortune I (IGT) added by Jim Stolis. - - - Games running on this hardware: - - * Draw Poker, 1984, IGT - International Game Technology - - * Video Poker, 1984, InterFlip. - * Black Jack, 1984, InterFlip. - * Video Dado, 1987, InterFlip. - * Video Cordoba, 1987, InterFlip. - - * Baby Poker, 1989, Recreativos Franco. - * Baby Dado, 1989, Recreativos Franco. - - * Video Poker (v1403), 198?, Recreativos Franco?. - - -*************************************************************************** - - History: - ======== - - In 1975, Si Redd founded A1-Supply. This was renamed to Sircoma in 1978, - and eventually IGT (International Game Technology) in 1981. - - Along the way, in 1978, Fortune Coin Company was acquired and contained - the basis to their Fortune I game machines. - - The Fortune I hardware consisted of the following games: - Regular Draw Poker - Progressive Draw Poker - Joker Wild Poker - Double Up Draw Poker - Credit Draw Poker - Lucky 7 Poker (Seven Card Stud Poker) - Twenty One - Live 21 - Count Down 21 - Two Hand 21 - In Between - Regular Slot - Credit Slot - - InterFlip (Spain), is a subsidiary of Recreativos Franco. - This company was created mainly with the purpose of manufacture - and distribute export-class games. - - These machines were build in upright wood style cabinets, and compliment - with class "C" (for casinos) spanish gaming regulations. - - -*************************************************************************** - - Hardware Info - ============= - - This is a two board system: Main & Sound board. - - * Main board: - - 1x Intel 8039 CPU Clocked @ 6/8 MHz. - 2x 2716 EPROM Program ROM. - 2x 2716 EPROM Character/graphics ROM. - 1x 5101 (256 x 4) SRAM Data Memory (Battery Backed RAM). - 2x 2114 (1024 x 4) SRAM 8-Bit Char. RAM. - 1x 2114 (1024 x 4) SRAM 4-Bit Color RAM. - 1x 74s287 (256 x 4) TTL PROM Color PROM. - - 1x 6 MHz.(or 8 MHz.) Crystal CPU clock. - 1x 7.8643 MHz. Crystal Video System. - - 1x 3.6 Ni-Cd Battery Data Memory. - - TTL type Raster video Configurable HIGH-LOW resolution through hardware jumper. - Configurable 50Hz-60Hz V-Sync through hardware jumper. - - I/O System Buffered, latched & optocoupled. - - - * Sound board: - - 1x Intel 8039 CPU Clocked @ 8 MHz. - 2x 2716 EPROM Program ROM. - 1x 1408 DAC - 1x 8.0000 MHz. Crystal - - -******************************************************************************** - - Main CPU Memory Map - =================== - - 0x0000 - 0x0FFF Program ROM. - - Data & Video RAM are mapped through I/O hardware implementations due to - I8039 memory addressing restrictions. - - - Main CPU I/0 Map - ================ - - P1.0 ; Used at bit level, Aux_0 signal. - P1.1 ; Used at bit level, Aux_1 signal. - P1.2 ; Used at bit level, Aux_2 signal. - P1.3 ; Used at bit level, Aux_3 signal. - P1.4 ; Used at bit level, Aux_4 signal & Sound Latch bit 3 - P1.5 ; Used at bit level, Aux_5 signal & Sound Latch bit 0 - P1.6 ; Expands address bus for video and color RAM access (V.A8) - P1.7 ; Expands address bus for video and color RAM access (V.A9) - - P2.0 - P2.3: ; I8039 as address bus expansion (Program memory - High address nibble). - - P2.4: ; Reads 8 bits from data buffer input port (interface for switch encoder). - Bit 0: Lamp_1. - Bit 1: Lamp_2. - Bit 2: Lamp_3. - Bit 3: Lamp_4. - Bit 4: Coin Acceptor. - Bit 5: Hopper 1 & Sound Latch bit 1. - Bit 6: Hopper 2 & Sound Latch bit 2. - Bit 7: Diverter. - - ; Writes 8 bits to data latch out port (lamps, relays and coils). - Bit 0: SW_encoder_0. - Bit 1: SW_encoder_1. - Bit 2: SW_encoder_2. - Bit 3: SW_encoder_3. - Bit 4: Coin Out. - Bit 5: Undocumented jumper. - Bit 6: N/U (pulled up). - Bit 7: N/U (pulled up). - - P2.5: ; Enable access to data RAM. - P2.6: ; Enable access to video RAM (write mode) - no read mode. - P2.7: ; Enable access to color RAM (write Mode) - no read mode. - - -******************************************************************************** - - Game Info - ========= - - Pay Tables: - - These machines had their pay tables out of screen, in a backlighted upper front panel. - - - Video Poker (Spanish text only) - ---------------------------------------------------------------------------- - Fichas Jugadas 1 Ficha 2 Fichas 3 Fichas 4 Fichas 5 Fichas - ---------------------------------------------------------------------------- - Escalera Maxima 250 500 750 1000 4000 - de color - - Escalera de Color 100 200 300 400 500 - - Poker 50 100 150 200 250 - - Full 11 22 33 44 55 - - Color 7 14 21 28 35 - - Escalera 5 10 15 20 25 - - Trio 3 6 9 12 15 - - Doble Pareja 2 4 6 8 10 - ---------------------------------------------------------------------------- - - - Black Jack (Spanish text only) - ---------------------------------------------------------------------------- - Fichas Jugadas 1 Ficha 2 Fichas 3 Fichas 4 Fichas 5 Fichas - ---------------------------------------------------------------------------- - Empate 1 2 3 4 5 - - La Banca se pasa 2 4 6 8 10 - - Jugador tiene mas 2 4 6 8 10 - que la banca - - Jugador tiene menos 2 4 6 8 10 - de 22 con 6 cartas - - Jugador tiene blackjack 2 5 7 10 12 - y la Banca no - ---------------------------------------------------------------------------- - - - Video Cordoba - ---------------------------------------------------------------------------- - Fichas Jugadas 1 Ficha 2 Fichas 3 Fichas 4 Fichas 5 Fichas - ---------------------------------------------------------------------------- - TRIPLE BAR 250 250 250 250 2000 - ............................................................................ - 3 x Doble Bar - 100 | Olive-Olive-Any Bar - 18 - 3 x Single Bar - 50 | 3 x Orange - 14 - 3 x Any Bar - 20 | Orange-Orange-Any Bar - 14 - 3 x Bell - 20 | 3 x Cherry - 10 - Bell-Bell-Any Bar - 20 | 2 x Cherry - 5 - 3 x Olive - 10 | 1 x Cherry - 2 - ............................................................................ - All combinations are valid only from left to rigth - ---------------------------------------------------------------------------- - - - Video Dado - --------------------------------------------- - Twelve (12) 33 x 1 - Eleven (11) 16 x 1 - Crap (2,3,12) 8 x 1 - Seven (7) 5 x 1 - Field (2,12) 3 x 1 - 8 or More (8,9,10,11,12) 2 x 1 - 6 or Less (2,3,4,5,6) 2 x 1 - - Winnings less or equal to 25 can be re-played - --------------------------------------------- - - - All payments with less than 400 coins are done through hopper. - (you need to press "Coin Out" button once per coin due to the lack of hopper emulation) - - Payments over 400 coins are manual. - - -************************************************************************** - - [2008-10-08] - - - Added Baby Poker Game. - - Added Baby Dado Game. - - Mapped "Hand Pay" button for Baby Games. - - Added decoder to Jackpot mechanical counter. - - Added sound support to Baby Poker Game. - - Added tower lamps to Baby Games layouts. - - Reworked layouts for Baby Games. - - Reworked the color routines. - - Added new color routines for Baby Games. - - Redumped the videocba color PROM. - - Added color switch. (It changes background color in some games). - - Added "hopper full" switch support (for diverter function). - - Added diverter function decoder. - - Added Button-lamps layout. - - Added full functional mechanical counters decoding. - - Added 7 Segment decoder and 7 Digit Counter functions. - - Added button-lamps layout & mechanical counters simulation on layout. - Mechanical counters to layout: Coin-In, Coin-Out and Coin to Drop. - - Added NVRAM support to mechanical counters. - - - TO DO - ===== - - * Add Tech. Notes for Baby board, a reworked and improved version on Video Poker hardware. - * Fix some missing pulses on mechanical counters. - * Fix the bug on bookeeping mode (videodad & videocba). - * Figure out the undocumented jumper. - * Hopper simulation. - * Switch to resnet system. - - -**************************************************************************/ - - -#include "emu.h" - -#include "cpu/mcs48/mcs48.h" -#include "cpu/mcs51/mcs51.h" -#include "machine/i8255.h" -#include "machine/nvram.h" -#include "machine/timer.h" -#include "sound/ay8910.h" -#include "sound/dac.h" - -#include "emupal.h" -#include "screen.h" -#include "speaker.h" -#include "tilemap.h" - -#include "babydad.lh" -#include "babypkr.lh" -#include "blckjack.lh" -#include "videocba.lh" -#include "videodad.lh" -#include "videopkr.lh" - - -#define CPU_CLOCK (XTAL(6'000'000)) /* main cpu clock */ -#define CPU_CLOCK_ALT (XTAL(8'000'000)) /* alternative main cpu clock for newer games */ -#define SOUND_CLOCK (XTAL(8'000'000)) /* sound cpu clock */ -#define VIDEO_CLOCK (XTAL_7.8643MHz) - - -class videopkr_state : public driver_device -{ -public: - videopkr_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_soundcpu(*this, "soundcpu") - , m_gfxdecode(*this, "gfxdecode") - , m_aysnd(*this, "aysnd") - , m_digits(*this, "digit%u", 0U) - , m_lamps(*this, "lamp%u", 0U) - { } - - void videopkr(machine_config &config); - void blckjack(machine_config &config); - void videodad(machine_config &config); - void babypkr(machine_config &config); - void fortune1(machine_config &config); - void bpoker(machine_config &config); - -private: - uint8_t videopkr_io_r(offs_t offset); - void videopkr_io_w(offs_t offset, uint8_t data); - uint8_t videopkr_p1_data_r(); - uint8_t videopkr_p2_data_r(); - void videopkr_p1_data_w(uint8_t data); - void videopkr_p2_data_w(uint8_t data); - DECLARE_READ_LINE_MEMBER(videopkr_t0_latch); - DECLARE_WRITE_LINE_MEMBER(prog_w); - uint8_t sound_io_r(); - void sound_io_w(uint8_t data); - uint8_t sound_p2_r(); - void sound_p2_w(uint8_t data); - uint8_t baby_sound_p0_r(); - void baby_sound_p0_w(uint8_t data); - uint8_t baby_sound_p1_r(); - void baby_sound_p3_w(uint8_t data); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - void videopkr_palette(palette_device &palette) const; - DECLARE_VIDEO_START(vidadcba); - void babypkr_palette(palette_device &palette) const; - void fortune1_palette(palette_device &palette) const; - uint32_t screen_update_videopkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(sound_t1_callback); - void count_7dig(unsigned long data, uint8_t index); - - void i8039_io_port(address_map &map); - void i8039_map(address_map &map); - void i8039_sound_mem(address_map &map); - void i8039_sound_port(address_map &map); - void i8051_sound_mem(address_map &map); - void i8051_sound_port(address_map &map); - void i8751_io_port(address_map &map); - void i8751_map(address_map &map); - - virtual void machine_start() override; - virtual void video_start() override; - - uint8_t m_data_ram[0x100]; - uint8_t m_video_ram[0x0400]; - uint8_t m_color_ram[0x0400]; - uint16_t m_p1; - uint16_t m_p2; - uint8_t m_t0_latch; - uint16_t m_n_offs; - uint8_t m_vp_sound_p2; - uint8_t m_p24_data; - uint8_t m_sound_latch; - uint8_t m_sound_ant; - uint8_t m_dc_4020; - uint8_t m_dc_40103; - uint8_t m_te_40103; - uint8_t m_ld_40103; - uint8_t m_ant_jckp; - uint8_t m_jckp; - uint8_t m_ant_cio; - uint8_t m_c_io; - uint8_t m_hp_1; - uint8_t m_hp_2; - uint8_t m_bell; - uint8_t m_aux3; - uint8_t m_dvrt; - unsigned long m_count0; - unsigned long m_count1; - unsigned long m_count2; - unsigned long m_count3; - unsigned long m_count4; - uint8_t m_sbp0; - tilemap_t *m_bg_tilemap; - required_device<cpu_device> m_maincpu; - required_device<cpu_device> m_soundcpu; - required_device<gfxdecode_device> m_gfxdecode; - optional_device<ay8910_device> m_aysnd; - output_finder<28> m_digits; - output_finder<14> m_lamps; -}; - - -#define DATA_NVRAM_SIZE 0x100 - -/************************* -* Video Hardware * -*************************/ - -/* BCD to Seven Segment Decoder */ -static uint8_t dec_7seg(int data) -{ - uint8_t segment; - switch (data) - { - case 0: segment = 0x3f; break; - case 1: segment = 0x06; break; - case 2: segment = 0x5b; break; - case 3: segment = 0x4f; break; - case 4: segment = 0x66; break; - case 5: segment = 0x6d; break; - case 6: segment = 0x7d; break; - case 7: segment = 0x07; break; - case 8: segment = 0x7f; break; - case 9: segment = 0x6f; break; - default: segment = 0x79; - } - - return segment; -} - -/* Display a seven digit counter on layout - Index points to less significant digit*/ -void videopkr_state::count_7dig(unsigned long data, uint8_t index) -{ - uint8_t i; - char strn[8]; - sprintf(strn,"%7lu",data); - - for (i = 0; i < 7; i++) - m_digits[index+i] = dec_7seg((strn[6 - i] | 0x10) - 0x30); -} - -void videopkr_state::videopkr_palette(palette_device &palette) const -{ - uint8_t const *const color_prom = memregion("proms")->base(); - for (int j = 0; j < palette.entries(); j++) - { - int const i = BIT(color_prom[j], 3); - - // red component - int const tr = 0xf0 - (0xf0 * BIT(color_prom[j], 0)); - int const r = tr - (i * (tr / 5)); - - // green component - int const tg = 0xf0 - (0xf0 * BIT(color_prom[j], 1)); - int const g = tg - (i * (tg / 5)); - - // blue component - int const tb = 0xf0 - (0xf0 * BIT(color_prom[j], 2)); - int const b = tb - (i * (tb / 5)); - - palette.set_pen_color(j, rgb_t(r, g, b)); - } -} - -void videopkr_state::babypkr_palette(palette_device &palette) const -{ - uint8_t const *const color_prom = memregion("proms")->base(); - for (int j = 0; j < palette.entries(); j++) - { - // intensity component - int const i = 0x2f * BIT(color_prom[j], 3); - int const top = 0xff - i; - - // red component - int const tr = 0xdf * BIT(color_prom[j], 0); - int const r = top - ((tr * top) / 0x100 ); - - // green component - int const tg = 0xdf * BIT(color_prom[j], 1); - int const g = top - ((tg * top) / 0x100 ); - - // blue component - int const tb = 0xdf * BIT(color_prom[j], 2); - int const b = top - ((tb * top) / 0x100); - - palette.set_pen_color(j, rgb_t(r, g, b)); - } -} - -void videopkr_state::fortune1_palette(palette_device &palette) const -{ - uint8_t const *const color_prom = memregion("proms")->base(); - for (int j = 0; j < palette.entries(); j++) - { - int const i = BIT(color_prom[j], 3); - - // red component - int const tr = 0xf0 - (0xf0 * BIT(color_prom[j], 0)); - int const r = tr - (i * (tr / 5)); - - // green component - int const tg = 0xf0 - (0xf0 * BIT(color_prom[j], 1)); - int const g = tg - (i * (tg / 5)); - - // blue component - int const tb = 0xf0 - (0xf0 * BIT(color_prom[j], 2)); - int const b = tb - (i * (tb / 5)); - - // Swap position of Inner-most colors on each 4 color palette - int c = j; - if ((c % 4) == 1 || (c % 4) == 2) - c = (int(c / 4) * 4) + (3 - (c % 4)); - - palette.set_pen_color(c, rgb_t(r, g, b)); - } -} - -TILE_GET_INFO_MEMBER(videopkr_state::get_bg_tile_info) -{ - int offs = tile_index; - int attr = m_color_ram[offs] + ioport("IN2")->read(); /* Color Switch Action */ - int code = m_video_ram[offs]; - int color = attr; - tileinfo.set(0, code, color, 0); -} - - -void videopkr_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(videopkr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); -} - -VIDEO_START_MEMBER(videopkr_state,vidadcba) -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(videopkr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); -} - - -uint32_t videopkr_state::screen_update_videopkr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->mark_all_dirty(); - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - return 0; -} - - -/************************* -* R/W Handlers * -*************************/ - -uint8_t videopkr_state::videopkr_io_r(offs_t offset) -{ - uint8_t valor = 0, hf, co; - - uint16_t kbdin; - - switch (m_p2) - { - case 0xef: /* inputs are multiplexed through a diode matrix */ - { - hf = ((ioport("IN1")->read() & 0x10 ) >> 4) & 1; /* Hopper full detection */ - co = 0x10 * ((ioport("IN1")->read() & 0x20 ) >> 5); /* Coin Out detection */ - kbdin = ((ioport("IN1")->read() & 0xaf ) << 8) + ioport("IN0")->read(); - - switch (kbdin) - { - case 0x0000: valor = 0x00; break; - case 0x0001: valor = 0x01; break; /* Door */ - case 0x4000: valor = 0x02; break; - case 0x8000: valor = 0x03; break; /* Hand Pay */ - case 0x0002: valor = 0x04; break; /* Books */ - case 0x0004: valor = 0x05; break; /* Coin In */ - case 0x0008: valor = 0x07; break; /* Start */ - case 0x0010: valor = 0x08; break; /* Discard */ - case 0x0020: valor = 0x09; break; /* Cancel */ - case 0x0040: valor = 0x0a; break; /* Hold 1 */ - case 0x0080: valor = 0x0b; break; /* Hold 2 */ - case 0x0100: valor = 0x0c; break; /* Hold 3 */ - case 0x0200: valor = 0x0d; break; /* Hold 4 */ - case 0x0400: valor = 0x0e; break; /* Hold 5 */ - case 0x0800: valor = 0x06; break; /* Bet */ - } - - if ((valor == 0x00) & hf ) - { - valor = 0x0f; - } - - valor += co; - break; - } - - case 0xdf: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - valor = m_data_ram[offset]; - break; - } - - case 0x5f: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - valor = m_data_ram[offset]; - break; - } - - case 0x7c: - case 0x7d: - case 0x7e: - case 0x7f: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - valor = m_color_ram[m_n_offs]; - break; - } - - case 0xbc: - case 0xbd: - case 0xbe: - case 0xbf: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - valor = m_video_ram[m_n_offs]; - break; - } - } - - return valor; -} - -void videopkr_state::videopkr_io_w(offs_t offset, uint8_t data) -{ - switch (m_p2) - { - case 0x3c: - case 0x3d: - case 0x3e: - case 0x3f: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - m_color_ram[m_n_offs] = data & 0x0f; - m_video_ram[m_n_offs] = data; - m_bg_tilemap->mark_tile_dirty(m_n_offs); - break; - } - - case 0xdf: - { - m_data_ram[offset] = (data & 0x0f) + 0xf0; - break; - } - - case 0x7c: - case 0x7d: - case 0x7e: - case 0x7f: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - m_color_ram[m_n_offs] = data & 0x0f; - m_bg_tilemap->mark_tile_dirty(m_n_offs); - break; - } - - case 0xbc: - case 0xbd: - case 0xbe: - case 0xbf: - { - m_n_offs = ((m_p1 & 0xc0) << 2 ) + offset; - m_video_ram[m_n_offs] = data; - m_bg_tilemap->mark_tile_dirty(m_n_offs); - break; - } - - case 0xef: /* Port 2.4 */ - { - m_lamps[0] = BIT(data, 0); /* L_1 */ - m_lamps[1] = BIT(data, 1); /* L_2 */ - m_lamps[2] = BIT(data, 2); /* L_3 */ - m_lamps[3] = BIT(data, 3); /* L_4 */ - m_lamps[4] = BIT(data, 4); /* Coin */ - m_lamps[5] = BIT(data, 5); /* Hopper_1 */ - m_lamps[6] = BIT(data, 6); /* Hopper_2 */ - m_lamps[7] = BIT(data, 7); /* Diverter */ - m_p24_data = data; - m_hp_1 = (~m_p24_data >> 6) & 1; - m_hp_2 = (~m_p24_data >> 5) & 1; - m_dvrt = (~m_p24_data >> 7) & 1; - break; - } - - case 0xff: - { - m_t0_latch = m_t0_latch ^ 0x01; /* fix the bookkeeping mode */ - break; - } - } -} - -uint8_t videopkr_state::videopkr_p1_data_r() -{ - return m_p1; -} - -uint8_t videopkr_state::videopkr_p2_data_r() -{ - return m_p2; -} - -void videopkr_state::videopkr_p1_data_w(uint8_t data) -{ - m_p1 = data; - - m_lamps[8] = BIT(data, 0); /* Aux_0 - Jackpot mech. counter (Baby Games)*/ - m_lamps[9] = BIT(data, 1); /* Aux_1 - */ - m_lamps[10] = BIT(data, 2); /* Aux_2 - */ - m_lamps[11] = BIT(data, 3); /* Aux_3 - */ - m_lamps[12] = BIT(data, 4); /* Aux_4 - Bell */ - m_lamps[13] = BIT(data, 5); /* Aux_5 - /CIO */ - - m_jckp = m_p1 & 1; - - if ((~m_c_io & 1) & m_ant_cio & m_hp_1 & m_hp_2) - { - ++m_count1; /* Decoded Coin In Mech. Counter*/ - } - - if ((~m_c_io & 1) & m_ant_cio & (~m_hp_1 & 1) & (~m_hp_2 & 1)) - { - ++m_count2; /* Decoded Coind Out Mech. Counter */ - } - - if (~m_c_io & m_ant_cio & m_hp_1 & m_hp_2 & ~m_dvrt) - { - ++m_count3; /* Decoded Coin to Drop Mech. Counter */ - } - - if (~m_jckp & m_ant_jckp) - { - ++m_count4; /* Decoded Jackpot Mech. Counter */ - } - - count_7dig(m_count1, 0); - count_7dig(m_count2, 7); - count_7dig(m_count3, 14); - count_7dig(m_count4, 21); - - m_ant_cio = m_c_io; - m_ant_jckp = m_jckp; -} - -void videopkr_state::videopkr_p2_data_w(uint8_t data) -{ - m_p2 = data; -} - -READ_LINE_MEMBER(videopkr_state::videopkr_t0_latch) -{ - return m_t0_latch; -} - -WRITE_LINE_MEMBER(videopkr_state::prog_w) -{ - if (!state) - m_maincpu->set_input_line(0, CLEAR_LINE); /* clear interrupt FF */ -} - -/************************* -* Sound Handlers * -*************************/ -/* - - Sound Data ( Sound Board latch ) - - Data Bit Comes from - --------------------------------------------- - bit 0 Coin I/O Port 1.5 - bit 1 Hopper2 Port 2.4 Data Bit 6 - bit 2 Hopper1 Port 2.4 Data Bit 5 - bit 3 Bell Port 1.4 - bit 4 Aux_3 Port 1.3 - bit 5 N/U Pulled Up - bit 6 N/U Pulled Up - bit 7 N/U Pulled Up - - - Sound Codes - - Hex Bin Sound Game - -------------------------------------------------------------------------- - 0xFF 11111111 No Sound (default state) All Games. - 0xFE 11111110 Coin In sound All Games. - 0xEF 11101111 Cards draw sound Video Poker & Black Jack. - 0xF9 11111001 Hopper run Video Poker & Black Jack. - 0xF8 11111000 Coin Out sound Video Poker & Black Jack. - 0xF6 11110110 Coin Out sound Video Dado & Video Cordoba. - 0xFA 11111010 Dice rolling sound Video Dado. - 0xFA 11111010 Spinning reels sound Video Cordoba. - 0xFB 11111011 Dice rolling sound Video Dado. - 0xFB 11111011 Stopping reels sound Video Cordoba. - -*/ - -uint8_t videopkr_state::sound_io_r() -{ - switch (m_vp_sound_p2) - { - case 0xbf: - { - m_c_io = (m_p1 >> 5) & 1; - m_hp_1 = (~m_p24_data >> 6) & 1; - m_hp_2 = (~m_p24_data >> 5) & 1; - m_bell = (m_p1 >> 4) & 1; - m_aux3 = (m_p1 >> 3) & 1; - m_dvrt = (~m_p24_data >> 7) & 1; - m_sound_ant = m_sound_latch; - m_sound_latch = m_c_io + (m_hp_1 << 1) + (m_hp_2 << 2) + (m_bell << 3) + 0xf0; - - break; - } - } - - return m_sound_latch; -} - -void videopkr_state::sound_io_w(uint8_t data) -{ - if (m_vp_sound_p2 == 0x5f || m_vp_sound_p2 == 0xdf) - { - m_dc_40103 = data; - m_dc_4020 = 0; - } -} - -uint8_t videopkr_state::sound_p2_r() -{ - return m_vp_sound_p2; -} - -void videopkr_state::sound_p2_w(uint8_t data) -{ - m_vp_sound_p2 = data; - - switch (data) - { - case 0x5f: - { - m_te_40103 = 0; /* p2.7 LOW */ - m_ld_40103 = 0; /* p2.5 LOW */ - break; - } - - case 0x7f: - { - m_te_40103 = 0; - m_ld_40103 = 1; - break; - } - - case 0xff: - { - m_te_40103 = 1; - m_ld_40103 = 1; - break; - } - } -} - - -/* Baby Sound Handlers */ - -uint8_t videopkr_state::baby_sound_p0_r() -{ - return m_sbp0; -} - -void videopkr_state::baby_sound_p0_w(uint8_t data) -{ - m_sbp0 = data; -} - -uint8_t videopkr_state::baby_sound_p1_r() -{ - m_c_io = (m_p1 >> 5) & 1; - m_hp_1 = (~m_p24_data >> 6) & 1; - m_hp_2 = (~m_p24_data >> 5) & 1; - m_bell = (m_p1 >> 4) & 1; - m_aux3 = (m_p1 >> 3) & 1; - return m_c_io | (m_hp_1 << 1) | (m_hp_2 << 2) | (m_bell << 3) | (m_aux3 << 4) | 0xe0; -} - -void videopkr_state::baby_sound_p3_w(uint8_t data) -{ - uint8_t lmp_ports, ay_intf; - lmp_ports = data >> 1 & 0x07; - - output().set_value("TOP_1", (lmp_ports >> 0) & 1); - output().set_value("TOP_2", (lmp_ports >> 1) & 1); - output().set_value("TOP_3", (lmp_ports >> 2) & 1); - - if (!(data & 0x10)) - { - reset(); - logerror("AY3-8910: Reset\n"); - } - - ay_intf = (data >> 5) & 0x07; - - switch (ay_intf) - { - case 0x00: break; - case 0x01: break; - case 0x02: break; - case 0x03: m_aysnd->data_w(m_sbp0); break; - case 0x04: break; - case 0x05: m_sbp0 = m_aysnd->data_r(); break; - case 0x06: break; - case 0x07: m_aysnd->address_w(m_sbp0); break; - } -} - - -TIMER_DEVICE_CALLBACK_MEMBER(videopkr_state::sound_t1_callback) -{ - if (m_te_40103 == 1) - { - m_dc_40103++; - - if (m_dc_40103 == 0) - { - m_soundcpu->set_input_line(0, ASSERT_LINE); - } - } -} - -/************************* -* Memory Map Information * -*************************/ - -void videopkr_state::i8039_map(address_map &map) -{ - map(0x0000, 0x0fff).rom(); -} - -void videopkr_state::i8039_io_port(address_map &map) -{ - map(0x00, 0xff).rw(FUNC(videopkr_state::videopkr_io_r), FUNC(videopkr_state::videopkr_io_w)); -} - -void videopkr_state::i8751_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); -} - -void videopkr_state::i8751_io_port(address_map &map) -{ - map(0x0000, 0x0fff).ram(); // NVRAM? - map(0x8000, 0x8000).noprw(); // ??? - map(0x9000, 0x9000).writeonly(); // ??? - map(0xa000, 0xbfff).ram(); // video RAM? - map(0xc000, 0xc003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xf000, 0xf000).writeonly(); // ??? -} - -void videopkr_state::i8039_sound_mem(address_map &map) -{ - map(0x0000, 0x0fff).rom(); -} - -void videopkr_state::i8039_sound_port(address_map &map) -{ - map(0x00, 0xff).rw(FUNC(videopkr_state::sound_io_r), FUNC(videopkr_state::sound_io_w)); -} - - -void videopkr_state::i8051_sound_mem(address_map &map) -{ - map(0x0000, 0x0fff).rom(); -} - -void videopkr_state::i8051_sound_port(address_map &map) -{ - map(0x0000, 0x1ff).ram(); -} - - -/************************ -* Input Ports * -************************/ - -static INPUT_PORTS_START( videopkr ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_GAMBLE_DEAL ) PORT_NAME("Discard") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - -INPUT_PORTS_END - -static INPUT_PORTS_START( blckjack ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("Hit") PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("Stand") PORT_CODE(KEYCODE_X) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Double") PORT_CODE(KEYCODE_C) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( videodad ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Crap") PORT_CODE(KEYCODE_3) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("6 or Less") PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Seven") PORT_CODE(KEYCODE_X) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("8 or More") PORT_CODE(KEYCODE_C) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Field") PORT_CODE(KEYCODE_S) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Eleven") PORT_CODE(KEYCODE_V) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Twelve") PORT_CODE(KEYCODE_B) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( videocba ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) PORT_NAME("Payout") PORT_CODE(KEYCODE_M) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) - - PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) -INPUT_PORTS_END - - -static INPUT_PORTS_START( babypkr ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Start") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_GAMBLE_DEAL ) PORT_NAME("Double / Discard") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) PORT_NAME("Cancel / Take") - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_BET ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hand Pay") PORT_CODE(KEYCODE_W) - - PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - -INPUT_PORTS_END - -static INPUT_PORTS_START( babydad ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) PORT_NAME("Books") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Crap") PORT_CODE(KEYCODE_3) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_NAME("6 or Less") PORT_CODE(KEYCODE_N) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_NAME("Seven") PORT_CODE(KEYCODE_Z) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_NAME("8 or More") PORT_CODE(KEYCODE_X) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_NAME("Field") PORT_CODE(KEYCODE_C) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON7 ) PORT_NAME("Eleven") PORT_CODE(KEYCODE_V) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON8 ) PORT_NAME("Twelve") PORT_CODE(KEYCODE_B) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_BET ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hopper") PORT_TOGGLE PORT_CODE(KEYCODE_H) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("Hand Pay") PORT_CODE(KEYCODE_W) - - PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - -INPUT_PORTS_END - - -/************************* -* Graphics Layouts * -*************************/ - -static const gfx_layout tilelayout_16 = -{ - 16, 8, - RGN_FRAC(1,4), - 2, - { 0, RGN_FRAC(1,2) }, - { 0, 1, 2, 3, 4, 5, 6, 7, - RGN_FRAC(1,4), RGN_FRAC(1,4) + 1, RGN_FRAC(1,4) + 2, RGN_FRAC(1,4) + 3, - RGN_FRAC(1,4) + 4, RGN_FRAC(1,4) + 5, RGN_FRAC(1,4) + 6, RGN_FRAC(1,4) + 7 - }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 -}; - -static const gfx_layout tilelayout_8 = -{ - 8,8, - RGN_FRAC(1,2), - 2, - { 0, RGN_FRAC(1,2) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 8*8 -}; - - -/****************************** -* Graphics Decode Information * -******************************/ - -static GFXDECODE_START( gfx_videopkr ) - GFXDECODE_ENTRY( "tiles", 0, tilelayout_8, 0, 64 ) -GFXDECODE_END - - -static GFXDECODE_START( gfx_videodad ) - GFXDECODE_ENTRY( "tiles", 0, tilelayout_16, 0, 64 ) -GFXDECODE_END - - -/******************************* -* Machine Start / Reset * -*******************************/ - -void videopkr_state::machine_start() -{ - m_digits.resolve(); - m_lamps.resolve(); - m_vp_sound_p2 = 0xff; /* default P2 latch value */ - m_sound_latch = 0xff; /* default sound data latch value */ - m_p24_data = 0xff; - m_p1 = 0xff; - m_ant_cio = 0; - m_count0 = 0; - - subdevice<nvram_device>("nvram")->set_base(m_data_ram, sizeof(m_data_ram)); -} - -/************************ -* Machine Drivers * -************************/ - -void videopkr_state::videopkr(machine_config &config) -{ - /* basic machine hardware */ - i8039_device &maincpu(I8039(config, m_maincpu, CPU_CLOCK)); - maincpu.set_addrmap(AS_PROGRAM, &videopkr_state::i8039_map); - maincpu.set_addrmap(AS_IO, &videopkr_state::i8039_io_port); - maincpu.p1_in_cb().set(FUNC(videopkr_state::videopkr_p1_data_r)); - maincpu.p1_out_cb().set(FUNC(videopkr_state::videopkr_p1_data_w)); - maincpu.p2_in_cb().set(FUNC(videopkr_state::videopkr_p2_data_r)); - maincpu.p2_out_cb().set(FUNC(videopkr_state::videopkr_p2_data_w)); - maincpu.prog_out_cb().set(FUNC(videopkr_state::prog_w)); - maincpu.t0_in_cb().set(FUNC(videopkr_state::videopkr_t0_latch)); - maincpu.set_vblank_int("screen", FUNC(videopkr_state::irq0_line_assert)); - - i8039_device &soundcpu(I8039(config, m_soundcpu, SOUND_CLOCK)); - soundcpu.set_addrmap(AS_PROGRAM, &videopkr_state::i8039_sound_mem); - soundcpu.set_addrmap(AS_IO, &videopkr_state::i8039_sound_port); - soundcpu.p1_out_cb().set("dac", FUNC(dac_byte_interface::data_w)); - soundcpu.p2_in_cb().set(FUNC(videopkr_state::sound_p2_r)); - soundcpu.p2_out_cb().set(FUNC(videopkr_state::sound_p2_w)); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - TIMER(config, "t1_timer").configure_periodic(FUNC(videopkr_state::sound_t1_callback), attotime::from_hz(50)); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_size(32*8, 32*8); - screen.set_visarea(5*8, 31*8-1, 3*8, 29*8-1); - screen.set_refresh_hz(60); - screen.set_vblank_time(2080); - screen.set_screen_update(FUNC(videopkr_state::screen_update_videopkr)); - screen.set_palette("palette"); - - GFXDECODE(config, m_gfxdecode, "palette", gfx_videopkr); - PALETTE(config, "palette", FUNC(videopkr_state::videopkr_palette), 256); - - /* sound hardware */ - SPEAKER(config, "speaker").front_center(); - MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275); -} - - -void videopkr_state::blckjack(machine_config &config) -{ - videopkr(config); - - /* basic machine hardware */ - - /* video hardware */ - screen_device &screen(*subdevice<screen_device>("screen")); - screen.set_size(32*8, 32*8); - screen.set_visarea(4*8, 31*8-1, 2*8, 30*8-1); -} - - -void videopkr_state::videodad(machine_config &config) -{ - videopkr(config); - - /* basic machine hardware */ - m_maincpu->set_clock(CPU_CLOCK_ALT); - - /* video hardware */ - screen_device &screen(*subdevice<screen_device>("screen")); - screen.set_size(32*16, 32*8); - screen.set_visarea(4*16, 31*16-1, 2*8, 30*8-1); - - m_gfxdecode->set_info(gfx_videodad); - MCFG_VIDEO_START_OVERRIDE(videopkr_state,vidadcba) -} - - -void videopkr_state::babypkr(machine_config &config) -{ - videopkr(config); - - /* basic machine hardware */ - m_maincpu->set_clock(CPU_CLOCK_ALT); - - /* most likely romless or eprom */ - i8031_device &soundcpu(I8031(config.replace(), m_soundcpu, CPU_CLOCK)); - soundcpu.set_addrmap(AS_PROGRAM, &videopkr_state::i8051_sound_mem); - soundcpu.set_addrmap(AS_IO, &videopkr_state::i8051_sound_port); - soundcpu.port_in_cb<0>().set(FUNC(videopkr_state::baby_sound_p0_r)); - soundcpu.port_out_cb<0>().set(FUNC(videopkr_state::baby_sound_p0_w)); - soundcpu.port_in_cb<1>().set(FUNC(videopkr_state::baby_sound_p1_r)); - soundcpu.port_out_cb<2>().set("dac", FUNC(dac_byte_interface::data_w)); - soundcpu.port_out_cb<3>().set(FUNC(videopkr_state::baby_sound_p3_w)); - - /* video hardware */ - screen_device &screen(*subdevice<screen_device>("screen")); - screen.set_size(32*16, 32*8); - screen.set_visarea(5*16, 31*16-1, 3*8, 29*8-1); - - subdevice<palette_device>("palette")->set_init(FUNC(videopkr_state::babypkr_palette)); - m_gfxdecode->set_info(gfx_videodad); - MCFG_VIDEO_START_OVERRIDE(videopkr_state,vidadcba) - - AY8910(config, m_aysnd, CPU_CLOCK / 6).add_route(ALL_OUTPUTS, "speaker", 0.3); /* no ports used */ -} - -void videopkr_state::fortune1(machine_config &config) -{ - videopkr(config); - - /* basic machine hardware */ - m_maincpu->set_clock(CPU_CLOCK_ALT); - - subdevice<palette_device>("palette")->set_init(FUNC(videopkr_state::fortune1_palette)); -} - -void videopkr_state::bpoker(machine_config &config) -{ - babypkr(config); - - i8751_device &maincpu(I8751(config.replace(), m_maincpu, XTAL(6'000'000))); - maincpu.set_addrmap(AS_PROGRAM, &videopkr_state::i8751_map); - maincpu.set_addrmap(AS_IO, &videopkr_state::i8751_io_port); - maincpu.port_in_cb<0>().set_constant(0); // ??? - maincpu.port_in_cb<1>().set_constant(0); // ??? - maincpu.port_out_cb<1>().set_nop(); // ??? - - I8255A(config, "ppi"); - //ppi.out_pa_callback() - //ppi.in_pb_callback() - //ppi.out_pc_callback() - //ppi.in_pc_callback() -} - - -/************************* -* Rom Load * -*************************/ - -ROM_START( videopkr ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "vpoker.c5", 0x0000, 0x0800, CRC(200d21e4) SHA1(d991c9f10a36a02491bb0aba32129675fed77a10) ) - ROM_LOAD( "vpoker.c7", 0x0800, 0x0800, CRC(f72c2a90) SHA1(e9c54d1f895cde0aaca4121a252da40594195a25) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) /* sound cpu program */ - ROM_LOAD( "vpsona3.pbj", 0x0000, 0x0800, CRC(a4f7bf7f) SHA1(a08287821f3471cb3e1ae0528811da930fd57387) ) - ROM_LOAD( "vpsona2.pbj", 0x0800, 0x0800, CRC(583a9b95) SHA1(a10e85452e285b2a63f885f4e39b7f76ee8b2407) ) - - ROM_REGION( 0x1000, "tiles", 0 ) - ROM_LOAD( "vpbj_b15.org", 0x0000, 0x0800, CRC(67468e3a) SHA1(761766f0fb92693d32179a914e11da517cc5747d) ) - ROM_LOAD( "vpbj_b12.org", 0x0800, 0x0800, CRC(4aba166e) SHA1(930cea2216a39b5d72021d1b449db018a121adce) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "vpbjorg.col", 0x0000, 0x0100, CRC(09abf5f1) SHA1(f2d6b4f2f08b47b93728dafb50576d5ca859255f) ) - ROM_END - -ROM_START( blckjack ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "bjc5org.old", 0x0000, 0x0800, CRC(e266a28a) SHA1(1f90c85a2a817f1927c9ab2cbf79cfa2dd116dc8) ) - ROM_LOAD( "bjc7org.old", 0x0800, 0x0800, CRC(c60c565f) SHA1(c9ed232301750288bd000ac4e2dcf2253745ff0a) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) /* sound cpu program */ - ROM_LOAD( "vpsona3.pbj", 0x0000, 0x0800, CRC(a4f7bf7f) SHA1(a08287821f3471cb3e1ae0528811da930fd57387) ) - ROM_LOAD( "vpsona2.pbj", 0x0800, 0x0800, CRC(583a9b95) SHA1(a10e85452e285b2a63f885f4e39b7f76ee8b2407) ) - - ROM_REGION( 0x1000, "tiles", 0 ) - ROM_LOAD( "vpbj_b15.org", 0x0000, 0x0800, CRC(67468e3a) SHA1(761766f0fb92693d32179a914e11da517cc5747d) ) - ROM_LOAD( "vpbj_b12.org", 0x0800, 0x0800, CRC(4aba166e) SHA1(930cea2216a39b5d72021d1b449db018a121adce) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "vpbjorg.col", 0x0000, 0x0100, CRC(09abf5f1) SHA1(f2d6b4f2f08b47b93728dafb50576d5ca859255f) ) -ROM_END - -ROM_START( videodad ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "dac5org.old", 0x0000, 0x0800, CRC(b373c8e9) SHA1(7a99d6aa152f8e6adeddbfdfd13278edeaa529bc) ) - ROM_LOAD( "dac7org.old", 0x0800, 0x0800, CRC(afabae30) SHA1(c4198ba8de6811e3367b0154ff479f6738721bfa) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) /* sound cpu program */ - ROM_LOAD( "vdsona3.dad", 0x0000, 0x0800, CRC(13f7a462) SHA1(2e2e904637ca7873a2ed67d7ab1524e51b324660) ) - ROM_LOAD( "vdsona2.dad", 0x0800, 0x0800, CRC(120e4512) SHA1(207748d4f5793180305bb115af877042517d901f) ) - - ROM_REGION( 0x2000, "tiles", 0 ) - ROM_LOAD( "vdadob15.bin", 0x0000, 0x0800, CRC(caa6a4b0) SHA1(af99da30b8ee63d54ac1f1e6737ed707501a5a25) ) - ROM_LOAD( "vdadob14.bin", 0x0800, 0x0800, CRC(eabfae6b) SHA1(189b38da5e9c99f99c5425cdfefccc6991e3f85e) ) - ROM_LOAD( "vdadob12.bin", 0x1000, 0x0800, CRC(176f7b31) SHA1(613521ed9caf904db22860686e0424d0c0e0cba6) ) - ROM_LOAD( "vdadob11.bin", 0x1800, 0x0800, CRC(259492c7) SHA1(003cc40a88f2b9fad0089574963e7e654211bb16) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "vdvcorg.col", 0x0000, 0x0100, CRC(741b1a22) SHA1(50983ea37f0479793ba38a112a0266c2edc4b5ef) ) -ROM_END - -ROM_START( videocba ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "vcc5org.old", 0x0000, 0x0800, CRC(96d72283) SHA1(056197a9e2ad40d1d6610bbe8a1855b81c0a6715) ) - ROM_LOAD( "vcc7org.old", 0x0800, 0x0800, CRC(fdec55c1) SHA1(19b740f3b7f2acaa0fc09f4c0a2fe69721ebbcaf) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) /* sound cpu program */ - ROM_LOAD( "vcsona3.rod", 0x0000, 0x0800, CRC(b0948d6c) SHA1(6c45d350288f69b4b2b5ac16ab2b418f14c6eded) ) - ROM_LOAD( "vcsona2.rod", 0x0800, 0x0800, CRC(44ff9e85) SHA1(5d7988d2d3bca932b77e014dc61f7a2347b01603) ) - - ROM_REGION( 0x2000, "tiles", 0 ) - ROM_LOAD( "vcbab15.bin", 0x0000, 0x0800, CRC(fce8c772) SHA1(f9736b724b620d60a17d77f6b773f39b99b47190) ) - ROM_LOAD( "vcbab14.bin", 0x0800, 0x0800, CRC(6fd66330) SHA1(0ee3b3329b94ded81f028ebb687e580787c74ded) ) - ROM_LOAD( "vcbab12.bin", 0x1000, 0x0800, CRC(e534d6c3) SHA1(7a93c6c07b5a28558ee005fed2098dc2933c3252) ) - ROM_LOAD( "vcbab11.bin", 0x1800, 0x0800, CRC(e2069a6d) SHA1(2d4e71f2838451215e6f9629e2d1a35808510353) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "vdcbaorg.col", 0x0000, 0x0100, CRC(6cdca5ae) SHA1(f7430af1adfa24fdd68a026ee431ead7d47ba269) ) -ROM_END - -ROM_START( babypkr ) - ROM_REGION( 0x4000, "maincpu", 0 ) - ROM_LOAD( "pok8039.old", 0x0000, 0x4000, CRC(c5400ef1) SHA1(1f27c92d2979319070a695f71ed494f6d47fe88f) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) - ROM_LOAD( "dadvpbj.son", 0x0000, 0x1000, CRC(7b71cd30) SHA1(d782c50689a5aea632b6d274a1a7435a092ad20c) ) - - ROM_REGION( 0x20000, "tiles", 0 ) - ROM_LOAD( "vpbjep15.mme", 0x00000, 0x8000,CRC(cad0f7cf) SHA1(0721b8b30dbf2a5da2967b0cfce24b4cd62d3f9d) ) - ROM_LOAD( "vpbjep14.mme", 0x08000, 0x8000,CRC(96f512fa) SHA1(f5344aeb57f53c43156e923fb7f0d8d37c73dbe9) ) - ROM_LOAD( "vpbjep12.mme", 0x10000, 0x8000,CRC(cfdca530) SHA1(609a5ad6f34e6b5c1c35584ddc62d4ff87546415) ) - ROM_LOAD( "vpbjep11.mme", 0x18000, 0x8000,CRC(44e6c489) SHA1(ca211cb3807c476cd8c5ac98b0d18b4b2724df45) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "babypok.col", 0x0000, 0x0100, CRC(2b98e88a) SHA1(bb22ef090e9e5dddc5c160d41a5f52df0db6feb6) ) -ROM_END - -ROM_START( babydad ) - ROM_REGION( 0x4000, "maincpu", 0 ) - ROM_LOAD( "da400org.old", 0x0000, 0x4000, CRC(cbca3a0c) SHA1(5d9428f26edf2c5531398a6ae36b4e9169b2c1c1) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) - ROM_LOAD( "dadvpbj.son", 0x0000, 0x1000, CRC(7b71cd30) SHA1(d782c50689a5aea632b6d274a1a7435a092ad20c) ) - - ROM_REGION( 0x20000, "tiles", 0 ) - ROM_LOAD( "ep15dad.dad", 0x00000, 0x8000,CRC(21bd102d) SHA1(52788d09dbe38fa29b8ff044a1c5249cad3d45b4) ) - ROM_LOAD( "ep14dad.dad", 0x08000, 0x8000,CRC(b6e2c8a2) SHA1(352d88e1d764da5133de2be9987d4875f0c9237f) ) - ROM_LOAD( "ep12dad.dad", 0x10000, 0x8000,CRC(98702beb) SHA1(6d42ea48df7546932570da1e9b0be7a1f01f930c) ) - ROM_LOAD( "ep11dad.dad", 0x18000, 0x8000,CRC(90aac63b) SHA1(8b312f2313334b4b5b0344b786aa1a7a4979ea92) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "babydad.col", 0x0000, 0x0100, CRC(b3358b3f) SHA1(d499a08fefaa3566de2e6fcddd237d6dfa840d8a) ) -ROM_END - -/* -Video Poker PCB ------------------ - -Main + daughterboard... - - -MAINBOARD: ----------- - -1x AMD D8751H. -1x AY-3-8910A. -1x LM380N. -1x 6.0 MHz. Xtal. - -5x pots: -- 3 together on the connectors opposit side (maybe RGB). -- 1 near the AY-3-8910. -- 1 opposit to the sound circuitry. - -1x 8.0000 MHz. Xtal, near the 3 pots (RGB). -NOTE: silkscreened 7.8643 MHz. on the PCB. - -ROMs: - -conf_11_poker_ver_1.00_9055.bin : AMD Am27C256. -checksum : 00779055h -CRC-32 : B8ABC965h - -conf_12_poker_ver_1.00_3909.bin : AMD Am27C256. -checksum : 00753909h -CRC-32 : 3E72D96Ch - -conf_14_poker_ver_1.00_813a.bin : AMD Am27C256. -checksum : 0074813Ah -CRC-32 : F3D6A741h - -conf_15_poker_ver_1.00_ea91.bin : AMD Am27C256. -checksum : 0074EA91h -CRC-32 : 4EFEA023h - -sonido_dados_poker_y_b.jack_3d2f_(d8751h).bin : AMD D8751H. -checksum : 000C3D2Fh -CRC-32 : 7B71CD30h - - -DAUGHTERBOARD: --------------- - -1x AMD P80C31BH (8031 CPU) -1x AMD P8255A (PPI) -1x 40-pin empty socket (silkscreened 'zocalo' = socket) - -1x NEC D4464C-15 SRAM -1x DALLAS DS1232 - -1x 27256 ROM: - -b_poker_ver_1403.bin - -FUJITSU MBM27256. --Buffer checksum : 003D1403h --CRC-32 : 61ECA2F6h - -1x 8.0000 MHz. Xtal. - -1x 3-pin connector (JP2). -1x 7-pin connector (JP4). -1x 8-pin connector (JP3). -1x 14-pin connector (impresora). - -*/ -ROM_START( bpoker ) - ROM_REGION( 0x8000, "maincpu", 0 ) - ROM_LOAD( "b_poker_ver_1403.bin", 0x0000, 0x8000, CRC(61eca2f6) SHA1(62a671e86b94005a9ffc4b6545a90c43880e0a11) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) - ROM_LOAD( "sonido_dados_poker_y_b.jack_3d2f_=d8751h=.bin", 0x0000, 0x1000, CRC(7b71cd30) SHA1(d782c50689a5aea632b6d274a1a7435a092ad20c) ) - - ROM_REGION( 0x20000, "tiles", 0 ) - ROM_LOAD( "conf_15_poker_ver_1.00_ea91.bin", 0x00000, 0x8000, CRC(4efea023) SHA1(c10a30353d793a54eab14bd5e9687668743b66de) ) - ROM_LOAD( "conf_14_poker_ver_1.00_813a.bin", 0x08000, 0x8000, CRC(f3d6a741) SHA1(5fbfcf4b8fdd1ef9f3d0f9acc735d5c23f45b607) ) - ROM_LOAD( "conf_12_poker_ver_1.00_3909.bin", 0x10000, 0x8000, CRC(3e72d96c) SHA1(3d921b9a79b8116984f58954141800d1856d8311) ) - ROM_LOAD( "conf_11_poker_ver_1.00_9055.bin", 0x18000, 0x8000, CRC(b8abc965) SHA1(61a6cdcfd4cd65d4a7ce02c6a2c4216ab6da095c) ) - - ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "babypok.col", 0x0000, 0x0100, BAD_DUMP CRC(2b98e88a) SHA1(bb22ef090e9e5dddc5c160d41a5f52df0db6feb6) ) -ROM_END - -ROM_START( fortune1 ) - ROM_REGION( 0x1000, "maincpu", 0 ) - ROM_LOAD( "pk485-s-000-7ff.c5", 0x0000, 0x0800, CRC(d74c4860) SHA1(9d151e2be5c1e9fc2e7ce5e533eb08e4b849f2c1) ) - ROM_LOAD( "pk485-s-800-fff.c7", 0x0800, 0x0800, CRC(490da6b0) SHA1(4b7afd058aeda929821d62c58e234769d64339e1) ) - - ROM_REGION( 0x1000, "soundcpu", 0 ) - ROM_LOAD( "vpsona3.pbj", 0x0000, 0x0800, CRC(a4f7bf7f) SHA1(a08287821f3471cb3e1ae0528811da930fd57387) ) - ROM_LOAD( "vpsona2.pbj", 0x0800, 0x0800, CRC(583a9b95) SHA1(a10e85452e285b2a63f885f4e39b7f76ee8b2407) ) - - ROM_REGION( 0x1000, "tiles", 0 ) - ROM_LOAD( "cg073-cg0-a.b12", 0x0000, 0x0800, CRC(fff2d7aa) SHA1(935b8623fda5b4b25ba1aaea869ebb2baded515c) ) - ROM_LOAD( "cg073-cg1-a.b15", 0x0800, 0x0800, CRC(a7cb05c4) SHA1(7cd76ade7cf9c50421b054ee525108829c31307c) ) - - ROM_REGION( 0x100, "proms", 0 ) - ROM_LOAD( "3140-cap8.b8", 0x0000, 0x0100, CRC(09abf5f1) SHA1(f2d6b4f2f08b47b93728dafb50576d5ca859255f) ) -ROM_END - -/************************* -* Game Drivers * -*************************/ -// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT -GAMEL( 1984, videopkr, 0, videopkr, videopkr, videopkr_state, empty_init, ROT0, "InterFlip", "Video Poker", 0, layout_videopkr ) -GAMEL( 1984, fortune1, videopkr, fortune1, videopkr, videopkr_state, empty_init, ROT0, "IGT - International Game Technology", "Fortune I (PK485-S) Draw Poker", 0, layout_videopkr ) -GAMEL( 1984, blckjack, videopkr, blckjack, blckjack, videopkr_state, empty_init, ROT0, "InterFlip", "Black Jack", 0, layout_blckjack ) -GAMEL( 1987, videodad, videopkr, videodad, videodad, videopkr_state, empty_init, ROT0, "InterFlip", "Video Dado", 0, layout_videodad ) -GAMEL( 1987, videocba, videopkr, videodad, videocba, videopkr_state, empty_init, ROT0, "InterFlip", "Video Cordoba", 0, layout_videocba ) -GAMEL( 1987, babypkr, videopkr, babypkr, babypkr, videopkr_state, empty_init, ROT0, "Recreativos Franco", "Baby Poker", 0, layout_babypkr ) -GAMEL( 1987, babydad, videopkr, babypkr, babydad, videopkr_state, empty_init, ROT0, "Recreativos Franco", "Baby Dado", 0, layout_babydad ) -GAMEL( 198?, bpoker, videopkr, bpoker, babypkr, videopkr_state, empty_init, ROT0, "Recreativos Franco", "Video Poker (v1403)", MACHINE_NOT_WORKING, layout_babypkr ) |