diff options
Diffstat (limited to 'src/mame/drivers/majorpkr.cpp')
-rw-r--r-- | src/mame/drivers/majorpkr.cpp | 1199 |
1 files changed, 0 insertions, 1199 deletions
diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp deleted file mode 100644 index a5e39d4bd91..00000000000 --- a/src/mame/drivers/majorpkr.cpp +++ /dev/null @@ -1,1199 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Roberto Fresca -// thanks-to:Tomasz Slanina, Rob Ragon -/********************************************************************************** - - Major Poker / Major Joker - 1994 PAL System. - - Driver by Roberto Fresca. - - - Special thanks to Tomasz Slanina & Rob Ragon for their invaluable help. - -*********************************************************************************** - - Hardware Notes: - -------------- - - 1x Z80 @ 6 MHz. (main CPU) - - 1x OKI M6295 @ 1.5 MHz. (4 channel mixing ADPCM voice synthesis). Pin7 high. - - 1x Hitachi HD6845 (CRT Controller) @ 750 kHz. - Hs 15625 Hz. - Vs 52.786 Hz. - - 1x Logic box (like CPU boxes) with 5 PLDs, maybe for protection. - - 2x MB8464 (Video?)8Kx8 - 1x MB8416 (NVRAM) 2Kx8 - 1x MB8464 (?) 8Kx8 - - 2x 27C040 (Roms 1 & 2) (GFX ROMs). - 2x 27C010 (Roms 3 & 4) (GFX ROMs). - 1x 27C020 (Rom 5) (4-bit ADPCM samples) - 1x 27C512 (Rom 6) (main program) - - 1x Xtal @ 12 MHz. - - 4x 8 DIP switches banks. - 2x switches (SW1, SW2). - - 1x 2x6-pin male connector. (jumper1) - - 1x 2x10-pin edge connector. - 1x 2x22-pin edge connector. - - -*********************************************************************************** - - PORTS: - ------ - - 00 W ---> ROM bank. - 01 W ---> RAM bank. - 02 W ---> RAM bank. - - 10 R ---> Regular inputs (holds) multiplexed with credits out. - 10 W ---> Writes a kind of watchdog (bit4) and mech counters pulses (bits 0-1-2-3). - 11 R ---> Read input port (remaining controls). - 11 W ---> Writes mux selector. - 12 R ---> Read coin/credits port. - 12 W ---> Video registers: Normal or Up Down screen (bit6 off/on). Also writes 0xFC & 0x11 at CRTC offsets 0x0C & 0x0D (0's if normal). - 13 R ---> Multiplexed port for DIP switches banks. - 13 W ---> Lamps out (array a) - 14 R ---> Freeze. Switch in bit0 that pause the game when active. Just once active, the code loops till the bit resets. - 14 W ---> Lamps out (array b). - - 50 RW ---> OKI6295 (R/W) - - 60 W ---> PSG SN76489/96 initialization routines. (Maybe a leftover for different hardware) - The offset is initialized with the following sequence: 0x9f, 0xbf, 0xdf, 0xff. - - - Pulses - Port 10h. - ------------------ - - bits - - 7654 3210 - ---- ---x Credits Out mech counter. - ---- --x- Credits 3 mech counter. - ---- -x-- Credits 1 mech counter. - ---- x--- Credits 2 mech counter. - ---x ---- Watchdog? (constant writes). (*) - xxx- ---- Unknown. - - (*) Tied to a ULN Opto Triac (pin3 solder side edge connector - Lock Out (100V)) - - - Lamps - Array A - Port 13h. - --------------------------- - - bits - - 7654 3210 - ---- ---x Hold 1 lamp. - ---- --x- Hold 2 lamp. - ---- -x-- Hold 3 lamp. - ---- x--- Hold 4 lamp. - ---x ---- Hold 5 lamp. - --x- ---- Big lamp. - -x-- ---- Small lamp. - x--- ---- Unknown. - - - Lamps - Array B - Port 14h. - --------------------------- - - bits - - 7654 3210 - ---- ---x Bet lamp. - ---- --x- Draw lamp. - ---- -x-- Cancel lamp. - ---- x--- Take lamp. - ---x ---- Double-Up lamp. - --x- ---- Fever lamp. - xx-- ---- Unknown. - -*********************************************************************************** - - Instructions... - (translated from a Japanese flyer) - - Bonus stage: - - 10 fever awarded by three of a kind of 1, 3, or 7. - - 15 fever awarded by four of a kind. - - Slot stage: - - 10 bonus stage awarded by three consecutive 1, 3, or 7. - - 5 bonus stage awarded by four consecutive numbers other than 1, 3, or 7. - - If bonus is awarded while you are in bonus stage, odds will be x4. - Bonus stage & slot stage: You can get triple & fourth fever points, and you - can challenge 3 or 4 times of double-up game by this point. - - .... - - Service Mode: - - F2 to enter the Book/Settings Mode. - HOLD1 to move UP. - HOLD2 to move DOWN. - HOLD3 to move LEFT. - HOLD4 to move RIGHT. - HOLD5 to move next screen / exit. - - You can shortcut the DIP settings pressing "0" in Book Mode. - HOLD5 to exit. - -*********************************************************************************** - - Major Poker: Things that you should know!!! (from "engrish" manual) - ------------------------------------------------------------------- - - The game not stabilise until 10,000 games have been played. As a result, the - actual payout % may exceed the set payout % during this period. After the 10,000 - games the machine will follow the set payout %. - - Original game for your location. - - Analyzer screen #1: Provides you with data regarding games played so far such as - numbers of games, number of fevers, etc... - - Analyzer screen #2: Allows you to adjust various aspects of the game to suit your - location. For example you can increase the number of Fever (this does not affect - the payout %). Also you can make the dealing speed quicker or slower. - - Even if you do not adjust the game it is ready to be played. - - - DIP Switches.... - - .-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----. - | DIP Switches #1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - | OFF Fixed | OFF | | - +-------------------------------+-----+-----+-----------------------------------+ - | Screen Direction Normal | | OFF | | - | Up Down | | ON | | - +-------------------------------+-----+-----+-----+-----------------------------+ - | Hopper No | | OFF | | - | Yes | | ON | | - +-------------------------------+-----------+-----+-----+-----------------------+ - | Hopper SW Active High | | OFF | | - | Low | | ON | | - +-------------------------------+-----------------+-----+-----+-----------------+ - | Coin Payout Payout SW | | OFF | | - | Automatic | | ON | | - +-------------------------------+-----------------------+-----+-----+-----------+ - | Hold Cancel No | | OFF | | - | Yes | | ON | | - +-------------------------------+-----------------------------+-----+-----+-----+ - | Auto Hold No | | OFF | | - | Yes | | ON | | - +-------------------------------+-----------------------------------+-----+-----+ - | Fever Mode Yes | | OFF | - | No | | ON | - '-------------------------------+-----------------------------------------+-----' - - .-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----. - | DIP Switches #2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - | Payout % 95% | OFF | OFF | OFF | | - | 90% | ON | OFF | OFF | | - | 85% | OFF | ON | OFF | | - | 80% | ON | ON | OFF | | - | 75% | OFF | OFF | ON | | - | 70% | ON | OFF | ON | | - | 65% | OFF | ON | ON | | - | 60% | ON | ON | ON | | - +-------------------------------+-----+-----+-----+-----+-----+-----------------+ - | Min Bet size 1 | | OFF | OFF | | - | for Fever 3 | | ON | OFF | | - | 5 | | OFF | ON | | - | 10 | | ON | ON | | - +-------------------------------+-----------------+-----+-----+-----+-----+-----+ - | Double-Up Weak | | OFF | OFF | | - | Game Difficulty ... | | ON | OFF | | - | ... | | OFF | ON | | - | Strong | | ON | ON | | - +-------------------------------+-----------------------------+-----+-----+-----+ - | OFF Fixed | | OFF | - '-------------------------------+-----------------------------------------+-----' - - .-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----. - | DIP Switches #3 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - | Key In 1 Coin - 50 Credits | OFF | OFF | OFF | | - | 1 Coin - 5 Credits | ON | OFF | OFF | | - | 1 Coin - 10 Credits | OFF | ON | OFF | | - | 1 Coin - 20 Credits | ON | ON | OFF | | - | 1 Coin - 25 Credits | OFF | OFF | ON | | - | 1 Coin - 40 Credits | ON | OFF | ON | | - | 1 Coin - 60 Credits | OFF | ON | ON | | - | 1 Coin - 100 Credits | ON | ON | ON | | - +-------------------------------+-----+-----+-----+-----+-----+-----+-----------+ - | Coin-A 1 Coin - 5 Credits | | OFF | OFF | OFF | | - | 1 Coin - 1 Credit | | ON | OFF | OFF | | - | 1 Coin - 2 Credits | | OFF | ON | OFF | | - | 1 Coin - 10 Credits | | ON | ON | OFF | | - | 1 Coin - 20 Credits | | OFF | OFF | ON | | - | 1 Coin - 25 Credits | | ON | OFF | ON | | - | 1 Coin - 40 Credits | | OFF | ON | ON | | - | 1 Coin - 50 Credits | | ON | ON | ON | | - +-------------------------------+-----------------+-----+-----+-----+-----+-----+ - | Credit Limit 5000 | | OFF | OFF | - | 10000 | | ON | OFF | - | 20000 | | OFF | ON | - | 30000 | | ON | ON | - '-------------------------------+-----------------------------------+-----+-----' - - .-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----. - | DIP Switches #4 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - +-------------------------------+-----+-----+-----+-----+-----+-----+-----+-----+ - | Coin-B 1 Coin - 50 Credits | OFF | OFF | OFF | OFF | | - | 1 Coin - 1 Credit | ON | OFF | OFF | OFF | | - | 1 Coin - 2 Credits | OFF | ON | OFF | OFF | | - | 1 Coin - 4 Credits | ON | ON | OFF | OFF | | - | 1 Coin - 5 Credits | OFF | OFF | ON | OFF | | - | 1 Coin - 10 Credits | ON | OFF | ON | OFF | | - | 1 Coin - 20 Credits | OFF | ON | ON | OFF | | - | 1 Coin - 25 Credits | ON | ON | ON | OFF | | - | 1 Coin - 100 Credits | OFF | OFF | OFF | ON | | - | 2 Coins - 1 Credit | ON | OFF | OFF | ON | | - | 2 Coins - 5 Credits | OFF | ON | OFF | ON | | - | 4 Coins - 1 Credit | ON | ON | OFF | ON | | - | 5 Coins - 1 Credit | OFF | OFF | ON | ON | | - | 5 Coins - 2 Credits | ON | OFF | ON | ON | | - | 10 Coins - 1 Credit | OFF | ON | ON | ON | | - | 20 Coins - 1 Credit | ON | ON | ON | ON | | - +-------------------------------+-----+-----+-----+-----+-----+-----+-----------+ - | Max Bet 20 | | OFF | OFF | | - | 10 | | ON | OFF | | - | 30 | | OFF | ON | | - | 50 | | ON | ON | | - +-------------------------------+-----------------------+-----+-----+-----+-----+ - | Credit-In Limit No Limit | | OFF | OFF | - | 1000 | | ON | OFF | - | 2000 | | OFF | ON | - | 5000 | | ON | ON | - '-------------------------------+-----------------------------------+-----+-----' - - -*********************************************************************************** - - Power Supply edge connector Layout... - - .-----------------------+-+--+---------------------------. - | Components side |L|PN| Solder side | - +-----------------------+-+--+---------------------------+ - | GND |A|01| GND | - | GND |B|02| GND | - | +5V |C|03| +5V | - | +5V |D|04| +5V | - | Lamp BET |E|05| Lamp HOLD 1 | - | +12V |F|06| +12V | - | Lamp DEAL |H|07| Lamp HOLD 2 | - | Lamp CANCEL |J|08| Lamp HOLD 3 | - | Lamp TAKE SCORE |K|09| Lamp HOLD 4 | - | Lamp DOUBLE UP |L|10| Lamp HOLD 5 | - '-----------------------+-+--+---------------------------' - - Edge connector Layout... - - .-----------------------+-+--+---------------------------. - | Components side |L|PN| Solder side | - +-----------------------+-+--+---------------------------+ - | Out Counter |A|01| AC 100V In | - | Key In Counter |B|02| AC Out to Hopper | - | Coin In Counter A |C|03| Lock Out (100V) | - | Sound GND |D|04| Sound Out | - | HOLD 5 / SMALL |E|05| Payout | - | Key In |F|06| HOLD 2 | - | HOLD 3 |H|07| Coin B In | - | HOLD 4 |J|08| HOLD 1 / BIG | - | |K|09| RED (TV) | - | |L|10| GREEN (TV) | - | TAKE SCORE |M|11| Sync (TV) | - | DOUBLE UP |N|12| BLUE (TV) | - | Coin A In |P|13| DEAL | - | CANCEL |R|14| Analyzer (Books/Settings) | - | * SW2 (Clear Meters) |S|15| BET | - | Coin In Counter |T|16| Out of Fever Lamp | - | ** GND |U|17| GND ** | - | ** GND |V|18| GND ** | - | |W|19| GND | - | |X|20| | - | Hopper Limited SW |Y|21| Hopper Payout | - | |Z|22| | - '-----------------------+-+--+---------------------------' - - * Soft SW2 Extension. Traced (undocumented). - ** Edge connector pins U, V, 17 and 18 (GND), are tied - to Power Supply edge connector pins A, B, 01 and 02. - -*********************************************************************************** - - Book / Settings Mode: - --------------------- - - First Screen (Books & Meters): - - 5C 0 F5C 0 - RF 0 FRF 0 - SF 0 FSF 0 - 4C 0 F4C 0 - FH 0 FFH 0 - FL 0 FFL 0 - ST 0 FST 0 - 3C 0 F3C 0 - 2P 0 F2P 0 - - MAIN GAMES 0 - FEVER GAMES 0 - FEVER OUT 0 - S-FEVER GAMES 0 - S-FEVER OUT 0 - TOTAL BET 0 - TOTAL SCORE 0 - SCORE%BET 0% - W-UP IN 0 - W-UP OUT 0 - W-UP OUT%IN 0% - CREDIT IN 0 - CREDIT OUT 0 - CREDIT OUT%IN 0% - DOWN COUNT 0 - TOTAL-CREDIT IN 0 - TOTAL-CREDIT OUT 0 - TOTAL-CREDIT IN/OUT 0 - - DATA RESET: In this first screen, press the SW2 to clear all data, - except for the Total Credits meters. - - - Second Screen (Settings): - - MIN NTL MAX - FEVER --------------------*-------------------- - 5 CARD --------------------*-------------------- - ROYAL --------------------*-------------------- - STR-FLUSH --------------------*-------------------- - 4 CARD --------------------*-------------------- - FULL HOUSE --------------------*-------------------- - FLUSH --------------------*-------------------- - STRAIGHT --------------------*-------------------- - 3 CARD --------------------*-------------------- - 2 PAIR --------------------*-------------------- - NORMAL JKR --------------------*-------------------- - FEVER JKR --------------------*-------------------- - DEAL SPEED --------------------*-------------------- - difficult appear easy appear - - HOLD 1 (Up) - HOLD 2 (Down) - HOLD 3 (Left) - HOLD 4 (Right) - HOLD 5 (Next) - - - Third Screen (Settings): - - Memory Switches... - - DEALER OFF ON <--- Girl Dealer. - FVR-ANIMATION OFF ON <--- Fever Screen animation. - DUP-NUDE OFF ON <--- Double-Up Nude. - SLOW-ACTION OFF ON <--- Speed of Cards. - KEY-LOCK OFF ON <--- Lock settings leaving only Books. Other revisions may have "JQKA-1PAIR" (Jacks or Better). - FVR-SLOT OFF ON <--- Fever's number slot. - AMUSEMENT-MODE OFF ON <--- Self explanatory.... - - 1ST BET 1 5 10 20 30 <--- First Bet. - CNT BET 1 5 10 20 30 <--- Second Bet. - - BACK-RGB R 0 1 2 3 4 5 6 7 <--- Background R component (0 = light, 7 = strong) - BACK-RGB G 0 1 2 3 4 5 6 7 <--- Background G component (0 = light, 7 = strong) - BACK-RGB B 0 1 2 3 4 5 6 7 <--- Background B component (0 = light, 7 = strong) - - BACK-PATTERN 0 1 2 3 4 5 6 <--- Background Pattern (0 = None, 1-6 available when dealer is off) - - HOLD 1 (Up) - HOLD 2 (Down) - HOLD 3 (Off) - HOLD 4 (On) - HOLD 5 (Exit) - - - Fourth Screen (DIP switches test): - - DIP Switch test... - - DIPSW-1 00000000 00000000 - DIPSW-2 00000000 00000000 - DIPSW-3 00000000 00000000 - DIPSW-4 00000000 00000000 - - HOLD 5 (Exit) - - Created of DIP Switch (Green) <--- ????? - Test Mode of DIP Switch (White) <--- Show on the fly each DIP switch state. - -*********************************************************************************** - - To Do: - - - Find the input that unlocks the "KEY-LOCK" mode in the settings. - - Resistors Network. - -**********************************************************************************/ - -#include "emu.h" - -#include "cpu/z80/z80.h" -#include "machine/bankdev.h" -#include "machine/nvram.h" -#include "sound/okim6295.h" -#include "video/mc6845.h" - -#include "emupal.h" -#include "screen.h" -#include "speaker.h" -#include "tilemap.h" - -#include "majorpkr.lh" - - -#define MASTER_CLOCK XTAL(12'000'000) -#define CPU_CLOCK (MASTER_CLOCK / 2) // 6 MHz, measured. -#define OKI_CLOCK (MASTER_CLOCK / 8) // 1.5 MHz, measured. -#define CRTC_CLOCK (MASTER_CLOCK / 16) // 750 kHz, measured. - - -class majorpkr_state : public driver_device -{ -public: - majorpkr_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_gfxdecode(*this, "gfxdecode"), - m_palette_bank(*this, "palette_bank"), - m_vram_bank(*this, "vram_bank"), - m_rom_bank(*this, "rom_bank"), - m_fg_vram(*this, "fg_vram"), - m_bg_vram(*this, "bg_vram"), - m_lamps(*this, "lamp%u", 0U) - { } - - void majorpkr(machine_config &config); - - void init_majorpkr(); - -protected: - virtual void machine_start() override { m_lamps.resolve(); } - virtual void video_start() override; - -private: - DECLARE_WRITE8_MEMBER(rom_bank_w); - DECLARE_WRITE8_MEMBER(palette_bank_w); - DECLARE_WRITE8_MEMBER(vram_bank_w); - DECLARE_WRITE8_MEMBER(fg_vram_w); - DECLARE_WRITE8_MEMBER(bg_vram_w); - DECLARE_WRITE8_MEMBER(vidreg_w); - DECLARE_READ8_MEMBER(mux_port_r); - DECLARE_READ8_MEMBER(mux_port2_r); - DECLARE_WRITE8_MEMBER(mux_sel_w); - DECLARE_WRITE8_MEMBER(lamps_a_w); - DECLARE_WRITE8_MEMBER(lamps_b_w); - DECLARE_WRITE8_MEMBER(pulses_w); - TILE_GET_INFO_MEMBER(bg_get_tile_info); - TILE_GET_INFO_MEMBER(fg_get_tile_info); - uint32_t screen_update_majorpkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - void map(address_map &map); - void palettebanks(address_map &map); - void portmap(address_map &map); - void vrambanks(address_map &map); - - required_device<gfxdecode_device> m_gfxdecode; - required_device<address_map_bank_device> m_palette_bank; - required_device<address_map_bank_device> m_vram_bank; - - required_memory_bank m_rom_bank; - required_shared_ptr<uint8_t> m_fg_vram; - required_shared_ptr<uint8_t> m_bg_vram; - - tilemap_t *m_bg_tilemap, *m_fg_tilemap; - - int m_mux_data; - int m_flip_state; - output_finder<13> m_lamps; -}; - - -/************************* -* Video Hardware * -*************************/ - -TILE_GET_INFO_MEMBER(majorpkr_state::bg_get_tile_info) -{ - int code = m_bg_vram[2 * tile_index] + (m_bg_vram[2 * tile_index + 1] << 8); - - SET_TILE_INFO_MEMBER(0, - (code & 0x1fff), - code >> 13, - 0); -} - -TILE_GET_INFO_MEMBER(majorpkr_state::fg_get_tile_info) -{ - int code = m_fg_vram[2 * tile_index] + (m_fg_vram[2 * tile_index + 1] << 8); - - SET_TILE_INFO_MEMBER(1, - (code & 0x07ff), - code >> 13, - (code & (1 << 12)) ? (TILE_FLIPX|TILE_FLIPY) : 0); -} - - -void majorpkr_state::video_start() -{ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(majorpkr_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 36, 28); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(majorpkr_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 36, 28); - m_fg_tilemap->set_transparent_pen(0); -} - - -uint32_t majorpkr_state::screen_update_majorpkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) -{ - m_bg_tilemap->draw(screen, bitmap, cliprect, 0); - m_fg_tilemap->draw(screen, bitmap, cliprect, 0); - - return 0; -} - - -/****************************** -* R/W Handlers * -******************************/ - -WRITE8_MEMBER(majorpkr_state::rom_bank_w) -{ - m_rom_bank->set_entry(data & 0x3); - if (data & (0x3 ^ 0xff)) - logerror("%s: accessing rom bank %02X\n", machine().describe_context(), data); -} - -WRITE8_MEMBER(majorpkr_state::palette_bank_w) -{ - m_palette_bank->set_bank(data & 0x3); - if (data & (0x3 ^ 0xff)) - logerror("%s: accessing palette bank %02X\n", machine().describe_context(), data); -} - -WRITE8_MEMBER(majorpkr_state::vram_bank_w) -{ - m_vram_bank->set_bank(data & 0x3); - if (data & (0x3 ^ 0xff)) - logerror("%s: accessing vram bank %02X\n", machine().describe_context(), data); -} - -WRITE8_MEMBER(majorpkr_state::fg_vram_w) -{ - m_fg_vram[offset] = data; - m_fg_tilemap->mark_tile_dirty(offset >> 1); -} - -WRITE8_MEMBER(majorpkr_state::bg_vram_w) -{ - m_bg_vram[offset] = data; - m_bg_tilemap->mark_tile_dirty(offset >> 1); -} - -WRITE8_MEMBER(majorpkr_state::vidreg_w) -{ -/* If bit6 is active, the screen is drawn upside down. - (also 0xfc and 0x11 are written to the CRTC registers 0x0c and 0x0d) - So, the CRTC display start address = 0xfc11 -*/ - if (data & 0x40) - { - /* upside down screen */ - m_flip_state = 1; - m_bg_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY); - m_fg_tilemap->set_flip(TILEMAP_FLIPX | TILEMAP_FLIPY); - } - -/* If bit6 is not active, the screen is drawn normally. - (also 0x00 is written to the CRTC registers 0xc0 and 0xd0) - So, the CRTC display start address = 0x0000 -*/ - else - { - /* normal screen */ - m_flip_state = 0; - m_bg_tilemap->set_flip(0); - m_fg_tilemap->set_flip(0); - } -} - - -/***** Multiplexed Ports *****/ - -READ8_MEMBER(majorpkr_state::mux_port_r) -{ - switch( (m_mux_data & 0xf0) ) // 00-10-20-30-0F-1F-2F-3F. - { - case 0x00: return ioport("DSW1")->read(); // confirmed. - case 0x10: return ioport("DSW2")->read(); // confirmed. - case 0x20: return ioport("DSW3")->read(); // confirmed. - case 0x30: return ioport("DSW4")->read(); // confirmed. - } - - return 0xff; -} - -READ8_MEMBER(majorpkr_state::mux_port2_r) -{ - if ((m_mux_data & 0x0f) == 4) - { - return ioport("IN0-1")->read(); - } - else - { - return ioport("IN0-0")->read(); - } -} - -WRITE8_MEMBER(majorpkr_state::mux_sel_w) -{ - m_mux_data = data; // 00-10-20-30-0F-1F-2F-3F. -} - - -/************************* -* Lamps and Pulses * -*************************/ - -WRITE8_MEMBER(majorpkr_state::lamps_a_w) -{ -/* Lamps - Array A. - - - bits - - 7654 3210 - ---- ---x Hold 1 lamp. - ---- --x- Hold 2 lamp. - ---- -x-- Hold 3 lamp. - ---- x--- Hold 4 lamp. - ---x ---- Hold 5 lamp. - --x- ---- Big lamp. - -x-- ---- Small lamp. - x--- ---- Unknown. -*/ - m_lamps[0] = BIT(data, 0); // Lamp 0: Hold 1. - m_lamps[1] = BIT(data, 1); // Lamp 1: Hold 2. - m_lamps[2] = BIT(data, 2); // Lamp 2: Hold 3. - m_lamps[3] = BIT(data, 3); // Lamp 3: Hold 4. - m_lamps[4] = BIT(data, 4); // Lamp 4: Hold 5. - m_lamps[5] = BIT(data, 5); // Lamp 5: Big or Small (need identification). - m_lamps[6] = BIT(data, 6); // Lamp 6: Big or Small (need identification). - - if (data & 0x80) - logerror("Lamps A: Write to 13h: %02x\n", data); -} - -WRITE8_MEMBER(majorpkr_state::lamps_b_w) -{ -/* Lamps - Array B. - - - bits - - 7654 3210 - ---- ---x Bet lamp. - ---- --x- Draw lamp. - ---- -x-- Cancel lamp. - ---- x--- Take lamp. - ---x ---- Double-Up lamp. - --x- ---- Fever lamp. - xx-- ---- Unknown. -*/ - m_lamps[7] = BIT(data, 0); // Lamp 7: Bet. - m_lamps[8] = BIT(data, 1); // Lamp 8: Draw. - m_lamps[9] = BIT(data, 2); // Lamp 9: Cancel. - m_lamps[10] = BIT(data, 3); // Lamp 10: Take. - m_lamps[11] = BIT(data, 4); // Lamp 11: D-UP. - m_lamps[12] = BIT(data, 5); // Lamp 12: Fever. - - if (data & 0xc0) - logerror("Lamps B: Write to 14h: %02x\n", data); -} - -WRITE8_MEMBER(majorpkr_state::pulses_w) -{ -/* Pulses... - - - bits - - 7654 3210 - ---- ---x Credits Out mech counter. - ---- --x- Credits 3 mech counter. - ---- -x-- Credits 1 mech counter. - ---- x--- Credits 2 mech counter. - ---x ---- Watchdog? (constant writes). - xxx- ---- Unknown. -*/ - machine().bookkeeping().coin_counter_w(3, data & 0x01); // Credits Out (all). - machine().bookkeeping().coin_counter_w(2, data & 0x02); // Credits 3. - machine().bookkeeping().coin_counter_w(0, data & 0x04); // Credits 1. - machine().bookkeeping().coin_counter_w(1, data & 0x08); // Credits 2. - - if (data & 0xe0) - logerror("Pulse: Write to 10h: %02x\n", data); -} - - -/************************* -* Memory map information * -*************************/ - -void majorpkr_state::map(address_map &map) -{ - map(0x0000, 0xdfff).rom(); - map(0xe000, 0xe7ff).bankr("rom_bank"); - map(0xe800, 0xefff).ram().share("nvram"); - map(0xf000, 0xf7ff).m(m_palette_bank, FUNC(address_map_bank_device::amap8)); - map(0xf800, 0xffff).m(m_vram_bank, FUNC(address_map_bank_device::amap8)); -} - -void majorpkr_state::palettebanks(address_map &map) -{ - map(0x0000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); -} - -void majorpkr_state::vrambanks(address_map &map) -{ - map(0x0000, 0x07ff).ram().w(FUNC(majorpkr_state::fg_vram_w)).share("fg_vram"); - map(0x0800, 0x0fff).ram().w(FUNC(majorpkr_state::bg_vram_w)).share("bg_vram"); - map(0x1000, 0x1fff).ram(); // spare vram? cleared during boot along with fg and bg -} - -/* - 00 W ---> ROM bank. - 01 W ---> RAM bank. - 02 W ---> RAM bank. - - 10 R ---> Regular inputs (holds) multiplexed with credits out. - 10 W ---> Writes a kind of watchdog (bit4) and mech counters pulses (bits 0-1-2-3). - 11 R ---> Read input port (remaining controls). - 11 W ---> Writes mux selector. - 12 R ---> Read coin/credits port. - 12 W ---> Video registers: Normal or Up Down screen (bit6 off/on). Also writes 0xFC & 0x11 at CRTC offsets 0x0C & 0x0D (0's if normal). - 13 R ---> Multiplexed port for DIP switches banks. - 13 W ---> Lamps out (array a) - 14 R ---> Freeze. Switch in bit0 that pause the game when active. Just once active, the code loops till the bit resets. - 14 W ---> Lamps out (array b). - - 50 RW ---> OKI6295 (RW) - - 60 W ---> PSG SN76489/96 initialization routines. - (Maybe a leftover for different hardware). -*/ -void majorpkr_state::portmap(address_map &map) -{ - map.global_mask(0xff); - map(0x00, 0x00).w(FUNC(majorpkr_state::rom_bank_w)); - map(0x01, 0x01).w(FUNC(majorpkr_state::palette_bank_w)); - map(0x02, 0x02).w(FUNC(majorpkr_state::vram_bank_w)); - - map(0x10, 0x10).r(FUNC(majorpkr_state::mux_port2_r)); // muxed set of controls. - map(0x10, 0x10).w(FUNC(majorpkr_state::pulses_w)); // kind of watchdog on bit4... mech counters on bits 0-1-2-3. - map(0x11, 0x11).portr("IN1"); - map(0x11, 0x11).w(FUNC(majorpkr_state::mux_sel_w)); // multiplexer selector. - map(0x12, 0x12).portr("IN2"); - map(0x12, 0x12).w(FUNC(majorpkr_state::vidreg_w)); // video registers: normal or up down screen. - map(0x13, 0x13).r(FUNC(majorpkr_state::mux_port_r)); // all 4 DIP switches banks multiplexed. - map(0x13, 0x13).w(FUNC(majorpkr_state::lamps_a_w)); // lamps a out. - map(0x14, 0x14).portr("TEST"); // "freeze" switch. - map(0x14, 0x14).w(FUNC(majorpkr_state::lamps_b_w)); // lamps b out. - - map(0x30, 0x30).w("crtc", FUNC(mc6845_device::address_w)); - map(0x31, 0x31).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); - - map(0x50, 0x50).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); - map(0x60, 0x60).nopw(); // leftover from a PSG SN76489/96?... -} - - -/************************* -* Input ports * -*************************/ - -static INPUT_PORTS_START( majorpkr ) - PORT_START("IN0-0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) /* muxed with Key Out */ - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_GAMBLE_HIGH ) PORT_NAME("Big") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_GAMBLE_LOW ) PORT_NAME("Small / DIP Test (In Book Mode)") - - PORT_START("IN0-1") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYOUT ) /* muxed with HOLD 2 */ - PORT_BIT( 0xfd, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_BET ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_DEAL ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_GAMBLE_D_UP ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_GAMBLE_TAKE ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Book/Settings Mode") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_GAMBLE_PAYOUT ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("UNK 1-PAD") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("UNK 2-PAD") - - PORT_START("IN2") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_GAMBLE_KEYIN) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CODE(KEYCODE_0) PORT_NAME("SW2 (Clear Short-Term Meters)") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("UNK 4-PAD") - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_CODE(KEYCODE_E) PORT_NAME("Manual Payout") - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("UNK 5-PAD") - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("UNK 6-PAD") - - PORT_START("DSW1") /* multiplexed x4 & inverted */ - PORT_DIPNAME( 0x01, 0x00, "OFF Fixed" ) PORT_DIPLOCATION("DSW1:1") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, "Screen Direction" ) PORT_DIPLOCATION("DSW1:2") /* Activates bit6 at port 0x10 & change CRTC registers */ - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x02, "Up Down" ) - PORT_DIPNAME( 0x04, 0x00, "Payout" ) PORT_DIPLOCATION("DSW1:3") /* Hopper: No / Yes (in the manual) */ - PORT_DIPSETTING( 0x00, "Automatic" ) - PORT_DIPSETTING( 0x04, "Manual" ) - PORT_DIPNAME( 0x08, 0x00, "Hopper SW Active" ) PORT_DIPLOCATION("DSW1:4") - PORT_DIPSETTING( 0x00, DEF_STR( High ) ) - PORT_DIPSETTING( 0x08, DEF_STR( Low ) ) - PORT_DIPNAME( 0x10, 0x00, "Auto Max Bet" ) PORT_DIPLOCATION("DSW1:5") /* Coin Payout: Payout SW / Automatic (in the manual) */ - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, "Hold Cancel" ) PORT_DIPLOCATION("DSW1:6") /* Inverse from the manual */ - PORT_DIPSETTING( 0x20, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x40, 0x40, "Auto Hold" ) PORT_DIPLOCATION("DSW1:7") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, "Fever Mode" ) PORT_DIPLOCATION("DSW1:8") - PORT_DIPSETTING( 0x80, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - - PORT_START("DSW2") /* multiplexed x4 & inverted */ - PORT_DIPNAME( 0x07, 0x00, "Payout %" ) PORT_DIPLOCATION("DSW2:1,2,3") - PORT_DIPSETTING( 0x07, "60%" ) - PORT_DIPSETTING( 0x06, "65%" ) - PORT_DIPSETTING( 0x05, "70%" ) - PORT_DIPSETTING( 0x04, "75%" ) - PORT_DIPSETTING( 0x03, "80%" ) - PORT_DIPSETTING( 0x02, "85%" ) - PORT_DIPSETTING( 0x01, "90%" ) - PORT_DIPSETTING( 0x00, "95%" ) - PORT_DIPNAME( 0x18, 0x00, "Min Bet Size for Fever" ) PORT_DIPLOCATION("DSW2:4,5") - PORT_DIPSETTING( 0x00, "1" ) - PORT_DIPSETTING( 0x08, "3" ) - PORT_DIPSETTING( 0x10, "5" ) - PORT_DIPSETTING( 0x18, "10" ) - PORT_DIPNAME( 0x60, 0x00, "D-UP Game Difficulty" ) PORT_DIPLOCATION("DSW2:6,7") - PORT_DIPSETTING( 0x00, "0 (Weak)" ) - PORT_DIPSETTING( 0x20, "1" ) - PORT_DIPSETTING( 0x40, "2" ) - PORT_DIPSETTING( 0x60, "3 (Strong)" ) - PORT_DIPNAME( 0x80, 0x00, "OFF Fixed" ) PORT_DIPLOCATION("DSW2:8") - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - - PORT_START("DSW3") /* multiplexed x4 & inverted */ - PORT_DIPNAME( 0x07, 0x00, "Key In" ) PORT_DIPLOCATION("DSW3:1,2,3") - PORT_DIPSETTING( 0x01, "5 Credits / Pulse" ) - PORT_DIPSETTING( 0x02, "10 Credits / Pulse" ) - PORT_DIPSETTING( 0x03, "20 Credits / Pulse" ) - PORT_DIPSETTING( 0x04, "25 Credits / Pulse" ) - PORT_DIPSETTING( 0x05, "40 Credits / Pulse" ) - PORT_DIPSETTING( 0x00, "50 Credits / Pulse" ) - PORT_DIPSETTING( 0x06, "60 Credits / Pulse" ) - PORT_DIPSETTING( 0x07, "100 Credits / Pulse" ) - PORT_DIPNAME( 0x38, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW3:4,5,6") - PORT_DIPSETTING( 0x08, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x18, "1 Coin/10 Credits" ) - PORT_DIPSETTING( 0x20, "1 Coin/20 Credits" ) - PORT_DIPSETTING( 0x28, "1 Coin/25 Credits" ) - PORT_DIPSETTING( 0x30, "1 Coin/40 Credits" ) - PORT_DIPSETTING( 0x38, "1 Coin/50 Credits" ) - PORT_DIPNAME( 0xc0, 0x00, "Credit Limit" ) PORT_DIPLOCATION("DSW3:7,8") - PORT_DIPSETTING( 0x00, "5000" ) - PORT_DIPSETTING( 0x40, "10000" ) - PORT_DIPSETTING( 0x80, "20000" ) - PORT_DIPSETTING( 0xc0, "30000" ) - - PORT_START("DSW4") /* multiplexed x4 & inverted */ - PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW4:1,2,3,4") - PORT_DIPSETTING( 0x0f, "20 Coins/1 Credit" ) - PORT_DIPSETTING( 0x0e, "10 Coins/1 Credit" ) - PORT_DIPSETTING( 0x0c, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x0b, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x0d, "5 Coins/2 Credits" ) - PORT_DIPSETTING( 0x09, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0a, DEF_STR( 2C_5C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_4C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_5C ) ) - PORT_DIPSETTING( 0x05, "1 Coin/10 Credits" ) - PORT_DIPSETTING( 0x06, "1 Coin/20 Credits" ) - PORT_DIPSETTING( 0x07, "1 Coin/25 Credits" ) - PORT_DIPSETTING( 0x00, "1 Coin/50 Credits" ) - PORT_DIPSETTING( 0x08, "1 Coin/100 Credits" ) - PORT_DIPNAME( 0x30, 0x00, "Max Bet" ) PORT_DIPLOCATION("DSW4:5,6") - PORT_DIPSETTING( 0x10, "10" ) - PORT_DIPSETTING( 0x00, "20" ) - PORT_DIPSETTING( 0x20, "30" ) - PORT_DIPSETTING( 0x30, "50" ) - PORT_DIPNAME( 0xc0, 0x00, "Credit-In Limit" ) PORT_DIPLOCATION("DSW4:7,8") - PORT_DIPSETTING( 0x00, "No Limit" ) - PORT_DIPSETTING( 0x40, "1000" ) - PORT_DIPSETTING( 0x80, "2000" ) - PORT_DIPSETTING( 0xc0, "5000" ) - - PORT_START("TEST") - PORT_DIPNAME( 0x01, 0x00, "Freeze" ) /* Freeze the execution */ - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_BIT( 0xfe, IP_ACTIVE_HIGH, IPT_UNKNOWN ) -INPUT_PORTS_END - - -/************************* -* Graphics Layouts * -*************************/ - -static const gfx_layout tilelayout = -{ - 16, 8, - RGN_FRAC(1,2), - 8, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { - 0*8, 0*8+RGN_FRAC(1,2), 1*8, 1*8+RGN_FRAC(1,2), 2*8, 2*8+RGN_FRAC(1,2), 3*8, 3*8+RGN_FRAC(1,2), - 4*8, 4*8+RGN_FRAC(1,2), 5*8, 5*8+RGN_FRAC(1,2), 6*8, 6*8+RGN_FRAC(1,2), 7*8, 7*8+RGN_FRAC(1,2) - }, - { 0*8*8, 1*8*8, 2*8*8, 3*8*8, 4*8*8, 5*8*8, 6*8*8, 7*8*8 }, - 8*8*8 -}; - - -/****************************** -* Graphics Decode Information * -******************************/ - -static GFXDECODE_START( gfx_majorpkr ) - GFXDECODE_ENTRY( "bg_gfx", 0, tilelayout, 8*256, 8 ) - GFXDECODE_ENTRY( "fg_gfx", 0, tilelayout, 0, 8 ) -GFXDECODE_END - - -/************************* -* Machine Drivers * -*************************/ - -void majorpkr_state::majorpkr(machine_config &config) -{ - /* basic machine hardware */ - z80_device &maincpu(Z80(config, "maincpu", CPU_CLOCK)); // 6 MHz. - maincpu.set_addrmap(AS_PROGRAM, &majorpkr_state::map); - maincpu.set_addrmap(AS_IO, &majorpkr_state::portmap); - maincpu.set_vblank_int("screen", FUNC(majorpkr_state::irq0_line_hold)); - - ADDRESS_MAP_BANK(config, "palette_bank").set_map(&majorpkr_state::palettebanks).set_options(ENDIANNESS_LITTLE, 8, 13, 0x800); - ADDRESS_MAP_BANK(config, "vram_bank").set_map(&majorpkr_state::vrambanks).set_options(ENDIANNESS_LITTLE, 8, 13, 0x800); - - NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - /* video hardware */ - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(CRTC_CLOCK*16, (47+1)*16, 0, (36*16)-16, (36+1)*8, 0, (28*8)); // from CRTC registers. - screen.set_screen_update(FUNC(majorpkr_state::screen_update_majorpkr)); - - GFXDECODE(config, m_gfxdecode, "palette", gfx_majorpkr); - - PALETTE(config, "palette").set_format(palette_device::xGRB_555, 0x100 * 16); - - mc6845_device &crtc(MC6845(config, "crtc", CRTC_CLOCK)); // verified. - crtc.set_screen("screen"); - crtc.set_show_border_area(false); - crtc.set_visarea_adjust(0, -16, 0, 0); - crtc.set_char_width(16); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // clock frequency & pin 7 verified. -} - - -/************************* -* Rom Load * -*************************/ - -/* - Major Poker. - Original PAL System game. -*/ -ROM_START( majorpkr ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "6_pp_27c512_823b.bin", 0x00000, 0x10000, CRC(a3d5475e) SHA1(cb41508b55da8b8c658a2f2ccc6ebda09db29040) ) - - ROM_REGION( 0x100000, "bg_gfx", 0 ) - ROM_LOAD( "1_27c040_7d3b.bin", 0x00000, 0x80000, CRC(67299eff) SHA1(34d3d8baf08dea495b699dd63272b445e2acb42d) ) - ROM_LOAD( "2_27c040_6039.bin", 0x80000, 0x80000, CRC(2d68b177) SHA1(01c934e0383991f2208b915cc5015463a8b6a8fd) ) - - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD( "3_27c010_af18.bin", 0x00000, 0x20000, CRC(54452bb8) SHA1(9d13c17b85dd0185ba64fc6f90425e0c75363960) ) - ROM_LOAD( "4_27c010_92d6.bin", 0x20000, 0x20000, CRC(2e1e0972) SHA1(729dba2ef6ae8a7299c7ceb38835bebb0c42d28e) ) - - ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "5_27c020_8630.bin", 0x00000, 0x40000, CRC(4843858e) SHA1(27629829cf7753d7801a6eb42bb77ca2a467bebd) ) - - ROM_REGION( 0x1000, "plds1", 0 ) // from protection box. - ROM_LOAD( "u1_box_palce16v8h.bin", 0x0000, 0x0117, NO_DUMP ) // need to be extracted from the box and cracked... - ROM_LOAD( "u2_box_palce16v8h.bin", 0x0200, 0x0117, NO_DUMP ) // need to be extracted from the box and cracked... - ROM_LOAD( "u3_box_palce16v8h.bin", 0x0400, 0x0117, NO_DUMP ) // need to be extracted from the box and cracked... - ROM_LOAD( "u4_box_palce16v8h.bin", 0x0600, 0x0117, NO_DUMP ) // need to be extracted from the box and cracked... - ROM_LOAD( "u5_box_palce20v8h.bin", 0x0800, 0x0157, NO_DUMP ) // need to be extracted from the box and cracked... - - ROM_REGION( 0x2000, "plds2", 0 ) // from PCB - ROM_LOAD( "g1_gal16v8d.bin", 0x0000, 0x0117, CRC(5ec2527a) SHA1(af9832a75efc25578ca79a08fae4bb169d4eb5ec) ) - ROM_LOAD( "g2_gal16v8d.bin", 0x0200, 0x0117, CRC(f6a04079) SHA1(fd9e7fac2867de9746138e5aa22fdac10c370d65) ) // protected, but cracked... - ROM_LOAD( "g3_gal16v8d.bin", 0x0400, 0x0117, CRC(8b36df82) SHA1(b629557a8ebc88edd9e13372906f393f9fbc0669) ) - ROM_LOAD( "g4_gal16v8d.bin", 0x0600, 0x0117, CRC(8b36df82) SHA1(b629557a8ebc88edd9e13372906f393f9fbc0669) ) - ROM_LOAD( "g5_gal16v8d.bin", 0x0800, 0x0117, CRC(8b36df82) SHA1(b629557a8ebc88edd9e13372906f393f9fbc0669) ) - ROM_LOAD( "g6_gal16v8d.bin", 0x0a00, 0x0117, CRC(5ec2527a) SHA1(af9832a75efc25578ca79a08fae4bb169d4eb5ec) ) - ROM_LOAD( "g7_gal20v8b.bin", 0x0c00, 0x0157, CRC(9f45d431) SHA1(c3c9e6ed25a7cd7536974b906c993f5d7a58e65d) ) - ROM_LOAD( "g8_gal20v8b.bin", 0x0e00, 0x0157, CRC(9f45d431) SHA1(c3c9e6ed25a7cd7536974b906c993f5d7a58e65d) ) - ROM_LOAD( "g9_gal16v8d.bin", 0x1000, 0x0117, CRC(5ec2527a) SHA1(af9832a75efc25578ca79a08fae4bb169d4eb5ec) ) - ROM_LOAD( "g10_gal16v8d.bin", 0x1200, 0x0117, CRC(5bdfd9f3) SHA1(5bca47c1fa4b1a6b7d1041a12f98153fc1b23065) ) -ROM_END - - -/* - Major Poker. - Micro Manufacturing intro. - Program is totally different. - Graphics ROMs are identical to the parent set. -*/ -ROM_START( majorpkra ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "27c512__a.rom6", 0x00000, 0x10000, CRC(0213a933) SHA1(0c3238f037bcbe096c85b5c57ac735d707361f87) ) - - ROM_REGION( 0x100000, "bg_gfx", 0 ) - ROM_LOAD( "27c040.rom1", 0x00000, 0x80000, CRC(67299eff) SHA1(34d3d8baf08dea495b699dd63272b445e2acb42d) ) - ROM_LOAD( "27c040.rom2", 0x80000, 0x80000, CRC(2d68b177) SHA1(01c934e0383991f2208b915cc5015463a8b6a8fd) ) - - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD( "27c1001.rom3", 0x00000, 0x20000, CRC(54452bb8) SHA1(9d13c17b85dd0185ba64fc6f90425e0c75363960) ) - ROM_LOAD( "27c1001.rom4", 0x20000, 0x20000, CRC(2e1e0972) SHA1(729dba2ef6ae8a7299c7ceb38835bebb0c42d28e) ) - - ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "27c2001.rom5", 0x00000, 0x40000, CRC(4843858e) SHA1(27629829cf7753d7801a6eb42bb77ca2a467bebd) ) -ROM_END - -/* - Major Poker. - Micro Manufacturing intro. - Graphics ROMs are identical to the parent set. - - Only one byte of difference against set C. - Offset 0x38a7 = 0x08 (instead of 0x10). -*/ -ROM_START( majorpkrb ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "27c512__b.rom6", 0x00000, 0x10000, CRC(3ab1e2c2) SHA1(11339fe32bb372f01b0983d2d571440530353b2a) ) - - ROM_REGION( 0x100000, "bg_gfx", 0 ) - ROM_LOAD( "27c040.rom1", 0x00000, 0x80000, CRC(67299eff) SHA1(34d3d8baf08dea495b699dd63272b445e2acb42d) ) - ROM_LOAD( "27c040.rom2", 0x80000, 0x80000, CRC(2d68b177) SHA1(01c934e0383991f2208b915cc5015463a8b6a8fd) ) - - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD( "27c1001.rom3", 0x00000, 0x20000, CRC(54452bb8) SHA1(9d13c17b85dd0185ba64fc6f90425e0c75363960) ) - ROM_LOAD( "27c1001.rom4", 0x20000, 0x20000, CRC(2e1e0972) SHA1(729dba2ef6ae8a7299c7ceb38835bebb0c42d28e) ) - - ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "27c2001.rom5", 0x00000, 0x40000, CRC(4843858e) SHA1(27629829cf7753d7801a6eb42bb77ca2a467bebd) ) -ROM_END - -/* - Major Poker. - Micro Manufacturing intro. - Graphics ROMs are identical to the parent set. - - Only one byte of difference against set B. - Offset 0x38a7 = 0x10 (instead of 0x08). -*/ -ROM_START( majorpkrc ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "27c512__c.rom6", 0x00000, 0x10000, CRC(7379026b) SHA1(49e4f935ba3d27c70df351e3e61fb94e00f1536e) ) - - ROM_REGION( 0x100000, "bg_gfx", 0 ) - ROM_LOAD( "27c040.rom1", 0x00000, 0x80000, CRC(67299eff) SHA1(34d3d8baf08dea495b699dd63272b445e2acb42d) ) - ROM_LOAD( "27c040.rom2", 0x80000, 0x80000, CRC(2d68b177) SHA1(01c934e0383991f2208b915cc5015463a8b6a8fd) ) - - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD( "27c1001.rom3", 0x00000, 0x20000, CRC(54452bb8) SHA1(9d13c17b85dd0185ba64fc6f90425e0c75363960) ) - ROM_LOAD( "27c1001.rom4", 0x20000, 0x20000, CRC(2e1e0972) SHA1(729dba2ef6ae8a7299c7ceb38835bebb0c42d28e) ) - - ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "27c2001.rom5", 0x00000, 0x40000, CRC(4843858e) SHA1(27629829cf7753d7801a6eb42bb77ca2a467bebd) ) -ROM_END - -/* - Lucky Poker. - Looks like a bootleg/hack of Major Joker. - Graphics ROMs are identical to the parent set. -*/ -ROM_START( luckypkr ) - ROM_REGION( 0x10000, "maincpu", 0 ) - ROM_LOAD( "27c512__luckypkr.rom6", 0x00000, 0x10000, CRC(e5e6d79d) SHA1(2c4b54d8cc9083cfa1508a73269baff923504778) ) - - ROM_REGION( 0x100000, "bg_gfx", 0 ) - ROM_LOAD( "27c040.rom1", 0x00000, 0x80000, CRC(67299eff) SHA1(34d3d8baf08dea495b699dd63272b445e2acb42d) ) - ROM_LOAD( "27c040.rom2", 0x80000, 0x80000, CRC(2d68b177) SHA1(01c934e0383991f2208b915cc5015463a8b6a8fd) ) - - ROM_REGION( 0x40000, "fg_gfx", 0 ) - ROM_LOAD( "27c1001.rom3", 0x00000, 0x20000, CRC(54452bb8) SHA1(9d13c17b85dd0185ba64fc6f90425e0c75363960) ) - ROM_LOAD( "27c1001.rom4", 0x20000, 0x20000, CRC(2e1e0972) SHA1(729dba2ef6ae8a7299c7ceb38835bebb0c42d28e) ) - - ROM_REGION( 0x40000, "oki", 0 ) - ROM_LOAD( "27c2001.rom5", 0x00000, 0x40000, CRC(4843858e) SHA1(27629829cf7753d7801a6eb42bb77ca2a467bebd) ) -ROM_END - - - -/************************* -* Driver Init * -*************************/ - -void majorpkr_state::init_majorpkr() -{ - uint8_t *ROM = (uint8_t *)memregion("maincpu")->base(); - m_rom_bank->configure_entries(0, 4, &ROM[0xe000], 0x800); -} - - -/************************* -* Game Drivers * -*************************/ - -/* YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS LAYOUT */ -GAMEL( 1994, majorpkr, 0, majorpkr, majorpkr, majorpkr_state, init_majorpkr, ROT0, "PAL System", "Major Poker (set 1, v2.0)", 0, layout_majorpkr ) -GAMEL( 1994, majorpkra, majorpkr, majorpkr, majorpkr, majorpkr_state, init_majorpkr, ROT0, "PAL System / Micro Manufacturing", "Major Poker (set 2, Micro Manufacturing intro)", 0, layout_majorpkr ) -GAMEL( 1994, majorpkrb, majorpkr, majorpkr, majorpkr, majorpkr_state, init_majorpkr, ROT0, "PAL System / Micro Manufacturing", "Major Poker (set 3, Micro Manufacturing intro)", 0, layout_majorpkr ) -GAMEL( 1994, majorpkrc, majorpkr, majorpkr, majorpkr, majorpkr_state, init_majorpkr, ROT0, "PAL System / Micro Manufacturing", "Major Poker (set 4, Micro Manufacturing intro)", 0, layout_majorpkr ) -GAMEL( 1994, luckypkr, majorpkr, majorpkr, majorpkr, majorpkr_state, init_majorpkr, ROT0, "bootleg", "Lucky Poker (bootleg/hack of Major Poker)", 0, layout_majorpkr ) |