summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/misc/goldnpkr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/misc/goldnpkr.cpp')
-rw-r--r--src/mame/misc/goldnpkr.cpp141
1 files changed, 128 insertions, 13 deletions
diff --git a/src/mame/misc/goldnpkr.cpp b/src/mame/misc/goldnpkr.cpp
index 5851e3e6bb2..3d2a7324985 100644
--- a/src/mame/misc/goldnpkr.cpp
+++ b/src/mame/misc/goldnpkr.cpp
@@ -1102,6 +1102,7 @@ public:
void icproul(machine_config &config);
void glfever(machine_config &config);
void kmhpan(machine_config &config);
+ void unkicpf40(machine_config &config);
void init_vkdlswwh();
void init_icp1db();
@@ -1199,6 +1200,7 @@ private:
void lespendu_map(address_map &map) ATTR_COLD;
void glfever_map(address_map &map) ATTR_COLD;
void kmhpan_map(address_map &map) ATTR_COLD;
+ void unkicpf40_map(address_map &map) ATTR_COLD;
required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram;
@@ -1532,6 +1534,7 @@ uint8_t goldnpkr_state::goldnpkr_mux_port_r()
case 0x20: return ioport("IN0-1")->read();
case 0x40: return ioport("IN0-2")->read();
case 0x80: return ioport("IN0-3")->read();
+ case 0x00: return 0x1f; // needed for the ICP + F40/80 DB
// royale selector writes 3F-2F-1F-0F.
// worth to split a whole machine driver just for this?
@@ -1997,6 +2000,19 @@ void goldnpkr_state::kmhpan_map(address_map &map)
map(0xc000, 0xffff).rom(); // extended rom space
}
+void goldnpkr_state::unkicpf40_map(address_map &map)
+{
+// map.global_mask(0x7fff);
+ map(0x0000, 0x07ff).ram().share("nvram"); // battery backed RAM
+ map(0x0800, 0x0800).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x0801, 0x0801).rw("crtc", FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
+ map(0x0844, 0x0847).rw("pia0", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x0848, 0x084b).rw("pia1", FUNC(pia6821_device::read), FUNC(pia6821_device::write));
+ map(0x1000, 0x13ff).ram().w(FUNC(goldnpkr_state::goldnpkr_videoram_w)).share("videoram");
+ map(0x1800, 0x1bff).ram().w(FUNC(goldnpkr_state::goldnpkr_colorram_w)).share("colorram");
+ map(0x6000, 0xffff).rom(); // uses some sort of bankswitching
+}
+
void blitz_state::megadpkr_map(address_map &map)
{
@@ -4681,6 +4697,78 @@ static INPUT_PORTS_START( kmhpan ) // TODO: verify inputs
INPUT_PORTS_END
+static INPUT_PORTS_START( unkicpf40 ) // ICP-1 w/daughterboard
+ PORT_INCLUDE( goldnpkr )
+
+ PORT_MODIFY("SW1")
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("SWA")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWA:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("SWB")
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:2")
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:5")
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:6")
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SWB:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+
/*********************************************
* Graphics Layouts *
*********************************************/
@@ -5329,6 +5417,18 @@ void goldnpkr_state::kmhpan(machine_config &config)
SN76489A(config, "sn", CPU_CLOCK / 4).add_route(ALL_OUTPUTS, "mono", 0.5); // divider unknown
}
+void goldnpkr_state::unkicpf40(machine_config &config)
+{
+ goldnpkr_base(config);
+
+ m_maincpu->set_addrmap(AS_PROGRAM, &goldnpkr_state::unkicpf40_map);
+
+ // sound hardware
+ SPEAKER(config, "mono").front_center();
+ DISCRETE(config, m_discrete, goldnpkr_discrete).add_route(ALL_OUTPUTS, "mono", 1.0);
+}
+
+
void blitz_state::megadpkr(machine_config &config)
{
// basic machine hardware
@@ -12717,7 +12817,6 @@ ROM_END
ROM_START( unkwingpkr )
ROM_REGION( 0x10000, "maincpu", 0 ) // unknown running in Wing W90 hardware
ROM_LOAD( "4.12a", 0x2000, 0x2000, CRC(119e4f06) SHA1(d520aa1a862b93d5f9d2f8acf127842bb5441831) )
-
ROM_LOAD( "5.16a", 0x4000, 0x1000, CRC(5d974b4d) SHA1(1e14a0076e59d3bfd70921d18f8ca81cfecf61e0) )
ROM_CONTINUE( 0x6000, 0x1000 )
ROM_LOAD( "6.17a", 0x5000, 0x1000, CRC(84c6a3cd) SHA1(41fda1f76318771fe8bc475edd25b3c9540b6167) )
@@ -12742,14 +12841,22 @@ ROM_START( unkwingpkr )
ROM_END
-// ICP PCBs with daughterboard 137 F40
+/*
+ ICP PCBs with daughterboard F40
+ (137 fever, 10 bet)
+
+ No lamps support.
+
+ TODO:
+ - 2x DIP switches banks support.
+ - Figure out hyperactivity on the PIA0 line CA2.
+
+*/
ROM_START( unkicpf40 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "137_7_10b_sub.bin", 0x6000, 0x1000, CRC(698a04c1) SHA1(f3e3cfef5ef3d517b2c1550c85d0be09f1fa17b1) )
- ROM_LOAD( "137_8_10b_sub.bin", 0x7000, 0x0800, CRC(d5c43fce) SHA1(6797d9cd485791dba8be0d2136b6f713f9e2908e) )
- ROM_CONTINUE( 0x5800, 0x0800 )
- ROM_LOAD( "r-300_f40_5_sub.bin", 0x5000, 0x0800, CRC(04c8797d) SHA1(ff20bab51ddff2cdce55a104f2ec536e38e42605) )
- ROM_CONTINUE( 0x7800, 0x0800 )
+ ROM_LOAD( "137_8_10b_sub.bin", 0x7000, 0x1000, CRC(d5c43fce) SHA1(6797d9cd485791dba8be0d2136b6f713f9e2908e) )
+ ROM_LOAD( "r-300_f40_5_sub.bin", 0xf000, 0x1000, CRC(04c8797d) SHA1(ff20bab51ddff2cdce55a104f2ec536e38e42605) )
ROM_REGION( 0x3000, "gfx1", 0 )
ROM_FILL( 0x0000, 0x2000, 0x0000 ) // filling the R-G bitplanes
@@ -12764,14 +12871,22 @@ ROM_START( unkicpf40 )
ROM_LOAD( "137_82s131_bprom.bin", 0x0000, 0x0200, CRC(41ff6a5d) SHA1(a5a69b1ac6022fa2c51480250f875328ae44d7ff) )
ROM_END
-// ICP PCBs with daughterboard F80
+/*
+ ICP PCBs with daughterboard F80
+ (137 fever, 50 bet)
+
+ No lamps support.
+
+ TODO:
+ - 2x DIP switches banks support.
+ - Figure out hyperactivity on the PIA0 line CA2.
+
+*/
ROM_START( unkicpf80 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "7_sub.bin", 0x6000, 0x1000, CRC(1075c73a) SHA1(6949b103e9a72dd688348359ce1b3c9c61911121) )
- ROM_LOAD( "8_sub.bin", 0x7000, 0x0800, CRC(ac08a967) SHA1(1063751f8224ba66c3182d47011b9d779f06349f) )
- ROM_CONTINUE( 0x5800, 0x0800 )
- ROM_LOAD( "9_f80_sub.bin", 0x5000, 0x0800, CRC(98d16359) SHA1(fa6b6da54a1bb819627073d5330c0c3e1f207bb4) )
- ROM_CONTINUE( 0x7800, 0x0800 )
+ ROM_LOAD( "8_sub.bin", 0x7000, 0x1000, CRC(ac08a967) SHA1(1063751f8224ba66c3182d47011b9d779f06349f) )
+ ROM_LOAD( "9_f80_sub.bin", 0xf000, 0x1000, CRC(98d16359) SHA1(fa6b6da54a1bb819627073d5330c0c3e1f207bb4) )
ROM_REGION( 0x1800, "gfx1", 0 )
ROM_FILL( 0x0000, 0x1000, 0x0000 ) // filling the R-G bitplanes
@@ -13503,8 +13618,8 @@ GAME( 199?, kmhpan, 0, kmhpan, kmhpan, goldnpkr_state, empty_init
GAME( 198?, unkwingpkr,goldnpkr, goldnpkr, goldnpkr, goldnpkr_state, empty_init, ROT0, "<unknown>", "Unknown poker (Wing 8510-A / W90-3 PCB)", MACHINE_NOT_WORKING )
-GAMEL( 198?, unkicpf40, 0, goldnpkr, goldnpkr, goldnpkr_state, empty_init, ROT0, "<unknown>", "Unknown ICP F40 (PCB 137)", MACHINE_NOT_WORKING, layout_goldnpkr )
-GAMEL( 198?, unkicpf80, 0, goldnpkr, goldnpkr, goldnpkr_state, empty_init, ROT0, "<unknown>", "Unknown ICP F80", MACHINE_NOT_WORKING, layout_goldnpkr )
+GAME( 198?, unkicpf40, 0, unkicpf40, unkicpf40, goldnpkr_state, empty_init, ROT0, "<unknown>", "ICP F40 poker (137 Fever, 10 bet)", 0 )
+GAME( 198?, unkicpf80, 0, unkicpf40, unkicpf40, goldnpkr_state, empty_init, ROT0, "<unknown>", "ICP F80 poker (137 Fever, 50 bet)", 0 )
/*************************************** SETS W/IRQ0 ***************************************/