From 9d3140d9068b6813c1a4094819303c816c417a18 Mon Sep 17 00:00:00 2001 From: Roberto Fresca Date: Fri, 14 Feb 2025 01:21:00 +0100 Subject: [PATCH] Big improvements to Video Poker / Fortune I driver. [Roberto Fresca, Grull Osgo] - Changed driver name to fortune1.cpp, being the most significative hardware. - Hooked mechanical counters to all games. - Added hopper support to all games. - Changed the parent/clone relationships. - Hooked the new CPU and therefore all the functions. - Added NVRAM support to the MSC51 family. - Worked the 8155 connections. - New set of inputs for bpoker. - Added support of DS1215 timekeeper to the new platform. - Added watchdog support. - Promoted Video Poker (v1403) to working. - Fix some wrong connections on the layouts. - Fixed some buggy sounds. - New realistic button-lamps layout for Video Poker and Fortune1. - New realistic button-lamps layout for Baby Poker and Video Poker (v1403). - New realistic button-lamps layout for Black Jack (Interflip). - New realistic button-lamps layout for Video Dado. - New realistic button-lamps layout for Baby Dado. - New realistic button-lamps layout for Video Cordoba. - Documented the Fortune 1 paytable. - Added technical notes about all the three platforms. Systems promoted to working --------------------------- Video Poker (v1403) [Roberto Fresca, Grull Osgo] --- src/mame/igt/{videopkr.cpp => fortune1.cpp} | 956 +++++++++++++------- src/mame/layout/babydad.lay | 238 +++-- src/mame/layout/babypkr.lay | 277 +++--- src/mame/layout/blckjack.lay | 119 ++- src/mame/layout/bpoker.lay | 250 +++++ src/mame/layout/videocba.lay | 52 +- src/mame/layout/videodad.lay | 227 +++-- src/mame/layout/videopkr.lay | 250 ++--- src/mame/mame.lst | 20 +- 9 files changed, 1612 insertions(+), 777 deletions(-) rename src/mame/igt/{videopkr.cpp => fortune1.cpp} (60%) create mode 100644 src/mame/layout/bpoker.lay diff --git a/src/mame/igt/videopkr.cpp b/src/mame/igt/fortune1.cpp similarity index 60% rename from src/mame/igt/videopkr.cpp rename to src/mame/igt/fortune1.cpp index 7f94ee53103..92ea1bd47ce 100644 --- a/src/mame/igt/videopkr.cpp +++ b/src/mame/igt/fortune1.cpp @@ -2,12 +2,13 @@ // copyright-holders:Roberto Fresca, Grull Osgo /************************************************************************* - VIDEO POKER - IGT/INTERFLIP - --------------------------- + Fortune I - Baby - Video Poker. + IGT - Interflip - Recreativos Franco - CODERE Argentina. + + -------------------------------------------------------- Original driver by Grull Osgo. Rewrite and additional work by Roberto Fresca. - Fortune I (IGT) added by Jim Stolis. Games running on this hardware: @@ -22,7 +23,7 @@ * Baby Poker, 1989, Recreativos Franco. * Baby Dado, 1989, Recreativos Franco. - * Video Poker (v1403), 198?, Recreativos Franco?. + * Video Poker (v1403), 1989, CODERE Argentina. *************************************************************************** @@ -30,8 +31,9 @@ History: ======== - In 1975, Si Redd founded A1-Supply. This was renamed to Sircoma in 1978, - and eventually IGT (International Game Technology) in 1981. + IGT was founded as an A-1 Supply by William "Si" Redd in 1975. It changed its name to Sircoma in 1978, + and then to International Game Technology (IGT) in 1981. The company went public in 1981, following its + success in the video poker machine industry. Along the way, in 1978, Fortune Coin Company was acquired and contained the basis to their Fortune I game machines. @@ -64,7 +66,13 @@ Hardware Info ============= - This is a two board system: Main & Sound board. + There are three well known platforms: + Fortune I, Baby and Baby with I8051 microcontroller. + + + Fortune I Platform (Original IGT) + ================================= + This is a three board system: Main, Interface & Sound board. * Main board: @@ -84,6 +92,8 @@ TTL type Raster video Configurable HIGH-LOW resolution through hardware jumper. Configurable 50Hz-60Hz V-Sync through hardware jumper. + * Interface + I/O System Buffered, latched & optocoupled. @@ -94,7 +104,32 @@ 1x 1408 DAC 1x 8.0000 MHz. Crystal + + Baby Platform (Recreativos Franco) + ================================== + + This is a single board system: Integrates all Fortune I hardware. + Replaces the I8039 sound uP with an I8751 uP. + Adds 1x AY-3-8910 sound processor. + + + Baby with I8051 Platform (CODERE Argentina) + =========================================== + + The same Baby platform which replaces the I8039 main cpu uP daugther board with: + 1x INTEL I8051 CPU Main CPU. + 1x 27C256 Program ROM. + 1x NEC D4364 SRAM Data RAM. + 1x Dallas DS1216 Battery + Timekeeper SRAM Socket. + 1x Dallas DS12321 Watchdog. + 1x AM8255APC PPI. + 1x SN74HCT373 Octal D-type transparent latch with 3-state outputs. + 1x SN74HCT138 3-line to 8-line Inverting Decoder/demultiplexer. + 1x SN74HCT00 Quadruple independent 2-input NAND gates. + 1x 8.00000 MHZ. Crystal System Clock + + ******************************************************************************** Main CPU Memory Map @@ -155,27 +190,35 @@ These machines had their pay tables out of screen, in a backlighted upper front panel. + Fortune 1 - Draw Poker + --------------------------------------------------------------------- + Coins Played 1 Coin 2 Coins 3 Coins 4 Coins 5 Coins + --------------------------------------------------------------------- + Royal Flush 300 600 900 1200 4500 + Strt Flush 50 100 150 200 250 + 4 of a Kind 25 50 75 100 125 + Full House 9 18 27 36 45 + Flush 6 12 18 24 30 + Straight 4 8 12 16 20 + 3 of a Kind 3 6 9 12 15 + 2 Pair 2 4 6 8 10 + --------------------------------------------------------------------- + + 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 - ---------------------------------------------------------------------------- + ------------------------------------------------------------------------- + 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) @@ -229,13 +272,38 @@ 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) + These payments will be automatic now, due to the new hopper implementation. Payments over 400 coins are manual. ************************************************************************** + [2025-02-14] + + - Changed driver name to fortune1.cpp, being the most significative. + - Hooked mechanical counters to all games. + - Added hopper support to all games. + - Changed the parent/clone relationships. + - Hooked the new CPU and therefore all the functions. + - Added NVRAM support to the MSC51 family. + - Worked the 8155 connections. + - New set of inputs for bpoker. + - Added support of DS1215 timekeeper to the new platform. + - Added watchdog support. + - Promoted Video Poker (v1403) to working. + - Fix some wrong connections on the layouts. + - Fixed some buggy sounds. + - New realistic button-lamps layout for Video Poker and Fortune1. + - New realistic button-lamps layout for Baby Poker and Video Poker (v1403). + - New realistic button-lamps layout for Black Jack (Interflip). + - New realistic button-lamps layout for Video Dado. + - New realistic button-lamps layout for Baby Dado. + - New realistic button-lamps layout for Video Cordoba. + - Documented the Fortune 1 paytable. + - Added technical notes about all the three platforms. + + [2008-10-08] - Added Baby Poker Game. @@ -262,12 +330,8 @@ 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 bookkeeping mode (videodad & videocba). - * Figure out the undocumented jumper. - * Hopper simulation. - * Switch to resnet system. **************************************************************************/ @@ -277,9 +341,12 @@ #include "cpu/mcs48/mcs48.h" #include "cpu/mcs51/mcs51.h" +#include "machine/ds1215.h" #include "machine/i8255.h" #include "machine/nvram.h" +#include "machine/ticket.h" #include "machine/timer.h" +#include "machine/watchdog.h" #include "sound/ay8910.h" #include "sound/dac.h" @@ -291,6 +358,7 @@ #include "babydad.lh" #include "babypkr.lh" #include "blckjack.lh" +#include "bpoker.lh" #include "videocba.lh" #include "videodad.lh" #include "videopkr.lh" @@ -298,9 +366,9 @@ namespace { -#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 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) @@ -317,6 +385,7 @@ public: , m_gfxdecode(*this, "gfxdecode") , m_digits(*this, "digit%u", 0U) , m_lamps(*this, "lamp%u", 0U) + , m_hopper(*this, "hopper") { } void videopkr(machine_config &config); @@ -328,7 +397,6 @@ protected: virtual void machine_start() override ATTR_COLD; virtual void video_start() override ATTR_COLD; -//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(); @@ -389,6 +457,7 @@ protected: required_device m_gfxdecode; output_finder<28> m_digits; output_finder<14> m_lamps; + optional_device m_hopper; }; @@ -398,6 +467,8 @@ public: babypkr_state(const machine_config &mconfig, device_type type, const char *tag) : videopkr_state(mconfig, type, tag) , m_aysnd(*this, "aysnd") + , m_watchdog(*this, "watchdog") + , m_rtc(*this, "rtc") , m_top_lamps(*this, "TOP_%u", 1U) { } @@ -408,30 +479,44 @@ public: protected: virtual void machine_start() override ATTR_COLD; + void prog_w(uint8_t data); + uint8_t bp_io_port_r(offs_t offset); + void bp_io_port_w(offs_t offset, uint8_t data); + uint8_t bp_video_io_r(offs_t offset); + void bp_video_io_w(offs_t offset, uint8_t data); + uint8_t bp_color_io_r(offs_t offset); + void bp_color_io_w(offs_t offset, uint8_t data); + void bpoker_p1_data_w(uint8_t data); + void bpoker_wd_reset_w(offs_t offset, uint8_t data); + uint8_t bp_timekeep_r(offs_t offset); + void bp_timekeep_w(offs_t offset, uint8_t data); + private: 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); void babypkr_palette(palette_device &palette) const; - + void i8751_map(address_map &map) ATTR_COLD; void i8751_io_port(address_map &map) ATTR_COLD; void i8051_sound_mem(address_map &map) ATTR_COLD; void i8051_sound_port(address_map &map) ATTR_COLD; required_device m_aysnd; + optional_device m_watchdog; + optional_device m_rtc; output_finder<3> m_top_lamps; uint8_t m_sbp0 = 0U; }; -/************************* -* Video Hardware * -*************************/ +/*********************************** +* Video Hardware * +***********************************/ -/* BCD to Seven Segment Decoder */ +// BCD to 7-seg decoder static uint8_t dec_7seg(int data) { uint8_t segment; @@ -453,7 +538,7 @@ static uint8_t dec_7seg(int data) return segment; } -/* Display a seven digit counter on layout - Index points to less significant digit*/ +// Display a seven digit counter on layout - Index points to less significant digit void videopkr_state::count_7dig(unsigned long data, uint8_t index) { for (auto i = 0; i < 7; i++) @@ -542,7 +627,7 @@ void videopkr_state::fortune1_palette(palette_device &palette) const 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 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); @@ -568,9 +653,9 @@ uint32_t videopkr_state::screen_update_videopkr(screen_device &screen, bitmap_in } -/************************* -* R/W Handlers * -*************************/ +/*********************************** +* R/W Handlers * +***********************************/ uint8_t videopkr_state::videopkr_io_r(offs_t offset) { @@ -580,29 +665,29 @@ uint8_t videopkr_state::videopkr_io_r(offs_t offset) switch (m_p2) { - case 0xef: /* inputs are multiplexed through a diode matrix */ + 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 */ + 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 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 */ + 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 ) @@ -696,26 +781,34 @@ void videopkr_state::videopkr_io_w(offs_t offset, uint8_t data) break; } - case 0xef: /* Port 2.4 */ + 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_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; + + if((m_p24_data & 0x60)==0x60) + m_hopper->motor_w(true); + else + m_hopper->motor_w(false); + + //popmessage("hopper %02x", m_p24_data & 0x60); + break; } case 0xff: { - m_t0_latch = m_t0_latch ^ 0x01; /* fix the bookkeeping mode */ + m_t0_latch = m_t0_latch ^ 0x01; // fix the bookkeeping mode break; } } @@ -735,33 +828,41 @@ 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_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*/ + ++m_count1; // Decoded Coin In mechanical counter + machine().bookkeeping().coin_counter_w(0, 1); + machine().bookkeeping().coin_counter_w(0, 0); } if ((~m_c_io & 1) & m_ant_cio & (~m_hp_1 & 1) & (~m_hp_2 & 1)) { - ++m_count2; /* Decoded Coind Out Mech. Counter */ + ++m_count2; // Decoded Coin Out mechanical counter + machine().bookkeeping().coin_counter_w(1, 1); + machine().bookkeeping().coin_counter_w(1, 0); } if (~m_c_io & m_ant_cio & m_hp_1 & m_hp_2 & ~m_dvrt) { - ++m_count3; /* Decoded Coin to Drop Mech. Counter */ + ++m_count3; // Decoded Coin to Drop mechanical counter + machine().bookkeeping().coin_counter_w(2, 1); + machine().bookkeeping().coin_counter_w(2, 0); } if (~m_jckp & m_ant_jckp) { - ++m_count4; /* Decoded Jackpot Mech. Counter */ + ++m_count4; // Decoded Jackpot mechanical counter + machine().bookkeeping().coin_counter_w(3, 1); + machine().bookkeeping().coin_counter_w(3, 0); } count_7dig(m_count1, 0); @@ -786,12 +887,26 @@ int videopkr_state::videopkr_t0_latch() void videopkr_state::prog_w(int state) { if (!state) - m_maincpu->set_input_line(0, CLEAR_LINE); /* clear interrupt FF */ + m_maincpu->set_input_line(0, CLEAR_LINE); // clear interrupt FF } -/************************* -* Sound Handlers * -*************************/ +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); + } + } +} + + +/************************************* +* Fortune I Sound Handlers * +*************************************/ /* Sound Data ( Sound Board latch ) @@ -843,7 +958,7 @@ uint8_t videopkr_state::sound_io_r() break; } } - + return m_sound_latch; } @@ -869,8 +984,8 @@ void videopkr_state::sound_p2_w(uint8_t data) { case 0x5f: { - m_te_40103 = 0; /* p2.7 LOW */ - m_ld_40103 = 0; /* p2.5 LOW */ + m_te_40103 = 0; // p2.7 low + m_ld_40103 = 0; // p2.5 low break; } @@ -891,7 +1006,186 @@ void videopkr_state::sound_p2_w(uint8_t data) } -/* Baby Sound Handlers */ +/******************************************** +* Baby Platform with I8051 Handlers * +*********************************************/ + +void babypkr_state::prog_w(uint8_t data) +{ + m_maincpu->set_input_line(0, CLEAR_LINE); // clear interrupt FF +} + +void babypkr_state::bpoker_p1_data_w(uint8_t data) +{ + m_p1 = data; + + m_lamps[8] = BIT(data, 0); // Aux_0 - Jackpot mechanical 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 mechanical counter + machine().bookkeeping().coin_counter_w(0, 1); + machine().bookkeeping().coin_counter_w(0, 0); + } + + if ((~m_c_io & 1) & m_ant_cio & (~m_hp_1 & 1) & (~m_hp_2 & 1)) + { + ++m_count2; // Decoded Coin Out mechanical counter + machine().bookkeeping().coin_counter_w(1, 1); + machine().bookkeeping().coin_counter_w(1, 0); + } + + if (~m_c_io & m_ant_cio & m_hp_1 & m_hp_2 & ~m_dvrt) + { + ++m_count3; // Decoded Coin to Drop mechanical counter + machine().bookkeeping().coin_counter_w(2, 1); + machine().bookkeeping().coin_counter_w(2, 0); + } + + if (~m_jckp & m_ant_jckp) + { + ++m_count4; // Decoded Jackpot mechanical counter + machine().bookkeeping().coin_counter_w(3, 1); + machine().bookkeeping().coin_counter_w(3, 0); + } + + 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; + +} + +uint8_t babypkr_state::bp_io_port_r(offs_t offset) +{ + uint8_t valor = 0; + uint8_t hf, co; + uint16_t kbdin; + + 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; + + return valor; +} + +void babypkr_state::bp_io_port_w(offs_t offset, uint8_t data) +{ + 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; + + // bit 5 - bit 6 -> Hopper + if((data&0x60)==0x60) + m_hopper->motor_w(true); + else + m_hopper->motor_w(false); +} + +uint8_t babypkr_state::bp_video_io_r(offs_t offset) +{ + uint8_t ret; + uint16_t v_addr = ((m_p1 & 0xc0) << 2 ) + offset; + ret = m_video_ram[v_addr]; + return ret; +} + +void babypkr_state::bp_video_io_w(offs_t offset, uint8_t data) +{ + uint16_t v_addr = ((m_p1 & 0xc0) << 2 ) + offset; + m_video_ram[v_addr] = data; + m_bg_tilemap->mark_tile_dirty(v_addr); +} + +uint8_t babypkr_state::bp_color_io_r(offs_t offset) +{ + uint8_t ret; + uint16_t v_addr = ((m_p1 & 0xc0) << 2 ) + offset; + ret = m_color_ram[v_addr]; + return ret; +} + +void babypkr_state::bp_color_io_w(offs_t offset, uint8_t data) +{ + uint16_t v_addr = ((m_p1 & 0xc0) << 2 ) + offset; + m_color_ram[v_addr] = data; + m_bg_tilemap->mark_tile_dirty(v_addr); +} + +void babypkr_state::bpoker_wd_reset_w(offs_t offset, uint8_t data) +{ + m_watchdog->watchdog_reset(); +} + + +uint8_t babypkr_state::bp_timekeep_r(offs_t offset) +{ + if (m_rtc->ceo_r()) + return m_rtc->read(); + else + m_rtc->read(); + return 0; +} + +void babypkr_state::bp_timekeep_w(offs_t offset, uint8_t data) +{ + if (m_rtc->ceo_r()) + { + m_rtc->write(data & 0x01); + return; + } + m_rtc->write(data & 0x01); +} + + +/***************************************** +* Baby Sound Handlers * +*****************************************/ uint8_t babypkr_state::baby_sound_p0_r() { @@ -910,8 +1204,7 @@ uint8_t babypkr_state::baby_sound_p1_r() 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; -} + return m_c_io | (m_hp_1 << 1) | (m_hp_2 << 2) | 0xf8;} void babypkr_state::baby_sound_p3_w(uint8_t data) { @@ -921,7 +1214,7 @@ void babypkr_state::baby_sound_p3_w(uint8_t data) if (!(data & 0x10)) { - reset(); + m_aysnd->reset(); logerror("AY3-8910: Reset\n"); } @@ -940,22 +1233,9 @@ void babypkr_state::baby_sound_p3_w(uint8_t data) } -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 * -*************************/ +/***************************************** +* Memory Map Information * +*****************************************/ void videopkr_state::i8039_map(address_map &map) { @@ -967,21 +1247,6 @@ 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 babypkr_state::i8751_map(address_map &map) -{ - map(0x0000, 0x7fff).rom(); -} - -void babypkr_state::i8751_io_port(address_map &map) -{ - map(0x0000, 0x0fff).ram(); // NVRAM? - map(0x8000, 0x8000).noprw(); // ??? - map(0x9000, 0x9000).nopw(); // ??? - map(0xa000, 0xbfff).ram(); // video RAM? - map(0xc000, 0xc003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0xf000, 0xf000).nopw(); // ??? -} - void videopkr_state::i8039_sound_mem(address_map &map) { map(0x0000, 0x0fff).rom(); @@ -992,7 +1257,6 @@ 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 babypkr_state::i8051_sound_mem(address_map &map) { map(0x0000, 0x0fff).rom(); @@ -1003,18 +1267,33 @@ void babypkr_state::i8051_sound_port(address_map &map) map(0x0000, 0x1ff).ram(); } +void babypkr_state::i8751_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); +} -/************************ -* Input Ports * -************************/ +void babypkr_state::i8751_io_port(address_map &map) +{ + map(0x0000, 0x3fff).ram().share("nvram"); + map(0x4900, 0x49ff).rw(FUNC(babypkr_state::bp_timekeep_r), FUNC(babypkr_state::bp_timekeep_w)); + map(0x8000, 0x80ff).rw(FUNC(babypkr_state::bp_io_port_r), FUNC(babypkr_state::bp_io_port_w)); + map(0x9000, 0x9000).w(FUNC(babypkr_state::prog_w)); // replaces PROG line in i8039 used to clear interrupt flip flop + map(0xa000, 0xa0ff).rw(FUNC(babypkr_state::bp_video_io_r), FUNC(babypkr_state::bp_video_io_w)); // partial video RAM address + map(0xb000, 0xb0ff).rw(FUNC(babypkr_state::bp_color_io_r), FUNC(babypkr_state::bp_color_io_w)); // Idem to color RAM + map(0xc000, 0xc003).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + map(0xf000, 0xf000).w(FUNC(babypkr_state::bpoker_wd_reset_w)); +} +/***************************************** +* 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( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + 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 ) @@ -1024,77 +1303,71 @@ static INPUT_PORTS_START( videopkr ) 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( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Hopper Weight") PORT_CODE(KEYCODE_H) PORT_TOGGLE + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // over 400 Coins/Credits 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 ) ) - + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) 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_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START1 ) PORT_NAME("Deal") + 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_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_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Hopper Weight") PORT_CODE(KEYCODE_H) PORT_TOGGLE + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) 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 ) ) + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) 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( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + 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_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Craps") 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( 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( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Hopper Weight") PORT_CODE(KEYCODE_H) PORT_TOGGLE + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // over 400 Coins/Credits 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 ) ) + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) 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( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + 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 ) @@ -1105,26 +1378,23 @@ static INPUT_PORTS_START( videocba ) 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( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Hopper Weight") PORT_TOGGLE PORT_CODE(KEYCODE_H) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // over 400 Coins/Credits 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 ) ) + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) 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( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + 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 / Payout") PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) @@ -1133,50 +1403,90 @@ static INPUT_PORTS_START( babypkr ) 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_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Hopper Weight") PORT_CODE(KEYCODE_H) PORT_TOGGLE + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // over 400 Coins/Credits PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") + 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( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + 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_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Craps") 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( 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( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Hopper Weight") PORT_CODE(KEYCODE_H) PORT_TOGGLE + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) 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_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // over 400 Coins/Credits + + PORT_START("IN2") + PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) +INPUT_PORTS_END + +static INPUT_PORTS_START( bpoker ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_GAMBLE_DOOR ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BOOK ) + 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 / Payout") + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) PORT_NAME("Hold 2 / Red") + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) PORT_NAME("Hold 4 / Black") + 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 Weight") PORT_CODE(KEYCODE_H) PORT_TOGGLE + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) // over 400 Coins/Credits PORT_START("IN2") - PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") + PORT_DIPNAME( 0x20, 0x00, "Color Sw." ) PORT_DIPLOCATION("SW1:1") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_START("PPI_PA") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("SET") PORT_CODE(KEYCODE_A) // Change field value / Last Operations + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("NEXT") PORT_CODE(KEYCODE_S) // Select next field / Paper Cut (Ticket printer) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("INIT") PORT_CODE(KEYCODE_D) // Set NVRAM data / Set Time / Set Machine Number & Series + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("BOOK") PORT_CODE(KEYCODE_F) // Bookeeping / Enter / Exit + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("PERIOD") PORT_CODE(KEYCODE_G) // Operator Key / NVRAM Clear / Close and Report period + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pa-5") PORT_CODE(KEYCODE_J) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pa-6") PORT_CODE(KEYCODE_K) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pa-7") PORT_CODE(KEYCODE_L) + + PORT_START("PPI_PC") + PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pc-4") PORT_CODE(KEYCODE_E) // /BUSY (Ticket printer) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pc-5") PORT_CODE(KEYCODE_T) // /NO_PAPER (Ticket printer) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pc-6") PORT_CODE(KEYCODE_Y) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_NAME("pc-7") PORT_CODE(KEYCODE_U) INPUT_PORTS_END -/************************* -* Graphics Layouts * -*************************/ +/***************************************** +* Graphics Layouts * +*****************************************/ static const gfx_layout tilelayout_16 = { @@ -1204,9 +1514,9 @@ static const gfx_layout tilelayout_8 = }; -/****************************** -* Graphics Decode Information * -******************************/ +/************************************ +* Graphics Decode Information * +************************************/ static GFXDECODE_START( gfx_videopkr ) GFXDECODE_ENTRY( "tiles", 0, tilelayout_8, 0, 64 ) @@ -1218,17 +1528,17 @@ static GFXDECODE_START( gfx_videodad ) GFXDECODE_END -/******************************* -* Machine Start / Reset * -*******************************/ +/***************************************** +* 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_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; @@ -1247,13 +1557,14 @@ void babypkr_state::machine_start() m_top_lamps.resolve(); } -/************************ -* Machine Drivers * -************************/ + +/***************************************** +* Machine Drivers * +*****************************************/ void videopkr_state::videopkr(machine_config &config) { - /* basic machine hardware */ + // 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); @@ -1276,45 +1587,44 @@ void videopkr_state::videopkr(machine_config &config) TIMER(config, "t1_timer").configure_periodic(FUNC(videopkr_state::sound_t1_callback), attotime::from_hz(50)); - /* video hardware */ + // 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 */ + // sound hardware SPEAKER(config, "speaker").front_center(); MC1408(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.275); + + HOPPER(config, m_hopper, attotime::from_msec(150)); } - void videopkr_state::blckjack(machine_config &config) { videopkr(config); - /* basic machine hardware */ + // basic machine hardware - /* video hardware */ + // video hardware screen_device &screen(*subdevice("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 */ + // basic machine hardware m_maincpu->set_clock(CPU_CLOCK_ALT); - /* video hardware */ + // video hardware screen_device &screen(*subdevice("screen")); screen.set_size(32*16, 32*8); screen.set_visarea(4*16, 31*16-1, 2*8, 30*8-1); @@ -1327,22 +1637,21 @@ void videopkr_state::fortune1(machine_config &config) { videopkr(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_clock(CPU_CLOCK_ALT); - /* video hardware */ + // video hardware subdevice("palette")->set_init(FUNC(videopkr_state::fortune1_palette)); } - void babypkr_state::babypkr(machine_config &config) { videopkr(config); - /* basic machine hardware */ + // basic machine hardware m_maincpu->set_clock(CPU_CLOCK_ALT); - /* most likely romless or eprom */ + // most likely romless or eprom i8031_device &soundcpu(I8031(config.replace(), m_soundcpu, CPU_CLOCK)); soundcpu.set_addrmap(AS_PROGRAM, &babypkr_state::i8051_sound_mem); soundcpu.set_addrmap(AS_IO, &babypkr_state::i8051_sound_port); @@ -1352,7 +1661,7 @@ void babypkr_state::babypkr(machine_config &config) soundcpu.port_out_cb<2>().set("dac", FUNC(dac_byte_interface::data_w)); soundcpu.port_out_cb<3>().set(FUNC(babypkr_state::baby_sound_p3_w)); - /* video hardware */ + // video hardware screen_device &screen(*subdevice("screen")); screen.set_size(32*16, 32*8); screen.set_visarea(5*16, 31*16-1, 3*8, 29*8-1); @@ -1361,7 +1670,7 @@ void babypkr_state::babypkr(machine_config &config) m_gfxdecode->set_info(gfx_videodad); MCFG_VIDEO_START_OVERRIDE(babypkr_state,vidadcba) - AY8910(config, m_aysnd, CPU_CLOCK / 6); // no ports used + AY8910(config, m_aysnd, CPU_CLOCK / 6); // no ports used m_aysnd->add_route(ALL_OUTPUTS, "speaker", 0.3); } @@ -1372,21 +1681,46 @@ void babypkr_state::bpoker(machine_config &config) i8751_device &maincpu(I8751(config.replace(), m_maincpu, XTAL(6'000'000))); maincpu.set_addrmap(AS_PROGRAM, &babypkr_state::i8751_map); maincpu.set_addrmap(AS_IO, &babypkr_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() + maincpu.set_vblank_int("screen", FUNC(babypkr_state::irq0_line_assert)); + maincpu.port_in_cb<0>().set_constant(0); + maincpu.port_out_cb<1>().set(FUNC(babypkr_state::bpoker_p1_data_w)); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_msec(600)); // Dallas DS1232: TD(2) -> float = 600ms) Verified + DS1215(config, m_rtc); + + screen_device &screen(*subdevice("screen")); + screen.set_size(32*16, 32*8); + screen.set_visarea(3*16, 31*16-1, 0*8, 29*8-1); + + i8255_device &ppi(I8255A(config, "ppi")); + //ppi.out_pa_callback().set_constant(0); + ppi.in_pb_callback().set_ioport("PPI_PA"); + //ppi.out_pc_callback().set_constant(0); + ppi.in_pc_callback().set_ioport("PPI_PC"); } -/************************* -* Rom Load * -*************************/ +/***************************************** +* Rom Load * +*****************************************/ + +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 ROM_START( videopkr ) ROM_REGION( 0x1000, "maincpu", 0 ) @@ -1495,75 +1829,75 @@ ROM_START( babydad ) ROM_END /* -Video Poker PCB ------------------ + Video Poker PCB + ----------------- -Main + daughterboard... + Main + daughterboard... -MAINBOARD: ----------- + MAINBOARD: + ---------- -1x AMD D8751H. -1x AY-3-8910A. -1x LM380N. -1x 6.0 MHz. Xtal. + 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. + 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. + 1x 8.0000 MHz. Xtal, near the 3 pots (RGB). + NOTE: silkscreened 7.8643 MHz. on the PCB. -ROMs: + ROMs: -conf_11_poker_ver_1.00_9055.bin : AMD Am27C256. -checksum : 00779055h -CRC-32 : B8ABC965h + 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_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_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 + 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 + sonido_dados_poker_y_b.jack_3d2f_(d8751h).bin : AMD D8751H. + checksum : 000C3D2Fh + CRC-32 : 7B71CD30h -DAUGHTERBOARD: --------------- + DAUGHTERBOARD: + -------------- -1x AMD P80C31BH (8031 CPU) -1x AMD P8255A (PPI) -1x 40-pin empty socket (silkscreened 'zocalo' = socket) + 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 NEC D4464C-15 SRAM + 1x DALLAS DS1232 -1x 27256 ROM: + 1x 27256 ROM: -b_poker_ver_1403.bin + b_poker_ver_1403.bin -FUJITSU MBM27256. --Buffer checksum : 003D1403h --CRC-32 : 61ECA2F6h + FUJITSU MBM27256. + -Buffer checksum : 003D1403h + -CRC-32 : 61ECA2F6h -1x 8.0000 MHz. Xtal. + 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). + 1x 3-pin connector (JP2). + 1x 7-pin connector (JP4). + 1x 8-pin connector (JP3). + 1x 14-pin connector (impresora). */ ROM_START( bpoker ) @@ -1580,38 +1914,22 @@ ROM_START( bpoker ) 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_LOAD( "bpkr_col.bin", 0x0000, 0x0100, CRC(1c34f02c) SHA1(7160f2216caf4854c892601fb6977fa9ada12187) ) ROM_END } // Anonymous namespace -/************************* -* Game Drivers * -*************************/ +/***************************************** +* 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 (InterFlip)", 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, babypkr_state, empty_init, ROT0, "Recreativos Franco", "Baby Poker", 0, layout_babypkr ) -GAMEL( 1987, babydad, videopkr, babypkr, babydad, babypkr_state, empty_init, ROT0, "Recreativos Franco", "Baby Dado", 0, layout_babydad ) -GAMEL( 198?, bpoker, videopkr, bpoker, babypkr, babypkr_state, empty_init, ROT0, "Recreativos Franco", "Video Poker (v1403)", MACHINE_NOT_WORKING, layout_babypkr ) +GAMEL( 1984, fortune1, 0, fortune1, videopkr, videopkr_state, empty_init, ROT0, "IGT - International Game Technology", "Fortune I (PK485-S) Draw Poker", 0, layout_videopkr ) +GAMEL( 1984, videopkr, fortune1, videopkr, videopkr, videopkr_state, empty_init, ROT0, "InterFlip", "Video Poker", 0, layout_videopkr ) +GAMEL( 1984, blckjack, fortune1, blckjack, blckjack, videopkr_state, empty_init, ROT0, "InterFlip", "Black Jack (InterFlip)", 0, layout_blckjack ) +GAMEL( 1987, videodad, fortune1, videodad, videodad, videopkr_state, empty_init, ROT0, "InterFlip", "Video Dado", 0, layout_videodad ) +GAMEL( 1987, videocba, fortune1, videodad, videocba, videopkr_state, empty_init, ROT0, "InterFlip", "Video Cordoba", 0, layout_videocba ) +GAMEL( 1987, babypkr, fortune1, babypkr, babypkr, babypkr_state, empty_init, ROT0, "Recreativos Franco", "Baby Poker", 0, layout_babypkr ) +GAMEL( 1987, babydad, fortune1, babypkr, babydad, babypkr_state, empty_init, ROT0, "Recreativos Franco", "Baby Dado", 0, layout_babydad ) +GAMEL( 1989, bpoker, fortune1, bpoker, bpoker, babypkr_state, empty_init, ROT0, "CODERE Argentina", "Video Poker (v1403)", 0, layout_bpoker ) diff --git a/src/mame/layout/babydad.lay b/src/mame/layout/babydad.lay index a23320224e9..5fba21cf54c 100644 --- a/src/mame/layout/babydad.lay +++ b/src/mame/layout/babydad.lay @@ -1,98 +1,117 @@ - - - - - + + + + + + + - + - - - - - + + + + - + + + + + - - - - - + + + + - + - - - - - + + + + - + + + + + - - - - - + + + + - + - - - - - + + + + - + - - - - - + + + + - + - - - - - + + + + - + - - - - - + + + + - + + + + + + + + + + + + + @@ -111,6 +130,7 @@ license:CC0-1.0 + @@ -123,58 +143,106 @@ license:CC0-1.0 + + + - + - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + - + - + diff --git a/src/mame/layout/babypkr.lay b/src/mame/layout/babypkr.lay index 77a70987b65..3626bb7ffd4 100644 --- a/src/mame/layout/babypkr.lay +++ b/src/mame/layout/babypkr.lay @@ -1,155 +1,142 @@ + + + - - - - - - - + + + - + - - - - - - - + + + - + + + + + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - + + + + - + + - - - + - - - + - - - + - - - + - - - + + + + + + + + + + + + + + + + + + + + @@ -158,50 +145,94 @@ license:CC0-1.0 + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + + + + - + - + diff --git a/src/mame/layout/blckjack.lay b/src/mame/layout/blckjack.lay index 60121853f80..8a171e1dcbf 100644 --- a/src/mame/layout/blckjack.lay +++ b/src/mame/layout/blckjack.lay @@ -1,76 +1,118 @@ - - - - - + + + + + + + - + - - - - - + + + + - + - - - - - + + + + - + - - - - - + + + + + - + + + + + + + + + + + + + - - - + + - - - + + + + + - - + + + + + - - + + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + @@ -136,5 +178,6 @@ license:CC0-1.0 + diff --git a/src/mame/layout/bpoker.lay b/src/mame/layout/bpoker.lay new file mode 100644 index 00000000000..470fa4fe880 --- /dev/null +++ b/src/mame/layout/bpoker.lay @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/layout/videocba.lay b/src/mame/layout/videocba.lay index 2e3c32d1d43..6175e29210e 100644 --- a/src/mame/layout/videocba.lay +++ b/src/mame/layout/videocba.lay @@ -1,40 +1,67 @@ - - - - - - - + + + + + + - + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + @@ -46,5 +73,6 @@ license:CC0-1.0 + diff --git a/src/mame/layout/videodad.lay b/src/mame/layout/videodad.lay index 446ab2f6df4..3ef5de767b0 100644 --- a/src/mame/layout/videodad.lay +++ b/src/mame/layout/videodad.lay @@ -1,122 +1,184 @@ - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + - - + + - - + + + - - + + - - + + + - - + + - - + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -128,5 +190,6 @@ license:CC0-1.0 + diff --git a/src/mame/layout/videopkr.lay b/src/mame/layout/videopkr.lay index 226bba87d9a..5f3b450f007 100644 --- a/src/mame/layout/videopkr.lay +++ b/src/mame/layout/videopkr.lay @@ -1,112 +1,99 @@ - - - - - - - - + + + + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + - - - - - - - - + + + + - + + + + + + + + + + + + @@ -126,73 +113,119 @@ license:CC0-1.0 - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + + + + + - + + + + + - + + + + + - + - - + + + + + + + + + + - + + + + + - + + + + + - + + + + + + + - - - - - - - - - - - - - - - + @@ -205,5 +238,6 @@ license:CC0-1.0 + diff --git a/src/mame/mame.lst b/src/mame/mame.lst index fd8d0a36dac..bbf9e7492df 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20793,6 +20793,16 @@ spk306us drw80pk2 drw80pkr +@source:igt/fortune1.cpp +babydad +babypkr +blckjack +bpoker +fortune1 +videocba +videodad +videopkr + @source:igt/gkigt.cpp bmoonii brhino @@ -21476,16 +21486,6 @@ spset015 spset026 spss4240 -@source:igt/videopkr.cpp -babydad -babypkr -blckjack -bpoker -fortune1 -videocba -videodad -videopkr - @source:informer/informer_207_100.cpp in207100