naroutp.cpp driver improvements: [Roberto Fresca, Grull Osgo]

- Added hopper support.
 - Extended palette.
 - Identified dphlunka as Sure Shot.
 - Custom palette for Sure Shot.
 - Buttons-lamps layout for Sure Shot.
 - Inputs for Sure Shot.
 - Machine config for Sure Shot.
 - Promote dphla set to working.
 - Promote sureshoto set to working.
 - Promote dphlunkb set to working.

Systems promoted to working
---------------------------
Joker Poker (Kramer, Alt) [Roberto Fresca, Grull Osgo]
Sure Shot (older, dphl hardware) [Roberto Fresca, Grull Osgo]
Draw Poker HI-LO (alt GFX) [Roberto Fresca, Grull Osgo]
This commit is contained in:
Roberto Fresca 2025-03-20 19:28:27 +01:00
parent aa45982496
commit bdfd419e21
6 changed files with 432 additions and 112 deletions

View File

@ -0,0 +1,166 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
copyright-holders: Roberto Fresca, Grull Osgo.
sure shot 9 buttons-lamps
control panel
-->
<mamelayout version="2">
<element name="L0" defstate="0">
<rect state="1">
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<rect state="0">
<color red="0.35" green="0.2" blue="0.0" />
</rect>
<text string="SAFE">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L1" defstate="0">
<rect state="1">
<color red="0.0" green="1.0" blue="0.5" />
</rect>
<rect state="0">
<color red="0.0" green="0.3" blue="0.15" />
</rect>
<text string="SHOOT">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L2" defstate="0">
<rect state = "1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.3" blue="0.0" />
</rect>
<text string="SCRATCH">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L3" defstate="0">
<rect state = "1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.3" blue="0.0" />
</rect>
<text string="SCRATCH">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L4" defstate="0">
<rect state = "1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.3" blue="0.0" />
</rect>
<text string="SCRATCH">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L5" defstate="0">
<rect state = "1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.3" blue="0.0" />
</rect>
<text string="SCRATCH">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L6" defstate="0">
<rect state = "1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.3" blue="0.0" />
</rect>
<text string="SCRATCH">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L7" defstate="0">
<rect state="1">
<color red="1.0" green="1.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.3" green="0.3" blue="0.0" />
</rect>
<text string="CANCEL">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<element name="L8" defstate="0">
<rect state="1">
<color red="1.0" green="0.5" blue="0.0" />
</rect>
<rect state="0">
<color red="0.35" green="0.2" blue="0.0" />
</rect>
<text string="BREAK">
<color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.25" width="1" height="0.5" />
</text>
</element>
<view name="Button Lamps">
<screen index="0">
<bounds left="0" top="0" right="4" bottom="3" />
</screen>
<element name="lamp2" ref="L2" inputtag="IN1" inputmask="0x04">
<bounds x="0.80" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp3" ref="L3" inputtag="IN1" inputmask="0x08">
<bounds x="1.30" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp4" ref="L4" inputtag="IN1" inputmask="0x10">
<bounds x="1.80" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp5" ref="L5" inputtag="IN1" inputmask="0x20">
<bounds x="2.30" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp6" ref="L6" inputtag="IN1" inputmask="0x40">
<bounds x="2.80" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp7" ref="L7" inputtag="IN1" inputmask="0x80">
<bounds x="0.80" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp0" ref="L0" inputtag="IN1" inputmask="0x01">
<bounds x="1.30" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp8" ref="L8" inputtag="IN0" inputmask="0x01">
<bounds x="2.30" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp1" ref="L1" inputtag="IN1" inputmask="0x02">
<bounds x="2.80" y="3.28" width="0.40" height="0.20" />
</element>
</view>
</mamelayout>

View File

@ -1,6 +1,11 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
copyright-holders: Roberto Fresca, Grull Osgo.
noraut/dphl 10 buttons-lamps
control panel
-->
<mamelayout version="2">
<element name="L0" defstate="0">

View File

@ -1,6 +1,11 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
copyright-holders: Roberto Fresca, Grull Osgo.
noraut/dphl 11 buttons-lamps
control panel
-->
<mamelayout version="2">
<element name="L0" defstate="0">

View File

@ -1,6 +1,11 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
copyright-holders: Roberto Fresca, Grull Osgo.
noraut/dphl 12 buttons-lamps
control panel
-->
<mamelayout version="2">
<element name="L0" defstate="0">

View File

@ -31875,7 +31875,6 @@ df_djpkr
dphl
dphla
dphljp
dphlunka
dphlunkb
drhl
drhla
@ -31904,6 +31903,7 @@ pkii_dm
pma
smshilo
ssjkrpkr
sureshoto
tpoker2
unkljfpk

View File

@ -1,11 +1,11 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese, Roberto Fresca
// copyright-holders:Angelo Salese, Roberto Fresca, Grull Osgo
/******************************************************************************
- NORAUT POKER SYSTEM -
-------------------------
Driver by Roberto Fresca & Angelo Salese.
Driver by Roberto Fresca, Angelo Salese & Grull Osgo.
Games running on this hardware:
@ -181,7 +181,6 @@
*******************************************************************************
Narout System Ports Map
-----------------------
@ -302,10 +301,8 @@
*******************************************************************************
*** Game Notes ***
- norautjp:
At the first start-up, the game will give you a very clever
@ -349,10 +346,8 @@
*******************************************************************************
DRIVER UPDATES:
[2009-01-27]
- Initial release.
@ -368,7 +363,6 @@
- Added pinout scheme.
- Added technical notes.
[2009-01-28]
- Merged GTI Poker (gtipoker.c) with this driver.
@ -379,7 +373,6 @@
to Noraut Poker (bootleg), since the game has payout system.
- Some clean-ups.
[2009-08-21]
- Switched to pre-defined Xtal clock.
@ -393,7 +386,6 @@
- Added partial DIP switches to norautrh.
- Added more technical notes.
[2009-08-23/26]
- Added a default NVRAM to Noraut Joker Poker to bypass the 'F U' screen.
@ -406,7 +398,6 @@
- Added Noraut Joker Poker hardware and PCB layouts.
- Documented the discrete audio circuitry. Added a full diagram.
[2009-08-29]
- Fixed the coin counters.
@ -420,7 +411,6 @@
- Added 2 different control panel layouts to the source.
- Updated technical notes.
[2009-08-30]
- Corrected CPU clock to Xtal/8.
@ -432,7 +422,6 @@
- Added new handlers to simulate the handshake lines. Still need real support through PPI-2.
- Updated technical notes.
[2009-09-03]
- Routed the whole video RAM access through PPI-2.
@ -442,13 +431,11 @@
- Added a new machine driver for extended hardware.
It has 2 jumpers that cut the a14 and a15 addressing lines.
[2009-09-09]
- Added accurate discrete sound system emulation.
- Fixed the discrete sound system diagram, based on real sound references.
[2009-10-12]
- Added Draw Poker HI-LO hardware support, based on 8080A CPU.
@ -464,7 +451,6 @@
properly emulated. For now, all VRAM access is through direct handlers.
This allow to remove the hacks per set needed to boot the games.
[2009-10-13]
- Added Draw Poker HI-LO (japanese), based on 8080A CPU.
@ -475,7 +461,6 @@
- Added smshilo hardware details and PCB layout.
- Added smshilo discrete sound circuitry scheme/documentation.
[2009-11-26]
- A lot of work in memory maps and machine driver stuff.
@ -505,7 +490,6 @@
- Fix the Kimble Double HI-LO CPU type.
- Added notes about the code obfuscation and PPI's handling/offsets.
[2009-12-04]
- Added new technical notes.
@ -519,7 +503,6 @@
so can be seen/maintained in a cleaner way.
- Fixed the default lamps state.
[2009-12-08]
- Added Fast Draw (poker conversion kit)?. Seems based on 8080 CPU hardware.
@ -529,25 +512,21 @@
- Added undumped devices as NO_DUMP.
- Added some technical notes.
[2009-12-08]
- Added Southern Systems Joker Poker. Based on 8080 CPU.
- Added some technical notes.
[2011-01-24]
- Changed DRHL description to "Drews Revenge (v.2.89, set 1)"
- Added Drews Revenge (v.2.89, set 2). Based on 8080 CPU.
[2013-04-09]
- Added GTI Poker? (SMS hardware). Based on 8080 CPU.
- Added PCB description and sound hardware schematics.
[2013-2023]
- Added more sets.
@ -555,8 +534,7 @@
- Decryption of noraut3 sets.
- Working inputs, DIP switches, and button-lamps layouts to noraut3 games.
- Change game description to noraut3 games, since are dual games selectable
through a DIP switch.
through a DIP switch.
[2025-03]
@ -580,11 +558,21 @@
- Promoted dphl, dphljp, and smshilo to working.
- Added technical notes.
- Added hopper support.
- Extended palette.
- Identified dphlunka as Sure Shot.
- Custom palette for Sure Shot.
- Buttons-lamps layout for Sure Shot.
- Inputs for Sure Shot.
- Machine config for Sure Shot.
- Promote dphla set to working.
- Promote sureshoto set to working.
- Promote dphlunkb set to working.
TODO:
- Investigate and document what is connected to port EFh.
- dphla and dphlunkb paying issues.
- Find if wide chars are hardcoded or tied to a bit.
- Parent/clone relationship.
@ -599,9 +587,6 @@
when you coin/bet the game. After deal, they are not showing
this anymore.
- dphla and dphlunkb are working, but when pay a hand they are
stuck spitting spitting the "call attendant" message.
*******************************************************************************/
@ -611,6 +596,7 @@
#include "cpu/z80/z80.h"
#include "machine/i8255.h"
#include "machine/nvram.h"
#include "machine/ticket.h"
#include "machine/timer.h"
#include "sound/discrete.h"
#include "emupal.h"
@ -618,9 +604,10 @@
#include "speaker.h"
#include "noraut09_sureshot.lh"
#include "noraut10.lh"
#include "noraut11.lh"
#include "noraut12.lh"
#include "noraut10.lh"
#define NORAUT_MASTER_CLOCK XTAL(18'432'000)
@ -644,6 +631,7 @@ public:
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_hopper(*this, "hopper"),
m_decrypted_opcodes(*this, "decrypted_opcodes"),
m_lamps(*this, "lamp%u", 0U)
{ }
@ -661,6 +649,7 @@ public:
void ssjkrpkr(machine_config &config);
void dphl(machine_config &config);
void dphla(machine_config &config);
void sureshoto(machine_config &config);
void drhl(machine_config &config);
void norautxp(machine_config &config);
void noraut3(machine_config &config);
@ -670,9 +659,11 @@ public:
void init_ssa();
void init_enc();
void init_deb();
void init_unka();
void init_unkb();
protected:
virtual void machine_start() override { m_lamps.resolve(); }
virtual void machine_start() override { m_lamps.resolve(); save_item(NAME(m_videoram));}
virtual void video_start() override ATTR_COLD;
private:
@ -687,6 +678,7 @@ private:
void counterlamps_w(uint8_t data);
void norautp_palette(palette_device &palette) const;
void drhl_palette(palette_device &palette) const;
void sureshoto_palette(palette_device &palette) const;
uint32_t screen_update_norautp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void cgidjp_map(address_map &map) ATTR_COLD;
void cgidjp_opcodes_map(address_map &map) ATTR_COLD;
@ -719,12 +711,14 @@ private:
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_device<ticket_dispenser_device> m_hopper;
optional_shared_ptr<uint8_t> m_decrypted_opcodes;
output_finder<12> m_lamps;
int m_test3 = 1;
int m_test3b = 0;
int m_test_count = 0;
uint8_t m_videoram[0x800] = {};
};
@ -756,7 +750,9 @@ uint32_t norautp_state::screen_update_norautp(screen_device &screen, bitmap_ind1
{
int tile = m_np_vram[count] & 0x3f;
int colour = (m_np_vram[count] & 0xc0) >> 6;
if((y == 4) | ( y == 5))
colour = colour + 4;
m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, tile, colour, 0, 0, (x * 32) + 8, y * 32);
count+=2;
@ -791,6 +787,16 @@ void norautp_state::norautp_palette(palette_device &palette) const
palette.set_pen_color(5, rgb_t(0xff, 0x00, 0x00)); // red
palette.set_pen_color(6, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(7, rgb_t(0x00, 0x00, 0x00)); // black
// 1st gfx bank
palette.set_pen_color(8, rgb_t(0x00, 0x00, 0xff)); // blue
palette.set_pen_color(9, rgb_t(0xff, 0xff, 0x00)); // yellow
palette.set_pen_color(10, rgb_t(0x00, 0x00, 0xff)); // blue
palette.set_pen_color(11, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(12, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(13, rgb_t(0xff, 0x00, 0x00)); // red
palette.set_pen_color(14, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(15, rgb_t(0x00, 0x00, 0x00)); // black
}
void norautp_state::drhl_palette(palette_device &palette) const
@ -804,6 +810,37 @@ void norautp_state::drhl_palette(palette_device &palette) const
palette.set_pen_color(5, rgb_t(0x00, 0x00, 0xff)); // red
palette.set_pen_color(6, rgb_t(0xff, 0xff, 0x00)); // yellow (white)
palette.set_pen_color(7, rgb_t(0x00, 0x00, 0xff)); // blue (black)
palette.set_pen_color(8, rgb_t(0x00, 0x00, 0x00)); // black (blue)
palette.set_pen_color(9, rgb_t(0xff, 0xff, 0xff)); // white (yellow)
palette.set_pen_color(10, rgb_t(0xff, 0x00, 0x00)); // red (blue)
palette.set_pen_color(11, rgb_t(0xff, 0xff, 0xff)); // white (white)
palette.set_pen_color(12, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(13, rgb_t(0x00, 0x00, 0xff)); // red
palette.set_pen_color(14, rgb_t(0xff, 0xff, 0x00)); // yellow (white)
palette.set_pen_color(15, rgb_t(0x00, 0x00, 0xff)); // blue (black)
}
void norautp_state::sureshoto_palette(palette_device &palette) const
{
// 1st gfx bank
palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); // blue
palette.set_pen_color(1, rgb_t(0xff, 0xff, 0x00)); // yellow
palette.set_pen_color(2, rgb_t(0x00, 0x00, 0x00)); // blue
palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(4, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(5, rgb_t(0xff, 0x00, 0x00)); // red
palette.set_pen_color(6, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(7, rgb_t(0x00, 0x00, 0x00)); // black
// alt palette
palette.set_pen_color(8, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(9, rgb_t(0x00, 0x00, 0x00)); // cards bg
palette.set_pen_color(10, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(11, rgb_t(0x00, 0x00, 0x00));
palette.set_pen_color(12, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(13, rgb_t(0xff, 0x00, 0x00));
palette.set_pen_color(14, rgb_t(0xff, 0xff, 0xff)); // white
palette.set_pen_color(15, rgb_t(0xff, 0x00, 0x00));
}
@ -879,6 +916,8 @@ void norautp_state::counterlamps_w(uint8_t data)
m_lamps[10] = BIT(data, 0); // HI lamp
m_lamps[11] = BIT(data, 1); // LO lamp
m_hopper->motor_w(BIT(data, 2));
machine().bookkeeping().coin_counter_w(0, data & 0x10); // Coin1/3 counter
machine().bookkeeping().coin_counter_w(1, data & 0x20); // Coin2 counter
machine().bookkeeping().coin_counter_w(2, data & 0x08); // Payout pulse
@ -892,17 +931,17 @@ void norautp_state::ppi2_obf_w(int state)
TIMER_CALLBACK_MEMBER(norautp_state::ppi2_ack)
{
m_ppi8255[2]->pc6_w(param);
if (param == 0)
{
uint8_t const np_addr = m_ppi8255[2]->pb_r();
uint8_t const vram_data = m_ppi8255[2]->pa_r();
m_np_vram[np_addr] = vram_data;
m_videoram[np_addr] = vram_data;
}
}
// game waits for bit 4 (0x10) to be reset.
uint8_t norautp_state::test2_r()
{
@ -917,7 +956,6 @@ uint8_t norautp_state::test3_r()
return m_test3b;
}
logerror("test3: pc:%04x - data:%02x\n", m_maincpu->pc(), m_test_count);
return (m_test_count &0x0f) + 0x10;
}
@ -940,55 +978,55 @@ TIMER_DEVICE_CALLBACK_MEMBER(norautp_state::test_timer_cb)
CPU & PPI settings by set...
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| Set | CPU | PPI-0 offset | config | PPI-1 offset | config | PPI-2 offset | config |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautp | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC1 (PC0-2 as input) |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautdx | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautpn | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautjp | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC1 (PC0-2 as input) |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautrh | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautu | BOXED | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautv3 | Z80 | unknown | | unknown | | unknown | |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| pma | Z80 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| bjpoker | Z80 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphl | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphla | 8080 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphljp | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| kimbldhl | 8080 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| gtipoker | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| smshilo | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| tpoker2 | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| drhl | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| ssjkrpkr | 8080 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| fastdrwp | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphlunka | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphlunkb | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| pkii_dm | Z80? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| cdrawpkr | Z80 | 0x70-0x73 | 0x90 | 0xB0-0xB3 | 0x92 | 0xD0-0xD3 | 0xC0 |
+----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| Set | CPU | PPI-0 offset | config | PPI-1 offset | config | PPI-2 offset | config |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautp | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC1 (PC0-2 as input) |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautdx | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautpn | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautjp | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC1 (PC0-2 as input) |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautrh | Z80 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautu | BOXED | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| norautv3 | Z80 | unknown | | unknown | | unknown | |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| pma | Z80 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| bjpoker | Z80 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphl | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphla | 8080 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphljp | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| kimbldhl | 8080 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| gtipoker | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| smshilo | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| tpoker2 | 8080 | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| drhl | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| ssjkrpkr | 8080 | 0x60-0x63 | 0x90 | 0xA0-0xA3 | 0x92 | 0xC0-0xC3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| fastdrwp | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| sureshoto | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| dphlunkb | 8080? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| pkii_dm | Z80? | 0x7C-0x7F | 0x90 | 0xBC-0xBF | 0x92 | 0xDC-0xDF | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
| cdrawpkr | Z80 | 0x70-0x73 | 0x90 | 0xB0-0xB3 | 0x92 | 0xD0-0xD3 | 0xC0 |
+-----------+---------+--------------+--------+--------------+--------+--------------+------------------------+
*/
void norautp_state::norautp_map(address_map &map)
@ -1088,7 +1126,7 @@ void norautp_state::cgidjp_opcodes_map(address_map &map)
}
/*************** 8080 based **************/
/*************** i8080 based **************/
void norautp_state::dphl_map(address_map &map)
{
@ -1526,7 +1564,7 @@ static INPUT_PORTS_START( norautua )
INPUT_PORTS_END
static INPUT_PORTS_START( dphla )
static INPUT_PORTS_START( dphl )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Deal")
@ -1577,6 +1615,16 @@ static INPUT_PORTS_START( dphla )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( dphla )
PORT_INCLUDE( dphl )
PORT_MODIFY("IN0")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_READ_LINE_DEVICE_MEMBER("hopper", FUNC(ticket_dispenser_device::line_r)) // hopper
INPUT_PORTS_END
static INPUT_PORTS_START( drhl )
PORT_INCLUDE( dphla )
@ -1643,6 +1691,54 @@ static INPUT_PORTS_START( ssjkrpkr )
INPUT_PORTS_END
static INPUT_PORTS_START( sureshoto )
PORT_INCLUDE( dphl )
PORT_MODIFY("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Break (Deal)")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused bet
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused coin 2
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused hi
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // unused lo
PORT_MODIFY("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Safe (Stand)") PORT_CODE(KEYCODE_D) // Stand: keep the hand
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Shoot (Draw)")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Scratch (Hold) 1")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Scratch (Hold) 2")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Scratch (Hold) 3")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Scratch (Hold) 4")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Scratch (Hold) 5")
PORT_MODIFY("DSW1")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x60, 0x60, "2 Wild Cues" ) PORT_DIPLOCATION("DSW1:2,3")
PORT_DIPSETTING( 0x60, "Never" )
PORT_DIPSETTING( 0x40, "When 4 or more is bet" )
PORT_DIPSETTING( 0x20, "When 4 or more is bet" )
PORT_DIPSETTING( 0x00, "Always" )
PORT_DIPNAME( 0x80, 0x80, "Test Mode" ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
/*********************************************
* Graphics Layouts *
*********************************************/
@ -1682,8 +1778,8 @@ static const gfx_layout charlayout32x32 =
// GFX are stored in the 2nd half... Maybe the HW could handle 2 bitplanes?
static GFXDECODE_START( gfx_norautp )
GFXDECODE_ENTRY( "gfx", 0x800, charlayout, 0, 4 )
GFXDECODE_ENTRY( "gfx", 0x800, charlayout32x32, 0, 4 )
GFXDECODE_ENTRY( "gfx", 0x800, charlayout, 0, 8 )
GFXDECODE_ENTRY( "gfx", 0x800, charlayout32x32, 0, 8 )
GFXDECODE_END
@ -1822,7 +1918,9 @@ void norautp_state::noraut_base(machine_config &config)
m_screen->set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_norautp);
PALETTE(config, m_palette, FUNC(norautp_state::norautp_palette), 8);
PALETTE(config, m_palette, FUNC(norautp_state::norautp_palette), 16);
HOPPER(config, m_hopper, attotime::from_msec(150));
// sound hardware
SPEAKER(config, "mono").front_center();
@ -1934,7 +2032,8 @@ void norautp_state::cdrawpkr(machine_config &config)
m_screen->set_visarea(5*8, 61*8-1, (0*16) + 8, 16*16-1);
}
/************** 8080 based **************/
/************** i8080 based **************/
void norautp_state::dphl(machine_config &config)
{
@ -1966,6 +2065,23 @@ void norautp_state::dphla(machine_config &config)
m_discrete->set_intf(dphl_discrete);
}
void norautp_state::sureshoto(machine_config &config)
{
noraut_base(config);
// basic machine hardware
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphl_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::dphl_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
TIMER(config, "test_timer").configure_periodic(FUNC(norautp_state::test_timer_cb), attotime::from_usec(100));
PALETTE(config.replace(), "palette", FUNC(norautp_state::sureshoto_palette), 16);
// sound hardware
m_discrete->set_intf(dphl_discrete);
}
void norautp_state::kimbldhl(machine_config &config)
{
noraut_base(config);
@ -2004,7 +2120,7 @@ void norautp_state::drhl(machine_config &config)
m_maincpu->set_addrmap(AS_IO, &norautp_state::drhl_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
PALETTE(config.replace(), "palette", FUNC(norautp_state::drhl_palette), 8);
PALETTE(config.replace(), "palette", FUNC(norautp_state::drhl_palette), 16);
// sound hardware
m_discrete->set_intf(dphl_discrete);
@ -3137,11 +3253,11 @@ ROM_START( newhilop )
ROM_END
//*************************************** 8080 sets **************************************
//* *
//* The following ones are 'Draw Poker HI-LO' type, running in a 8080 based hardware *
//* *
//****************************************************************************************
//************************************* i8080 sets *************************************
//* *
//* The following ones are 'Draw Poker HI-LO' type, running in a 8080 based hardware *
//* *
//**************************************************************************************
/*
@ -4015,15 +4131,13 @@ ROM_START( fastdrwp )
ROM_END
/*
Unknown DPHL rev 1.
Sure Shot
SMS Manufacturing, 1993.
No extra info inside the zip. Just ROM dumps...
Maybe from SMS Manufacturing, since there are GFX tiles with the SMS logo.
*/
ROM_START( dphlunka )
ROM_START( sureshoto )
ROM_REGION( 0x10000, "maincpu", 0 ) // no stack, call's RET go to PC=0
ROM_LOAD( "u-12_ss.u12", 0x0000, 0x1000, CRC(10ddbc16) SHA1(ab683d836c9223bc67701e092c2cb95afc0f0fa2) )
ROM_LOAD( "u-18_ss.u18", 0x1000, 0x1000, CRC(ffbac2bf) SHA1(219247624e0eb0c0c805f5f9a96c4b6b60c9c5ac) )
@ -4935,6 +5049,31 @@ void norautp_state::init_ssa()
// ROM[0x07b1] = 0x00;
}
void norautp_state::init_unka()
{
uint8_t *ROM = memregion("maincpu")->base();
ROM[0x0000] = 0x00;
ROM[0x0001] = 0xf3;
ROM[0x0002] = 0x31;
ROM[0x0003] = 0xff;
ROM[0x0004] = 0xd0;
ROM[0x0005] = 0xc3;
ROM[0x0006] = 0x80;
ROM[0x0007] = 0x01;
ROM[0x01d5] = 0xaf;
}
void norautp_state::init_unkb()
{
uint8_t *ROM = memregion("gfx")->base();
for (int i = 0x0680; i < 0x0740; i++)
{
ROM[i] = ~ROM[i];
ROM[i + 0X800] = ~ROM[i + 0X800];
}
}
/*********************************************
* Game Drivers *
@ -4977,13 +5116,13 @@ GAMEL( 1984, cdrawpkr, 0, cdrawpkr, cdrawpkr, norautp_state, empty_init,
//***************************************************************************************
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
GAMEL( 1982, dphl, 0, dphl, dphla, norautp_state, empty_init, ROT0, "M.Kramer Manufacturing.", "Draw Poker HI-LO (M.Kramer)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAMEL( 1983, dphla, 0, dphla, dphla, norautp_state, empty_init, ROT0, "<unknown>", "Joker Poker (Kramer, Alt)", MACHINE_NOT_WORKING, layout_noraut10 ) // call attendant
GAMEL( 1983, dphljp, 0, dphl, dphla, norautp_state, empty_init, ROT0, "<unknown>", "Draw Poker HI-LO (Japanese)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAMEL( 1982, dphl, 0, dphl, dphl, norautp_state, empty_init, ROT0, "M.Kramer Manufacturing.", "Draw Poker HI-LO (M.Kramer)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAMEL( 1983, dphla, 0, dphla, dphla, norautp_state, empty_init, ROT0, "<unknown>", "Joker Poker (Kramer, Alt)", 0, layout_noraut10 )
GAMEL( 1983, dphljp, 0, dphl, dphl, norautp_state, empty_init, ROT0, "<unknown>", "Draw Poker HI-LO (Japanese)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAME( 198?, kimbldhl, 0, kimbldhl, norautp, norautp_state, empty_init, ROT0, "Kimble Ireland", "Kimble Double HI-LO", MACHINE_NOT_WORKING )
GAME( 1983, gtipoker, 0, dphl, norautp, norautp_state, empty_init, ROT0, "GTI Inc", "GTI Poker", MACHINE_NOT_WORKING )
GAME( 1983, gtipokra, 0, dphla, norautp, norautp_state, empty_init, ROT0, "GTI Inc", "GTI Poker? (SMS hardware)", MACHINE_NOT_WORKING )
GAMEL( 1983, smshilo, 0, dphl, dphla, norautp_state, empty_init, ROT0, "SMS Manufacturing Corp.", "HI-LO Double Up Joker Poker", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAMEL( 1983, smshilo, 0, dphl, dphl, norautp_state, empty_init, ROT0, "SMS Manufacturing Corp.", "HI-LO Double Up Joker Poker", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAMEL( 1986, drhl, 0, drhl, drhl, norautp_state, empty_init, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 1)", 0, layout_noraut10 )
GAMEL( 1986, drhla, drhl, drhl, drhl, norautp_state, empty_init, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 2)", 0, layout_noraut10 )
GAMEL( 1982, ssjkrpkr, 0, ssjkrpkr, ssjkrpkr, norautp_state, init_ssa, ROT0, "Southern Systems & Assembly", "Southern Systems Joker Poker", 0, layout_noraut10 )
@ -4996,9 +5135,9 @@ GAME( 1993, tpoker2, 0, dphltest, norautp, norautp_state, empty_init, R
//* The following ones are still unknown. No info about name, CPU, manufacturer, or HW *
//**************************************************************************************
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
GAME( 198?, fastdrwp, 0, dphl, norautp, norautp_state, empty_init, ROT0, "Stern Electronics?", "Fast Draw (poker conversion kit)?", MACHINE_NOT_WORKING )
GAME( 198?, dphlunka, 0, dphl, norautp, norautp_state, empty_init, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (unknown, rev 1)", MACHINE_NOT_WORKING )
GAMEL( 198?, dphlunkb, 0, dphl, dphla, norautp_state, empty_init, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (unknown, rev 2)", MACHINE_NOT_WORKING, layout_noraut10 ) // call attendant
GAME( 198?, pkii_dm, 0, nortest1, norautp, norautp_state, empty_init, ROT0, "<unknown>", "unknown poker game PKII/DM", MACHINE_NOT_WORKING )
GAME( 1989, unkljfpk, 0, nortest1, norautp, norautp_state, empty_init, ROT0, "LJF Corporation", "unknown LJF Corporation poker game", MACHINE_NOT_WORKING )
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
GAME( 198?, fastdrwp, 0, dphl, norautp, norautp_state, empty_init, ROT0, "Stern Electronics?", "Fast Draw (poker conversion kit)?", MACHINE_NOT_WORKING )
GAMEL( 1983, sureshoto, 0, sureshoto, sureshoto, norautp_state, init_unka, ROT0, "SMS Manufacturing Corp.", "Sure Shot (older, dphl hardware)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut09_sureshot )
GAMEL( 198?, dphlunkb, 0, dphl, dphla, norautp_state, init_unkb, ROT0, "SMS Manufacturing Corp.", "Draw Poker HI-LO (alt GFX)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut10 )
GAME( 198?, pkii_dm, 0, nortest1, norautp, norautp_state, empty_init, ROT0, "<unknown>", "unknown poker game PKII/DM", MACHINE_NOT_WORKING )
GAME( 1989, unkljfpk, 0, nortest1, norautp, norautp_state, empty_init, ROT0, "LJF Corporation", "unknown LJF Corporation poker game", MACHINE_NOT_WORKING )