Major improvements to norautp.cpp driver: [Roberto Fresca, Grull Osgo]

- Consolidate driver in one file.
 - New palette for drhl and drhla.
 - Added new test functions for drhl, drhla, dphl, and dphla.
 - Cleaned all the conditional unused things.
 - Rewrote inputs for different sets.
 - DIP switches improvements for norautp, norautrh,
 - New inputs for norautua, dphla, drhl, ssjkrpkr.
 - New portmap for dphl, dphla.
 - Added Interrupts through vertical sync for all sets based on i8080.
 - Fixed norautua and norautub table for bin to bcd conversion.
 - New button-lamps layout with 10 buttons for dphl, dphla, dphljp,
    drhl, drhla, and ssjkrpkr.
 - Clickable buttons for all former buttons-lamps layouts.
 - Promoted drhl, drhla, norautua, norautub, and ssjkrpkr to working.

Systems promoted to working
---------------------------
Drews Revenge (v.2.89, set 1) [Roberto Fresca, Grull Osgo]
Noraut Joker Poker (console, set 1) [Roberto Fresca, Grull Osgo]
Southern Systems Joker Poker [Roberto Fresca, Grull Osgo]

Clones promoted to working
--------------------------
Drews Revenge (v.2.89, set 2) [Roberto Fresca, Grull Osgo]
Noraut Joker Poker (console, set 2) [Roberto Fresca, Grull Osgo]
This commit is contained in:
Roberto Fresca 2025-03-17 02:13:18 +01:00
parent 5f6296049b
commit 50d077c63e
6 changed files with 751 additions and 398 deletions

View File

@ -0,0 +1,178 @@
<?xml version="1.0"?>
<!--
license:CC0-1.0
-->
<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="STAND">
<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="DRAW">
<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="HOLD1">
<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="HOLD2">
<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="HOLD3">
<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="HOLD4">
<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="HOLD5">
<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="DEAL">
<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="L9" defstate="0">
<rect state="1">
<color red="1.0" green="0.0" blue="0.0" />
</rect>
<rect state="0">
<color red="0.4" green="0.0" blue="0.0" />
</rect>
<text string="BET">
<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="lamp9" ref="L9" inputtag="IN0" inputmask="0x02">
<bounds x="1.80" 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

@ -190,41 +190,40 @@ license:CC0-1.0
<bounds left="0" top="0" right="4" bottom="3" /> <bounds left="0" top="0" right="4" bottom="3" />
</screen> </screen>
<element name="lamp0" ref="L0"> <element name="lamp2" ref="L2" inputtag="IN1" inputmask="0x04">
<bounds x="3.05" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp1" ref="L1">
<bounds x="3.05" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp2" ref="L2">
<bounds x="0.05" y="3.05" width="0.40" height="0.40" /> <bounds x="0.05" y="3.05" width="0.40" height="0.40" />
</element> </element>
<element name="lamp3" ref="L3"> <element name="lamp3" ref="L3" inputtag="IN1" inputmask="0x08">
<bounds x="0.55" y="3.05" width="0.40" height="0.40" /> <bounds x="0.55" y="3.05" width="0.40" height="0.40" />
</element> </element>
<element name="lamp4" ref="L4"> <element name="lamp4" ref="L4" inputtag="IN1" inputmask="0x10">
<bounds x="1.05" y="3.05" width="0.40" height="0.40" /> <bounds x="1.05" y="3.05" width="0.40" height="0.40" />
</element> </element>
<element name="lamp5" ref="L5"> <element name="lamp5" ref="L5" inputtag="IN1" inputmask="0x20">
<bounds x="1.55" y="3.05" width="0.40" height="0.40" /> <bounds x="1.55" y="3.05" width="0.40" height="0.40" />
</element> </element>
<element name="lamp6" ref="L6"> <element name="lamp6" ref="L6" inputtag="IN1" inputmask="0x40">
<bounds x="2.05" y="3.05" width="0.40" height="0.40" /> <bounds x="2.05" y="3.05" width="0.40" height="0.40" />
</element> </element>
<element name="lamp9" ref="L9" inputtag="IN0" inputmask="0x02">
<element name="lamp8" ref="L8">
<bounds x="2.55" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp9" ref="L9">
<bounds x="2.55" y="3.03" width="0.40" height="0.20" /> <bounds x="2.55" y="3.03" width="0.40" height="0.20" />
</element> </element>
<element name="lamp8" ref="L8" inputtag="IN0" inputmask="0x01">
<bounds x="2.55" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp10" ref="L10"> <element name="lamp1" ref="L1" inputtag="IN1" inputmask="0x02">
<bounds x="3.05" y="3.03" width="0.40" height="0.20" />
</element>
<element name="lamp0" ref="L0" inputtag="IN1" inputmask="0x01">
<bounds x="3.05" y="3.28" width="0.40" height="0.20" />
</element>
<element name="lamp10" ref="L10" inputtag="IN0" inputmask="0x20">
<bounds x="3.55" y="3.03" width="0.40" height="0.20" /> <bounds x="3.55" y="3.03" width="0.40" height="0.20" />
</element> </element>
<element name="lamp11" ref="L11"> <element name="lamp11" ref="L11" inputtag="IN0" inputmask="0x40">
<bounds x="3.55" y="3.28" width="0.40" height="0.20" /> <bounds x="3.55" y="3.28" width="0.40" height="0.20" />
</element> </element>

View File

@ -12,7 +12,7 @@ license:CC0-1.0
</disk> </disk>
<text string="STAND"> <text string="STAND">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -25,7 +25,7 @@ license:CC0-1.0
</disk> </disk>
<text string="SAVE"> <text string="SAVE">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -38,7 +38,7 @@ license:CC0-1.0
</disk> </disk>
<text string="HOLD1"> <text string="HOLD1">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -51,7 +51,7 @@ license:CC0-1.0
</disk> </disk>
<text string="HOLD2"> <text string="HOLD2">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -64,7 +64,7 @@ license:CC0-1.0
</disk> </disk>
<text string="HOLD3"> <text string="HOLD3">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -77,7 +77,7 @@ license:CC0-1.0
</disk> </disk>
<text string="HOLD4"> <text string="HOLD4">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -90,7 +90,7 @@ license:CC0-1.0
</disk> </disk>
<text string="HOLD5"> <text string="HOLD5">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -103,7 +103,7 @@ license:CC0-1.0
</disk> </disk>
<text string="CANCEL"> <text string="CANCEL">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -117,7 +117,7 @@ license:CC0-1.0
</disk> </disk>
<text string="DEAL"> <text string="DEAL">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -130,7 +130,7 @@ license:CC0-1.0
</disk> </disk>
<text string="BET"> <text string="BET">
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0" y="0.3" width="1" height="0.4" /> <bounds x="0.1" y="0.3" width="0.8" height="0.4" />
</text> </text>
</element> </element>
@ -167,43 +167,43 @@ license:CC0-1.0
<bounds left="0" top="0" right="4" bottom="3" /> <bounds left="0" top="0" right="4" bottom="3" />
</screen> </screen>
<element name="lamp2" ref="L2"> <element name="lamp2" ref="L2" inputtag="IN1" inputmask="0x04">
<bounds x="0.55" y="3.03" width="0.20" height="0.20" /> <bounds x="0.55" y="3.03" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp3" ref="L3"> <element name="lamp3" ref="L3" inputtag="IN1" inputmask="0x08">
<bounds x="1.05" y="3.03" width="0.20" height="0.20" /> <bounds x="1.05" y="3.03" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp4" ref="L4"> <element name="lamp4" ref="L4" inputtag="IN1" inputmask="0x10">
<bounds x="1.55" y="3.03" width="0.20" height="0.20" /> <bounds x="1.55" y="3.03" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp5" ref="L5"> <element name="lamp5" ref="L5" inputtag="IN1" inputmask="0x20">
<bounds x="2.05" y="3.03" width="0.20" height="0.20" /> <bounds x="2.05" y="3.03" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp6" ref="L6"> <element name="lamp6" ref="L6" inputtag="IN1" inputmask="0x40">
<bounds x="2.55" y="3.03" width="0.20" height="0.20" /> <bounds x="2.55" y="3.03" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp7" ref="L7"> <element name="lamp7" ref="L7" inputtag="IN1" inputmask="0x80">
<bounds x="0.55" y="3.28" width="0.20" height="0.20" /> <bounds x="0.55" y="3.28" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp0" ref="L0"> <element name="lamp0" ref="L0" inputtag="IN1" inputmask="0x01">
<bounds x="1.05" y="3.28" width="0.20" height="0.20" /> <bounds x="1.05" y="3.28" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp1" ref="L1"> <element name="lamp1" ref="L1" inputtag="IN1" inputmask="0x02">
<bounds x="1.55" y="3.28" width="0.20" height="0.20" /> <bounds x="1.55" y="3.28" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp8" ref="L8"> <element name="lamp8" ref="L8" inputtag="IN0" inputmask="0x01">
<bounds x="2.05" y="3.28" width="0.20" height="0.20" /> <bounds x="2.05" y="3.28" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp9" ref="L9"> <element name="lamp9" ref="L9" inputtag="IN0" inputmask="0x02">
<bounds x="2.55" y="3.28" width="0.20" height="0.20" /> <bounds x="2.55" y="3.28" width="0.20" height="0.20"/>
</element> </element>
<element name="lamp10" ref="L10"> <element name="lamp10" ref="L10" inputtag="IN0" inputmask="0x20">
<bounds x="3.05" y="3.03" width="0.40" height="0.20" /> <bounds x="3.05" y="3.03" width="0.40" height="0.20"/>
</element> </element>
<element name="lamp11" ref="L11"> <element name="lamp11" ref="L11" inputtag="IN0" inputmask="0x40">
<bounds x="3.05" y="3.28" width="0.40" height="0.20" /> <bounds x="3.05" y="3.28" width="0.40" height="0.20"/>
</element> </element>
</view> </view>

View File

@ -558,6 +558,24 @@
through a DIP switch. through a DIP switch.
[2025-03]
- Consolidate driver in one file.
- New palette for drhl and drhla.
- Added new test functions for drhl, drhla, dphl, and dphla.
- Cleaned all the conditional unused things.
- Rewrote inputs for different sets.
- DIP switches improvements for norautp, norautrh,
- New inputs for norautua, dphla, drhl, ssjkrpkr.
- New portmap for dphl, dphla.
- Added Interrupts through vertical sync for all sets based on i8080.
- Fixed norautua and norautub table for bin to bcd conversion.
- New button-lamps layout with 10 buttons for dphl, dphla, dphljp,
drhl, drhla, and ssjkrpkr.
- Clickable buttons for all former buttons-lamps layouts.
- Promoted drhl, drhla, norautua, norautub, and ssjkrpkr to working.
TODO: TODO:
- Check the 3rd PPI device at 0xc0-0xc3 (VRAM). - Check the 3rd PPI device at 0xc0-0xc3 (VRAM).
@ -570,19 +588,33 @@
- Parent/clone relationship. - Parent/clone relationship.
issues...
- norautua: overflow drawing cards (possible straight draw).
changing one card, draw a 6th card at the right.
- dphl behaviour is close to dphlunkb.
- dphla is working, but when pay a hand is stuck spitting "call attendant".
*******************************************************************************/ *******************************************************************************/
#include "emu.h" #include "emu.h"
#include "norautp.h"
#include "cpu/i8085/i8085.h" #include "cpu/i8085/i8085.h"
#include "cpu/z80/z80.h" #include "cpu/z80/z80.h"
#include "machine/i8255.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "sound/discrete.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h" #include "speaker.h"
#include "noraut11.lh" #include "noraut11.lh"
#include "noraut12.lh" #include "noraut12.lh"
#include "noraut10.lh"
#define NORAUT_MASTER_CLOCK XTAL(18'432'000) #define NORAUT_MASTER_CLOCK XTAL(18'432'000)
@ -590,6 +622,102 @@
#define NORAUT_CPU_CLOCK NORAUT_MASTER_CLOCK / 8 // 2.30275 MHz - Measured: 2.305 MHz #define NORAUT_CPU_CLOCK NORAUT_MASTER_CLOCK / 8 // 2.30275 MHz - Measured: 2.305 MHz
#define DPHL_CPU_CLOCK DPHL_MASTER_CLOCK / 9 // 2 MHz (from 8224) #define DPHL_CPU_CLOCK DPHL_MASTER_CLOCK / 9 // 2 MHz (from 8224)
// Discrete Sound Input Nodes
#define NORAUTP_SND_EN NODE_01
#define NORAUTP_FREQ_DATA NODE_02
class norautp_state : public driver_device
{
public:
norautp_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_ppi8255(*this, "ppi8255_%u", 0),
m_discrete(*this, "discrete"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_decrypted_opcodes(*this, "decrypted_opcodes"),
m_lamps(*this, "lamp%u", 0U)
{ }
void noraut_base(machine_config &config);
void kimble(machine_config &config);
void kimbldhl(machine_config &config);
void norautp(machine_config &config);
void norautu(machine_config &config);
void norautx4(machine_config &config);
void norautpl(machine_config &config);
void newhilop(machine_config &config);
void dphltest(machine_config &config);
void nortest1(machine_config &config);
void ssjkrpkr(machine_config &config);
void dphl(machine_config &config);
void dphla(machine_config &config);
void drhl(machine_config &config);
void norautxp(machine_config &config);
void noraut3(machine_config &config);
void cgidjp(machine_config &config);
void cdrawpkr(machine_config &config);
void init_ssa();
void init_enc();
void init_deb();
protected:
virtual void machine_start() override { m_lamps.resolve(); }
virtual void video_start() override ATTR_COLD;
private:
void ppi2_obf_w(int state);
TIMER_CALLBACK_MEMBER(ppi2_ack);
uint8_t test2_r();
uint8_t test3_r();
uint8_t test4_r();
void mainlamps_w(uint8_t data);
void soundlamps_w(uint8_t data);
void counterlamps_w(uint8_t data);
void norautp_palette(palette_device &palette) const;
void drhl_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;
void decrypted_opcodes_map(address_map &map) ATTR_COLD;
void dphl_map(address_map &map) ATTR_COLD;
void dphl_portmap(address_map &map) ATTR_COLD;
void dphla_portmap(address_map &map) ATTR_COLD;
void dphla_map(address_map &map) ATTR_COLD;
void drhl_portmap(address_map &map) ATTR_COLD;
void dphltest_map(address_map &map) ATTR_COLD;
void drhl_map(address_map &map) ATTR_COLD;
void kimbldhl_map(address_map &map) ATTR_COLD;
void kimble_map(address_map &map) ATTR_COLD;
void newhilop_map(address_map &map) ATTR_COLD;
void noraut3_map(address_map &map) ATTR_COLD;
void noraut3_decrypted_opcodes_map(address_map &map) ATTR_COLD;
void norautp_map(address_map &map) ATTR_COLD;
void norautp_portmap(address_map &map) ATTR_COLD;
void norautx4_map(address_map &map) ATTR_COLD;
void norautx8_map(address_map &map) ATTR_COLD;
void norautxp_map(address_map &map) ATTR_COLD;
void norautxp_portmap(address_map &map) ATTR_COLD;
void nortest1_map(address_map &map) ATTR_COLD;
void ssjkrpkr_map(address_map &map) ATTR_COLD;
std::unique_ptr<uint16_t[]> m_np_vram;
required_device<cpu_device> m_maincpu;
required_device_array<i8255_device, 3> m_ppi8255;
required_device<discrete_sound_device> m_discrete;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_shared_ptr<uint8_t> m_decrypted_opcodes;
output_finder<12> m_lamps;
int m_test3 = 1;
};
/********************************************* /*********************************************
* Video Hardware * * Video Hardware *
@ -655,6 +783,19 @@ void norautp_state::norautp_palette(palette_device &palette) const
palette.set_pen_color(7, rgb_t(0x00, 0x00, 0x00)); // black palette.set_pen_color(7, rgb_t(0x00, 0x00, 0x00)); // black
} }
void norautp_state::drhl_palette(palette_device &palette) const
{
// 1st gfx bank paleeta para drhl
palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); // black (blue)
palette.set_pen_color(1, rgb_t(0xff, 0xff, 0xff)); // white (yellow)
palette.set_pen_color(2, rgb_t(0xff, 0x00, 0x00)); // red (blue)
palette.set_pen_color(3, rgb_t(0xff, 0xff, 0xff)); // white (white)
palette.set_pen_color(4, rgb_t(0xff, 0xff, 0xff)); // white
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)
}
/******************************************* /*******************************************
* R/W Handlers * * R/W Handlers *
@ -734,22 +875,6 @@ void norautp_state::counterlamps_w(uint8_t data)
} }
/* Game waits for bit 7 (0x80) to be set.
This should be the /OBF line (PC7) from PPI-2 (handshake).
PC0-PC2 could be set as input or output.
*/
//uint8_t norautp_state::ppi2_portc_r()
//{
// return;
//}
//void norautp_state::ppi2_portc_w(uint8_t data)
//{
// // PC0-PC2 don't seems to be connected to any output
//}
void norautp_state::ppi2_obf_w(int state) void norautp_state::ppi2_obf_w(int state)
{ {
machine().scheduler().synchronize(timer_expired_delegate(FUNC(norautp_state::ppi2_ack), this), state); machine().scheduler().synchronize(timer_expired_delegate(FUNC(norautp_state::ppi2_ack), this), state);
@ -766,33 +891,6 @@ TIMER_CALLBACK_MEMBER(norautp_state::ppi2_ack)
} }
} }
#ifdef UNUSED_FUNCTION // old implementation
// game waits for /OBF signal (bit 7) to be set.
uint8_t norautp_state::test_r()
{
return 0xff;
}
uint8_t norautp_state::vram_data_r()
{
return m_np_vram[m_np_addr];
}
void norautp_state::vram_data_w(uint8_t data)
{
m_np_vram[m_np_addr] = data & 0xff;
// trigger 8255-2 port C bit 7 (/OBF)
// m_ppi8255_2->set_pc_bit(7, 0);
// m_ppi8255_2->set_pc_bit(7, 1);
}
void norautp_state::vram_addr_w(uint8_t data)
{
m_np_addr = data;
}
#endif
// game waits for bit 4 (0x10) to be reset. // game waits for bit 4 (0x10) to be reset.
uint8_t norautp_state::test2_r() uint8_t norautp_state::test2_r()
@ -800,6 +898,29 @@ uint8_t norautp_state::test2_r()
return 0x00; return 0x00;
} }
uint8_t norautp_state::test3_r()
{
// return machine().rand() & 0xff;
if(m_maincpu->pc() == 0x187a)
return 0x02 + (machine().rand() & 0x0f);
if(m_maincpu->pc() == 0x1881)
return 0x00 + (machine().rand() & 0x0f);
if(m_maincpu->pc() == 0x188d)
return 0x02 + (machine().rand() & 0x0f);
m_test3 = (~m_test3 & 0x01);
logerror("test3: pc:%04x - data:%02x\n", m_maincpu->pc(), m_test3);
return m_test3;
}
uint8_t norautp_state::test4_r()
{
m_test3 = (~m_test3 & 0x01) + 0x14;
return m_test3;
}
/********************************************* /*********************************************
* Memory Map Information * * Memory Map Information *
@ -872,15 +993,13 @@ void norautp_state::decrypted_opcodes_map(address_map &map)
map(0x0000, 0x1fff).rom().share(m_decrypted_opcodes); map(0x0000, 0x1fff).rom().share(m_decrypted_opcodes);
} }
void norautp_state::norautp_portmap(address_map &map) void norautp_state::norautp_portmap(address_map &map)
{ {
map.global_mask(0xff); map.global_mask(0xff);
map(0x60, 0x63).mirror(0x1c).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0x60, 0x63).mirror(0x1c).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xa0, 0xa3).mirror(0x1c).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xa0, 0xa3).mirror(0x1c).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xc0, 0xc3).mirror(0x3c).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); map(0xc0, 0xc3).mirror(0x3c).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
//map(0xc0, 0xc0).mirror(0x3c).rw(FUNC(norautp_state::vram_data_r), FUNC(norautp_state::vram_data_w));
//map(0xc1, 0xc1).mirror(0x3c).w(FUNC(norautp_state::vram_addr_w));
//map(0xc2, 0xc2).mirror(0x3c).r(FUNC(norautp_state::test_r));
map(0xef, 0xef).r(FUNC(norautp_state::test2_r)); map(0xef, 0xef).r(FUNC(norautp_state::test2_r));
} }
@ -919,14 +1038,6 @@ void norautp_state::norautx4_map(address_map &map)
map(0x6000, 0x67ff).ram().share("nvram"); // 6116 map(0x6000, 0x67ff).ram().share("nvram"); // 6116
} }
#ifdef UNUSED_CODE
void norautp_state::norautx8_map(address_map &map)
{
map(0x0000, 0x7fff).rom(); // need to be checked
map(0xc000, 0xc7ff).ram().share("nvram"); // 6116
}
#endif
void norautp_state::noraut3_map(address_map &map) void norautp_state::noraut3_map(address_map &map)
{ {
map(0x0000, 0x3fff).rom().region("maincpu", 0x4000); map(0x0000, 0x3fff).rom().region("maincpu", 0x4000);
@ -944,16 +1055,9 @@ void norautp_state::kimble_map(address_map &map)
{ {
map(0x0000, 0xbfff).rom(); map(0x0000, 0xbfff).rom();
map(0xc000, 0xc7ff).ram().share("nvram"); map(0xc000, 0xc7ff).ram().share("nvram");
map(0xc800, 0xc9ff).ram(); // working RAM? map(0xc800, 0xcfff).ram(); // working RAM?
} }
#ifdef UNUSED_CODE
void norautp_state::norautxp_portmap(address_map &map)
{
map.global_mask(0xff);
}
#endif
void norautp_state::newhilop_map(address_map &map) void norautp_state::newhilop_map(address_map &map)
{ {
map(0x0000, 0x1fff).rom(); map(0x0000, 0x1fff).rom();
@ -1033,6 +1137,35 @@ void norautp_state::drhl_map(address_map &map)
} }
void norautp_state::dphla_portmap(address_map &map)
{
map.global_mask(0xff);
map(0x60, 0x63).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xa0, 0xa3).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xc0, 0xc3).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xef, 0xef).r(FUNC(norautp_state::test3_r));
}
void norautp_state::dphl_portmap(address_map &map)
{
map.global_mask(0xff);
map(0x7c, 0x7f).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xbc, 0xbf).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xdc, 0xdf).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xef, 0xef).r(FUNC(norautp_state::test3_r));
}
void norautp_state::drhl_portmap(address_map &map)
{
map.global_mask(0xff);
map(0x7c, 0x7f).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xbc, 0xbf).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xdc, 0xdf).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0xef, 0xef).r(FUNC(norautp_state::test4_r));
}
/********************************************* /*********************************************
* Input Ports * * Input Ports *
*********************************************/ *********************************************/
@ -1044,7 +1177,7 @@ static INPUT_PORTS_START( norautp )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Collect") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Collect")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // Coin A PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // Coin A
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) // Coin B PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) // Coin B
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) PORT_NAME("IN0-5") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PORT_CODE(KEYCODE_K) PORT_NAME("IN0-5")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Hi") PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Hi")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Lo") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Lo")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
@ -1065,28 +1198,28 @@ static INPUT_PORTS_START( norautp )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("Low Level Hopper") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) PORT_NAME("Low Level Hopper")
PORT_START("DSW1") PORT_START("DSW1")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x08, 0x08, "Random Raise Bet" ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Coinage ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:3")
PORT_DIPSETTING( 0x20, "A=5; B=25; C=1" ) PORT_DIPSETTING( 0x20, "A=5; B=25; C=1" )
PORT_DIPSETTING( 0x00, "A=50; B=25; C=5" ) PORT_DIPSETTING( 0x00, "A=50; B=25; C=5" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, "Set Value" ) PORT_DIPNAME( 0x80, 0x80, "Set Value" ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x80, "2 Pence" ) PORT_DIPSETTING( 0x80, "2 Pence" )
PORT_DIPSETTING( 0x00, "10 Pence" ) PORT_DIPSETTING( 0x00, "10 Pence" )
INPUT_PORTS_END INPUT_PORTS_END
@ -1120,15 +1253,19 @@ static INPUT_PORTS_START( norautrh )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("DSW1") PORT_START("DSW1")
// to find the function...
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7") PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Bet Max" ) PORT_DIPLOCATION("DSW1:6") PORT_DIPNAME( 0x04, 0x04, "Bet Max" ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x04, "5" ) PORT_DIPSETTING( 0x04, "1" ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x00)
PORT_DIPSETTING( 0x00, "25" ) PORT_DIPSETTING( 0x00, "20" ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x00)
PORT_DIPSETTING( 0x04, "5 " ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x80)
PORT_DIPSETTING( 0x00, "25" ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x80)
PORT_DIPNAME( 0x08, 0x08, "Raise Ante" ) PORT_DIPLOCATION("DSW1:5") PORT_DIPNAME( 0x08, 0x08, "Raise Ante" ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x08, "Random" ) PORT_DIPSETTING( 0x08, "Random" )
PORT_DIPSETTING( 0x00, "Always" ) PORT_DIPSETTING( 0x00, "Always" )
@ -1137,8 +1274,8 @@ static INPUT_PORTS_START( norautrh )
PORT_DIPSETTING( 0x00, "Joker Poker" ) PORT_DIPSETTING( 0x00, "Joker Poker" )
PORT_DIPNAME( 0xa0, 0x20, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:3,1") PORT_DIPNAME( 0xa0, 0x20, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:3,1")
PORT_DIPSETTING( 0x00, "A=1; B=5" ) PORT_DIPSETTING( 0x00, "A=1; B=5" )
PORT_DIPSETTING( 0xa0, "A=5; B=25" )
PORT_DIPSETTING( 0x20, "A=10; B=5" ) PORT_DIPSETTING( 0x20, "A=10; B=5" )
PORT_DIPSETTING( 0xa0, "A=5; B=25" )
PORT_DIPSETTING( 0x80, "A=50; B=25" ) PORT_DIPSETTING( 0x80, "A=50; B=25" )
PORT_DIPNAME( 0x40, 0x00, "Show Bet") PORT_DIPLOCATION("DSW1:2") PORT_DIPNAME( 0x40, 0x00, "Show Bet") PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
@ -1353,6 +1490,149 @@ static INPUT_PORTS_START( noraut3 )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( norautua )
PORT_INCLUDE( norautrh )
PORT_MODIFY("DSW1")
// to find the function...
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, "Bet Max" ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x04, "1" ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x00)
PORT_DIPSETTING( 0x00, "20" ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x00)
PORT_DIPSETTING( 0x04, "5 " ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x80)
PORT_DIPSETTING( 0x00, "25" ) PORT_CONDITION("DSW1", 0x80, EQUALS, 0x80)
PORT_DIPNAME( 0xa0, 0x20, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:3,1")
PORT_DIPSETTING( 0x00, "A=1; B=5" )
PORT_DIPSETTING( 0x20, "A=10; B=5" )
PORT_DIPSETTING( 0x80, "A=5; B=25" )
PORT_DIPSETTING( 0xa0, "A=50; B=25" )
INPUT_PORTS_END
static INPUT_PORTS_START( dphla )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Deal")
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Bet / Collect")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // Coin A OK
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("IN0-5") PORT_CODE(KEYCODE_K) // give "ERROR" in some games
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Hi")
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Lo")
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT )
PORT_START("IN1")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Stand")PORT_CODE(KEYCODE_D) // Stand: keep the hand
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_NAME("Draw")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD3 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_POKER_HOLD4 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_POKER_HOLD5 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_POKER_CANCEL )
PORT_START("IN2") // unused
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) // PPI set for PORT C all outputs
PORT_START("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, "Cards to discard" ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x10, "All 5 cards" )
PORT_DIPSETTING( 0x00, "Max 3 cards" )
PORT_DIPNAME( 0x60, 0x60, "2 Jokers in Deck" ) PORT_DIPLOCATION("DSW1:2,3")
PORT_DIPSETTING( 0x60, "Never" )
PORT_DIPSETTING( 0x40, "When 8 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
static INPUT_PORTS_START( drhl )
PORT_INCLUDE( dphla )
PORT_MODIFY("DSW1")
// to find the function...
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, "Test Mode" ) PORT_DIPLOCATION("DSW1:5")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x30, 0x30, "Max Bet" ) PORT_DIPLOCATION("DSW1:3,4")
PORT_DIPSETTING( 0x10, "10" )
PORT_DIPSETTING( 0x00, "20" )
PORT_DIPSETTING( 0x30, "30" )
PORT_DIPSETTING( 0x20, "30" )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
PORT_DIPNAME( 0x80, 0x80, "Bonus" ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
static INPUT_PORTS_START( ssjkrpkr )
PORT_INCLUDE( dphla )
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, "Cards to Discard" ) PORT_DIPLOCATION("DSW1:7")
PORT_DIPSETTING( 0x02, "All 5 cards" )
PORT_DIPSETTING( 0x00, "Max 3 cards" )
PORT_DIPNAME( 0x04, 0x00, "Double-Up" ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x18, 0x10, "Max Bet" ) PORT_DIPLOCATION("DSW1:4,5")
PORT_DIPSETTING( 0x18, "1" )
PORT_DIPSETTING( 0x08, "4" )
PORT_DIPSETTING( 0x00, "9" )
PORT_DIPSETTING( 0x10, "25" )
PORT_DIPNAME( 0x20, 0x00, "Break Game (set ON)" ) PORT_DIPLOCATION("DSW1:3")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
/********************************************* /*********************************************
* Graphics Layouts * * Graphics Layouts *
*********************************************/ *********************************************/
@ -1397,6 +1677,97 @@ static GFXDECODE_START( gfx_norautp )
GFXDECODE_END GFXDECODE_END
/**************************************************
* Discrete Sound Hardware *
**************************************************/
static const discrete_555_desc desc_norautp_555 =
{
DISC_555_OUT_ENERGY | DISC_555_OUT_AC,
5, // B+ voltage of 555
DEFAULT_555_VALUES
};
#define NORAUTP_SOUND_CIRCUIT(_name, _r1, _r2, _c1, _c2, _c3, _c4) \
static const discrete_comp_adder_table desc_##_name##_caps = \
{ \
DISC_COMP_P_CAPACITOR, _c4, 3, \
{ \
_c3, _c2, _c1 \
} \
}; \
\
DISCRETE_SOUND_START( _name##_discrete ) \
/************************************************ \
* Input register mapping \
************************************************/ \
DISCRETE_INPUT_LOGIC(NORAUTP_SND_EN) \
DISCRETE_INPUT_DATA (NORAUTP_FREQ_DATA) \
\
/************************************************ \
* Tone Generator \
************************************************/ \
DISCRETE_COMP_ADDER(NODE_20, NORAUTP_FREQ_DATA, &desc_##_name##_caps) \
DISCRETE_555_ASTABLE(NODE_21, \
NORAUTP_SND_EN, /* RESET */ \
_r2, _r1, NODE_20, &desc_norautp_555) \
\
DISCRETE_OUTPUT(NODE_21, 65000.0/3.8) \
DISCRETE_SOUND_END
/***** Noraut Poker *****/
/* Parts List - Resistors */
#define NORAUTP_R1 RES_K(120)
#define NORAUTP_R2 RES_K(2.2)
/* Parts List - Capacitors */
#define NORAUTP_C1 CAP_U(.01)
#define NORAUTP_C2 CAP_U(.022)
#define NORAUTP_C3 CAP_U(.047)
#define NORAUTP_C4 CAP_U(.01)
NORAUTP_SOUND_CIRCUIT(norautp,
NORAUTP_R1, NORAUTP_R2,
NORAUTP_C1, NORAUTP_C2, NORAUTP_C3, NORAUTP_C4)
/***** Draw Poker HI-LO *****/
/* Parts List - Resistors */
#define DPHL_R1 RES_K(120)
#define DPHL_R2 RES_K(1)
/* Parts List - Capacitors */
#define DPHL_C1 CAP_U(.01)
#define DPHL_C2 CAP_U(.022)
#define DPHL_C3 CAP_U(.05)
#define DPHL_C4 CAP_U(.01)
NORAUTP_SOUND_CIRCUIT(dphl,
DPHL_R1, DPHL_R2,
DPHL_C1, DPHL_C2, DPHL_C3, DPHL_C4)
/***** Kimble Double HI-LO *****/
/* Parts List - Resistors */
#define KIMBLE_R1 RES_K(100)
#define KIMBLE_R2 RES_K(1)
/* Parts List - Capacitors */
#define KIMBLE_C1 CAP_U(.01)
#define KIMBLE_C2 CAP_U(.022)
#define KIMBLE_C3 CAP_U(.047)
#define KIMBLE_C4 CAP_U(.01)
NORAUTP_SOUND_CIRCUIT(kimble,
KIMBLE_R1, KIMBLE_R2,
KIMBLE_C1, KIMBLE_C2, KIMBLE_C3, KIMBLE_C4)
/********************************************* /*********************************************
* Machine Drivers * * Machine Drivers *
*********************************************/ *********************************************/
@ -1502,17 +1873,6 @@ void norautp_state::norautx4(machine_config &config)
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold)); m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
} }
#ifdef UNUSED_CODE
void norautp_state::norautx8(machine_config &config)
{
noraut_base(config);
// basic machine hardware
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::norautx8_map);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
}
#endif
void norautp_state::noraut3(machine_config &config) void norautp_state::noraut3(machine_config &config)
{ {
noraut_base(config); noraut_base(config);
@ -1573,7 +1933,8 @@ void norautp_state::dphl(machine_config &config)
// basic machine hardware // basic machine hardware
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK); I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphl_map); m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphl_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap); m_maincpu->set_addrmap(AS_IO, &norautp_state::dphl_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
// sound hardware // sound hardware
m_discrete->set_intf(dphl_discrete); m_discrete->set_intf(dphl_discrete);
@ -1586,7 +1947,8 @@ void norautp_state::dphla(machine_config &config)
// basic machine hardware // basic machine hardware
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK); I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphla_map); m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphla_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap); m_maincpu->set_addrmap(AS_IO, &norautp_state::dphla_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
// sound hardware // sound hardware
m_discrete->set_intf(dphl_discrete); m_discrete->set_intf(dphl_discrete);
@ -1600,6 +1962,7 @@ void norautp_state::kimbldhl(machine_config &config)
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK); I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::kimbldhl_map); m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::kimbldhl_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap); m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
// sound hardware // sound hardware
m_discrete->set_intf(kimble_discrete); m_discrete->set_intf(kimble_discrete);
@ -1613,6 +1976,7 @@ void norautp_state::dphltest(machine_config &config)
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK); I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphltest_map); m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::dphltest_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap); m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
// sound hardware // sound hardware
m_discrete->set_intf(dphl_discrete); m_discrete->set_intf(dphl_discrete);
@ -1625,7 +1989,10 @@ void norautp_state::drhl(machine_config &config)
// basic machine hardware // basic machine hardware
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK); I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::drhl_map); m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::drhl_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap); 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);
// sound hardware // sound hardware
m_discrete->set_intf(dphl_discrete); m_discrete->set_intf(dphl_discrete);
@ -1639,6 +2006,7 @@ void norautp_state::ssjkrpkr(machine_config &config)
I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK); I8080(config.replace(), m_maincpu, DPHL_CPU_CLOCK);
m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::ssjkrpkr_map); m_maincpu->set_addrmap(AS_PROGRAM, &norautp_state::ssjkrpkr_map);
m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap); m_maincpu->set_addrmap(AS_IO, &norautp_state::norautp_portmap);
m_maincpu->set_vblank_int("screen", FUNC(norautp_state::irq0_line_hold));
// sound hardware // sound hardware
m_discrete->set_intf(dphl_discrete); m_discrete->set_intf(dphl_discrete);
@ -3597,10 +3965,12 @@ ROM_START( ssjkrpkr )
ROM_LOAD( "oc.u11", 0x0000, 0x1000, CRC(b9072aa5) SHA1(bfa3df090e1030aaebbb784cb5e686f4f84f2263) ) ROM_LOAD( "oc.u11", 0x0000, 0x1000, CRC(b9072aa5) SHA1(bfa3df090e1030aaebbb784cb5e686f4f84f2263) )
ROM_LOAD( "oc.u10", 0x1000, 0x1000, CRC(8652ebb9) SHA1(e907df4f8da99b42c425ed58da3cda9943c89fb7) ) ROM_LOAD( "oc.u10", 0x1000, 0x1000, CRC(8652ebb9) SHA1(e907df4f8da99b42c425ed58da3cda9943c89fb7) )
// All garbage inside. Replaced with generic GFX ROM from DPHLA set, modified to support the "'" char // The ROM is broken and can't get a consistent dump. All is garbage inside.
// So, we are using a generic GFX ROM (from DPHLA set), modified to support
// the apostrophe, question mark, and arrow down symbols needed for the game.
ROM_REGION( 0x1000, "gfx", 0 ) ROM_REGION( 0x1000, "gfx", 0 )
ROM_FILL( 0x0000, 0x0800, 0xff ) ROM_FILL( 0x0000, 0x0800, 0xff )
ROM_LOAD( "oc.u27", 0x0800, 0x0800, BAD_DUMP CRC(ac8e9f2c) SHA1(25ab615de3055e5be78d409194edf7e3c03fe9b9) ) ROM_LOAD( "oc.u27", 0x0800, 0x0800, BAD_DUMP CRC(6de843f8) SHA1(4403178b491ba3d8115ebb631450d094be730edc) )
ROM_END ROM_END
@ -3615,7 +3985,7 @@ ROM_END
The set was found as 'fastdraw'. No other info. The set was found as 'fastdraw'. No other info.
Maybe is the poker conversion kit released by Stern as 'Fast Draw': Maybe is the poker conversion kit released by Stern as 'Fast Draw':
http://www.arcadeflyers.com/?page=thumbs&db=videodb&id=4602 https://flyers.arcade-museum.com/videogames/show/4362
*/ */
@ -4513,8 +4883,20 @@ void norautp_state::init_enc()
case 0x0f: rom[i] = data_sub_table_0f[x]; break; case 0x0f: rom[i] = data_sub_table_0f[x]; break;
} }
} }
uint8_t *ROM = memregion("maincpu")->base();
// fix table for bin to bcd conversion
ROM[0x1da0] = 0x10; // 10.000
ROM[0x1da1] = 0x27;
ROM[0x1da2] = 0xe8; // 1.000
ROM[0x1da3] = 0x03;
ROM[0x1da4] = 0x64; // 100
ROM[0x1da5] = 0x00;
ROM[0x1da6] = 0x0a; // 10
ROM[0x1da7] = 0x00;
} }
void norautp_state::init_deb() void norautp_state::init_deb()
// Just for debugging purposes // Just for debugging purposes
// Should be removed soon // Should be removed soon
@ -4525,6 +4907,7 @@ void norautp_state::init_deb()
ROM[0x206c] = 0xff; ROM[0x206c] = 0xff;
} }
void norautp_state::init_ssa() void norautp_state::init_ssa()
/* Passing the video PPI handshaking lines */ /* Passing the video PPI handshaking lines */
/* Just for debugging purposes */ /* Just for debugging purposes */
@ -4557,18 +4940,18 @@ GAMEL( 198?, norautjo, 0, norautp, mainline, norautp_state, empty_init, R
GAMEL( 198?, norautpl, 0, norautpl, mainline, norautp_state, empty_init, ROT0, "Video Fun Games Ltd.", "Noraut Joker Poker (Prologic HW)", 0, layout_noraut12 ) GAMEL( 198?, norautpl, 0, norautpl, mainline, norautp_state, empty_init, ROT0, "Video Fun Games Ltd.", "Noraut Joker Poker (Prologic HW)", 0, layout_noraut12 )
GAMEL( 1988, norautjp, norautp, norautp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Joker Poker (alt)", 0, layout_noraut11 ) GAMEL( 1988, norautjp, norautp, norautp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Joker Poker (alt)", 0, layout_noraut11 )
GAMEL( 1988, norautrh, 0, norautp, norautrh, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker", 0, layout_noraut12 ) GAMEL( 1988, norautrh, 0, norautp, norautrh, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker", 0, layout_noraut12 )
GAMEL( 198?, norautra, 0, norautp, norautrh, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker (alt HW)", 0, layout_noraut12 ) // 1-bet?? where??... GAMEL( 198?, norautra, 0, norautp, norautrh, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Red Hot Joker Poker (alt HW)", 0, layout_noraut12 )
GAME( 1988, norautu, 0, norautxp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Poker (NTX10A)", MACHINE_NOT_WORKING ) GAME( 1988, norautu, 0, norautxp, norautp, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Poker (NTX10A)", MACHINE_NOT_WORKING )
GAMEL( 2002, noraut3a, 0, noraut3, noraut3, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Jacks Plus / Joker Poker (V3.010a)", MACHINE_NOT_WORKING, layout_noraut12 ) GAMEL( 2002, noraut3a, 0, noraut3, noraut3, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Jacks Plus / Joker Poker (V3.010a)", MACHINE_NOT_WORKING, layout_noraut12 )
GAMEL( 2003, noraut3b, 0, noraut3, noraut3, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Jacks Plus / Joker Poker (V3.011a)", MACHINE_NOT_WORKING, layout_noraut12 ) GAMEL( 2003, noraut3b, 0, noraut3, noraut3, norautp_state, empty_init, ROT0, "Noraut Ltd.", "Noraut Jacks Plus / Joker Poker (V3.011a)", MACHINE_NOT_WORKING, layout_noraut12 )
GAMEL( 198?, norautua, 0, norautu, norautp, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut Joker Poker (console, set 1)", MACHINE_NOT_WORKING, layout_noraut12 ) GAMEL( 198?, norautua, 0, norautu, norautua, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut Joker Poker (console, set 1)", MACHINE_IMPERFECT_GRAPHICS, layout_noraut12 ) // sometimes draw a repeated card
GAMEL( 198?, norautub, 0, norautu, norautp, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut Joker Poker (console, set 2)", MACHINE_NOT_WORKING, layout_noraut12 ) GAMEL( 198?, norautub, norautua, norautu, norautua, norautp_state, init_enc, ROT0, "Noraut Ltd.", "Noraut Joker Poker (console, set 2)", 0, layout_noraut12 )
GAMEL( 198?, mainline, 0, norautp, mainline, norautp_state, empty_init, ROT0, "Mainline London", "Mainline Double Joker Poker", 0, layout_noraut12 ) GAMEL( 198?, mainline, 0, norautp, mainline, norautp_state, empty_init, ROT0, "Mainline London", "Mainline Double Joker Poker", 0, layout_noraut12 )
GAMEL( 199?, df_djpkr, 0, norautp, mainline, norautp_state, empty_init, ROT0, "DellFern Ltd.", "Double Joker Poker (45%-75% payout)", 0, layout_noraut12 ) GAMEL( 199?, df_djpkr, 0, norautp, mainline, norautp_state, empty_init, ROT0, "DellFern Ltd.", "Double Joker Poker (45%-75% payout)", 0, layout_noraut12 )
GAMEL( 2005, ndxron10, 0, norautp, ndxron10, norautp_state, empty_init, ROT0, "<unknown>", "Royal on Ten (hack of Noraut Deluxe Poker)", 0, layout_noraut12 ) GAMEL( 2005, ndxron10, 0, norautp, ndxron10, norautp_state, empty_init, ROT0, "<unknown>", "Royal on Ten (hack of Noraut Deluxe Poker)", 0, layout_noraut12 )
GAMEL( 1999, cgip30cs, 0, norautx4, norautkl, norautp_state, init_deb, ROT0, "CGI", "Credit Poker (ver.30c, standard)", 0, layout_noraut12 ) // CGI - Credit Poker, VERSION 30C, 21/12/99 GAMEL( 1999, cgip30cs, 0, norautx4, norautkl, norautp_state, init_deb, ROT0, "CGI", "Credit Poker (ver.30c, standard)", 0, layout_noraut12 ) // CGI - Credit Poker, VERSION 30C, 21/12/99
GAMEL( 1999, cgip30b, cgip30cs,norautx4, norautkl, norautp_state, empty_init, ROT0, "CGI", "Credit Poker (ver.30b, 7 & 9 bonus)", 0, layout_noraut12 ) // CGI - Credit Poker, VERSION 30B, 7 &9 BONUS, 21/12/99 BY V.S. for CGI GAMEL( 1999, cgip30b, cgip30cs, norautx4, norautkl, norautp_state, empty_init, ROT0, "CGI", "Credit Poker (ver.30b, 7 & 9 bonus)", 0, layout_noraut12 ) // CGI - Credit Poker, VERSION 30B, 7 &9 BONUS, 21/12/99 BY V.S. for CGI
GAMEL( 1998, cgip23b, cgip30cs,norautx4, norautkl, norautp_state, empty_init, ROT0, "CGI", "Credit Poker (ver.23b, 7 & 9 bonus)", 0, layout_noraut12 ) // CGI - Credit Poker, VERSION 23B, 7 &9 BONUS, 31.03.98. BY V.S. GAMEL( 1998, cgip23b, cgip30cs, norautx4, norautkl, norautp_state, empty_init, ROT0, "CGI", "Credit Poker (ver.23b, 7 & 9 bonus)", 0, layout_noraut12 ) // CGI - Credit Poker, VERSION 23B, 7 &9 BONUS, 31.03.98. BY V.S.
GAMEL( 19??, cgidjp, 0, cgidjp, mainline, norautp_state, empty_init, ROT0, "CGI", "Double Joker Poker (CGI)", 0, layout_noraut12 ) // very similar to df_djpkr GAMEL( 19??, cgidjp, 0, cgidjp, mainline, norautp_state, empty_init, ROT0, "CGI", "Double Joker Poker (CGI)", 0, layout_noraut12 ) // very similar to df_djpkr
GAME( 198?, kimblz80, 0, kimble, norautp, norautp_state, empty_init, ROT0, "Kimble Ireland", "Kimble Double HI-LO (z80 version)", MACHINE_NOT_WORKING ) GAME( 198?, kimblz80, 0, kimble, norautp, norautp_state, empty_init, ROT0, "Kimble Ireland", "Kimble Double HI-LO (z80 version)", MACHINE_NOT_WORKING )
GAME( 1983, pma, 0, nortest1, norautp, norautp_state, empty_init, ROT0, "PMA", "PMA Poker", MACHINE_NOT_WORKING ) GAME( 1983, pma, 0, nortest1, norautp, norautp_state, empty_init, ROT0, "PMA", "PMA Poker", MACHINE_NOT_WORKING )
@ -4578,20 +4961,20 @@ GAMEL( 1984, cdrawpkr, 0, cdrawpkr, cdrawpkr, norautp_state, empty_init, R
//************************************* 8080 sets ************************************** //************************************* 8080 sets **************************************
//* The following ones are 'Draw Poker HI-LO' type, running in a 8080 based hardware * //* The following ones are 'Draw Poker HI-LO' type, running in a i8080 based hardware *
//************************************************************************************** //**************************************************************************************
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT // YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
GAME( 1983, dphl, 0, dphl, norautp, norautp_state, empty_init, ROT0, "M.Kramer Manufacturing.", "Draw Poker HI-LO (M.Kramer)", MACHINE_NOT_WORKING ) GAMEL( 1983, dphl, 0, dphl, dphla, norautp_state, empty_init, ROT0, "M.Kramer Manufacturing.", "Draw Poker HI-LO (M.Kramer)", MACHINE_NOT_WORKING, layout_noraut10 )
GAME( 1983, dphla, 0, dphla, norautp, norautp_state, empty_init, ROT0, "<unknown>", "Draw Poker HI-LO (Alt)", MACHINE_NOT_WORKING ) GAMEL( 1983, dphla, 0, dphla, dphla, norautp_state, empty_init, ROT0, "<unknown>", "Joker Poker (Kramer, Alt)", MACHINE_NOT_WORKING, layout_noraut10 ) // call attendant
GAME( 1983, dphljp, 0, dphl, norautp, norautp_state, empty_init, ROT0, "<unknown>", "Draw Poker HI-LO (Japanese)", MACHINE_NOT_WORKING ) GAMEL( 1983, dphljp, 0, dphl, dphla, norautp_state, empty_init, ROT0, "<unknown>", "Draw Poker HI-LO (Japanese)", MACHINE_NOT_WORKING, layout_noraut10 )
GAME( 198?, kimbldhl, 0, kimbldhl, norautp, norautp_state, empty_init, ROT0, "Kimble Ireland", "Kimble Double HI-LO", MACHINE_NOT_WORKING ) 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, 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 ) GAME( 1983, gtipokra, 0, dphla, norautp, norautp_state, empty_init, ROT0, "GTI Inc", "GTI Poker? (SMS hardware)", MACHINE_NOT_WORKING )
GAME( 1983, smshilo, 0, dphla, norautp, norautp_state, empty_init, ROT0, "SMS Manufacturing Corp.", "HI-LO Double Up Joker Poker", MACHINE_NOT_WORKING ) GAME( 1983, smshilo, 0, dphla, norautp, norautp_state, empty_init, ROT0, "SMS Manufacturing Corp.", "HI-LO Double Up Joker Poker", MACHINE_NOT_WORKING )
GAME( 1986, drhl, 0, drhl, norautp, norautp_state, empty_init, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 1)", MACHINE_NOT_WORKING ) GAMEL( 1986, drhl, 0, drhl, drhl, norautp_state, empty_init, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 1)", 0, layout_noraut10 )
GAME( 1986, drhla, drhl, drhl, norautp, norautp_state, empty_init, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 2)", MACHINE_NOT_WORKING ) GAMEL( 1986, drhla, drhl, drhl, drhl, norautp_state, empty_init, ROT0, "Drews Inc.", "Drews Revenge (v.2.89, set 2)", 0, layout_noraut10 )
GAME( 1982, ssjkrpkr, 0, ssjkrpkr, norautp, norautp_state, init_ssa, ROT0, "Southern Systems & Assembly", "Southern Systems Joker Poker", MACHINE_NOT_WORKING ) GAMEL( 1982, ssjkrpkr, 0, ssjkrpkr, ssjkrpkr, norautp_state, init_ssa, ROT0, "Southern Systems & Assembly", "Southern Systems Joker Poker", 0, layout_noraut10 )
// The following one also has a custom 68705 MCU // The following one also has a custom 68705 MCU
GAME( 1993, tpoker2, 0, dphltest, norautp, norautp_state, empty_init, ROT0, "Micro Manufacturing", "Turbo Poker 2", MACHINE_NOT_WORKING ) GAME( 1993, tpoker2, 0, dphltest, norautp, norautp_state, empty_init, ROT0, "Micro Manufacturing", "Turbo Poker 2", MACHINE_NOT_WORKING )

View File

@ -1,107 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Angelo Salese, Roberto Fresca
#ifndef MAME_MISC_NORAUTP_H
#define MAME_MISC_NORAUTP_H
#pragma once
#include "machine/i8255.h"
#include "sound/discrete.h"
#include "emupal.h"
#include "screen.h"
/* Discrete Sound Input Nodes */
#define NORAUTP_SND_EN NODE_01
#define NORAUTP_FREQ_DATA NODE_02
class norautp_state : public driver_device
{
public:
norautp_state(const machine_config &mconfig, device_type type, const char *tag) :
driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_ppi8255(*this, "ppi8255_%u", 0),
m_discrete(*this, "discrete"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
m_decrypted_opcodes(*this, "decrypted_opcodes"),
m_lamps(*this, "lamp%u", 0U)
{ }
void noraut_base(machine_config &config);
void kimble(machine_config &config);
void kimbldhl(machine_config &config);
void norautp(machine_config &config);
void norautu(machine_config &config);
void norautx4(machine_config &config);
void norautpl(machine_config &config);
void newhilop(machine_config &config);
void dphltest(machine_config &config);
void nortest1(machine_config &config);
void ssjkrpkr(machine_config &config);
void dphl(machine_config &config);
void dphla(machine_config &config);
void drhl(machine_config &config);
void norautxp(machine_config &config);
void noraut3(machine_config &config);
void cgidjp(machine_config &config);
void cdrawpkr(machine_config &config);
void init_ssa();
void init_enc();
void init_deb();
protected:
virtual void machine_start() override { m_lamps.resolve(); }
virtual void video_start() override ATTR_COLD;
private:
void ppi2_obf_w(int state);
TIMER_CALLBACK_MEMBER(ppi2_ack);
uint8_t test2_r();
void mainlamps_w(uint8_t data);
void soundlamps_w(uint8_t data);
void counterlamps_w(uint8_t data);
void norautp_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;
void decrypted_opcodes_map(address_map &map) ATTR_COLD;
void dphl_map(address_map &map) ATTR_COLD;
void dphla_map(address_map &map) ATTR_COLD;
void dphltest_map(address_map &map) ATTR_COLD;
void drhl_map(address_map &map) ATTR_COLD;
void kimbldhl_map(address_map &map) ATTR_COLD;
void kimble_map(address_map &map) ATTR_COLD;
void newhilop_map(address_map &map) ATTR_COLD;
void noraut3_map(address_map &map) ATTR_COLD;
void noraut3_decrypted_opcodes_map(address_map &map) ATTR_COLD;
void norautp_map(address_map &map) ATTR_COLD;
void norautp_portmap(address_map &map) ATTR_COLD;
void norautx4_map(address_map &map) ATTR_COLD;
void norautx8_map(address_map &map) ATTR_COLD;
void norautxp_map(address_map &map) ATTR_COLD;
void norautxp_portmap(address_map &map) ATTR_COLD;
void nortest1_map(address_map &map) ATTR_COLD;
void ssjkrpkr_map(address_map &map) ATTR_COLD;
std::unique_ptr<uint16_t[]> m_np_vram;
required_device<cpu_device> m_maincpu;
required_device_array<i8255_device, 3> m_ppi8255;
required_device<discrete_sound_device> m_discrete;
required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
optional_shared_ptr<uint8_t> m_decrypted_opcodes;
output_finder<12> m_lamps;
};
/*----------- defined in audio/norautp.c -----------*/
DISCRETE_SOUND_EXTERN( norautp_discrete );
DISCRETE_SOUND_EXTERN( dphl_discrete );
DISCRETE_SOUND_EXTERN( kimble_discrete );
#endif // MAME_MISC_NORAUTP_H

View File

@ -1,100 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Derrick Renaud, Roberto Fresca
/************************************************************************
* Noraut/Kimble/Kramer Poker Sound System Analog emulation
* Sept 2009, Derrick Renaud & Roberto Fresca.
************************************************************************/
#include "emu.h"
#include "norautp.h"
/* Discrete Sound Input Nodes */
/* defined in norautp.h */
static const discrete_555_desc desc_norautp_555 =
{
DISC_555_OUT_ENERGY | DISC_555_OUT_AC,
5, // B+ voltage of 555
DEFAULT_555_VALUES
};
#define NORAUTP_SOUND_CIRCUIT(_name, _r1, _r2, _c1, _c2, _c3, _c4) \
static const discrete_comp_adder_table desc_##_name##_caps = \
{ \
DISC_COMP_P_CAPACITOR, _c4, 3, \
{ \
_c3, _c2, _c1 \
} \
}; \
\
DISCRETE_SOUND_START( _name##_discrete ) \
/************************************************ \
* Input register mapping \
************************************************/ \
DISCRETE_INPUT_LOGIC(NORAUTP_SND_EN) \
DISCRETE_INPUT_DATA (NORAUTP_FREQ_DATA) \
\
/************************************************ \
* Tone Generator \
************************************************/ \
DISCRETE_COMP_ADDER(NODE_20, NORAUTP_FREQ_DATA, &desc_##_name##_caps) \
DISCRETE_555_ASTABLE(NODE_21, \
NORAUTP_SND_EN, /* RESET */ \
_r2, _r1, NODE_20, &desc_norautp_555) \
\
DISCRETE_OUTPUT(NODE_21, 65000.0/3.8) \
DISCRETE_SOUND_END
/***** Noraut Poker *****/
/* Parts List - Resistors */
#define NORAUTP_R1 RES_K(120)
#define NORAUTP_R2 RES_K(2.2)
/* Parts List - Capacitors */
#define NORAUTP_C1 CAP_U(.01)
#define NORAUTP_C2 CAP_U(.022)
#define NORAUTP_C3 CAP_U(.047)
#define NORAUTP_C4 CAP_U(.01)
NORAUTP_SOUND_CIRCUIT(norautp,
NORAUTP_R1, NORAUTP_R2,
NORAUTP_C1, NORAUTP_C2, NORAUTP_C3, NORAUTP_C4)
/***** Draw Poker HI-LO *****/
/* Parts List - Resistors */
#define DPHL_R1 RES_K(120)
#define DPHL_R2 RES_K(1)
/* Parts List - Capacitors */
#define DPHL_C1 CAP_U(.01)
#define DPHL_C2 CAP_U(.022)
#define DPHL_C3 CAP_U(.05)
#define DPHL_C4 CAP_U(.01)
NORAUTP_SOUND_CIRCUIT(dphl,
DPHL_R1, DPHL_R2,
DPHL_C1, DPHL_C2, DPHL_C3, DPHL_C4)
/***** Kimble Double HI-LO *****/
/* Parts List - Resistors */
#define KIMBLE_R1 RES_K(100)
#define KIMBLE_R2 RES_K(1)
/* Parts List - Capacitors */
#define KIMBLE_C1 CAP_U(.01)
#define KIMBLE_C2 CAP_U(.022)
#define KIMBLE_C3 CAP_U(.047)
#define KIMBLE_C4 CAP_U(.01)
NORAUTP_SOUND_CIRCUIT(kimble,
KIMBLE_R1, KIMBLE_R2,
KIMBLE_C1, KIMBLE_C2, KIMBLE_C3, KIMBLE_C4)