summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2020-09-13 12:44:05 +0200
committer couriersud <couriersud@gmx.org>2020-09-13 12:44:05 +0200
commit8fb35bf34f8ffb7cf1931384d3877f071e2a87d1 (patch)
treecd06f31e93478c1ccbd2729f5a113c2306ea0b7b
parente05a9000911481f48922e86a9bb36310dbfdb6fb (diff)
parent06c504f651478074ad87a4b90047f29fb8598420 (diff)
Merge remote-tracking branch 'origin/master' into netlist-generated
-rw-r--r--hash/apple2_flop_clcracked.xml6
-rw-r--r--hash/apple2_flop_orig.xml100
-rw-r--r--scripts/src/machine.lua11
-rw-r--r--scripts/target/mame/arcade.lua1
-rw-r--r--scripts/target/mame/mess.lua2
-rw-r--r--src/devices/bus/neogeo/prot_fatfury2.cpp86
-rw-r--r--src/devices/bus/neogeo/prot_fatfury2.h6
-rw-r--r--src/devices/cpu/h8500/h8534.cpp32
-rw-r--r--src/devices/cpu/h8500/h8534.h24
-rw-r--r--src/devices/machine/alpha_8921.cpp213
-rw-r--r--src/devices/machine/alpha_8921.h67
-rw-r--r--src/devices/machine/intelfsh.cpp11
-rw-r--r--src/devices/machine/intelfsh.h8
-rw-r--r--src/devices/video/pwm.cpp2
-rw-r--r--src/frontend/mame/luaengine.cpp4
-rw-r--r--src/lib/netlist/macro/nlm_base_lib.cpp25
-rw-r--r--src/lib/netlist/macro/nlm_opamp_lib.cpp2
-rw-r--r--src/lib/netlist/nl_parser.cpp4
-rw-r--r--src/lib/netlist/nl_parser.h2
-rw-r--r--src/lib/netlist/nl_setup.cpp5
-rw-r--r--src/lib/netlist/plib/pexception.h4
-rw-r--r--src/mame/audio/nl_astrob.cpp7
-rw-r--r--src/mame/audio/nl_carpolo.cpp3
-rw-r--r--src/mame/audio/nl_cinemat_common.h24
-rw-r--r--src/mame/audio/nl_elim.cpp5
-rw-r--r--src/mame/audio/nl_fireone.cpp2
-rw-r--r--src/mame/audio/nl_spacfury.cpp8
-rw-r--r--src/mame/audio/nl_starfire.cpp1
-rw-r--r--src/mame/drivers/alphatpx.cpp32
-rw-r--r--src/mame/drivers/bingor.cpp4
-rw-r--r--src/mame/drivers/bublbobl.cpp69
-rw-r--r--src/mame/drivers/bvm.cpp88
-rw-r--r--src/mame/drivers/cps3.cpp24
-rw-r--r--src/mame/drivers/dec0.cpp109
-rw-r--r--src/mame/drivers/fitfight.cpp72
-rw-r--r--src/mame/drivers/gaelco3d.cpp183
-rw-r--r--src/mame/drivers/gaelcof3.cpp69
-rw-r--r--src/mame/drivers/hp80.cpp56
-rw-r--r--src/mame/drivers/informer_207_376.cpp48
-rw-r--r--src/mame/drivers/konmedal68k.cpp15
-rw-r--r--src/mame/drivers/lkage.cpp19
-rw-r--r--src/mame/drivers/magicard.cpp16
-rw-r--r--src/mame/drivers/missbamby.cpp11
-rw-r--r--src/mame/drivers/namcos23.cpp57
-rw-r--r--src/mame/drivers/neptunp2.cpp26
-rw-r--r--src/mame/drivers/pencil2.cpp82
-rw-r--r--src/mame/drivers/rx78.cpp14
-rw-r--r--src/mame/drivers/squale.cpp72
-rw-r--r--src/mame/drivers/tutor.cpp2
-rw-r--r--src/mame/drivers/vic20.cpp2
-rw-r--r--src/mame/includes/bublbobl.h17
-rw-r--r--src/mame/layout/microvision.lay10
-rw-r--r--src/mame/machine/kb_poisk1.h16
-rw-r--r--src/mame/machine/octo_kbd.cpp8
-rw-r--r--src/mame/mame.lst22
-rw-r--r--src/mame/mess.flt1
-rw-r--r--src/osd/windows/window.cpp40
57 files changed, 1394 insertions, 455 deletions
diff --git a/hash/apple2_flop_clcracked.xml b/hash/apple2_flop_clcracked.xml
index 462f8c3acf3..46132902d01 100644
--- a/hash/apple2_flop_clcracked.xml
+++ b/hash/apple2_flop_clcracked.xml
@@ -5441,31 +5441,37 @@ license:CC0
<info name="release" value="2017-01-17"/>
<part name="flop1" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 1 Side A - Program"/>
<dataarea name="flop" size="143360">
<rom name="centauri alliance (4am crack) boot.dsk" size="143360" crc="6575734c" sha1="91de6b82846f547963388541a1b9472d81c41219" />
</dataarea>
</part>
<part name="flop2" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 1 Side B - Roster"/>
<dataarea name="flop" size="143360">
<rom name="centauri alliance (4am crack) roster.dsk" size="143360" crc="e258fb1e" sha1="daf12471584e5a6c3fc3e501e9334adb35c38ea7" />
</dataarea>
</part>
<part name="flop3" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 2 Side A - Scenario 1"/>
<dataarea name="flop" size="143360">
<rom name="centauri alliance (4am crack) scenery 1.dsk" size="143360" crc="4d026cd8" sha1="c9f610fd2a6d08a4ee5bf3fa46f260ed56984121" />
</dataarea>
</part>
<part name="flop4" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 2 Side B - Scenario 2"/>
<dataarea name="flop" size="143360">
<rom name="centauri alliance (4am crack) scenery 2.dsk" size="143360" crc="0d976331" sha1="b6830cb95028bce75ca509964eb701ff5b96f7c2" />
</dataarea>
</part>
<part name="flop5" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 3 Side A - Scenario 3"/>
<dataarea name="flop" size="143360">
<rom name="centauri alliance (4am crack) scenery 3.dsk" size="143360" crc="5ed890de" sha1="518301730baaef9fa2cbde4cecf73bd3c35b6353" />
</dataarea>
</part>
<part name="flop6" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 3 Side B - Scenario 4"/>
<dataarea name="flop" size="143360">
<rom name="centauri alliance (4am crack) scenery 4.dsk" size="143360" crc="f0926edf" sha1="8bf06e1dc19fcc9be58e0bf0b5c24819a688b64d" />
</dataarea>
diff --git a/hash/apple2_flop_orig.xml b/hash/apple2_flop_orig.xml
index 4a1700e2a6e..4db5193c683 100644
--- a/hash/apple2_flop_orig.xml
+++ b/hash/apple2_flop_orig.xml
@@ -14593,4 +14593,104 @@ license:CC0
</part>
</software>
+ <software name="lstninja">
+ <description>The Last Ninja</description>
+ <year>1989</year>
+ <publisher>Activision</publisher>
+ <info name="release" value="2020-09-09"/>
+ <sharedfeat name="compatibility" value="A2E,A2EE,A2C,A2GS"/>
+ <!-- It requires a 128K Apple //e or later. -->
+
+ <part name="flop1" interface="floppy_5_25">
+ <feature name="part_id" value="Side A"/>
+ <dataarea name="flop" size="241963">
+ <rom name="the last ninja side a.woz" size="241963" crc="4d69494d" sha1="97257c4b5442ee755af32e63882bd45cb157e320"/>
+ </dataarea>
+ </part>
+ <part name="flop2" interface="floppy_5_25">
+ <feature name="part_id" value="Side B"/>
+ <dataarea name="flop" size="241963">
+ <rom name="the last ninja side b.woz" size="241963" crc="30b9cde9" sha1="4dea3ed244c8ecf2ffc44e796b643d83c5d8b974"/>
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="cntralnc">
+ <description>Centauri Alliance</description>
+ <year>1989</year>
+ <publisher>Broderbund Software</publisher>
+ <info name="release" value="2020-09-10"/>
+ <sharedfeat name="compatibility" value="A2P,A2E,A2EE,A2C,A2GS"/>
+ <!-- It requires a 64K Apple II+ or later. -->
+
+ <part name="flop1" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 1 Side A - Program"/>
+ <dataarea name="flop" size="234852">
+ <rom name="centauri alliance disk 1a - program.woz" size="234852" crc="fa11e457" sha1="45b56d9fc178334c47f0ea2947f8ec184a9d002b"/>
+ </dataarea>
+ </part>
+ <part name="flop2" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 1 Side B - Roster"/>
+ <dataarea name="flop" size="234851">
+ <rom name="centauri alliance disk 1b - roster.woz" size="234851" crc="5ef9c3ea" sha1="3e6b47520a9acd70805a32b8dda47df7f12c9ec6"/>
+ </dataarea>
+ </part>
+ <part name="flop3" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 2 Side A - Scenario 1"/>
+ <dataarea name="flop" size="234855">
+ <rom name="centauri alliance disk 2a - scenario 1.woz" size="234855" crc="c06b5bdb" sha1="9b100db35d8288bc37ffd442b06166f7a460ff14"/>
+ </dataarea>
+ </part>
+ <part name="flop4" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 2 Side B - Scenario 2"/>
+ <dataarea name="flop" size="234855">
+ <rom name="centauri alliance disk 2b - scenario 2.woz" size="234855" crc="e1c88f5b" sha1="a15e0d8f55218b3ccb4419a893f43af11acb8a0a"/>
+ </dataarea>
+ </part>
+ <part name="flop5" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 3 Side A - Scenario 3"/>
+ <dataarea name="flop" size="234855">
+ <rom name="centauri alliance disk 3a - scenario 3.woz" size="234855" crc="7b09e5bc" sha1="ae559226790a2be8368d165dd7940b761c77f35c"/>
+ </dataarea>
+ </part>
+ <part name="flop6" interface="floppy_5_25">
+ <feature name="part_id" value="Disk 3 Side B - Scenario 4"/>
+ <dataarea name="flop" size="234855">
+ <rom name="centauri alliance disk 3b - scenario 4.woz" size="234855" crc="f3d9a9f9" sha1="1f9a1511f334e2a4db6e286e558f328e1e32a196"/>
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="agalxsc">
+ <description>Apple Galaxian (StarCraft)</description>
+ <year>1980</year>
+ <publisher>StarCraft</publisher>
+ <info name="release" value="2020-09-10"/>
+ <sharedfeat name="compatibility" value="A2,A2P,A2E,A2EE,A2C,A2GS"/>
+ <!-- It runs on any Apple II with 48K. -->
+ <!-- The game was later re-released by Broderbund Software. -->
+
+ <part name="flop1" interface="floppy_5_25">
+ <dataarea name="flop" size="95008">
+ <rom name="apple galaxian (starcraft).woz" size="95008" crc="146cab96" sha1="895197a33636e2a9f38a35bddc9ebc9b43963f08"/>
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="applwrld">
+ <description>Apple World</description>
+ <year>1980</year>
+ <publisher>United Software of America</publisher>
+ <info name="release" value="2020-09-10"/>
+ <sharedfeat name="compatibility" value="A2,A2P,A2E,A2EE,A2C,A2GS"/>
+ <!-- It runs on any Apple II with 48K. -->
+ <!-- It requires a 13-sector drive. -->
+
+ <part name="flop1" interface="floppy_5_25">
+ <dataarea name="flop" size="241458">
+ <rom name="apple world.woz" size="241458" crc="46bbd2e3" sha1="83fdc389c10a68a8d27a0719bbd4a54c2c678e81"/>
+ </dataarea>
+ </part>
+ </software>
+
</softwarelist>
diff --git a/scripts/src/machine.lua b/scripts/src/machine.lua
index a4751370c7d..600c22f2746 100644
--- a/scripts/src/machine.lua
+++ b/scripts/src/machine.lua
@@ -4535,3 +4535,14 @@ if (MACHINES["SWIM3"]~=null) then
MAME_DIR .. "src/devices/machine/swim3.h",
}
end
+
+---------------------------------------------------
+--
+--@src/devices/machine/alpha_8921.h,MACHINES["ALPHA_8921"] = true
+---------------------------------------------------
+if (MACHINES["ALPHA_8921"]~=null) then
+ files {
+ MAME_DIR .. "src/devices/machine/alpha_8921.cpp",
+ MAME_DIR .. "src/devices/machine/alpha_8921.h",
+ }
+end
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index 1a295e77378..3ecc8b0f72f 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -388,6 +388,7 @@ VIDEOS["VRENDER0"] = true
MACHINES["ACORN_VIDC"] = true
MACHINES["AKIKO"] = true
+MACHINES["ALPHA_8921"] = true
--MACHINES["AM2901B"] = true
MACHINES["ARM_IOMD"] = true
MACHINES["AUTOCONFIG"] = true
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index cd6242983a0..e01532fb463 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -426,6 +426,7 @@ VIDEOS["BT431"] = true
--------------------------------------------------
MACHINES["AKIKO"] = true
+MACHINES["ALPHA_8921"] = true
MACHINES["AM2901B"] = true
MACHINES["AUTOCONFIG"] = true
MACHINES["BUSMOUSE"] = true
@@ -3631,6 +3632,7 @@ files {
createMESSProjects(_target, _subtarget, "sony")
files {
+ MAME_DIR .. "src/mame/drivers/bvm.cpp",
MAME_DIR .. "src/mame/drivers/pockstat.cpp",
MAME_DIR .. "src/mame/drivers/psx.cpp",
MAME_DIR .. "src/mame/machine/psxcd.cpp",
diff --git a/src/devices/bus/neogeo/prot_fatfury2.cpp b/src/devices/bus/neogeo/prot_fatfury2.cpp
index bd7af9247db..c8e7151e6e8 100644
--- a/src/devices/bus/neogeo/prot_fatfury2.cpp
+++ b/src/devices/bus/neogeo/prot_fatfury2.cpp
@@ -11,14 +11,18 @@ DEFINE_DEVICE_TYPE(NG_FATFURY2_PROT, fatfury2_prot_device, "ng_fatfury_prot", "N
fatfury2_prot_device::fatfury2_prot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, NG_FATFURY2_PROT, tag, owner, clock),
- m_prot_data(0)
+ m_pro_ct0(*this, "pro_ct0")
{
}
+void fatfury2_prot_device::device_add_mconfig(machine_config &config)
+{
+ ALPHA_8921(config, m_pro_ct0, 0); // PRO-CT0 or SNK-9201
+}
+
void fatfury2_prot_device::device_start()
{
- save_item(NAME(m_prot_data));
}
void fatfury2_prot_device::device_reset()
@@ -33,69 +37,27 @@ void fatfury2_prot_device::device_reset()
/* 0x2xxxxx range. There are several checks all around the code. */
uint16_t fatfury2_prot_device::protection_r(offs_t offset)
{
- uint16_t res = m_prot_data >> 24;
-
- switch (offset)
- {
- case 0x55550/2:
- case 0xffff0/2:
- case 0x00000/2:
- case 0xff000/2:
- case 0x36000/2:
- case 0x36008/2:
- return res;
-
- case 0x36004/2:
- case 0x3600c/2:
- return ((res & 0xf0) >> 4) | ((res & 0x0f) << 4);
-
- default:
- logerror("unknown protection read at %s, offset %08x\n", machine().describe_context(), offset << 1);
- return 0;
- }
+ m_pro_ct0->even_w(BIT(offset, 1));
+ m_pro_ct0->h_w(BIT(offset, 2));
+ u8 gad = m_pro_ct0->gad_r();
+ u8 gbd = m_pro_ct0->gbd_r();
+ return (BIT(gbd, 0, 2) << 6) | (BIT(gbd, 2, 2) << 4) | (BIT(gad, 0, 2) << 6) | (BIT(gad, 2, 2) << 4);
}
void fatfury2_prot_device::protection_w(offs_t offset, uint16_t data)
{
- switch (offset)
- {
- case 0x11112/2: /* data == 0x1111; expects 0xff000000 back */
- m_prot_data = 0xff000000;
- break;
-
- case 0x33332/2: /* data == 0x3333; expects 0x0000ffff back */
- m_prot_data = 0x0000ffff;
- break;
-
- case 0x44442/2: /* data == 0x4444; expects 0x00ff0000 back */
- m_prot_data = 0x00ff0000;
- break;
-
- case 0x55552/2: /* data == 0x5555; read back from 55550, ffff0, 00000, ff000 */
- m_prot_data = 0xff00ff00;
- break;
-
- case 0x56782/2: /* data == 0x1234; read back from 36000 *or* 36004 */
- m_prot_data = 0xf05a3601;
- break;
-
- case 0x42812/2: /* data == 0x1824; read back from 36008 *or* 3600c */
- m_prot_data = 0x81422418;
- break;
-
- case 0x55550/2:
- case 0xffff0/2:
- case 0xff000/2:
- case 0x36000/2:
- case 0x36004/2:
- case 0x36008/2:
- case 0x3600c/2:
- m_prot_data <<= 8;
- break;
-
- default:
- logerror("unknown protection write at %s, offset %08x, data %02x\n", machine().describe_context(), offset, data);
- break;
- }
+ // /PORTOEL connected into PRO-CT0 CLK pin
+ m_pro_ct0->clk_w(true);
+
+ m_pro_ct0->load_w(BIT(offset, 0)); // A1
+ m_pro_ct0->even_w(BIT(offset, 1)); // A2
+ m_pro_ct0->h_w(BIT(offset, 2)); // A3
+
+ // C16-31 = A4-A19, C0-C15 = D0-D15
+ m_pro_ct0->c_w((u32(bitswap<16>(BIT(offset, 3, 16), 15, 13, 11, 9, 14, 12, 10, 8, 7, 5, 3, 1, 6, 4, 2, 0)) << 16) |
+ bitswap<16>(data, 15, 13, 11, 9, 14, 12, 10, 8, 7, 5, 3, 1, 6, 4, 2, 0));
+
+ // release /PORTOEL
+ m_pro_ct0->clk_w(false);
}
diff --git a/src/devices/bus/neogeo/prot_fatfury2.h b/src/devices/bus/neogeo/prot_fatfury2.h
index 111b9f7388b..1cab87cb26a 100644
--- a/src/devices/bus/neogeo/prot_fatfury2.h
+++ b/src/devices/bus/neogeo/prot_fatfury2.h
@@ -6,6 +6,8 @@
#pragma once
+#include "machine/alpha_8921.h"
+
DECLARE_DEVICE_TYPE(NG_FATFURY2_PROT, fatfury2_prot_device)
@@ -19,10 +21,12 @@ public:
void protection_w(offs_t offset, uint16_t data);
protected:
+ virtual void device_add_mconfig(machine_config &config) override;
virtual void device_start() override;
virtual void device_reset() override;
- uint32_t m_prot_data;
+private:
+ required_device<alpha_8921_device> m_pro_ct0; // PRO-CT0 or SNK-9201
};
#endif // MAME_BUS_NEOGEO_PROT_FATFURY2_H
diff --git a/src/devices/cpu/h8500/h8534.cpp b/src/devices/cpu/h8500/h8534.cpp
index 065d83adc5e..dd33af71128 100644
--- a/src/devices/cpu/h8500/h8534.cpp
+++ b/src/devices/cpu/h8500/h8534.cpp
@@ -2,7 +2,7 @@
// copyright-holders:AJR
/***************************************************************************
- Hitachi H8/534
+ Hitachi H8/534 & H8/536
***************************************************************************/
@@ -10,9 +10,15 @@
#include "h8534.h"
DEFINE_DEVICE_TYPE(HD6475348, hd6475348_device, "hd6475348", "Hitachi HD6475348 (H8/534)")
+DEFINE_DEVICE_TYPE(HD6435368, hd6435368_device, "hd6435368", "Hitachi HD6435368 (H8/536)")
+
+h8534_device::h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map)
+ : h8500_device(mconfig, type, tag, owner, clock, 20, 8, 11, map)
+{
+}
h8534_device::h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
- : h8500_device(mconfig, type, tag, owner, clock, 20, 8, 11, address_map_constructor(FUNC(h8534_device::internal_map), this))
+ : h8534_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(h8534_device::internal_map), this))
{
}
@@ -21,9 +27,31 @@ hd6475348_device::hd6475348_device(const machine_config &mconfig, const char *ta
{
}
+h8536_device::h8536_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
+ : h8534_device(mconfig, type, tag, owner, clock, address_map_constructor(FUNC(h8536_device::internal_map), this))
+{
+}
+
+hd6435368_device::hd6435368_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : h8536_device(mconfig, HD6435368, tag, owner, clock)
+{
+}
+
void h8534_device::internal_map(address_map &map)
{
map(0x0000, 0x7fff).rom().region(DEVICE_SELF, 0); // modes 2, 4, 7
+ register_field_map(map);
+}
+
+void h8536_device::internal_map(address_map &map)
+{
+ //map(0x0000, 0xee7f).rom().region(DEVICE_SELF, 0); // mode 2?
+ //map(0x0000, 0xf67f).rom().region(DEVICE_SELF, 0); // modes 4, 7
+ register_field_map(map);
+}
+
+void h8534_device::register_field_map(address_map &map)
+{
#if 0
map(0xfe80, 0xfe80).w(FUNC(h8534_device::p1ddr_w));
map(0xfe81, 0xfe81).w(FUNC(h8534_device::p2ddr_w));
diff --git a/src/devices/cpu/h8500/h8534.h b/src/devices/cpu/h8500/h8534.h
index 7b375ba8351..8e5c357ff1b 100644
--- a/src/devices/cpu/h8500/h8534.h
+++ b/src/devices/cpu/h8500/h8534.h
@@ -11,8 +11,13 @@
class h8534_device : public h8500_device
{
protected:
+ // delegating constructor
h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+ h8534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, address_map_constructor map);
+
+ void register_field_map(address_map &map);
+
private:
void internal_map(address_map &map);
};
@@ -24,6 +29,23 @@ public:
hd6475348_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
};
+class h8536_device : public h8534_device
+{
+protected:
+ h8536_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
+
+private:
+ void internal_map(address_map &map);
+};
+
+class hd6435368_device : public h8536_device
+{
+public:
+ // device type constructor
+ hd6435368_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
DECLARE_DEVICE_TYPE(HD6475348, hd6475348_device)
+DECLARE_DEVICE_TYPE(HD6435368, hd6435368_device)
-#endif // MAME_CPU_H8500_H8532_H
+#endif // MAME_CPU_H8500_H8534_H
diff --git a/src/devices/machine/alpha_8921.cpp b/src/devices/machine/alpha_8921.cpp
new file mode 100644
index 00000000000..1157b061f28
--- /dev/null
+++ b/src/devices/machine/alpha_8921.cpp
@@ -0,0 +1,213 @@
+// license:BSD-3-Clause
+// copyright-holders:cam900
+/***************************************************************************
+
+ Alpha denshi ALPHA-8921 emulation
+
+ Also known as
+ SNK PRO-CT0
+ SNK-9201
+
+ This chip is sprite ROM data serializer, or optional security device.
+ used in some later 80s Alpha Denshi hardware(ex: Gang Wars),
+ Some early Neogeo MVS motherboards, AES cartridges.
+ also integrated in NEO-ZMC2, NEO-CMC.
+
+ reference: https://wiki.neogeodev.org/index.php?title=PRO-CT0
+
+***************************************************************************/
+
+#include "emu.h"
+#include "alpha_8921.h"
+#include <algorithm>
+
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+// device type definition
+DEFINE_DEVICE_TYPE(ALPHA_8921, alpha_8921_device, "alpha_8921", "Alpha denshi ALPHA-8921")
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// alpha_8921_device - constructor
+//-------------------------------------------------
+
+alpha_8921_device::alpha_8921_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : device_t(mconfig, ALPHA_8921, tag, owner, clock)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void alpha_8921_device::device_start()
+{
+ // save states
+ save_item(NAME(m_clk));
+ save_item(NAME(m_load));
+ save_item(NAME(m_even));
+ save_item(NAME(m_h));
+ save_item(NAME(m_c));
+ save_item(NAME(m_gad));
+ save_item(NAME(m_gbd));
+ save_item(NAME(m_dota));
+ save_item(NAME(m_dotb));
+ save_item(NAME(m_sr));
+ save_item(NAME(m_old_sr));
+ save_item(NAME(m_old_even));
+ save_item(NAME(m_old_h));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void alpha_8921_device::device_reset()
+{
+ // force update outputs
+ m_old_sr = ~m_sr;
+ m_old_even = !m_even;
+ m_old_h = !m_h;
+ update_output();
+}
+
+
+//**************************************************************************
+// READ/WRITE HANDLERS
+//**************************************************************************
+
+//-------------------------------------------------
+// clk_w - Change clock pin status
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER(alpha_8921_device::clk_w)
+{
+ if (m_clk != state)
+ {
+ m_clk = state;
+ if (!m_clk) // falling edge
+ {
+ if (m_load)
+ m_sr = m_c;
+ else if (m_h)
+ m_sr = (BIT(m_sr, 24, 6) << 26) | (BIT(m_sr, 16, 6) << 18) | (BIT(m_sr, 8, 6) << 10) | (BIT(m_sr, 0, 6) << 2);
+ else
+ m_sr = ((BIT(m_sr, 26, 6)) << 24) | ((BIT(m_sr, 18, 6)) << 16) | ((BIT(m_sr, 10, 6)) << 8) | (BIT(m_sr, 2, 6));
+ }
+ }
+}
+
+//-------------------------------------------------
+// load_w - Change LOAD pin status
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER(alpha_8921_device::load_w)
+{
+ m_load = state;
+}
+
+//-------------------------------------------------
+// even_w - Change EVEN pin status
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER(alpha_8921_device::even_w)
+{
+ m_even = state;
+}
+
+//-------------------------------------------------
+// h_w - Change H pin status
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER(alpha_8921_device::h_w)
+{
+ m_h = state;
+}
+
+//-------------------------------------------------
+// c_w - Change C data
+//-------------------------------------------------
+
+void alpha_8921_device::c_w(u32 data)
+{
+ m_c = data;
+}
+
+//-------------------------------------------------
+// update_output - Update output results
+//-------------------------------------------------
+
+void alpha_8921_device::update_output()
+{
+ if ((m_old_sr != m_sr) || (m_old_even != m_even) || (m_old_h != m_h))
+ {
+ switch (m_h)
+ {
+ case 1:
+ m_gbd = bitswap<4>(m_sr, 30, 22, 14, 6);
+ m_gad = bitswap<4>(m_sr, 31, 23, 15, 7);
+ break;
+ case 0:
+ m_gbd = bitswap<4>(m_sr, 25, 17, 9, 1);
+ m_gad = bitswap<4>(m_sr, 24, 16, 8, 0);
+ break;
+ }
+ if (m_even)
+ std::swap<u8>(m_gad, m_gbd);
+
+ m_dota = m_gad ? true : false;
+ m_dotb = m_gbd ? true : false;
+ m_old_sr = m_sr;
+ m_old_even = m_even;
+ m_old_h = m_h;
+ }
+}
+
+//-------------------------------------------------
+// gad_r - Read GAD data
+//-------------------------------------------------
+
+u8 alpha_8921_device::gad_r()
+{
+ update_output();
+ return m_gad & 0xf;
+}
+
+//-------------------------------------------------
+// gbd_r - Read GBD data
+//-------------------------------------------------
+
+u8 alpha_8921_device::gbd_r()
+{
+ update_output();
+ return m_gbd & 0xf;
+}
+
+//-------------------------------------------------
+// dota_r - Read DOTA pin data (GAD isn't 0)
+//-------------------------------------------------
+
+READ_LINE_MEMBER(alpha_8921_device::dota_r)
+{
+ update_output();
+ return m_dota;
+}
+
+//-------------------------------------------------
+// dotb_r - Read DOTB pin data (GBD isn't 0)
+//-------------------------------------------------
+
+READ_LINE_MEMBER(alpha_8921_device::dotb_r)
+{
+ update_output();
+ return m_dotb;
+}
diff --git a/src/devices/machine/alpha_8921.h b/src/devices/machine/alpha_8921.h
new file mode 100644
index 00000000000..88ecd850eb9
--- /dev/null
+++ b/src/devices/machine/alpha_8921.h
@@ -0,0 +1,67 @@
+// license:BSD-3-Clause
+// copyright-holders:cam900
+/***************************************************************************
+
+ Alpha denshi ALPHA-8921 emulation
+
+***************************************************************************/
+
+#ifndef MAME_MACHINE_ALPHA_8921_H
+#define MAME_MACHINE_ALPHA_8921_H
+
+#pragma once
+
+
+// ======================> alpha_8921_device
+
+class alpha_8921_device : public device_t
+{
+public:
+ // construction/destruction
+ alpha_8921_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ // inputs
+ DECLARE_WRITE_LINE_MEMBER(clk_w);
+ DECLARE_WRITE_LINE_MEMBER(load_w);
+ DECLARE_WRITE_LINE_MEMBER(even_w);
+ DECLARE_WRITE_LINE_MEMBER(h_w);
+ void c_w(u32 data);
+
+ // outputs
+ u8 gad_r();
+ u8 gbd_r();
+ DECLARE_READ_LINE_MEMBER(dota_r);
+ DECLARE_READ_LINE_MEMBER(dotb_r);
+
+protected:
+ // device-level overrides
+ virtual void device_start() override;
+ virtual void device_reset() override;
+
+private:
+ // inputs
+ bool m_clk = false; // CLK pin
+ bool m_load = false; // LOAD pin
+ bool m_even = false; // EVEN pin
+ bool m_h = false; // H pin
+ u32 m_c = 0; // C data (32 bit)
+
+ // outputs
+ u8 m_gad = 0; // GAD data (4 bit)
+ u8 m_gbd = 0; // GBD data (4 bit)
+ bool m_dota = false; // DOTA pin
+ bool m_dotb = false; // DOTB pin
+
+ // internal status
+ u32 m_sr = 0;
+ u32 m_old_sr = ~0;
+ bool m_old_even = true;
+ bool m_old_h = true;
+ void update_output();
+};
+
+
+// device type definition
+DECLARE_DEVICE_TYPE(ALPHA_8921, alpha_8921_device)
+
+#endif // MAME_MACHINE_ALPHA_8921_H
diff --git a/src/devices/machine/intelfsh.cpp b/src/devices/machine/intelfsh.cpp
index 77281819bdf..af8e50dc2d0 100644
--- a/src/devices/machine/intelfsh.cpp
+++ b/src/devices/machine/intelfsh.cpp
@@ -120,6 +120,8 @@ DEFINE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device, "sst_39v
DEFINE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device, "atmel_49f4096", "Atmel AT49F4096 Flash")
+DEFINE_DEVICE_TYPE(CAT28F020, cat28f020_device, "cat28f020", "CSI CAT28F020 Flash")
+
//**************************************************************************
@@ -226,6 +228,12 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
m_maker_id = MFG_AMD;
m_device_id = 0x3b;
break;
+ case FLASH_CAT28F020:
+ m_bits = 8;
+ m_size = 0x40000;
+ m_maker_id = MFG_CATALYST;
+ m_device_id = 0xbd;
+ break;
case FLASH_INTEL_28F320J3D:
m_bits = 16;
m_size = 0x400000;
@@ -450,6 +458,9 @@ amd_29f800b_16bit_device::amd_29f800b_16bit_device(const machine_config &mconfig
amd_29lv200t_device::amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: intelfsh8_device(mconfig, AMD_29LV200T, tag, owner, clock, FLASH_AMD_29LV200T) { }
+cat28f020_device::cat28f020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : intelfsh8_device(mconfig, CAT28F020, tag, owner, clock, FLASH_CAT28F020) { }
+
intel_e28f008sa_device::intel_e28f008sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: intelfsh8_device(mconfig, INTEL_E28F008SA, tag, owner, clock, FLASH_INTEL_E28F008SA) { }
diff --git a/src/devices/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index bde0b0d4c61..8001b2fc5ce 100644
--- a/src/devices/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -30,6 +30,7 @@ public:
FLASH_AMD_29F800T,
FLASH_AMD_29F800B_16BIT,
FLASH_AMD_29LV200T,
+ FLASH_CAT28F020,
FLASH_SHARP_LH28F016S,
FLASH_SHARP_LH28F016S_16BIT,
FLASH_INTEL_E28F008SA,
@@ -365,6 +366,12 @@ public:
atmel_49f4096_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
};
+class cat28f020_device : public intelfsh8_device
+{
+public:
+ cat28f020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
+};
+
// device type definition
DECLARE_DEVICE_TYPE(INTEL_28F016S5, intel_28f016s5_device)
@@ -406,5 +413,6 @@ DECLARE_DEVICE_TYPE(INTEL_28F320J3D, intel_28f320j3d_device)
DECLARE_DEVICE_TYPE(INTEL_28F320J5, intel_28f320j5_device)
DECLARE_DEVICE_TYPE(SST_39VF400A, sst_39vf400a_device)
DECLARE_DEVICE_TYPE(ATMEL_49F4096, atmel_49f4096_device)
+DECLARE_DEVICE_TYPE(CAT28F020, cat28f020_device)
#endif // MAME_MACHINE_INTELFSH_H
diff --git a/src/devices/video/pwm.cpp b/src/devices/video/pwm.cpp
index 50b608759ef..d192c93a633 100644
--- a/src/devices/video/pwm.cpp
+++ b/src/devices/video/pwm.cpp
@@ -6,7 +6,7 @@ This thing is a generic helper for PWM(strobed) display elements, to prevent fli
and optionally handle perceived brightness levels.
Common usecase is to call matrix(selmask, datamask), a collision between the 2 masks
-implies a powered-on display element (eg, a LED, or VFD sprite). The maximum matrix
+implies a powered-on display element (eg. a LED, or VFD sprite). The maximum matrix
size is 64 by 64, simply due to uint64_t constraints. If a larger size is needed,
create an array of pwm_display_device.
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 022d88f6515..8e7ad2665be 100644
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -1949,6 +1949,7 @@ void lua_engine::initialize()
*
* ioport:count_players() - get count of player controllers
* ioport:type_group(type, player)
+ * ioport:type_seq(type, player, seqtype) - get input sequence for ioport type/player
*
* ioport.ports[] - ioports table (k=tag, v=ioport_port)
*/
@@ -1965,6 +1966,9 @@ void lua_engine::initialize()
port_table[port.second->tag()] = port.second.get();
return port_table;
}));
+ ioport_manager_type.set("type_seq", [](ioport_manager &m, ioport_type type, int player, input_seq_type seqtype) {
+ return sol::make_user(m.type_seq(type, player, seqtype));
+ });
sol().registry().set_usertype("ioport", ioport_manager_type);
diff --git a/src/lib/netlist/macro/nlm_base_lib.cpp b/src/lib/netlist/macro/nlm_base_lib.cpp
index 2e634b29e2c..b9c4165a46b 100644
--- a/src/lib/netlist/macro/nlm_base_lib.cpp
+++ b/src/lib/netlist/macro/nlm_base_lib.cpp
@@ -13,8 +13,10 @@ static NETLIST_START(diode_models)
// FIXME: 1N916 currently only a copy of 1N914!
NET_MODEL("1N916 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
NET_MODEL("1N4001 D(Is=14.11n N=1.984 Rs=33.89m Ikf=94.81 Xti=3 Eg=1.11 Cjo=25.89p M=.44 Vj=.3245 Fc=.5 Bv=75 Ibv=10u Tt=5.7u Iave=1 Vpk=50 mfg=GI type=silicon)")
+ NET_MODEL("1N4002 D(IS=65.4p RS=42.2m BV=100 IBV=5.00u CJO=14.8p M=0.333 N=1.36 TT=2.88u)")
NET_MODEL("1N4148 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
NET_MODEL("1N4154 D(Is=0.1n Rs=4 N=1.67 Cjo=2p M=.333 tt=3n Iave=150m Vpk=35 Bv=60 Ibv=0.1p mfg=Vishay type=silicon)")
+ NET_MODEL("1N4454 D(Is=168.1e-21 Rs=.1 N=1 Cjo=2p M=.333 tt=5.771n Iave=400m Vpk=35 Bv=75 Ibv=100u mfg=OnSemi type=silicon)")
NET_MODEL("1S1588 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75)")
NET_MODEL("1N34A D( Bv=75 Cjo=0.5e-12 Eg=0.67 Ibv=18e-3 Is=2e-7 Rs=7 N=1.3 Vj=0.1 M=0.27 type=germanium)")
@@ -24,6 +26,15 @@ static NETLIST_START(diode_models)
NET_MODEL("LedBlue D(IS=93.2p RS=42M N=7.47 BV=5 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=5 type=LED)")
NET_MODEL("LedWhite D(Is=0.27n Rs=5.65 N=6.79 Cjo=42p Iave=30m Vpk=5 type=LED)")
+ // Zdiodes ...
+
+ // not really found anywhere, just took the 5239 and changed the
+ // breakdown voltage to 5.1 according to the datasheet
+ NET_MODEL("1N5231 D(BV=5.1 IBV=0.020 NBV=1)")
+ NET_MODEL("1N5236B D(BV=7.5 IS=27.5p RS=33.8 N=1.10 CJO=58.2p VJ=0.750 M=0.330 TT=50.1n)")
+ NET_MODEL("1N5240 D(BV=10 IS=14.4p RS=32.0 N=1.10 CJO=24.1p VJ=0.750 M=0.330 TT=50.1n)")
+ NET_MODEL("1N5240B D(BV=10 IS=14.4p RS=32.0 N=1.10 CJO=24.1p VJ=0.750 M=0.330 TT=50.1n)")
+
NETLIST_END()
/* ----------------------------------------------------------------------------
@@ -55,12 +66,26 @@ static NETLIST_START(bjt_models)
NET_MODEL("2N3645 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)")
// 3644 = 3645 Difference between 3644 and 3645 is voltage rating. 3644: VCBO=45, 3645: VCBO=60
NET_MODEL("2N3644 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)")
+ NET_MODEL("2N3702 PNP(Is=650.6E-18 Xti=3 Eg=1.11 Vaf=115.7 Bf=133.8 Ne=1.832 Ise=97.16f Ikf=1.081 Xtb=1.5 Br=3.73 Nc=2 Isc=0 Ikr=0 Rc=.715 Cjc=14.76p Mjc=.5383 Vjc=.75 Fc=.5 Cje=19.82p Mje=.3357 Vje=.75 Tr=114.1n Tf=761.3p Itf=.65 Vtf=5 Xtf=1.7 Rb=10 mfg=National)")
+ NET_MODEL("2N3704 NPN(IS=26.03f VAF=90.7 Bf=736.1K IKF=.1983 XTB=1.5 BR=1.024 CJC=11.01p CJE=24.07p RB=10 RC=.5 RE=.5 TR=233.8n TF=1.03n ITF=0 VTF=0 XTF=0 mfg=Motorola)")
+ // SPICE model parameters taken from Fairchild Semiconductor datasheet
+ NET_MODEL("2N3904 NPN(IS=1E-14 VAF=100 Bf=300 IKF=0.4 XTB=1.5 BR=4 CJC=4E-12 CJE=8E-12 RB=20 RC=0.1 RE=0.1 TR=250E-9 TF=350E-12 ITF=1 VTF=2 XTF=3 Vceo=40 Icrating=200m mfg=Philips)")
+ // SPICE model parameters taken from Fairchild Semiconductor datasheet
+ NET_MODEL("2N3906 PNP(Is=1.41f Xti=3 Eg=1.11 Vaf=18.7 Bf=180.7 Ne=1.5 Ise=0 Ikf=80m Xtb=1.5 Br=4.977 Nc=2 Isc=0 Ikr=0 Rc=2.5 Cjc=9.728p Mjc=.5776 Vjc=.75 Fc=.5 Cje=8.063p Mje=.3677 Vje=.75 Tr=33.42n Tf=179.3p Itf=.4 Vtf=4 Xtf=6 Rb=10)")
// 2N5190 = BC817-25
NET_MODEL("2N5190 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)")
NET_MODEL("2N4401 NPN(IS=26.03f XTI=3 EG=1.11 VAF=90.7 BF=4.292K NE=1.244 ISE=26.03f IKF=0.2061 XTB=1.5 BR=1.01 NC=2 ISC=0 IKR=0 RC=0.5 CJC=11.01p MJC=0.3763 VJC=0.75 FC=0.5 CJE=24.07p MJE=0.3641 VJE=0.75 TR=233.7n TF=466.5p ITF=0 VTF=0 XTF=0 RB=10 VCEO=40)")
+ NET_MODEL("2N4403 PNP(Is=650.6E-18 Xti=3 Eg=1.11 Vaf=115.7 Bf=216.2 Ne=1.829 Ise=58.72f Ikf=1.079 Xtb=1.5 Br=3.578 Nc=2 Isc=0 Ikr=0 Rc=.715 Cjc=14.76p Mjc=.5383 Vjc=.75 Fc=.5 Cje=19.82p Mje=.3357 Vje=.75 Tr=111.6n Tf=603.7p Itf=.65 Vtf=5 Xtf=1.7 Rb=10)")
NET_MODEL("2N4124 NPN(IS=6.734f XTI=3 EG=1.11 VAF=74.03 BF=495 NE=1.28 ISE=6.734f IKF=69.35m XTB=1.5 BR=0.7214 NC=2 ISC=0 IKR=0 RC=1 CJC=3.638p MJC=0.3085 VJC=0.75 FC=0.5 CJE=4.493p MJE=0.2593 VJE=0.75 TR=238.3n TF=301.3p ITF=.4 VTF=4 XTF=2 RB=10 VCEO=25)")
NET_MODEL("2N4126 PNP(IS=1.41f XTI=3 EG=1.11 VAF=18.7 BF=203.7 NE=1.5 ISE=0 IKF=80m XTB=1.5 BR=4.924 NC=2 ISC=0 IKR=0 RC=2.5 CJC=9.728p MJC=0.5776 VJC=0.75 FC=0.5 CJE=8.063p MJE=0.3677 VJE=0.75 TR=33.23n TF=179.3p ITF=.4 VTF=4 XTF=6 RB=10 VCEO=25)")
+ // SPICE model parameters taken from http://ltwiki.org/files/LTspiceIV/Vendor%20List/Fairchild/2N/index.html
+ NET_MODEL("2N5210 NPN(Is=5.911f Xti=3 Eg=1.11 Vaf=62.37 Bf=809.9 Ne=1.358 Ise=5.911f Ikf=14.26m Xtb=1.5 Br=1.287 Nc=2 Isc=0 Ikr=0 Rc=1.61 Cjc=4.017p Mjc=.3174 Vjc=.75 Fc=.5 Cje=4.973p Mje=.4146 Vje=.75 Tr=4.68n Tf=820.9p Itf=.35 Vtf=4 Xtf=7 Rb=10)")
+ // SPICE model parameters taken from https://www.onsemi.com/support/design-resources/models?rpn=2N6107
+ NET_MODEL("2N6107 PNP(IS=7.62308e-14 BF=6692.56 NF=0.85 VAF=10 IKF=0.032192 ISE=2.07832e-13 NE=2.41828 BR=15.6629 NR=1.5 VAR=1.44572 IKR=0.32192 ISC=4.75e-16 NC=3.9375 RB=7.19824 IRB=0.1 RBM=0.1 RE=0.0001 RC=0.355458 XTB=0.1 XTI=2.97595 EG=1.206 CJE=1.84157e-10 VJE=0.99 MJE=0.347177 TF=6.63757e-09 XTF=1.50003 VTF=1.0001 ITF=1 CJC=1.06717e-10 VJC=0.942679 MJC=0.245405 XCJC=0.8 FC=0.533334 CJS=0 VJS=0.75 MJS=0.5 TR=1.32755e-07 PTF=0 KF=0 AF=1)")
+ // SPICE model parameters taken from https://www.onsemi.com/support/design-resources/models?rpn=2N6292
+ NET_MODEL("2N6292 NPN(IS=9.3092e-13 BF=2021.8 NF=0.85 VAF=63.2399 IKF=1 ISE=1.92869e-13 NE=1.97024 BR=40.0703 NR=1.5 VAR=0.89955 IKR=10 ISC=4.92338e-16 NC=3.9992 RB=6.98677 IRB=0.1 RBM=0.1 RE=0.0001 RC=0.326141 XTB=0.1 XTI=2.86739 EG=1.206 CJE=1.84157e-10 VJE=0.99 MJE=0.347174 TF=6.73756e-09 XTF=1.49917 VTF=0.997395 ITF=0.998426 CJC=1.06717e-10 VJC=0.942694 MJC=0.245406 XCJC=0.8 FC=0.533405 CJS=0 VJS=0.75 MJS=0.5 TR=6.0671e-08 PTF=0 KF=0 AF=1)")
+
NET_MODEL("2SC945 NPN(IS=3.577E-14 BF=2.382E+02 NF=1.01 VAF=1.206E+02 IKF=3.332E-01 ISE=3.038E-16 NE=1.205 BR=1.289E+01 NR=1.015 VAR=1.533E+01 IKR=2.037E-01 ISC=3.972E-14 NC=1.115 RB=3.680E+01 IRB=1.004E-04 RBM=1 RE=8.338E-01 RC=1.557E+00 CJE=1.877E-11 VJE=7.211E-01 MJE=3.486E-01 TF=4.149E-10 XTF=1.000E+02 VTF=9.956 ITF=5.118E-01 PTF=0 CJC=6.876p VJC=3.645E-01 MJC=3.074E-01 TR=5.145E-08 XTB=1.5 EG=1.11 XTI=3 FC=0.5 Vceo=50 Icrating=100m MFG=NEC)")
NET_MODEL("BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 RE=0.6 RC=0.25 RB=0.56 CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 TF=0.64E-9 TR=50.72E-9 EG=1.11 KF=0 AF=1 VCEO=45 ICRATING=100M MFG=ZETEX)")
diff --git a/src/lib/netlist/macro/nlm_opamp_lib.cpp b/src/lib/netlist/macro/nlm_opamp_lib.cpp
index 40f2abd176b..0d1a77a87b8 100644
--- a/src/lib/netlist/macro/nlm_opamp_lib.cpp
+++ b/src/lib/netlist/macro/nlm_opamp_lib.cpp
@@ -616,7 +616,7 @@ NETLIST_START(opamp_lib)
NET_MODEL("UA741 OPAMP(TYPE=3 VLH=1.0 VLL=1.0 FPF=5 UGF=1000k SLEW=0.5M RI=2000k RO=75 DAB=0.0017)")
NET_MODEL("LM747 OPAMP(TYPE=3 VLH=1.0 VLL=1.0 FPF=5 UGF=1000k SLEW=0.5M RI=2000k RO=50 DAB=0.0017)")
NET_MODEL("LM747A OPAMP(TYPE=3 VLH=2.0 VLL=2.0 FPF=5 UGF=1000k SLEW=0.7M RI=6000k RO=50 DAB=0.0015)")
- // FIXME: LM748 values are calculated based on a documented schematic of the part and may be wrong.
+ NET_MODEL("LM748 OPAMP(TYPE=3 VLH=2.0 VLL=2.0 FPF=5 UGF=800k SLEW=0.7M RI=800k RO=60 DAB=0.001)")
// TI and Motorola Datasheets differ - below are Motorola values, SLEW is average of LH and HL
NET_MODEL("LM3900 OPAMP(TYPE=3 VLH=1.0 VLL=0.03 FPF=2k UGF=4M SLEW=10M RI=10M RO=2k DAB=0.0015)")
diff --git a/src/lib/netlist/nl_parser.cpp b/src/lib/netlist/nl_parser.cpp
index d5823d2e930..32a5c542a16 100644
--- a/src/lib/netlist/nl_parser.cpp
+++ b/src/lib/netlist/nl_parser.cpp
@@ -120,7 +120,7 @@ bool parser_t::parse(const token_store &tokstor, const pstring &nlname)
if (token.is(m_tok_NETLIST_START) && (name.str() == nlname || nlname.empty()))
{
require_token(m_tok_paren_right);
- parse_netlist(name.str());
+ parse_netlist();
return true;
}
if (token.is(m_tok_TRUTHTABLE_START) && name.str() == nlname)
@@ -165,7 +165,7 @@ bool parser_t::parse(const token_store &tokstor, const pstring &nlname)
}
}
-void parser_t::parse_netlist(const pstring &nlname)
+void parser_t::parse_netlist()
{
while (true)
{
diff --git a/src/lib/netlist/nl_parser.h b/src/lib/netlist/nl_parser.h
index aafe0911a2e..077f1b10792 100644
--- a/src/lib/netlist/nl_parser.h
+++ b/src/lib/netlist/nl_parser.h
@@ -30,7 +30,7 @@ namespace netlist
void parse_tokens(plib::istream_uptr &&strm, token_store &tokstor);
protected:
- void parse_netlist(const pstring &nlname);
+ void parse_netlist();
void net_alias();
void dippins();
void netdev_param();
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index b2ade9d48ce..fcea082a036 100644
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -1282,7 +1282,10 @@ void models_t::model_parse(const pstring &model_in, map_t &map)
key = plib::ucase(model);
auto i = m_models.find(key);
if (i == m_models.end())
- throw nl_exception(MF_MODEL_NOT_FOUND("xx" + model));
+ {
+ throw nl_exception(MF_MODEL_NOT_FOUND(pstring("xx") + model));
+ }
+
model = i->second;
}
pstring xmodel = plib::left(model, pos);
diff --git a/src/lib/netlist/plib/pexception.h b/src/lib/netlist/plib/pexception.h
index 2023fb91c38..709f8810b83 100644
--- a/src/lib/netlist/plib/pexception.h
+++ b/src/lib/netlist/plib/pexception.h
@@ -40,10 +40,10 @@ namespace plib {
explicit pexception(const pstring &text);
const pstring &text() const noexcept { return m_text; }
- const char* what() const noexcept override { return putf8string(m_text).c_str(); }
+ const char* what() const noexcept override { return m_text.c_str(); }
private:
- pstring m_text;
+ putf8string m_text;
};
class file_e : public plib::pexception
diff --git a/src/mame/audio/nl_astrob.cpp b/src/mame/audio/nl_astrob.cpp
index ba966702284..ee158301c29 100644
--- a/src/mame/audio/nl_astrob.cpp
+++ b/src/mame/audio/nl_astrob.cpp
@@ -44,13 +44,10 @@
-// not really found anywhere, just took the 5239 and changed the
-// breakdown voltage to 5.1 according to the datasheet
-#define D_1N5231(name) ZDIODE(name, "D(BV=5.1 IBV=0.020 NBV=1)")
+#define D_1N5231(name) ZDIODE(name, "1N5231")
#define D_1N914(name) DIODE(name, "1N914")
-// SPICE model taken from https://www.onsemi.com/support/design-resources/models?rpn=2N4403
-#define Q_2N4403(name) QBJT_EB(name, "PNP(Is=650.6E-18 Xti=3 Eg=1.11 Vaf=115.7 Bf=216.2 Ne=1.829 Ise=58.72f Ikf=1.079 Xtb=1.5 Br=3.578 Nc=2 Isc=0 Ikr=0 Rc=.715 Cjc=14.76p Mjc=.5383 Vjc=.75 Fc=.5 Cje=19.82p Mje=.3357 Vje=.75 Tr=111.6n Tf=603.7p Itf=.65 Vtf=5 Xtf=1.7 Rb=10)")
+#define Q_2N4403(name) QBJT_EB(name, "2N4403")
// JFET transistors not supported, but this should do the trick
#define Q_2N4093(name) MOSFET(name, "NMOS(VTO=-1 CAPMOD=0)")
diff --git a/src/mame/audio/nl_carpolo.cpp b/src/mame/audio/nl_carpolo.cpp
index cef3eb79346..21ffe0b9175 100644
--- a/src/mame/audio/nl_carpolo.cpp
+++ b/src/mame/audio/nl_carpolo.cpp
@@ -71,9 +71,6 @@ NETLIST_END()
//
NETLIST_START(carpolo)
- NET_MODEL("1N4454 D(Is=168.1e-21 Rs=.1 N=1 Cjo=2p M=.333 tt=5.771n Iave=400m Vpk=35 Bv=75 Ibv=100u mfg=OnSemi type=silicon)")
- NET_MODEL("2N3904 NPN(IS=1E-14 VAF=100 Bf=300 IKF=0.4 XTB=1.5 BR=4 CJC=4E-12 CJE=8E-12 RB=20 RC=0.1 RE=0.1 TR=250E-9 TF=350E-12 ITF=1 VTF=2 XTF=3 Vceo=40 Icrating=200m mfg=Philips)")
- NET_MODEL("LM748 OPAMP(TYPE=3 VLH=2.0 VLL=2.0 FPF=5 UGF=800k SLEW=0.7M RI=800k RO=60 DAB=0.001)")
SOLVER(Solver, 48000)
ANALOG_INPUT(V15, 15)
diff --git a/src/mame/audio/nl_cinemat_common.h b/src/mame/audio/nl_cinemat_common.h
index 7533acd56da..cfdd16820aa 100644
--- a/src/mame/audio/nl_cinemat_common.h
+++ b/src/mame/audio/nl_cinemat_common.h
@@ -68,33 +68,27 @@
// Diode models
//
-// models copied from https://www.diodes.com/assets/Spice-Models/Discrete-Prodcut-Groups/Zener-Diodes.txt
#define D_1N914(name) DIODE(name, "1N914")
#define D_1N914B(name) DIODE(name, "1N914")
-#define D_1N5236B(name) ZDIODE(name, "D(BV=7.5 IS=27.5p RS=33.8 N=1.10 CJO=58.2p VJ=0.750 M=0.330 TT=50.1n)")
-#define D_1N5240(name) ZDIODE(name, "D(BV=10 IS=14.4p RS=32.0 N=1.10 CJO=24.1p VJ=0.750 M=0.330 TT=50.1n)")
-#define D_1N5240B(name) ZDIODE(name, "D(BV=10 IS=14.4p RS=32.0 N=1.10 CJO=24.1p VJ=0.750 M=0.330 TT=50.1n)")
+#define D_1N5236B(name) ZDIODE(name, "1N5236B")
+#define D_1N5240(name) ZDIODE(name, "1N5240")
+#define D_1N5240B(name) ZDIODE(name, "1N5240B")
//
-// Op-amp models
+// Transistor models
//
-// SPICE model taken directly from Fairchild Semiconductor datasheet
-#define Q_2N3904(name) QBJT_EB(name, "NPN(Is=6.734f Xti=3 Eg=1.11 Vaf=74.03 Bf=416.4 Ne=1.259 Ise=6.734 Ikf=66.78m Xtb=1.5 Br=.7371 Nc=2 Isc=0 Ikr=0 Rc=1 Cjc=3.638p Mjc=.3085 Vjc=.75 Fc=.5 Cje=4.493p Mje=.2593 Vje=.75 Tr=239.5n f=301.2p Itf=.4 Vtf=4 Xtf=2 Rb=10)")
+#define Q_2N3904(name) QBJT_EB(name, "2N3904")
-// SPICE model taken directly from Fairchild Semiconductor datasheet
-#define Q_2N3906(name) QBJT_EB(name, "PNP(Is=1.41f Xti=3 Eg=1.11 Vaf=18.7 Bf=180.7 Ne=1.5 Ise=0 Ikf=80m Xtb=1.5 Br=4.977 Nc=2 Isc=0 Ikr=0 Rc=2.5 Cjc=9.728p Mjc=.5776 Vjc=.75 Fc=.5 Cje=8.063p Mje=.3677 Vje=.75 Tr=33.42n Tf=179.3p Itf=.4 Vtf=4 Xtf=6 Rb=10)")
+#define Q_2N3906(name) QBJT_EB(name, "2N3906")
-// SPICE model taken from https://www.onsemi.com/support/design-resources/models?rpn=2N6107
-#define Q_2N6107(name) QBJT_EB(name, "PNP(IS=7.62308e-14 BF=6692.56 NF=0.85 VAF=10 IKF=0.032192 ISE=2.07832e-13 NE=2.41828 BR=15.6629 NR=1.5 VAR=1.44572 IKR=0.32192 ISC=4.75e-16 NC=3.9375 RB=7.19824 IRB=0.1 RBM=0.1 RE=0.0001 RC=0.355458 XTB=0.1 XTI=2.97595 EG=1.206 CJE=1.84157e-10 VJE=0.99 MJE=0.347177 TF=6.63757e-09 XTF=1.50003 VTF=1.0001 ITF=1 CJC=1.06717e-10 VJC=0.942679 MJC=0.245405 XCJC=0.8 FC=0.533334 CJS=0 VJS=0.75 MJS=0.5 TR=1.32755e-07 PTF=0 KF=0 AF=1)")
+#define Q_2N6107(name) QBJT_EB(name, "2N6107")
-// SPICE model taken from https://www.onsemi.com/support/design-resources/models?rpn=2N6292
-#define Q_2N6292(name) QBJT_EB(name, "NPN(IS=9.3092e-13 BF=2021.8 NF=0.85 VAF=63.2399 IKF=1 ISE=1.92869e-13 NE=1.97024 BR=40.0703 NR=1.5 VAR=0.89955 IKR=10 ISC=4.92338e-16 NC=3.9992 RB=6.98677 IRB=0.1 RBM=0.1 RE=0.0001 RC=0.326141 XTB=0.1 XTI=2.86739 EG=1.206 CJE=1.84157e-10 VJE=0.99 MJE=0.347174 TF=6.73756e-09 XTF=1.49917 VTF=0.997395 ITF=0.998426 CJC=1.06717e-10 VJC=0.942694 MJC=0.245406 XCJC=0.8 FC=0.533405 CJS=0 VJS=0.75 MJS=0.5 TR=6.0671e-08 PTF=0 KF=0 AF=1)")
+#define Q_2N6292(name) QBJT_EB(name, "2N6292")
-// SPICE model taken from http://ltwiki.org/files/LTspiceIV/Vendor%20List/Fairchild/2N/index.html
-#define Q_2N5210(name) QBJT_EB(name, "NPN(Is=5.911f Xti=3 Eg=1.11 Vaf=62.37 Bf=809.9 Ne=1.358 Ise=5.911f Ikf=14.26m Xtb=1.5 Br=1.287 Nc=2 Isc=0 Ikr=0 Rc=1.61 Cjc=4.017p Mjc=.3174 Vjc=.75 Fc=.5 Cje=4.973p Mje=.4146 Vje=.75 Tr=4.68n Tf=820.9p Itf=.35 Vtf=4 Xtf=7 Rb=10)")
+#define Q_2N5210(name) QBJT_EB(name, "2N5210")
diff --git a/src/mame/audio/nl_elim.cpp b/src/mame/audio/nl_elim.cpp
index d027cd1a244..834f84ffce1 100644
--- a/src/mame/audio/nl_elim.cpp
+++ b/src/mame/audio/nl_elim.cpp
@@ -53,10 +53,9 @@
#define D_1N914(name) DIODE(name, "1N914")
-#define D_1N4002(name) DIODE(name, "D(IS=65.4p RS=42.2m BV=100 IBV=5.00u CJO=14.8p M=0.333 N=1.36 TT=2.88u)")
+#define D_1N4002(name) DIODE(name, "1N4002")
-// SPICE model taken from https://www.onsemi.com/support/design-resources/models?rpn=2N4403
-#define Q_2N4403(name) QBJT_EB(name, "PNP(Is=650.6E-18 Xti=3 Eg=1.11 Vaf=115.7 Bf=216.2 Ne=1.829 Ise=58.72f Ikf=1.079 Xtb=1.5 Br=3.578 Nc=2 Isc=0 Ikr=0 Rc=.715 Cjc=14.76p Mjc=.5383 Vjc=.75 Fc=.5 Cje=19.82p Mje=.3357 Vje=.75 Tr=111.6n Tf=603.7p Itf=.65 Vtf=5 Xtf=1.7 Rb=10)")
+#define Q_2N4403(name) QBJT_EB(name, "2N4403")
#define LM555_DIP NE555_DIP
#define LM566_DIP NE566_DIP
diff --git a/src/mame/audio/nl_fireone.cpp b/src/mame/audio/nl_fireone.cpp
index 9b2c405535c..5bca887402e 100644
--- a/src/mame/audio/nl_fireone.cpp
+++ b/src/mame/audio/nl_fireone.cpp
@@ -98,8 +98,6 @@ NETLIST_END()
//
NETLIST_START(fireone)
- NET_MODEL("2N3704 NPN(IS=26.03f VAF=90.7 Bf=736.1K IKF=.1983 XTB=1.5 BR=1.024 CJC=11.01p CJE=24.07p RB=10 RC=.5 RE=.5 TR=233.8n TF=1.03n ITF=0 VTF=0 XTF=0 mfg=Motorola)")
-
SOLVER(Solver, 48000)
ANALOG_INPUT(V12, 12)
diff --git a/src/mame/audio/nl_spacfury.cpp b/src/mame/audio/nl_spacfury.cpp
index 5114b1a4c9c..b66b842915c 100644
--- a/src/mame/audio/nl_spacfury.cpp
+++ b/src/mame/audio/nl_spacfury.cpp
@@ -47,13 +47,11 @@
//
#define D_1N914(name) DIODE(name, "1N914")
-#define D_1N4002(name) DIODE(name, "D(IS=65.4p RS=42.2m BV=100 IBV=5.00u CJO=14.8p M=0.333 N=1.36 TT=2.88u)")
+#define D_1N4002(name) DIODE(name, "1N4002")
-// SPICE model taken from https://www.onsemi.com/support/design-resources/models?rpn=2N4401
-#define Q_2N4401(name) QBJT_EB(name, "NPN(Is=26.03f Xti=3 Eg=1.11 Vaf=90.7 Bf=4.292K Ne=1.244 Ise=26.03f Ikf=.2061 Xtb=1.5 Br=1.01 Nc=2 Isc=0 Ikr=0 Rc=.5 Cjc=11.01p Mjc=.3763 Vjc=.75 Fc=.5 Cje=24.07p Mje=.3641 Vje=.75 Tr=233.7n Tf=466.5p Itf=0 Vtf=0 Xtf=0 Rb=10)")
+#define Q_2N4401(name) QBJT_EB(name, "2N4401")
-// SPICE model taken from https://www.onsemi.com/support/design-resources/models?rpn=2N4403
-#define Q_2N4403(name) QBJT_EB(name, "PNP(Is=650.6E-18 Xti=3 Eg=1.11 Vaf=115.7 Bf=216.2 Ne=1.829 Ise=58.72f Ikf=1.079 Xtb=1.5 Br=3.578 Nc=2 Isc=0 Ikr=0 Rc=.715 Cjc=14.76p Mjc=.5383 Vjc=.75 Fc=.5 Cje=19.82p Mje=.3357 Vje=.75 Tr=111.6n Tf=603.7p Itf=.65 Vtf=5 Xtf=1.7 Rb=10)")
+#define Q_2N4403(name) QBJT_EB(name, "2N4403")
// JFET transistors not supported, but this should do the trick
//#define Q_2N4093(name) MOSFET(name, "NMOS(VTO=-1.0)")
diff --git a/src/mame/audio/nl_starfire.cpp b/src/mame/audio/nl_starfire.cpp
index cf071f08e52..bae260e7ad1 100644
--- a/src/mame/audio/nl_starfire.cpp
+++ b/src/mame/audio/nl_starfire.cpp
@@ -94,7 +94,6 @@ NETLIST_END()
//
NETLIST_START(starfire)
- NET_MODEL("2N3702 PNP(Is=650.6E-18 Xti=3 Eg=1.11 Vaf=115.7 Bf=133.8 Ne=1.832 Ise=97.16f Ikf=1.081 Xtb=1.5 Br=3.73 Nc=2 Isc=0 Ikr=0 Rc=.715 Cjc=14.76p Mjc=.5383 Vjc=.75 Fc=.5 Cje=19.82p Mje=.3357 Vje=.75 Tr=114.1n Tf=761.3p Itf=.65 Vtf=5 Xtf=1.7 Rb=10 mfg=National)")
NET_MODEL("LM324_12V OPAMP(TYPE=3 VLH=1.6 VLL=0.16 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.00075)")
NET_MODEL("LM324_5V OPAMP(TYPE=3 VLH=0.667 VLL=0.0667 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.00075)")
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp
index 4cab2c7cdfa..08a9c361569 100644
--- a/src/mame/drivers/alphatpx.cpp
+++ b/src/mame/drivers/alphatpx.cpp
@@ -595,7 +595,7 @@ PORT_START("COL.3")
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_START("COL.4")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Y) PORT_CHAR('z') PORT_CHAR('Z')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN)
@@ -607,7 +607,7 @@ PORT_START("COL.5")
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // 0x89
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Z) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
PORT_START("COL.6")
@@ -628,27 +628,27 @@ PORT_START("COL.7")
PORT_START("COL.8")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ö Ö") PORT_CODE(KEYCODE_COLON) PORT_CHAR(0x00f6) PORT_CHAR(0x00d6)
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ö Ö") PORT_CODE(KEYCODE_COLON) PORT_CHAR(0x00f6) PORT_CHAR(0x00d6)
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R_CTRL") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL)) // 44h ->84h clear ?
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTER Pad") PORT_CODE(KEYCODE_ENTER_PAD)PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_START("COL.9")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ü Ü") PORT_CODE(KEYCODE_OPENBRACE)PORT_CHAR(0x00fc) PORT_CHAR(0x00dc)
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ä Ä") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0x00e4) PORT_CHAR(0x00c4)
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ü Ü") PORT_CODE(KEYCODE_OPENBRACE)PORT_CHAR(0x00fc) PORT_CHAR(0x00dc)
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ä Ä") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0x00e4) PORT_CHAR(0x00c4)
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R_SHIFT") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 Pad") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('=')
PORT_START("COL.10")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ *") PORT_CODE(KEYCODE_CLOSEBRACE)PORT_CHAR('+') PORT_CHAR('*')
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ *") PORT_CODE(KEYCODE_CLOSEBRACE)PORT_CHAR('+') PORT_CHAR('*')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("# ^") PORT_CODE(KEYCODE_BACKSLASH)PORT_CHAR('#') PORT_CHAR('^')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[][]/ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) // Esc test this work ?!
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL Pad") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ß ?") PORT_CODE(KEYCODE_MINUS) PORT_CHAR(0x00df) PORT_CHAR('?') // ß and ?
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ß ?") PORT_CODE(KEYCODE_MINUS) PORT_CHAR(0x00df) PORT_CHAR('?') // ß and ?
PORT_START("COL.11")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') // TAB key
@@ -656,7 +656,7 @@ PORT_START("COL.11")
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 Pad") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ Pad") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("´ `") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(0x00b4) PORT_CHAR(0x0060)
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"´ `") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(0x00b4,'\'') PORT_CHAR(0x0060)
PORT_START("COL.12")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 Pad") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
@@ -769,7 +769,7 @@ PORT_START("COL.3")
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
PORT_START("COL.4")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Y) PORT_CHAR('z') PORT_CHAR('Z')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_UNKNOWN)
@@ -781,7 +781,7 @@ PORT_START("COL.5")
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("UP") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // 0x89
- PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
+ PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Z) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
PORT_START("COL.6")
@@ -802,27 +802,27 @@ PORT_START("COL.7")
PORT_START("COL.8")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ö Ö") PORT_CODE(KEYCODE_COLON) PORT_CHAR(0x00f6) PORT_CHAR(0x00d6)
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ö Ö") PORT_CODE(KEYCODE_COLON) PORT_CHAR(0x00f6) PORT_CHAR(0x00d6)
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R_CTRL") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL)) // 44h ->84h clear ?
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ENTER Pad") PORT_CODE(KEYCODE_ENTER_PAD)PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_START("COL.9")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ü Ü") PORT_CODE(KEYCODE_OPENBRACE)PORT_CHAR(0x00fc) PORT_CHAR(0x00dc)
- PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ä Ä") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0x00e4) PORT_CHAR(0x00c4)
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ü Ü") PORT_CODE(KEYCODE_OPENBRACE)PORT_CHAR(0x00fc) PORT_CHAR(0x00dc)
+ PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ä Ä") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(0x00e4) PORT_CHAR(0x00c4)
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R_SHIFT") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 Pad") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('=')
PORT_START("COL.10")
- PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ *") PORT_CODE(KEYCODE_CLOSEBRACE)PORT_CHAR('+') PORT_CHAR('*')
+ PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ *") PORT_CODE(KEYCODE_CLOSEBRACE)PORT_CHAR('+') PORT_CHAR('*')
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("# ^") PORT_CODE(KEYCODE_BACKSLASH)PORT_CHAR('#') PORT_CHAR('^')
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[][]/ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) // Esc test this work ?!
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL Pad") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ß ?") PORT_CODE(KEYCODE_MINUS) PORT_CHAR(0x00df) PORT_CHAR('?') // ß and ?
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"ß ?") PORT_CODE(KEYCODE_MINUS) PORT_CHAR(0x00df) PORT_CHAR('?') // ß and ?
PORT_START("COL.11")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t') // TAB key
@@ -830,7 +830,7 @@ PORT_START("COL.11")
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 Pad") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("+ Pad") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_UNKNOWN)
- PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("´ `") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(39) PORT_CHAR(0x0060) // quote and tic
+ PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(u8"´ `") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(0x00b4,'\'') PORT_CHAR(0x0060)
PORT_START("COL.12")
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 Pad") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
diff --git a/src/mame/drivers/bingor.cpp b/src/mame/drivers/bingor.cpp
index cb5522cafbb..63a39cc8c05 100644
--- a/src/mame/drivers/bingor.cpp
+++ b/src/mame/drivers/bingor.cpp
@@ -912,8 +912,8 @@ ROM_START( bingor6 ) // Strings: 1988-1992 AWR Hard & Soft Austria.
ROM_LOAD16_BYTE( "turbo_l.bin", 0x000000, 0x10000, CRC(86b10566) SHA1(5f74b250ced3574feffdc40b6ed013ec5a0c2c97) )
ROM_LOAD16_BYTE( "turbo_h.bin", 0x000001, 0x10000, CRC(7e18f9d7) SHA1(519b65d6812a3762e3215f4918c834d5a444b28a) )
- ROM_REGION( 0x20000, "pic", 0 ) // protection?
- ROM_LOAD( "pic16c54rc.bin", 0x000, 0x400, NO_DUMP )
+ ROM_REGION( 0x1fff, "pic", 0 ) // decapped, protection?
+ ROM_LOAD( "pic16c54rc.bin", 0x0000, 0x1fff, CRC(857e8f5a) SHA1(59666b76ec87f3a736f6c7c8f43e63913f53fbfd) )
ROM_REGION( 0x20000, "eeprom", 0 ) // eeprom
ROM_LOAD( "bingor6_24c04a.bin", 0x000000, 0x200, CRC(9d271c5f) SHA1(8ac5c4848fb8d9a156ba760324022839fefcbb72) )
diff --git a/src/mame/drivers/bublbobl.cpp b/src/mame/drivers/bublbobl.cpp
index 8c2326bb255..77e839790b8 100644
--- a/src/mame/drivers/bublbobl.cpp
+++ b/src/mame/drivers/bublbobl.cpp
@@ -1082,6 +1082,16 @@ void bub68705_state::bub68705(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(bub68705_state, bub68705)
}
+void bub8749_state::bub8749(machine_config &config)
+{
+ bublbobl_nomcu(config);
+
+ // basic machine hardware
+ I8749(config, m_mcu, 3.579545_MHz_XTAL); // TODO: hook this up
+
+ MCFG_MACHINE_START_OVERRIDE(bub8749_state, common) // for now
+ MCFG_MACHINE_RESET_OVERRIDE(bub8749_state, common)
+}
/*************************************
@@ -1854,6 +1864,48 @@ ROM_START( bub68705 )
ROM_LOAD( "a71-25.41", 0x0000, 0x0100, CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) /* video timing */
ROM_END
+ROM_START( bub8749 ) // all ROMs match bublbobl1 but for the MCU, which is different. 2-PCB set probably comes from Italy
+ ROM_REGION( 0x30000, "maincpu", 0 )
+ ROM_LOAD( "6-27256.bin", 0x00000, 0x08000, CRC(32c8305b) SHA1(6bf69b3edfbefd33cd670a762b4bf0b39629a220) )
+ // ROMs banked at 8000-bfff
+ ROM_LOAD( "5-27512.bin", 0x10000, 0x10000, CRC(53f4bc6e) SHA1(15a2e6d83438d4136b154b3d90dd2cf9f1ce572c) )
+ // 20000-2ffff empty
+
+ ROM_REGION( 0x10000, "subcpu", 0 )
+ ROM_LOAD( "8-27256.bin", 0x0000, 0x08000, CRC(ae11a07b) SHA1(af7a335c8da637103103cc274e077f123908ebb7) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "7-27256.bin", 0x0000, 0x08000, CRC(4f9a26e8) SHA1(3105b34b88a7134493c2b3f584729f8b0407a011) )
+
+ ROM_REGION( 0x800, "mcu", 0 ) // P8749H, on a small riser board
+ ROM_LOAD( "p8749h.bin", 0x000, 0x800, CRC(4912c847) SHA1(9296a5c5c4cb478571a92b4e6224ce5e2048cd07) )
+
+ ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "9-27256.bin", 0x00000, 0x8000, CRC(20358c22) SHA1(2297af6c53d5807bf90a8e081075b8c72a994fc5) ) // 1st plane
+ ROM_LOAD( "10-27256.bin", 0x08000, 0x8000, CRC(930168a9) SHA1(fd358c3c3b424bca285f67a1589eb98a345ff670) )
+ ROM_LOAD( "11-27256.bin", 0x10000, 0x8000, CRC(9773e512) SHA1(33c1687ee575d66bf0e98add45d06da827813765) )
+ ROM_LOAD( "12-27256.bin", 0x18000, 0x8000, CRC(d045549b) SHA1(0c12077d3ddc2ce6aa45a0224ad5540f3f218446) )
+ ROM_LOAD( "13-27256.bin", 0x20000, 0x8000, CRC(d0af35c5) SHA1(c5a89f4d73acc0db86654540b3abfd77b3757db5) )
+ ROM_LOAD( "14-27256.bin", 0x28000, 0x8000, CRC(7b5369a8) SHA1(1307b26d80e6f36ebe6c442bebec41d20066eaf9) )
+ // 0x30000-0x3ffff empty
+ ROM_LOAD( "15-27256.bin", 0x40000, 0x8000, CRC(6b61a413) SHA1(44eddf12fb46fceca2addbe6da929aaea7636b13) ) // 2nd plane
+ ROM_LOAD( "16-27256.bin", 0x48000, 0x8000, CRC(b5492d97) SHA1(d5b045e3ebaa44809757a4220cefb3c6815470da) )
+ ROM_LOAD( "17-27256.bin", 0x50000, 0x8000, CRC(d69762d5) SHA1(3326fef4e0bd86681a3047dc11886bb171ecb609) )
+ ROM_LOAD( "18-27256.bin", 0x58000, 0x8000, CRC(9f243b68) SHA1(32dce8d311a4be003693182a999e4053baa6bb0a) )
+ ROM_LOAD( "19-27256.bin", 0x60000, 0x8000, CRC(66e9438c) SHA1(b94e62b6fbe7f4e08086d0365afc5cff6e0ccafd) )
+ ROM_LOAD( "20-27256.bin", 0x68000, 0x8000, CRC(9ef863ad) SHA1(29f91b5a3765e4d6e6c3382db1d8d8297b6e56c8) )
+ // 0x70000-0x7ffff empty
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "6301-in", 0x0000, 0x0100, BAD_DUMP CRC(2d0f8545) SHA1(089c31e2f614145ef2743164f7b52ae35bc06808) ) // video timing, not dumped for this set
+
+ // Located on CPU/Sound Board
+ ROM_REGION( 0x0003, "plds", 0 )
+ ROM_LOAD( "pal16l6nc.bin", 0x0000, 0x0001, NO_DUMP ) // Located at PAL1
+ ROM_LOAD( "pal--.bin", 0x0000, 0x0001, NO_DUMP ) // Located at PAL2, type not readable
+ ROM_LOAD( "pal16r4cn.bin", 0x0000, 0x0001, NO_DUMP ) // Located at PAL3
+ROM_END
+
ROM_START( dland )
ROM_REGION( 0x30000, "maincpu", 0 )
@@ -2106,14 +2158,15 @@ GAME( 1986, bublboblr, bublbobl, bublbobl, bublbobl, bublbobl_state, init_co
GAME( 1986, bublboblr1, bublbobl, bublbobl, bublbobl, bublbobl_state, init_common, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 1.0)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, boblbobl, bublbobl, boblbobl, boblbobl, bublbobl_state, init_common, ROT0, "bootleg", "Bobble Bobble (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, init_common, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblbobld, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblboble, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 5)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblboblf, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 6)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, sboblboblc, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bubble Bobble (bootleg)", MACHINE_SUPPORTS_SAVE ) // the title screen on this one isn't hacked
-GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bub68705_state, init_common, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, init_common, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblbobld, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblboble, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblboblf, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblboblc, bublbobl, boblbobl, sboblboblb, bublbobl_state, init_common, ROT0, "bootleg", "Super Bubble Bobble (bootleg)", MACHINE_SUPPORTS_SAVE ) // the title screen on this one isn't hacked
+GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bub68705_state, init_common, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, bub8749, bublbobl, bub8749, bublbobl, bub8749_state, init_common, ROT0, "bootleg", "Bubble Bobble (bootleg of Japan Ver 0.0 with 8749)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // MCU not hooked up
GAME( 1987, dland, bublbobl, boblbobl, dland, bublbobl_state, init_dland, ROT0, "bootleg", "Dream Land / Super Dream Land (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bvm.cpp b/src/mame/drivers/bvm.cpp
new file mode 100644
index 00000000000..af931fefd7b
--- /dev/null
+++ b/src/mame/drivers/bvm.cpp
@@ -0,0 +1,88 @@
+// license:BSD-3-Clause
+// copyright-holders:AJR
+/****************************************************************************
+
+ Skeleton driver for Sony BVM-{14|20}{E|F}1{E|U} series monitors.
+
+ List of major ICs:
+ - Hitachi HD6435368CP10 H8/536 [IC1]
+ or: Hitachi HD6475368CP10 C764
+ or: Hitachi HD6435368CP10 W51
+ near 20 MHz XTAL
+ - CSI CAT28F020P-15 2 Megabit CMOS Flash Memory [IC3]
+ - Sony CXK58257AP-10 [IC4]
+ or: Sanyo LC35256D-10
+ next to: Sony CR2025 3V Lithium Cell [BAT1]
+ - Sony CXD1095Q [IC5, IC6]
+ - NEC D6453GT-101 On-Screen Character Display [IC7]
+ - Sony CXA1727Q [IC102]
+ - Sony CXD2343S [IC105]
+ - Hitachi HN27C256AG-10 [IC107, IC108]
+ - Sony CXD1171M 8-Bit D/A Converter [IC109]
+ - Sony CXD1030M Sync Signal Generator [IC120]
+ - Zilog Z8622812PSC Line 21 Closed-Caption Controller [IC124]
+ - Sony CXD1132Q Time Code Generator/Reader [IC126]
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/h8500/h8534.h"
+#include "machine/cxd1095.h"
+#include "machine/intelfsh.h"
+#include "machine/nvram.h"
+
+class bvm_state : public driver_device
+{
+public:
+ bvm_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ {
+ }
+
+ void bvm(machine_config &config);
+
+private:
+ void mem_map(address_map &map);
+
+ required_device<h8536_device> m_maincpu;
+};
+
+
+void bvm_state::mem_map(address_map &map)
+{
+ // internal ROM not used here?
+ map(0x00000, 0x0f67f).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+ map(0x10000, 0x17fff).ram().share("nvram");
+ map(0x18000, 0x18007).rw("cxdio0", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x18020, 0x18027).rw("cxdio1", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write));
+ map(0x40000, 0x7ffff).rw("flash", FUNC(intelfsh8_device::read), FUNC(intelfsh8_device::write));
+}
+
+
+static INPUT_PORTS_START(bvm)
+INPUT_PORTS_END
+
+void bvm_state::bvm(machine_config &config)
+{
+ HD6435368(config, m_maincpu, 20_MHz_XTAL);
+ m_maincpu->set_addrmap(AS_PROGRAM, &bvm_state::mem_map);
+
+ CAT28F020(config, "flash");
+
+ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
+
+ CXD1095(config, "cxdio0");
+ CXD1095(config, "cxdio1");
+}
+
+ROM_START(bvm20f1e)
+ ROM_REGION(0x40000, "flash", 0)
+ ROM_LOAD("cat28f020p-15.ic3", 0x00000, 0x40000, CRC(43a1bdf8) SHA1(65cf61921ac86a8baa3a3da4ed0b3e61aa2f03b3))
+
+ ROM_REGION(0x10000, "eproms", 0)
+ ROM_LOAD("cd93-27c256.ic107", 0x0000, 0x8000, CRC(f8da1f2f) SHA1(b2f5a730d0f26f2a12fd62a111ee429da8426877))
+ ROM_LOAD("541d-27c256.ic108", 0x8000, 0x8000, CRC(9da347f9) SHA1(413096830bdcae6404e9d686abb56e60d58bdc2f))
+ROM_END
+
+SYST(1998, bvm20f1e, 0, 0, bvm, bvm, bvm_state, empty_init, "Sony", "Trinitron Color Video Monitor BVM-20F1E", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp
index c13f757e69d..ce0a55bc62c 100644
--- a/src/mame/drivers/cps3.cpp
+++ b/src/mame/drivers/cps3.cpp
@@ -120,6 +120,8 @@ Street Fighter III 3rd Strike: Fight for the Future 33S994A0F CP3000U0G
JoJo no Kimyou na Bouken: Mirai e no Isan 1999 JJM99900F CP300000G JAPAN X CAP-JJM000 CAP-JJM-0 CAP-JJM-110 990913
JoJo no Kimyou na Bouken: Mirai e no Isan JJM99900F CP300000G JAPAN X CAP-JJM000 CAP-JJM-1 CAP-JJM-120 990927
+JoJo's Bizarre Adventure JJM999A0F CP3000B0G EUROPE X CAP-JJM0A0 CAP-JJM-0 CAP-JJM-110 990913
+JoJo's Bizarre Adventure JJM999A0F CP3000B0G EUROPE X CAP-JJM0A0 CAP-JJM-1 CAP-JJM-120 990927
JoJo no Kimyou na Bouken: Mirai e no Isan JJM99900F CP300000G JAPAN X 990913
JoJo no Kimyou na Bouken: Mirai e no Isan JJM99900F CP300000G JAPAN X 990927
JoJo's Bizarre Adventure JJM999A0F CP3000B0G EUROPE X 990913
@@ -2820,6 +2822,14 @@ ROM_END
ROM_START( jojoba )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
+ ROM_LOAD( "jojoba_euro.29f400.u2", 0x000000, 0x080000, CRC(63cc8800) SHA1(f0c7e6abb205a16dab7a114e017b193521071a4b) )
+
+ DISK_REGION( "scsi:1:cdrom" )
+ DISK_IMAGE_READONLY( "cap-jjm-1", 0, SHA1(8628d3fa555fbd5f4121082e925c1834b76c5e65) )
+ROM_END
+
+ROM_START( jojobaj )
+ ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
DISK_REGION( "scsi:1:cdrom" )
@@ -2828,6 +2838,14 @@ ROM_END
ROM_START( jojobar1 )
ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
+ ROM_LOAD( "jojoba_euro.29f400.u2", 0x000000, 0x080000, CRC(63cc8800) SHA1(f0c7e6abb205a16dab7a114e017b193521071a4b) )
+
+ DISK_REGION( "scsi:1:cdrom" )
+ DISK_IMAGE_READONLY( "cap-jjm-0", 0, SHA1(1651896d127dbf32af99175ae91227cd90675aaa) )
+ROM_END
+
+ROM_START( jojobajr1 )
+ ROM_REGION32_BE( 0x080000, "bios", 0 ) /* bios region */
ROM_LOAD( "jojoba_japan.29f400.u2", 0x000000, 0x080000, CRC(3085478c) SHA1(055eab1fc42816f370a44b17fd7e87ffcb10e8b7) )
DISK_REGION( "scsi:1:cdrom" )
@@ -3968,12 +3986,14 @@ GAME( 1999, sfiii3nr1, sfiii3, sfiii3, cps3, cps3_state, init_sfiii3,
/* JoJo's Bizarre Adventure / JoJo no Kimyou na Bouken: Mirai e no Isan */
// 990927
-GAME( 1999, jojoba, 0, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", GAME_FLAGS )
+GAME( 1999, jojoba, 0, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990927)", GAME_FLAGS )
+GAME( 1999, jojobaj, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", GAME_FLAGS )
GAME( 1999, jojoban, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD)", GAME_FLAGS )
GAME( 1999, jojobane, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990927, NO CD)", GAME_FLAGS )
// 990913
-GAME( 1999, jojobar1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", GAME_FLAGS )
+GAME( 1999, jojobar1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913)", GAME_FLAGS )
+GAME( 1999, jojobajr1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", GAME_FLAGS )
GAME( 1999, jojobanr1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", GAME_FLAGS )
GAME( 1999, jojobaner1, jojoba, jojoba, cps3_jojo, cps3_state, init_jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", GAME_FLAGS )
diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp
index 5dc70924960..f4741f3cfa6 100644
--- a/src/mame/drivers/dec0.cpp
+++ b/src/mame/drivers/dec0.cpp
@@ -1925,24 +1925,24 @@ void dec0_automat_state::automat(machine_config &config)
}
// this seems very similar to the automat bootleg
-void dec0_automat_state::secretab(machine_config &config)
+void dec0_automat_state::secretab(machine_config &config) // all clocks verified on PCB
{
- /* basic machine hardware */
- M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb (20MHZ OSC) 68000P12 running at 10Mhz */
+ // basic machine hardware
+ M68000(config, m_maincpu, 20_MHz_XTAL / 2); // verified on pcb (20MHZ OSC) 68000P12 running at 10Mhz
m_maincpu->set_addrmap(AS_PROGRAM, &dec0_automat_state::secretab_map);
- m_maincpu->set_vblank_int("screen", FUNC(dec0_state::irq6_line_hold)); /* VBL */
+ m_maincpu->set_vblank_int("screen", FUNC(dec0_state::irq6_line_hold)); // VBL
- Z80(config, m_audiocpu, 3000000); // ?
+ Z80(config, m_audiocpu, 20_MHz_XTAL / 4);
m_audiocpu->set_addrmap(AS_PROGRAM, &dec0_automat_state::secretab_s_map);
- /* video hardware */
+ // video hardware
MCFG_VIDEO_START_OVERRIDE(dec0_automat_state,slyspy)
BUFFERED_SPRITERAM16(config, m_spriteram);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
// m_screen->set_refresh_hz(57.41);
-// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529)); /* 57.41 Hz, 529us Vblank */
+// m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(529)); // 57.41 Hz, 529us Vblank
set_screen_raw_params_data_east(config);
m_screen->set_screen_update(FUNC(dec0_automat_state::screen_update_secretab));
m_screen->set_palette(m_palette);
@@ -1966,19 +1966,19 @@ void dec0_automat_state::secretab(machine_config &config)
GFXDECODE(config, m_gfxdecode, m_palette, gfx_secretab);
- /* sound hardware */
+ // sound hardware
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0);
- ym2203_device &ym2203a(YM2203(config, "2203a", 1250000));
+ ym2203_device &ym2203a(YM2203(config, "2203a", 20_MHz_XTAL / 16));
ym2203a.add_route(0, "mono", 0.90);
ym2203a.add_route(1, "mono", 0.90);
ym2203a.add_route(2, "mono", 0.90);
ym2203a.add_route(3, "mono", 0.35);
- ym3812_device &ym3812(YM3812(config, "ym3812", 2500000));
+ ym3812_device &ym3812(YM3812(config, "ym3812", 20_MHz_XTAL / 8));
ym3812.add_route(ALL_OUTPUTS, "mono", 0.80);
LS157(config, m_adpcm_select[0], 0);
@@ -1987,12 +1987,12 @@ void dec0_automat_state::secretab(machine_config &config)
LS157(config, m_adpcm_select[1], 0);
m_adpcm_select[1]->out_callback().set("msm2", FUNC(msm5205_device::data_w));
- msm5205_device &msm1(MSM5205(config, "msm1", 384000));
+ msm5205_device &msm1(MSM5205(config, "msm1", 400_kHz_XTAL));
msm1.vck_legacy_callback().set(FUNC(dec0_automat_state::msm1_vclk_cb));
msm1.set_prescaler_selector(msm5205_device::S96_4B);
msm1.add_route(ALL_OUTPUTS, "mono", 1.0);
- msm5205_device &msm2(MSM5205(config, "msm2", 384000));
+ msm5205_device &msm2(MSM5205(config, "msm2", 400_kHz_XTAL));
msm2.vck_legacy_callback().set(FUNC(dec0_automat_state::msm2_vclk_cb));
msm2.set_prescaler_selector(msm5205_device::S96_4B);
msm2.add_route(ALL_OUTPUTS, "mono", 1.0);
@@ -3686,10 +3686,10 @@ ROM_START( secretab )
ROM_LOAD( "sa_02.ic40", 0x10000, 0x10000, CRC(439eb5a9) SHA1(8d6baad8a1e89279ef0a378941d3d9b49a606864) ) // both halves identical
ROM_REGION( 0x40000, "charset", 0 )
- ROM_LOAD( "sa_08.ic105", 0x00000, 0x10000,CRC(4806b951) SHA1(a2fa5b8587132747067d7d64ccfd14129a34ef58) )
- ROM_LOAD( "sa_12.ic156", 0x10000, 0x10000,CRC(f9e2cd5f) SHA1(f2c3f6e763c6f80307e9daee533d316b05cd02c5) )
- ROM_LOAD( "sa_10.ic138", 0x20000, 0x10000,CRC(843c4679) SHA1(871f3e77aa7e628e924a40d06ddec700487e23fb) )
- ROM_LOAD( "sa_14.ic188", 0x30000, 0x10000,CRC(3dac9128) SHA1(f3a2068e90973c1f04f1bbaa209111e3f9669ee0) )
+ ROM_LOAD( "sa_08.ic105", 0x00000, 0x10000, CRC(4806b951) SHA1(a2fa5b8587132747067d7d64ccfd14129a34ef58) )
+ ROM_LOAD( "sa_12.ic156", 0x10000, 0x10000, CRC(f9e2cd5f) SHA1(f2c3f6e763c6f80307e9daee533d316b05cd02c5) )
+ ROM_LOAD( "sa_10.ic138", 0x20000, 0x10000, CRC(843c4679) SHA1(871f3e77aa7e628e924a40d06ddec700487e23fb) )
+ ROM_LOAD( "sa_14.ic188", 0x30000, 0x10000, CRC(3dac9128) SHA1(f3a2068e90973c1f04f1bbaa209111e3f9669ee0) )
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) /* chars */
ROM_COPY( "charset", 0x00000, 0x00000, 0x8000 )
@@ -3704,20 +3704,72 @@ ROM_START( secretab )
ROM_COPY( "charset", 0x38000, 0x18000, 0x8000 )
ROM_REGION( 0x40000, "gfx3", ROMREGION_INVERT ) /* tiles */
- ROM_LOAD( "sa_09.ic139", 0x00000, 0x10000,CRC(9e412267) SHA1(482cd6e772fa21f15db66c27acf85e8f97f7c5a5) )
- ROM_LOAD( "sa_11.ic157", 0x10000, 0x10000,CRC(e87650db) SHA1(381352428b12fd4a8cd13270009ff7602aa41a0b) )
- ROM_LOAD( "sa_07.ic106", 0x20000, 0x10000,CRC(6ad2e575) SHA1(b6b159cb36e222fe62fc10271602226f027440e4) )
- ROM_LOAD( "sa_13.ic189", 0x30000, 0x10000,CRC(e8601057) SHA1(fd73a36fb84049154248d250ffea68b1ee39a43f) )
+ ROM_LOAD( "sa_09.ic139", 0x00000, 0x10000, CRC(9e412267) SHA1(482cd6e772fa21f15db66c27acf85e8f97f7c5a5) )
+ ROM_LOAD( "sa_11.ic157", 0x10000, 0x10000, CRC(e87650db) SHA1(381352428b12fd4a8cd13270009ff7602aa41a0b) )
+ ROM_LOAD( "sa_07.ic106", 0x20000, 0x10000, CRC(6ad2e575) SHA1(b6b159cb36e222fe62fc10271602226f027440e4) )
+ ROM_LOAD( "sa_13.ic189", 0x30000, 0x10000, CRC(e8601057) SHA1(fd73a36fb84049154248d250ffea68b1ee39a43f) )
ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
- ROM_LOAD( "sa_20.ic176", 0x00000, 0x10000,CRC(447e4f0b) SHA1(97db103e505a6e11eb9bdb3622e4aa3b796a9714) )
- ROM_LOAD( "sa_19.ic177", 0x10000, 0x10000,CRC(d29bc22e) SHA1(ce0935d09f7e94fa32247c86e14a74b73514b29e) )
- ROM_LOAD( "sa_16.ic180", 0x20000, 0x10000,CRC(ff72b838) SHA1(fdc48ecdd2225fc69472313f34973f6add8fb558) )
- ROM_LOAD( "sa_15.ic181", 0x30000, 0x10000,CRC(54fcbc39) SHA1(293a6799193b01424c3eac86cf90cc023aa771db) )
- ROM_LOAD( "sa_22.ic174", 0x40000, 0x10000,CRC(d234cae5) SHA1(0cd07bf087a4da19a5da29785385de9eee52d0fb) )
- ROM_LOAD( "sa_21.ic175", 0x50000, 0x10000,CRC(dc6a38df) SHA1(9043df911389d3f085299f2f2202cab356473a32) )
- ROM_LOAD( "sa_18.ic178", 0x60000, 0x10000,CRC(4f989f00) SHA1(ae7ae6e62e6a516ae3c8ebbeb5e39887c1961add) )
- ROM_LOAD( "sa_17.ic179", 0x70000, 0x10000,CRC(f61972c8) SHA1(fa9ddca3473091b4879171d8f3b302e8f2b45149) )
+ ROM_LOAD( "sa_20.ic176", 0x00000, 0x10000, CRC(447e4f0b) SHA1(97db103e505a6e11eb9bdb3622e4aa3b796a9714) )
+ ROM_LOAD( "sa_19.ic177", 0x10000, 0x10000, CRC(d29bc22e) SHA1(ce0935d09f7e94fa32247c86e14a74b73514b29e) )
+ ROM_LOAD( "sa_16.ic180", 0x20000, 0x10000, CRC(ff72b838) SHA1(fdc48ecdd2225fc69472313f34973f6add8fb558) )
+ ROM_LOAD( "sa_15.ic181", 0x30000, 0x10000, CRC(54fcbc39) SHA1(293a6799193b01424c3eac86cf90cc023aa771db) )
+ ROM_LOAD( "sa_22.ic174", 0x40000, 0x10000, CRC(d234cae5) SHA1(0cd07bf087a4da19a5da29785385de9eee52d0fb) )
+ ROM_LOAD( "sa_21.ic175", 0x50000, 0x10000, CRC(dc6a38df) SHA1(9043df911389d3f085299f2f2202cab356473a32) )
+ ROM_LOAD( "sa_18.ic178", 0x60000, 0x10000, CRC(4f989f00) SHA1(ae7ae6e62e6a516ae3c8ebbeb5e39887c1961add) )
+ ROM_LOAD( "sa_17.ic179", 0x70000, 0x10000, CRC(f61972c8) SHA1(fa9ddca3473091b4879171d8f3b302e8f2b45149) )
+ROM_END
+
+
+ROM_START( mastbond ) // same as secretab, but for the charset ROMs. Just a hack to change the title to Master Bond. PCB marked 19 89 N. All ROMs are 27C512.
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "5.ic84", 0x00000, 0x10000, CRC(54869474) SHA1(88c1894d1b6d8dd3d37e97d566aafef9c9409d6e) )
+ ROM_LOAD16_BYTE( "3.ic67", 0x00001, 0x10000, CRC(36ab1874) SHA1(baa47c466ab13ac792761531f77ee8e639d19203) )
+ ROM_LOAD16_BYTE( "6.ic83", 0x20000, 0x10000, CRC(8e691f23) SHA1(eb08c9539b699af124fcf87be07a33d2d5a71ada) )
+ ROM_LOAD16_BYTE( "4.ic66", 0x20001, 0x10000, CRC(c838b205) SHA1(8c7a453ec7a00d4f5bbf9fadba6d551909647ed8) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 )
+ ROM_LOAD( "1.ic41", 0x00000, 0x10000, CRC(9fdc503b) SHA1(7b258e0734ca88a7d3f574d75116f0fe3b628898) )
+ ROM_LOAD( "2.ic40", 0x10000, 0x10000, CRC(439eb5a9) SHA1(8d6baad8a1e89279ef0a378941d3d9b49a606864) ) // both halves identical
+
+ ROM_REGION( 0x40000, "charset", 0 )
+ ROM_LOAD( "8.ic105", 0x00000, 0x10000, CRC(3cfc2960) SHA1(495aad53d00cf569094a5d8084a829d0647ba9dd) )
+ ROM_LOAD( "12.ic156", 0x10000, 0x10000, CRC(62476ba2) SHA1(5a025d11502f35896a40e33d7a487ed4c933135b) )
+ ROM_LOAD( "10.ic138", 0x20000, 0x10000, CRC(16df8be2) SHA1(3d5e63933dc151caca56536dce67407a8bacb761) )
+ ROM_LOAD( "14.ic188", 0x30000, 0x10000, CRC(f1803c03) SHA1(d6504db6d98d838025b6ba68d5b5b5e3999b1c13) )
+
+ ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) // chars
+ ROM_COPY( "charset", 0x00000, 0x00000, 0x8000 )
+ ROM_COPY( "charset", 0x10000, 0x08000, 0x8000 )
+ ROM_COPY( "charset", 0x20000, 0x10000, 0x8000 )
+ ROM_COPY( "charset", 0x30000, 0x18000, 0x8000 )
+
+ ROM_REGION( 0x20000, "gfx2", ROMREGION_INVERT ) // tiles
+ ROM_COPY( "charset", 0x08000, 0x00000, 0x8000 )
+ ROM_COPY( "charset", 0x18000, 0x08000, 0x8000 )
+ ROM_COPY( "charset", 0x28000, 0x10000, 0x8000 )
+ ROM_COPY( "charset", 0x38000, 0x18000, 0x8000 )
+
+ ROM_REGION( 0x40000, "gfx3", ROMREGION_INVERT ) // tiles
+ ROM_LOAD( "9.ic139", 0x00000, 0x10000, CRC(9e412267) SHA1(482cd6e772fa21f15db66c27acf85e8f97f7c5a5) )
+ ROM_LOAD( "11.ic157", 0x10000, 0x10000, CRC(e87650db) SHA1(381352428b12fd4a8cd13270009ff7602aa41a0b) )
+ ROM_LOAD( "7.ic106", 0x20000, 0x10000, CRC(6ad2e575) SHA1(b6b159cb36e222fe62fc10271602226f027440e4) )
+ ROM_LOAD( "13.ic189", 0x30000, 0x10000, CRC(e8601057) SHA1(fd73a36fb84049154248d250ffea68b1ee39a43f) )
+
+ ROM_REGION( 0x80000, "gfx4", 0 ) // sprites
+ ROM_LOAD( "20.ic176", 0x00000, 0x10000, CRC(447e4f0b) SHA1(97db103e505a6e11eb9bdb3622e4aa3b796a9714) )
+ ROM_LOAD( "19.ic177", 0x10000, 0x10000, CRC(d29bc22e) SHA1(ce0935d09f7e94fa32247c86e14a74b73514b29e) )
+ ROM_LOAD( "16.ic180", 0x20000, 0x10000, CRC(ff72b838) SHA1(fdc48ecdd2225fc69472313f34973f6add8fb558) )
+ ROM_LOAD( "15.ic181", 0x30000, 0x10000, CRC(54fcbc39) SHA1(293a6799193b01424c3eac86cf90cc023aa771db) )
+ ROM_LOAD( "22.ic174", 0x40000, 0x10000, CRC(d234cae5) SHA1(0cd07bf087a4da19a5da29785385de9eee52d0fb) )
+ ROM_LOAD( "21.ic175", 0x50000, 0x10000, CRC(dc6a38df) SHA1(9043df911389d3f085299f2f2202cab356473a32) )
+ ROM_LOAD( "18.ic178", 0x60000, 0x10000, CRC(4f989f00) SHA1(ae7ae6e62e6a516ae3c8ebbeb5e39887c1961add) )
+ ROM_LOAD( "17.ic179", 0x70000, 0x10000, CRC(f61972c8) SHA1(fa9ddca3473091b4879171d8f3b302e8f2b45149) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "gal16v8.ic43", 0x0000, 0x0117, CRC(01cdc0bf) SHA1(df47ba4b3d0cf1b3acef2c4a7ba3bd1433aa9bf3) ) // brute-forced
+ ROM_LOAD( "gal16v8.ic48", 0x0200, 0x0117, CRC(cfb99386) SHA1(62f6befd34de85bbc76f3f115593ec72c7474303) ) // brute-forced
+ ROM_LOAD( "gal16v8.ic141", 0x0400, 0x0117, NO_DUMP ) // registered
ROM_END
@@ -4136,3 +4188,4 @@ GAME( 1988, drgninjab2, baddudes, drgninjab, drgninja, dec0_state, init_drgni
// these are different to the above but quite similar to each other
GAME( 1988, automat, robocop, automat, robocop, dec0_automat_state, empty_init, ROT0, "bootleg", "Automat (bootleg of Robocop)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM?
GAME( 1989, secretab, secretag, secretab, slyspy, dec0_automat_state, empty_init, ROT0, "bootleg", "Secret Agent (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mastbond, secretag, secretab, slyspy, dec0_automat_state, empty_init, ROT0, "bootleg", "Master Bond (bootleg of Secret Agent)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp
index cab55d89fb8..07715ac1191 100644
--- a/src/mame/drivers/fitfight.cpp
+++ b/src/mame/drivers/fitfight.cpp
@@ -3,16 +3,16 @@
/* Fit of Fighting / The History of Martial Arts / 'BB' */
/* NIX or Novatecnia (both spanish) may have produced these
- its probably NIX due to somes similarities with Pirates
+ its probably NIX due to some similarities with Pirates
Supported Games Rip-off of
- Fit of Fighting Art of Fighting (neogeo.c)
- The History of Martial Arts Fighter's History (deco32.c)
+ Fit of Fighting Art of Fighting (neogeo.cpp)
+ The History of Martial Arts Fighter's History (deco32.cpp)
'BB' Untitled Prototype -none, original-
'BB' Prototype isn't a game as such, 'BB' was the label on
- the prototype board. which appears to have been used simply
+ the prototype board, which appears to have been used simply
for testings / practice. There is no 'game' to it, no
title screen, simply 3 characters, 1 portrait, 1 background,
the characters don't appear to have any moves other than
@@ -42,7 +42,7 @@ todo:
fix scrolling
sound
-fix s7prite colour problems.
+fix sprite colour problems.
should these be considered clones or not since the game has
been rewritten, they just use the gfx ...
@@ -148,7 +148,7 @@ void fitfight_state::fitfight_main_map(address_map &map)
// @0x000031ae/0x00002b3a: 0xF000, once, during POST
// 0xe001ae/0xe00096 holds the address (0x600000), 0xe001b2/0xe0009a holds the word to output
// @0x00003294/0x00002c1a: word content of 0xe001b2
- // @0x000032cc/?: 0xF0dd byte from 0xe001b5, dd seems to be allways 0xFD
+ // @0x000032cc/?: 0xF0dd byte from 0xe001b5, dd seems to be always 0xFD
// @0x000036bc/?: 0xF0FD when inserting coin
// @0x000037a6/0x000030e6: 0x??dd byte from 0xe08c05, 0xF101 then 0xF001/0xF157 then 0xF057
@@ -780,8 +780,8 @@ void fitfight_state::bbprot(machine_config &config)
Here's the info about this dump:
Name: Fit of Fighting
-Manufacturer: Unknow (There are chances that was produced by NIX, but it's not possible to verify)
-Year: Unknow
+Manufacturer: Unknown (There are chances that was produced by NIX, but it's not possible to verify)
+Year: Unknown
Date Dumped: 16-07-2002 (DD-MM-YYYY)
CPU: 68000, possibly at 12mhz
@@ -833,8 +833,8 @@ ROM_END
/***
Name: The History of Martial Arts
-Manufacturer: Unknow, maybe NIX / Novatecnia
-Year: Unknow
+Manufacturer: Unknown, maybe NIX / Novatecnia
+Year: Unknown
Date Dumped: 18-07-2002 (DD-MM-YYYY)
CPU: 68000
@@ -845,9 +845,9 @@ Country: Maybe Spain
About the game:
-This is a Karnov's revenge ripp off like Fit of Fighting with Art of Fighting.
+This is a Karnov's revenge rip-off like Fit of Fighting with Art of Fighting.
Same GFX, but reprogrammed from 0, and with FM music... Another nice bootleg!
-It was dumped from a faulty board, wich doesn't boot, but with intact eproms :)
+It was dumped from a faulty board, which doesn't boot, but with intact eproms :)
***/
@@ -884,13 +884,46 @@ ROM_START( histryma )
ROM_LOAD( "s8h_th.bin", 0x080000, 0x080000, CRC(cd7bd0de) SHA1(2cd0f41e2575e667aa971f2f5716694dee203ab3) )
ROM_END
+ROM_START( histryma2 ) // only the program ROMs were dumped (no PCB available, only those 2 loose ROMs), so the rest are marked as BAD_DUMP even if they could be correct
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "27c4001.5", 0x000001, 0x080000, CRC(9479f8b9) SHA1(576ad1394212ae46c728150a1fe304518360fd69) )
+ ROM_LOAD16_BYTE( "27c4001.4", 0x000000, 0x080000, CRC(268f3648) SHA1(5defd9cae46384774b919894643a959b414b0d57) )
+
+ ROM_REGION( 0x01c000, "audiocpu", 0 )
+ ROM_LOAD( "y61f.bin", 0x000000, 0x004000, BAD_DUMP CRC(b588525a) SHA1(b768bd75d6351430f9656289146119e9c0308554) )
+ ROM_CONTINUE( 0x010000, 0x00c000 )
+
+ ROM_REGION( 0x100000, "oki", 0 ) // OKI Samples?
+ ROM_LOAD( "u7_th.bin", 0x000000, 0x080000, BAD_DUMP CRC(88b41ef5) SHA1(565e2c4554dde79cd2da8b8a181b3378818223cc) ) //seems to be a merge of 2 0x040000 roms
+ ROM_LOAD( "u18_th.bin", 0x080000, 0x080000, BAD_DUMP CRC(a734cd77) SHA1(3fe4cba6f6d691dfc4775de634e6e39bf4bb08b8) ) //seems to be a merge of 2 0x040000 roms
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD( "p1_th.bin", 0x0c0000, 0x040000, BAD_DUMP CRC(501c5336) SHA1(1743221d73d59ba40ddad3f69bc4aa1a51c29962) )
+ ROM_LOAD( "p2_th.bin", 0x080000, 0x040000, BAD_DUMP CRC(f50666c7) SHA1(46856e70426388c9704eed94d4dbbbe5674b9be6) )
+ ROM_LOAD( "p4_th.bin", 0x040000, 0x040000, BAD_DUMP CRC(c70223cf) SHA1(d3ee1b73a22a0aaab909141b32696c6b48f2b7ee) )
+ ROM_LOAD( "p8_th.bin", 0x000000, 0x040000, BAD_DUMP CRC(8104b963) SHA1(ed02c3be16b8e94d9316391fe0f9fcf39679c1de) )
+
+ ROM_REGION( 0x400000, "gfx2", 0 ) // Sprites
+ ROM_LOAD( "s1_th.bin", 0x300000, 0x080000, BAD_DUMP CRC(e9c2d27a) SHA1(f47cc318f4a3db84858b4d302be4063f3bb1b071) )
+ ROM_LOAD( "s1h_th.bin", 0x380000, 0x080000, BAD_DUMP CRC(d806c92e) SHA1(4781dd08755cd91f3d09ff418a9d13744d888922) )
+
+ ROM_LOAD( "s2_th.bin", 0x200000, 0x080000, BAD_DUMP CRC(fa011056) SHA1(8f896d248c74faae5f320e0ef1730681fb7af57b) )
+ ROM_LOAD( "s2h_th.bin", 0x280000, 0x080000, BAD_DUMP CRC(ef5f2268) SHA1(d2f13e6a393256cba24a70f1f85c7aeec93d0c51) )
+
+ ROM_LOAD( "s4_th.bin", 0x100000, 0x080000, BAD_DUMP CRC(fa80fdec) SHA1(590dd27d727d1910b5935dbcb8f958c435b6077a) )
+ ROM_LOAD( "s4h_th.bin", 0x180000, 0x080000, BAD_DUMP CRC(0fd3b43e) SHA1(971e8813e3a3d7735a96f31d557c28b9bbcf91d1) )
+
+ ROM_LOAD( "s8_th.bin", 0x000000, 0x080000, BAD_DUMP CRC(57fd170f) SHA1(2b8cc688de894bbb7d44f9458b3d012a64f79b20) )
+ ROM_LOAD( "s8h_th.bin", 0x080000, 0x080000, BAD_DUMP CRC(cd7bd0de) SHA1(2cd0f41e2575e667aa971f2f5716694dee203ab3) )
+ROM_END
+
/***
Here's the info about this dump:
Name: "BB" (Protoype name in some of the EPROM stickers)
-Manufacturer: Unknow (There are chances that was produced by NIX, but it's not possible to verify, same as Fit of Fighting )
-Year: Unknow
+Manufacturer: Unknown (There are chances that was produced by NIX, but it's not possible to verify, same as Fit of Fighting )
+Year: Unknown
Date Dumped: 17-07-2002 (DD-MM-YYYY)
CPU: 68000, possibly at 12mhz
@@ -909,7 +942,7 @@ dramatically lame fight)... Character selection just shows garbage, maybe stage
selection shows rubbish, and the game itself is all the time displaying a lot of
garbage.. But this is VERY nice! :) The most funny thing about this game is that
the three visible fighter characters can be based on some of the NIX workers, but
-i really can't verify this :)
+I really can't verify this :)
Some of the eproms seem to be two times inserted in different slots of the board,
but with a different date wrote on the stickers, those are the ??_DD_MM.bin files.
@@ -1010,7 +1043,8 @@ void fitfight_state::init_hotmindff()
/* GAME */
-GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, init_fitfight, ROT0, "bootleg", "Fit of Fighting", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, init_histryma, ROT0, "bootleg", "The History of Martial Arts", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, init_bbprot, ROT0, "<unknown>", "unknown fighting game 'BB' (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, init_hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // need to fix scroll offsets + inputs
+GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, init_fitfight, ROT0, "bootleg", "Fit of Fighting", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, init_histryma, ROT0, "bootleg", "The History of Martial Arts (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, histryma2, histryma, fitfight, histryma, fitfight_state, init_histryma, ROT0, "bootleg", "The History of Martial Arts (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, init_bbprot, ROT0, "<unknown>", "unknown fighting game 'BB' (prototype)", MACHINE_IS_INCOMPLETE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, init_hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // need to fix scroll offsets + inputs
diff --git a/src/mame/drivers/gaelco3d.cpp b/src/mame/drivers/gaelco3d.cpp
index d9e0566a658..36c1b343066 100644
--- a/src/mame/drivers/gaelco3d.cpp
+++ b/src/mame/drivers/gaelco3d.cpp
@@ -174,7 +174,7 @@ WRITE_LINE_MEMBER(gaelco3d_state::ser_irq)
void gaelco3d_state::machine_start()
{
- /* Save state support */
+ // Save state support
save_item(NAME(m_sound_status));
save_item(NAME(m_analog_ports));
save_item(NAME(m_framenum));
@@ -193,7 +193,7 @@ MACHINE_RESET_MEMBER(gaelco3d_state,common)
{
m_framenum = 0;
- /* boot the ADSP chip */
+ // Boot the ADSP chip
uint16_t *src = (uint16_t *)memregion("user1")->base();
for (int i = 0; i < (src[3] & 0xff) * 8; i++)
{
@@ -204,7 +204,7 @@ MACHINE_RESET_MEMBER(gaelco3d_state,common)
m_adsp_bank->configure_entries(0, 256, memregion("user1")->base(), 0x4000);
m_adsp_bank->set_entry(0);
- /* keep the TMS32031 halted until the code is ready to go */
+ // Keep the TMS32031 halted until the code is ready to go
m_tms->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
}
@@ -259,8 +259,8 @@ uint16_t gaelco3d_state::eeprom_data_r(offs_t offset, uint16_t mem_mask)
if (ACCESSING_BITS_0_7)
{
- /* bit 0 is clock */
- /* bit 1 active */
+ // bit 0 is clock
+ // bit 1 active
result &= ~uint32_t(gaelco_serial_device::EXT_STATUS_MASK);
result |= m_serial->status_r();
}
@@ -314,7 +314,7 @@ READ_LINE_MEMBER(gaelco3d_state::analog_bit_r)
WRITE_LINE_MEMBER(gaelco3d_state::analog_port_clock_w)
{
- /* a zero/one combo is written here to clock the next analog port bit */
+ // A zero/one combo is written here to clock the next analog port bit
if (!state)
{
m_analog_ports[0] <<= 1;
@@ -327,7 +327,7 @@ WRITE_LINE_MEMBER(gaelco3d_state::analog_port_clock_w)
WRITE_LINE_MEMBER(gaelco3d_state::analog_port_latch_w)
{
- /* a zero is written here to read the analog ports, and a one is written when finished */
+ // A zero is written here to read the analog ports, and a one is written when finished
if (!state)
{
m_analog_ports[0] = m_analog[0].read_safe(0);
@@ -405,8 +405,8 @@ void gaelco3d_state::tms_iack_w(offs_t offset, uint8_t data)
WRITE_LINE_MEMBER(gaelco3d_state::tms_reset_w)
{
- /* this is set to 0 while data is uploaded, then set to $ffff after it is done */
- /* it does not ever appear to be touched after that */
+ /* this is set to 0 while data is uploaded, then set to $ffff after it is done.
+ It does not ever appear to be touched after that */
if (LOG)
logerror("%06X:tms_reset_w = %d\n", m_maincpu->pc(), state);
m_tms->set_input_line(INPUT_LINE_RESET, state ? CLEAR_LINE : ASSERT_LINE);
@@ -415,8 +415,8 @@ WRITE_LINE_MEMBER(gaelco3d_state::tms_reset_w)
WRITE_LINE_MEMBER(gaelco3d_state::tms_irq_w)
{
- /* this is written twice, 0,1, in quick succession */
- /* done after uploading, and after modifying the comm area */
+ /* This is written twice, 0,1, in quick succession.
+ Done after uploading, and after modifying the comm area */
if (LOG)
logerror("%06X:tms_irq_w = %d\n", m_maincpu->pc(), state);
m_tms->set_input_line(0, state ? CLEAR_LINE : ASSERT_LINE);
@@ -435,7 +435,7 @@ WRITE_LINE_MEMBER(gaelco3d_state::tms_control3_w)
*
*************************************/
-/* These are some of the control registers. We don't use them all */
+// These are some of the control registers. We don't use them all
enum
{
S1_AUTOBUF_REG = 15,
@@ -475,7 +475,7 @@ void gaelco3d_state::adsp_control_w(offs_t offset, uint16_t data)
switch (offset)
{
case SYSCONTROL_REG:
- /* see if SPORT1 got disabled */
+ // See if SPORT1 got disabled
if ((data & 0x0800) == 0)
{
for (uint8_t i = 0; i < SOUND_CHANNELS; i++)
@@ -486,7 +486,7 @@ void gaelco3d_state::adsp_control_w(offs_t offset, uint16_t data)
break;
case S1_AUTOBUF_REG:
- /* autobuffer off: nuke the timer, and disable the DAC */
+ // Autobuffer off: nuke the timer, and disable the DAC
if ((data & 0x0002) == 0)
{
for (uint8_t i = 0; i < SOUND_CHANNELS; i++)
@@ -523,10 +523,10 @@ void gaelco3d_state::adsp_rombank_w(offs_t offset, uint16_t data)
TIMER_DEVICE_CALLBACK_MEMBER(gaelco3d_state::adsp_autobuffer_irq)
{
- /* get the index register */
+ // Get the index register
int reg = m_adsp->state_int(ADSP2100_I0 + m_adsp_ireg);
- /* copy the current data into the buffer */
+ // Copy the current data into the buffer
// logerror("ADSP buffer: I%d=%04X incs=%04X size=%04X\n", m_adsp_ireg, reg, m_adsp_incs, m_adsp_size);
if (m_adsp_incs)
{
@@ -534,66 +534,66 @@ TIMER_DEVICE_CALLBACK_MEMBER(gaelco3d_state::adsp_autobuffer_irq)
m_dmadac[i]->transfer(i, m_adsp_incs, SOUND_CHANNELS * m_adsp_incs, m_adsp_size / (SOUND_CHANNELS * m_adsp_incs), (int16_t *)&m_adsp_fastram_base[reg - 0x3800]);
}
- /* increment it */
+ // Increment it
reg += m_adsp_size;
- /* check for wrapping */
+ // Check for wrapping
if (reg >= m_adsp_ireg_base + m_adsp_size)
{
- /* reset the base pointer */
+ // Reset the base pointer
reg = m_adsp_ireg_base;
- /* generate the (internal, thats why the pulse) irq */
+ // Generate the (internal, thats why the pulse) IRQ
m_adsp->pulse_input_line(ADSP2105_IRQ1, m_adsp->minimum_quantum_time());
}
- /* store it */
+ // Store it
m_adsp->set_state_int(ADSP2100_I0 + m_adsp_ireg, reg);
}
void gaelco3d_state::adsp_tx_callback(offs_t offset, uint32_t data)
{
- /* check if it's for SPORT1 */
+ // Check if it's for SPORT1
if (offset != 1)
return;
- /* check if SPORT1 is enabled */
- if (m_adsp_control_regs[SYSCONTROL_REG] & 0x0800) /* bit 11 */
+ // Check if SPORT1 is enabled
+ if (m_adsp_control_regs[SYSCONTROL_REG] & 0x0800) // bit 11
{
- /* we only support autobuffer here (which is what this thing uses), bail if not enabled */
- if (m_adsp_control_regs[S1_AUTOBUF_REG] & 0x0002) /* bit 1 */
+ // We only support autobuffer here (which is what this thing uses), bail if not enabled
+ if (m_adsp_control_regs[S1_AUTOBUF_REG] & 0x0002) // bit 1
{
- /* get the autobuffer registers */
+ // Get the autobuffer registers
int mreg, lreg;
uint16_t source;
attotime sample_period;
m_adsp_ireg = (m_adsp_control_regs[S1_AUTOBUF_REG] >> 9) & 7;
mreg = (m_adsp_control_regs[S1_AUTOBUF_REG] >> 7) & 3;
- mreg |= m_adsp_ireg & 0x04; /* msb comes from ireg */
+ mreg |= m_adsp_ireg & 0x04; // msb comes from ireg
lreg = m_adsp_ireg;
- /* now get the register contents in a more legible format */
- /* we depend on register indexes to be continuous (which is the case in our core) */
+ /* Now get the register contents in a more legible format.
+ We depend on register indexes to be continuous (which is the case in our core) */
source = m_adsp->state_int(ADSP2100_I0 + m_adsp_ireg);
m_adsp_incs = m_adsp->state_int(ADSP2100_M0 + mreg);
m_adsp_size = m_adsp->state_int(ADSP2100_L0 + lreg);
- /* get the base value, since we need to keep it around for wrapping */
+ // Get the base value, since we need to keep it around for wrapping
source -= m_adsp_incs;
- /* make it go back one so we don't lose the first sample */
+ // Make it go back one so we don't lose the first sample
m_adsp->set_state_int(ADSP2100_I0 + m_adsp_ireg, source);
- /* save it as it is now */
+ // Save it as it is now
m_adsp_ireg_base = source;
- /* calculate how long until we generate an interrupt */
+ // Calculate how long until we generate an interrupt
- /* period per each bit sent */
+ // Period per each bit sent
sample_period = attotime::from_hz(m_adsp->clock()) * (2 * (m_adsp_control_regs[S1_SCLKDIV_REG] + 1));
- /* now put it down to samples, so we know what the channel frequency has to be */
+ // Now put it down to samples, so we know what the channel frequency has to be
sample_period *= 16 * SOUND_CHANNELS;
for (uint8_t i = 0; i < SOUND_CHANNELS; i++)
@@ -602,7 +602,7 @@ void gaelco3d_state::adsp_tx_callback(offs_t offset, uint32_t data)
m_dmadac[i]->enable(1);
}
- /* fire off a timer which will hit every half-buffer */
+ // Fire off a timer which will hit every half-buffer
sample_period = (sample_period * m_adsp_size) / (SOUND_CHANNELS * m_adsp_incs);
m_adsp_autobuffer_timer->adjust(sample_period, 0, sample_period);
@@ -613,11 +613,11 @@ void gaelco3d_state::adsp_tx_callback(offs_t offset, uint32_t data)
logerror( "ADSP SPORT1: trying to transmit and autobuffer not enabled!\n" );
}
- /* if we get there, something went wrong. Disable playing */
+ // If we get there, something went wrong. Disable playing
for (uint8_t i = 0; i < SOUND_CHANNELS; i++)
m_dmadac[i]->enable(0);
- /* remove timer */
+ // Remove timer
m_adsp_autobuffer_timer->reset();
}
@@ -632,19 +632,19 @@ void gaelco3d_state::adsp_tx_callback(offs_t offset, uint32_t data)
WRITE_LINE_MEMBER(gaelco3d_state::radikalb_lamp_w)
{
- /* arbitrary data written */
+ // Arbitrary data written
logerror("%06X:unknown_127_w = %d\n", m_maincpu->pc(), state);
}
WRITE_LINE_MEMBER(gaelco3d_state::unknown_137_w)
{
- /* only written $00 or $ff */
+ // Only written $00 or $ff
logerror("%06X:unknown_137_w = %d\n", m_maincpu->pc(), state);
}
WRITE_LINE_MEMBER(gaelco3d_state::unknown_13a_w)
{
- /* only written $0000 or $0001 */
+ // Only written $0000 or $0001
logerror("%06X:unknown_13a_w = %04X\n", m_maincpu->pc(), state);
}
@@ -704,8 +704,8 @@ void gaelco3d_state::tms_map(address_map &map)
void gaelco3d_state::adsp_program_map(address_map &map)
{
- map(0x0000, 0x03ff).ram().share("adsp_ram_base"); /* 1k words internal RAM */
- map(0x37ff, 0x37ff).nopr(); /* speedup hammers this for no apparent reason */
+ map(0x0000, 0x03ff).ram().share("adsp_ram_base"); // 1k words internal RAM
+ map(0x37ff, 0x37ff).nopr(); // speedup hammers this for no apparent reason
}
void gaelco3d_state::adsp_data_map(address_map &map)
@@ -714,7 +714,7 @@ void gaelco3d_state::adsp_data_map(address_map &map)
map(0x0000, 0x1fff).bankr("adspbank");
map(0x2000, 0x2000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).umask16(0x00ff);
map(0x2000, 0x2000).w(FUNC(gaelco3d_state::sound_status_w));
- map(0x3800, 0x39ff).ram().share("adsp_fastram"); /* 512 words internal RAM */
+ map(0x3800, 0x39ff).ram().share("adsp_fastram"); // 512 words internal RAM
map(0x3fe0, 0x3fff).w(FUNC(gaelco3d_state::adsp_control_w)).share("adsp_regs");
}
@@ -899,7 +899,7 @@ INPUT_PORTS_END
void gaelco3d_state::gaelco3d(machine_config &config)
{
- /* basic machine hardware */
+ // Basic machine hardware
M68000(config, m_maincpu, 15000000);
m_maincpu->set_addrmap(AS_PROGRAM, &gaelco3d_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(gaelco3d_state::vblank_gen));
@@ -944,10 +944,10 @@ void gaelco3d_state::gaelco3d(machine_config &config)
GENERIC_LATCH_8(config, m_soundlatch).data_pending_callback().set_inputline(m_adsp, ADSP2115_IRQ2);
- /* video hardware */
+ // Video hardware
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
- m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // Not accurate
m_screen->set_size(576, 432);
m_screen->set_visarea(0, 575, 0, 431);
m_screen->set_screen_update(FUNC(gaelco3d_state::screen_update));
@@ -955,7 +955,7 @@ void gaelco3d_state::gaelco3d(machine_config &config)
PALETTE(config, "palette", palette_device::RGB_555);
- /* sound hardware */
+ // Sound hardware
SPEAKER(config, "mono").front_center();
DMADAC(config, m_dmadac[0]).add_route(ALL_OUTPUTS, "mono", 1.0); // speedup: front mono
@@ -969,7 +969,7 @@ void gaelco3d_state::gaelco3d2(machine_config &config)
{
gaelco3d(config);
- /* basic machine hardware */
+ // Basic machine hardware
M68EC020(config.replace(), m_maincpu, 25000000);
m_maincpu->set_addrmap(AS_PROGRAM, &gaelco3d_state::main020_map);
m_maincpu->set_vblank_int("screen", FUNC(gaelco3d_state::vblank_gen));
@@ -993,11 +993,37 @@ void gaelco3d_state::footbpow(machine_config &config)
*************************************/
ROM_START( speedup )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "sup_10_2.2.ic10", 0x000000, 0x80000, CRC(ee781e64) SHA1(d90fa9319982fa389c2032e13d59850971078006) )
+ ROM_LOAD16_BYTE( "sup_15_2.2.ic15", 0x000001, 0x80000, CRC(1b8ff9d2) SHA1(4939b45844de962d2b93be058b44c09e366cf8db) )
+
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
+ ROM_LOAD( "sup25.bin", 0x0000000, 0x400000, CRC(284c7cd1) SHA1(58fbe73195aac9808a347c543423593e17ad3a10) )
+
+ ROM_REGION32_LE( 0x1000000, "user2", 0 )
+ ROM_LOAD32_WORD( "sup32.bin", 0x000000, 0x200000, CRC(aed151de) SHA1(a139d4451d3758aa70621a25289d64c98c26d5c0) )
+ ROM_LOAD32_WORD( "sup33.bin", 0x000002, 0x200000, CRC(9be6ab7d) SHA1(8bb07f2a096d1f8989a5a409f87b35b7d771de88) )
+
+ ROM_REGION( 0x1000000, "gfx1", 0 )
+ ROM_LOAD( "sup12.bin", 0x0000000, 0x400000, CRC(311f3247) SHA1(95014ea177011521a01df85fb511e5e6673dbdcb) )
+ ROM_LOAD( "sup14.bin", 0x0400000, 0x400000, CRC(3ad3c089) SHA1(1bd577679ed436251995a100aece2c26c0214fd8) )
+ ROM_LOAD( "sup11.bin", 0x0800000, 0x400000, CRC(b993e65a) SHA1(b95bd4c1eac7fba1d2429250446b58f741350bb3) )
+ ROM_LOAD( "sup13.bin", 0x0c00000, 0x400000, CRC(ad00023c) SHA1(9d7cce280fff38d7e0dac21e7a1774809d9758bd) )
+
+ ROM_REGION( 0x0080000, "gfx2", 0 )
+ ROM_LOAD( "ic35.bin", 0x0000000, 0x020000, CRC(34737d1d) SHA1(e9109a88e211aa49851e72a6fa3417f1cad1cb8b) )
+ ROM_LOAD( "ic34.bin", 0x0020000, 0x020000, CRC(e89e829b) SHA1(50c99bd9667d78a61252eaad5281a2e7f57be85a) )
+ // These 2 are copies of the previous 2
+// ROM_LOAD( "ic43.bin", 0x0000000, 0x020000, CRC(34737d1d) SHA1(e9109a88e211aa49851e72a6fa3417f1cad1cb8b) )
+// ROM_LOAD( "ic42.bin", 0x0020000, 0x020000, CRC(e89e829b) SHA1(50c99bd9667d78a61252eaad5281a2e7f57be85a) )
+ROM_END
+
+ROM_START( speedup12 )
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "sup10.bin", 0x000000, 0x80000, CRC(07e70bae) SHA1(17013d859ec075e12518b094040a056d850b3271) )
ROM_LOAD16_BYTE( "sup15.bin", 0x000001, 0x80000, CRC(7947c28d) SHA1(46efb56d0f7fe2e92d0d04dcd2f130aef3be436d) )
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
ROM_LOAD( "sup25.bin", 0x0000000, 0x400000, CRC(284c7cd1) SHA1(58fbe73195aac9808a347c543423593e17ad3a10) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1013,17 +1039,17 @@ ROM_START( speedup )
ROM_REGION( 0x0080000, "gfx2", 0 )
ROM_LOAD( "ic35.bin", 0x0000000, 0x020000, CRC(34737d1d) SHA1(e9109a88e211aa49851e72a6fa3417f1cad1cb8b) )
ROM_LOAD( "ic34.bin", 0x0020000, 0x020000, CRC(e89e829b) SHA1(50c99bd9667d78a61252eaad5281a2e7f57be85a) )
- /* these 2 are copies of the previous 2 */
+ // These 2 are copies of the previous 2
// ROM_LOAD( "ic43.bin", 0x0000000, 0x020000, CRC(34737d1d) SHA1(e9109a88e211aa49851e72a6fa3417f1cad1cb8b) )
// ROM_LOAD( "ic42.bin", 0x0020000, 0x020000, CRC(e89e829b) SHA1(50c99bd9667d78a61252eaad5281a2e7f57be85a) )
ROM_END
ROM_START( speedup10 )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "ic10_1.00", 0x000000, 0x80000, CRC(24ed8f48) SHA1(59d59e2a0b2fb7aed5320167960129819adedd9a) ) /* hand written labels IC10 1.00 */
- ROM_LOAD16_BYTE( "ic15_1.00", 0x000001, 0x80000, CRC(b3fda7f1) SHA1(e77ef3cb46be0767476f65dcc8d4fc12550be4a3) ) /* hand written labels IC50 1.00 */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 code
+ ROM_LOAD16_BYTE( "ic10_1.00", 0x000000, 0x80000, CRC(24ed8f48) SHA1(59d59e2a0b2fb7aed5320167960129819adedd9a) ) // Handwritten labels IC10 1.00
+ ROM_LOAD16_BYTE( "ic15_1.00", 0x000001, 0x80000, CRC(b3fda7f1) SHA1(e77ef3cb46be0767476f65dcc8d4fc12550be4a3) ) // Handwritten labels IC50 1.00
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
ROM_LOAD( "sup25.bin", 0x0000000, 0x400000, CRC(284c7cd1) SHA1(58fbe73195aac9808a347c543423593e17ad3a10) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1039,20 +1065,20 @@ ROM_START( speedup10 )
ROM_REGION( 0x0080000, "gfx2", 0 )
ROM_LOAD( "ic35.bin", 0x0000000, 0x020000, CRC(34737d1d) SHA1(e9109a88e211aa49851e72a6fa3417f1cad1cb8b) )
ROM_LOAD( "ic34.bin", 0x0020000, 0x020000, CRC(e89e829b) SHA1(50c99bd9667d78a61252eaad5281a2e7f57be85a) )
- /* these 2 are copies of the previous 2 */
+ // These 2 are copies of the previous 2
// ROM_LOAD( "ic43.bin", 0x0000000, 0x020000, CRC(34737d1d) SHA1(e9109a88e211aa49851e72a6fa3417f1cad1cb8b) )
// ROM_LOAD( "ic42.bin", 0x0020000, 0x020000, CRC(e89e829b) SHA1(50c99bd9667d78a61252eaad5281a2e7f57be85a) )
ROM_END
ROM_START( surfplnt )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "surfplnt.u5", 0x000000, 0x80000, CRC(c96e0a18) SHA1(b313d02d1d1bff8717b3d798e6ae681baefc1061) )
ROM_LOAD16_BYTE( "surfplnt.u11", 0x000001, 0x80000, CRC(99211d2d) SHA1(dee5b157489ce9c6988c8eec92fa91fff60d521c) )
ROM_LOAD16_BYTE( "surfplnt.u8", 0x100000, 0x80000, CRC(aef9e1d0) SHA1(15258e62fbf61e21e7d77aa7a81fdbf842fd4560) )
ROM_LOAD16_BYTE( "surfplnt.u13", 0x100001, 0x80000, CRC(d9754369) SHA1(0d82569cb925402a9f4634e52f15435112ec4878) )
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
ROM_LOAD( "pls.18", 0x0000000, 0x400000, CRC(a1b64695) SHA1(7487cd51305e30a5b55aada0bae9161fcb3fcd19) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1070,7 +1096,7 @@ ROM_START( surfplnt )
ROM_LOAD( "surfplnt.u20", 0x0020000, 0x020000, CRC(fb293318) SHA1(d255fe3db1b91ec7cc744b0158e70503bca5ceab) )
ROM_LOAD( "surfplnt.u21", 0x0040000, 0x020000, CRC(b80611fb) SHA1(70d6767ddfb04e94cf2796e3f7090f89fd36fe8c) )
ROM_LOAD( "surfplnt.u22", 0x0060000, 0x020000, CRC(ccf88f7e) SHA1(c6a3bb9d6cf14a93a36ed20a47b7c068ccd630aa) )
- /* these 4 are copies of the previous 4 */
+ // These 4 are copies of the previous 4
// ROM_LOAD( "surfplnt.u27", 0x0000000, 0x020000, CRC(691bd7a7) SHA1(2ff404b3974a64097372ed15fb5fbbe52c503265) )
// ROM_LOAD( "surfplnt.u28", 0x0020000, 0x020000, CRC(fb293318) SHA1(d255fe3db1b91ec7cc744b0158e70503bca5ceab) )
// ROM_LOAD( "surfplnt.u29", 0x0040000, 0x020000, CRC(b80611fb) SHA1(70d6767ddfb04e94cf2796e3f7090f89fd36fe8c) )
@@ -1078,13 +1104,13 @@ ROM_START( surfplnt )
ROM_END
ROM_START( surfplnt40 )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68000 code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68000 code
ROM_LOAD16_BYTE( "surfpl40.u5", 0x000000, 0x80000, CRC(572e0343) SHA1(badb08a5a495611b5fd2d821d4299348b2c9f308) )
ROM_LOAD16_BYTE( "surfpl40.u11", 0x000001, 0x80000, CRC(6056edaa) SHA1(9bc2df54d1367b9d58272a8f506e523e74110361) )
ROM_LOAD16_BYTE( "surfplnt.u8", 0x100000, 0x80000, CRC(aef9e1d0) SHA1(15258e62fbf61e21e7d77aa7a81fdbf842fd4560) )
ROM_LOAD16_BYTE( "surfplnt.u13", 0x100001, 0x80000, CRC(d9754369) SHA1(0d82569cb925402a9f4634e52f15435112ec4878) )
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
ROM_LOAD( "pls.18", 0x0000000, 0x400000, CRC(a1b64695) SHA1(7487cd51305e30a5b55aada0bae9161fcb3fcd19) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1102,7 +1128,7 @@ ROM_START( surfplnt40 )
ROM_LOAD( "surfplnt.u20", 0x0020000, 0x020000, CRC(fb293318) SHA1(d255fe3db1b91ec7cc744b0158e70503bca5ceab) )
ROM_LOAD( "surfplnt.u21", 0x0040000, 0x020000, CRC(b80611fb) SHA1(70d6767ddfb04e94cf2796e3f7090f89fd36fe8c) )
ROM_LOAD( "surfplnt.u22", 0x0060000, 0x020000, CRC(ccf88f7e) SHA1(c6a3bb9d6cf14a93a36ed20a47b7c068ccd630aa) )
- /* these 4 are copies of the previous 4 */
+ // These 4 are copies of the previous 4
// ROM_LOAD( "surfplnt.u27", 0x0000000, 0x020000, CRC(691bd7a7) SHA1(2ff404b3974a64097372ed15fb5fbbe52c503265) )
// ROM_LOAD( "surfplnt.u28", 0x0020000, 0x020000, CRC(fb293318) SHA1(d255fe3db1b91ec7cc744b0158e70503bca5ceab) )
// ROM_LOAD( "surfplnt.u29", 0x0040000, 0x020000, CRC(b80611fb) SHA1(70d6767ddfb04e94cf2796e3f7090f89fd36fe8c) )
@@ -1111,13 +1137,13 @@ ROM_END
ROM_START( radikalb )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68020 code
ROM_LOAD32_BYTE( "rab.6", 0x000000, 0x80000, CRC(ccac98c5) SHA1(43a30caf9880f48aba79676f9e746fdc6258139d) )
ROM_LOAD32_BYTE( "rab.12", 0x000001, 0x80000, CRC(26199506) SHA1(1b7b44895aa296eab8061ae85cbb5b0d30119dc7) )
ROM_LOAD32_BYTE( "rab.14", 0x000002, 0x80000, CRC(4a0ac8cb) SHA1(4883e5eddb833dcd39376be435aa8e8e2ec47ab5) )
ROM_LOAD32_BYTE( "rab19.ic19", 0x000003, 0x80000, CRC(c2d4fcb2) SHA1(8e389d1479ba084e5363aef9c797c65ca7f355d2) )
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data */
ROM_LOAD( "rab.23", 0x0000000, 0x400000, CRC(dcf52520) SHA1(ab54421c182436660d2a56a334c1aa335424644a) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1140,7 +1166,7 @@ ROM_START( radikalb )
ROM_LOAD( "rab.25", 0x0020000, 0x020000, CRC(777758e3) SHA1(bd334b1ba46189ac8509eee3a4ab295c121400fd) )
ROM_LOAD( "rab.26", 0x0040000, 0x020000, CRC(bd9c1b54) SHA1(c9ef679cf7eca9ed315ea62a7ada452bc85f7a6a) )
ROM_LOAD( "rab.27", 0x0060000, 0x020000, CRC(bbcf6977) SHA1(0282c8ba79c35ed1240711d5812bfb590d151738) )
- /* these 4 are copies of the previous 4 */
+ // These 4 are copies of the previous 4
// ROM_LOAD( "rab.32", 0x0000000, 0x020000, CRC(2984bc1d) SHA1(1f62bdaa86feeff96640e325f8241b9c5f383a44) )
// ROM_LOAD( "rab.33", 0x0020000, 0x020000, CRC(777758e3) SHA1(bd334b1ba46189ac8509eee3a4ab295c121400fd) )
// ROM_LOAD( "rab.34", 0x0040000, 0x020000, CRC(bd9c1b54) SHA1(c9ef679cf7eca9ed315ea62a7ada452bc85f7a6a) )
@@ -1148,13 +1174,13 @@ ROM_START( radikalb )
ROM_END
ROM_START( radikalba )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68020 code
ROM_LOAD32_BYTE( "rab.6", 0x000000, 0x80000, CRC(ccac98c5) SHA1(43a30caf9880f48aba79676f9e746fdc6258139d) )
ROM_LOAD32_BYTE( "rab.12", 0x000001, 0x80000, CRC(26199506) SHA1(1b7b44895aa296eab8061ae85cbb5b0d30119dc7) )
ROM_LOAD32_BYTE( "rab.14", 0x000002, 0x80000, CRC(4a0ac8cb) SHA1(4883e5eddb833dcd39376be435aa8e8e2ec47ab5) )
ROM_LOAD32_BYTE( "rab.19", 0x000003, 0x80000, CRC(2631bd61) SHA1(57331ad49e7284b82073f696049de109b7683b03) )
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
ROM_LOAD( "rab.23", 0x0000000, 0x400000, CRC(dcf52520) SHA1(ab54421c182436660d2a56a334c1aa335424644a) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1177,7 +1203,7 @@ ROM_START( radikalba )
ROM_LOAD( "rab.25", 0x0020000, 0x020000, CRC(777758e3) SHA1(bd334b1ba46189ac8509eee3a4ab295c121400fd) )
ROM_LOAD( "rab.26", 0x0040000, 0x020000, CRC(bd9c1b54) SHA1(c9ef679cf7eca9ed315ea62a7ada452bc85f7a6a) )
ROM_LOAD( "rab.27", 0x0060000, 0x020000, CRC(bbcf6977) SHA1(0282c8ba79c35ed1240711d5812bfb590d151738) )
- /* these 4 are copies of the previous 4 */
+ // These 4 are copies of the previous 4
// ROM_LOAD( "rab.32", 0x0000000, 0x020000, CRC(2984bc1d) SHA1(1f62bdaa86feeff96640e325f8241b9c5f383a44) )
// ROM_LOAD( "rab.33", 0x0020000, 0x020000, CRC(777758e3) SHA1(bd334b1ba46189ac8509eee3a4ab295c121400fd) )
// ROM_LOAD( "rab.34", 0x0040000, 0x020000, CRC(bd9c1b54) SHA1(c9ef679cf7eca9ed315ea62a7ada452bc85f7a6a) )
@@ -1186,13 +1212,13 @@ ROM_END
ROM_START( footbpow )
- ROM_REGION( 0x200000, "maincpu", 0 ) /* 68020 code */
+ ROM_REGION( 0x200000, "maincpu", 0 ) // 68020 code
ROM_LOAD32_BYTE( "fop_7.ic7", 0x000000, 0x80000, CRC(a2d7ec69) SHA1(27e4f3d27882152244c0f9d5a984e0f1bd7b7d3f) )
ROM_LOAD32_BYTE( "fop_12.ic12", 0x000001, 0x80000, CRC(443caf77) SHA1(2b0c6dccee28fb3caa0b2493f59ddbd29897aed9) )
ROM_LOAD32_BYTE( "fop_13.ic13", 0x000002, 0x80000, CRC(57723eda) SHA1(09972b09444b6704dcc966033bfab61ea57d0cd0) )
ROM_LOAD32_BYTE( "fop_19.ic19", 0x000003, 0x80000, CRC(aa59cd2d) SHA1(7cc6edfd0896e4d2c881b16d5ad07361bdeff11d) )
- ROM_REGION16_LE( 0x400000, "user1", 0 ) /* ADSP-2115 code & data */
+ ROM_REGION16_LE( 0x400000, "user1", 0 ) // ADSP-2115 code & data
ROM_LOAD( "fop_ic23.ic23", 0x0000000, 0x400000, CRC(3c02f7c6) SHA1(2325f2a1b260ac60929c82640ced481ad67bb2e0) )
ROM_REGION32_LE( 0x1000000, "user2", 0 )
@@ -1210,7 +1236,7 @@ ROM_START( footbpow )
ROM_LOAD( "fop_25.ic25", 0x0020000, 0x020000, CRC(69a8734c) SHA1(835db85371d8fbf0c1a2bc0c6109286f12c95794) )
ROM_LOAD( "fop_26.ic26", 0x0040000, 0x020000, CRC(b5877b68) SHA1(6f6f00da84d6d84895691266c2022fd4cd92f228) )
ROM_LOAD( "fop_27.ic27", 0x0060000, 0x020000, CRC(58309912) SHA1(eb62ccfd75fc168338d30bc30214e6f9f62e5e70) )
- /* these 4 are copies of the previous 4 */
+ // These 4 are copies of the previous 4
// ROM_LOAD( "fop_34.ic34", 0x0000000, 0x020000, CRC(3214ae1b) SHA1(3ae2fa28ef603b34b3c72313c513f200e2750b85) )
// ROM_LOAD( "fop_35.ic35", 0x0020000, 0x020000, CRC(69a8734c) SHA1(835db85371d8fbf0c1a2bc0c6109286f12c95794) )
// ROM_LOAD( "fop_36.ic36", 0x0040000, 0x020000, CRC(b5877b68) SHA1(6f6f00da84d6d84895691266c2022fd4cd92f228) )
@@ -1224,13 +1250,14 @@ ROM_END
*
*************************************/
-GAME( 1996, speedup, 0, gaelco3d, speedup, gaelco3d_state, empty_init, ROT0, "Gaelco", "Speed Up (Version 1.20)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1996, speedup10, speedup, gaelco3d, speedup, gaelco3d_state, empty_init, ROT0, "Gaelco", "Speed Up (Version 1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, speedup, 0, gaelco3d, speedup, gaelco3d_state, empty_init, ROT0, "Gaelco", "Speed Up (Version 2.20)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, speedup12, speedup, gaelco3d, speedup, gaelco3d_state, empty_init, ROT0, "Gaelco", "Speed Up (Version 1.20)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, speedup10, speedup, gaelco3d, speedup, gaelco3d_state, empty_init, ROT0, "Gaelco", "Speed Up (Version 1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1997, surfplnt, 0, gaelco3d, surfplnt, gaelco3d_state, empty_init, ROT0, "Gaelco (Atari license)", "Surf Planet (Version 4.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
-GAME( 1997, surfplnt40, surfplnt, gaelco3d, surfplnt, gaelco3d_state, empty_init, ROT0, "Gaelco (Atari license)", "Surf Planet (Version 4.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 1997, surfplnt, 0, gaelco3d, surfplnt, gaelco3d_state, empty_init, ROT0, "Gaelco (Atari license)", "Surf Planet (Version 4.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 1997, surfplnt40, surfplnt, gaelco3d, surfplnt, gaelco3d_state, empty_init, ROT0, "Gaelco (Atari license)", "Surf Planet (Version 4.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
GAME( 1998, radikalb, 0, gaelco3d2, radikalb, gaelco3d_state, empty_init, ROT0, "Gaelco", "Radikal Bikers (Version 2.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
GAME( 1998, radikalba, radikalb, gaelco3d2, radikalb, gaelco3d_state, empty_init, ROT0, "Gaelco (Atari license)", "Radikal Bikers (Version 2.02, Atari license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
-GAME( 1999, footbpow, 0, footbpow, footbpow, gaelco3d_state, empty_init, ROT0, "Gaelco", "Football Power (Version 1.2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS )
+GAME( 1999, footbpow, 0, footbpow, footbpow, gaelco3d_state, empty_init, ROT0, "Gaelco", "Football Power (Version 1.2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_CONTROLS )
diff --git a/src/mame/drivers/gaelcof3.cpp b/src/mame/drivers/gaelcof3.cpp
index 9eddeb9cc27..379ad789beb 100644
--- a/src/mame/drivers/gaelcof3.cpp
+++ b/src/mame/drivers/gaelcof3.cpp
@@ -34,10 +34,16 @@
The PCBs were inside two "Coche de Bomberos" kiddie rides from CMC Cresmatic (https://www.recreativas.org/coche-de-bomberos-6022-cresmatic).
Anyway, the hardware is generic enough to serve any basic kiddie ride.
- The only dumped ROM on the PCB is the Oki sound samples. There are three different versions dumped (from different machines):
+ There are three different versions dumped (from different machines):
-"Susanita" - Based on the song composed by Rafael Pérez Botija.
-"El auto feo" - Based on the song composed by Enrique Fischer 'Pipo Pescador'.
-"Hola Don Pepito" - Based on the song composed by Ramón del Rivero.
+
+ The PIC16C56 from Hola Don Pepito has been decapped. It is believed it has the same contents for all games.
+
+ TODO:
+ inputs;
+ Oki hook up is possibly more complex.
*/
#include "emu.h"
@@ -57,40 +63,47 @@ public:
void gaelcof3(machine_config &config);
private:
- required_device<cpu_device> m_maincpu;
+ required_device<pic16c56_device> m_maincpu;
};
-static INPUT_PORTS_START( gaelcof3 )
+static INPUT_PORTS_START( gaelcof3 ) // defined as buttons only for easier testing
PORT_START("IN0")
- PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
PORT_START("DSW1") // only 6 switches
- PORT_DIPNAME( 0x01, 0x01, "DSW1-1" ) PORT_DIPLOCATION("SW1:1")
+ PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,1")
+ PORT_DIPSETTING( 0x30, "25 Pesetas" )
+ PORT_DIPSETTING( 0x20, "100 Pesetas" )
+ PORT_DIPSETTING( 0x10, "50 Pesetas" )
+ PORT_DIPSETTING( 0x00, "200 Pesetas" )
+ PORT_DIPNAME( 0x0e, 0x0e, DEF_STR( Game_Time ) ) PORT_DIPLOCATION("SW1:5,4,3")
+ PORT_DIPSETTING( 0x0e, "42 seconds" )
+ PORT_DIPSETTING( 0x0c, "56 seconds" )
+ PORT_DIPSETTING( 0x0a, "70 seconds" )
+ PORT_DIPSETTING( 0x08, "84 seconds" )
+ PORT_DIPSETTING( 0x06, "98 seconds" )
+ PORT_DIPSETTING( 0x04, "112 seconds" )
+ PORT_DIPSETTING( 0x02, "126 seconds" )
+ PORT_DIPSETTING( 0x00, "140 seconds" )
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "DSW1-2" ) PORT_DIPLOCATION("SW1:2")
- PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x04, 0x04, "DSW1-3" ) PORT_DIPLOCATION("SW1:3")
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "DSW1-4" ) PORT_DIPLOCATION("SW1:4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, "DSW1-5" ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, "DSW1-6" ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON5 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 )
INPUT_PORTS_END
void gaelcof3_state::gaelcof3(machine_config &config)
{
PIC16C56(config, m_maincpu, 4000000); // clock not confirmed
+ m_maincpu->read_a().set_ioport("IN0");
+ m_maincpu->write_a().set([this] (uint8_t data) { logerror("port A write: %02x\n", data); });
+ m_maincpu->read_b().set_ioport("DSW1");
+ m_maincpu->write_b().set("oki", FUNC(okim6295_device::write));
SPEAKER(config, "mono").front_center();
@@ -99,24 +112,26 @@ void gaelcof3_state::gaelcof3(machine_config &config)
ROM_START( autopapa )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "pic16c56.u3", 0x000, 0x800, NO_DUMP )
+ ROM_REGION( 0x2000, "maincpu", 0 )
+ // this was decapped and dumped for donpepito, should be the same but marking it as bad dump for overcautiousness
+ ROM_LOAD( "pic16c56.u3", 0x0000, 0x1fff, BAD_DUMP CRC(a2c24ec3) SHA1(e87520c6de714b1638c9b156411522e0209fb06e) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "autopapa.u1", 0x00000, 0x40000, CRC(a3e5607e) SHA1(24a9c79edec7b2f7f64b622240f2ad8f3ffa29ca) )
ROM_END
ROM_START( donpepito )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "pic16c56.u3", 0x000, 0x800, NO_DUMP )
+ ROM_REGION( 0x2000, "maincpu", 0 )
+ ROM_LOAD( "pic16c56.u3", 0x0000, 0x1fff, CRC(a2c24ec3) SHA1(e87520c6de714b1638c9b156411522e0209fb06e) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "don_pepito.u1", 0x00000, 0x40000, CRC(574fcd14) SHA1(a23f1eb6d2cef5aa07df3a553fe1d33803648f43) )
ROM_END
ROM_START( susanita )
- ROM_REGION( 0x800, "maincpu", 0 )
- ROM_LOAD( "pic16c56.u3", 0x000, 0x800, NO_DUMP )
+ ROM_REGION( 0x2000, "maincpu", 0 )
+ // this was decapped and dumped for donpepito, should be the same but marking it as bad dump for overcautiousness
+ ROM_LOAD( "pic16c56.u3", 0x0000, 0x1fff, BAD_DUMP CRC(a2c24ec3) SHA1(e87520c6de714b1638c9b156411522e0209fb06e) )
ROM_REGION( 0x40000, "oki", 0 )
ROM_LOAD( "susanita.u1", 0x00000, 0x40000, CRC(766868cb) SHA1(eb42dc46b865bc448052d9d67c840e51c49ce49a) )
diff --git a/src/mame/drivers/hp80.cpp b/src/mame/drivers/hp80.cpp
index e4b67eaab56..6fa046d2822 100644
--- a/src/mame/drivers/hp80.cpp
+++ b/src/mame/drivers/hp80.cpp
@@ -1499,9 +1499,9 @@ static INPUT_PORTS_START(hp85)
PORT_BIT(IOP_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // 5,2: / ?
PORT_BIT(IOP_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("PAUSE STEP") // 5,3: PAUSE / STEP
PORT_BIT(IOP_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("RUN") // 5,4: RUN
- PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("KP +") // 5,5: KP +
- PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("KP -") // 5,6: KP -
- PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("KP *") // 5,7: KP * (not sure)
+ PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("KP +") // 5,5: KP +
+ PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_NAME("KP -") // 5,6: KP -
+ PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("KP *") // 5,7: KP * (not sure)
PORT_BIT(IOP_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') // 6,0: L
PORT_BIT(IOP_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // 6,1: ;
PORT_BIT(IOP_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"') // 6,2: ' "
@@ -1509,7 +1509,7 @@ static INPUT_PORTS_START(hp85)
PORT_BIT(IOP_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("LIST P LST") // 6,4: LIST / P LST
PORT_BIT(IOP_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) // 6,5: N/U
PORT_BIT(IOP_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED) // 6,6: N/U
- PORT_BIT(IOP_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("KP /") // 6,7: KP /
+ PORT_BIT(IOP_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("KP /") // 6,7: KP /
PORT_BIT(IOP_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o') // 7,0: O
PORT_BIT(IOP_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p') // 7,1: P
PORT_BIT(IOP_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('(') PORT_CHAR('[') // 7,2: ( [
@@ -1520,8 +1520,8 @@ static INPUT_PORTS_START(hp85)
PORT_BIT(IOP_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED) // 7,7: N/U
PORT_START("KEY2")
- PORT_BIT(IOP_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') // 8,0: 9
- PORT_BIT(IOP_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') // 8,1: 0
+ PORT_BIT(IOP_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') // 8,0: 9
+ PORT_BIT(IOP_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') // 8,1: 0
PORT_BIT(IOP_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') // 8,2: - _
PORT_BIT(IOP_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') // 8,3: = +
PORT_BIT(IOP_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|') // 8,4: \ |
@@ -2172,8 +2172,8 @@ static INPUT_PORTS_START(hp86)
PORT_BIT(IOP_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // 5,2: / ?
PORT_BIT(IOP_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("PAUSE STEP") // 5,3: PAUSE / STEP
PORT_BIT(IOP_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("RUN") // 5,4: RUN
- PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("KP +") // 5,5: KP +
- PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("KP -") // 5,6: KP -
+ PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("KP +") // 5,5: KP +
+ PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_NAME("KP -") // 5,6: KP -
PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_UNUSED) // 5,7: N/U
PORT_BIT(IOP_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') // 6,0: L
PORT_BIT(IOP_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // 6,1: ;
@@ -2181,8 +2181,8 @@ static INPUT_PORTS_START(hp86)
PORT_BIT(IOP_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("END LINE") // 6,3: END LINE
PORT_BIT(IOP_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("LIST P LST") // 6,4: LIST / P LST
PORT_BIT(IOP_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED) // 6,5: N/U
- PORT_BIT(IOP_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("KP *") // 6,6: KP *
- PORT_BIT(IOP_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("KP /") // 6,7: KP /
+ PORT_BIT(IOP_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("KP *") // 6,6: KP *
+ PORT_BIT(IOP_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("KP /") // 6,7: KP /
PORT_BIT(IOP_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o') // 7,0: O
PORT_BIT(IOP_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p') // 7,1: P
PORT_BIT(IOP_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('(') PORT_CHAR('[') // 7,2: ( [
@@ -2193,8 +2193,8 @@ static INPUT_PORTS_START(hp86)
PORT_BIT(IOP_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED) // 7,7: N/U
PORT_START("KEY2")
- PORT_BIT(IOP_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') // 8,0: 9
- PORT_BIT(IOP_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') // 8,1: 0
+ PORT_BIT(IOP_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') // 8,0: 9
+ PORT_BIT(IOP_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') // 8,1: 0
PORT_BIT(IOP_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') // 8,2: - _
PORT_BIT(IOP_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') // 8,3: = +
PORT_BIT(IOP_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|') // 8,4: \ |
@@ -2319,18 +2319,18 @@ static INPUT_PORTS_START(hp86_int)
PORT_BIT(IOP_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // 5,1: ; :
PORT_BIT(IOP_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"') // 5,2: ' "
PORT_BIT(IOP_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) PORT_NAME("END LINE") // 5,3: END LINE
- PORT_BIT(IOP_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) // 5,4: KP 4
- PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("KP *") // 5,5: KP *
- PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('^') // 5,6: KP 6
- PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR('%') // 5,7: KP 5
+ PORT_BIT(IOP_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD)) // 5,4: KP 4
+ PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("KP *") // 5,5: KP *
+ PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD)) // 5,6: KP 6
+ PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) // 5,7: KP 5
PORT_BIT(IOP_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') // 6,0: L
PORT_BIT(IOP_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') // 6,1: .
PORT_BIT(IOP_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // 6,2: / ?
PORT_BIT(IOP_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("LIST P LST") // 6,3: LIST / P LST
- PORT_BIT(IOP_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) // 6,4: KP 1
- PORT_BIT(IOP_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_NAME("KP -") // 6,5: KP -
- PORT_BIT(IOP_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) // 6,6: KP 3
- PORT_BIT(IOP_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) // 6,7: KP 2
+ PORT_BIT(IOP_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) // 6,4: KP 1
+ PORT_BIT(IOP_MASK(21) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) PORT_NAME("KP -") // 6,5: KP -
+ PORT_BIT(IOP_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) // 6,6: KP 3
+ PORT_BIT(IOP_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD)) // 6,7: KP 2
PORT_BIT(IOP_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o') // 7,0: O
PORT_BIT(IOP_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') // 7,1: 7
PORT_BIT(IOP_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^') // 7,2: 6
@@ -2345,18 +2345,18 @@ static INPUT_PORTS_START(hp86_int)
PORT_BIT(IOP_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('(') PORT_CHAR('[') // 8,1: ( [
PORT_BIT(IOP_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(')') PORT_CHAR(']') // 8,2: ) ]
PORT_BIT(IOP_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("CONT TR/NORM") // 8,3: CONT / TR/NORM
- PORT_BIT(IOP_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) // 8,4: KP 7
- PORT_BIT(IOP_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_NAME("KP /") // 8,5: KP /
- PORT_BIT(IOP_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) // 8,6: KP 9
- PORT_BIT(IOP_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) // 8,7: KP 8
+ PORT_BIT(IOP_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD)) // 8,4: KP 7
+ PORT_BIT(IOP_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH_PAD) PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD)) PORT_NAME("KP /") // 8,5: KP /
+ PORT_BIT(IOP_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD)) // 8,6: KP 9
+ PORT_BIT(IOP_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD)) // 8,7: KP 8
PORT_BIT(IOP_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') // 9,0: ,
PORT_BIT(IOP_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // 9,1: Space
PORT_BIT(IOP_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("PAUSE STEP") // 9,2: PAUSE / STEP
PORT_BIT(IOP_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("RUN") // 9,3: RUN
- PORT_BIT(IOP_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) // 9,4: KP 0
- PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_NAME("KP +") // 9,5: KP +
- PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA_PAD) // 9,6: KP ,
- PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CHAR('.') PORT_CHAR('>') PORT_NAME("KP .") // 9,7: KP .
+ PORT_BIT(IOP_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) // 9,4: KP 0
+ PORT_BIT(IOP_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("KP +") // 9,5: KP +
+ PORT_BIT(IOP_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA_PAD) PORT_CHAR(UCHAR_MAMEKEY(COMMA_PAD)) PORT_CHAR('<') PORT_NAME("KP ,") // 9,6: KP ,
+ PORT_BIT(IOP_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CHAR('>') PORT_NAME("KP .") // 9,7: KP .
PORT_BIT(IOP_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6)) PORT_NAME("k6 k13") // 10,0: k6 / k13
PORT_BIT(IOP_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7)) PORT_NAME("k7 k14") // 10,1: k7 / k14
PORT_BIT(IOP_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_NAME("-LINE CLEAR") // 10,2: -LINE / CLEAR
diff --git a/src/mame/drivers/informer_207_376.cpp b/src/mame/drivers/informer_207_376.cpp
index 964363dc0e8..011cbb1987e 100644
--- a/src/mame/drivers/informer_207_376.cpp
+++ b/src/mame/drivers/informer_207_376.cpp
@@ -13,7 +13,6 @@
- X2212P NVRAM
TODO:
- - Redump bad ROMs
- Dump keyboard controller and emulate it (currently HLE'd)
- Problably needs improvements to at least the Z80SCC to
properly support synchrous modes
@@ -88,11 +87,13 @@ private:
void mem_map(address_map &map);
MC6845_UPDATE_ROW(crtc_update_row);
+ uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void vsync_w(int state);
void nmi_control_w(uint8_t data);
void unk_8400_w(uint8_t data);
+ bool m_display_enabled;
bool m_nmi_enabled;
};
@@ -150,6 +151,10 @@ MC6845_UPDATE_ROW( informer_207_376_state::crtc_update_row )
if (x == cursor_x)
data = 0xff;
+ // the line above the status bar seems to be hardcoded
+ if (y == 274)
+ data = 0xff;
+
// draw 8 pixels of the character
bitmap.pix32(y, x * 8 + 7) = pen[BIT(data, 0)];
bitmap.pix32(y, x * 8 + 6) = pen[BIT(data, 1)];
@@ -162,6 +167,16 @@ MC6845_UPDATE_ROW( informer_207_376_state::crtc_update_row )
}
}
+uint32_t informer_207_376_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ if (m_display_enabled)
+ m_crtc->screen_update(screen, bitmap, cliprect);
+ else
+ bitmap.fill(rgb_t::black(), cliprect);
+
+ return 0;
+}
+
static const gfx_layout char_layout =
{
8,11,
@@ -196,19 +211,24 @@ void informer_207_376_state::unk_8400_w(uint8_t data)
// 7------- beeper
// -6------ unknown
// --5----- 1=internal modem, 0=host rs232
- // ---43210 unknown
+ // ---43--- unknown
+ // -----2-- display enabled?
+ // ------10 unknown
m_beep->set_state(BIT(data, 7));
+ m_display_enabled = bool(BIT(data, 2));
}
void informer_207_376_state::machine_start()
{
// register for save states
+ save_item(NAME(m_display_enabled));
save_item(NAME(m_nmi_enabled));
}
void informer_207_376_state::machine_reset()
{
+ m_display_enabled = false;
m_nmi_enabled = false;
}
@@ -224,7 +244,7 @@ void printer_devices(device_slot_interface &device)
void informer_207_376_state::informer_207_376(machine_config &config)
{
- MC6809(config, m_maincpu, 36_MHz_XTAL / 4); // unknown clock
+ MC6809(config, m_maincpu, 36_MHz_XTAL / 4); // unknown clock divisor
m_maincpu->set_addrmap(AS_PROGRAM, &informer_207_376_state::mem_map);
input_merger_device &cpu_irq(INPUT_MERGER_ANY_HIGH(config, "cpu_irq"));
@@ -233,14 +253,14 @@ void informer_207_376_state::informer_207_376(machine_config &config)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 2x X2212P
PIT8253(config, m_pit);
- m_pit->set_clk<0>(4915200 / 2);
+ m_pit->set_clk<0>(2.457600_MHz_XTAL);
m_pit->out_handler<0>().set(m_acia[1], FUNC(acia6850_device::write_txc));
m_pit->out_handler<0>().append(m_acia[1], FUNC(acia6850_device::write_rxc));
- m_pit->set_clk<1>(4915200 / 2);
+ m_pit->set_clk<1>(2.457600_MHz_XTAL);
m_pit->out_handler<1>().set(m_acia[0], FUNC(acia6850_device::write_txc));
m_pit->out_handler<1>().append(m_acia[0], FUNC(acia6850_device::write_rxc));
- SCC85C30(config, m_scc, 4915200);
+ SCC85C30(config, m_scc, 0); // externally clocked?
m_scc->out_txda_callback().set("com1", FUNC(rs232_port_device::write_txd));
m_scc->out_dtra_callback().set("com1", FUNC(rs232_port_device::write_dtr));
m_scc->out_rtsa_callback().set("com1", FUNC(rs232_port_device::write_rts));
@@ -249,11 +269,11 @@ void informer_207_376_state::informer_207_376(machine_config &config)
m_scc->out_rtsb_callback().set("com2", FUNC(rs232_port_device::write_rts));
m_scc->out_int_callback().set("cpu_irq", FUNC(input_merger_device::in_w<0>));
- ACIA6850(config, m_acia[0], 0); // unknown clock
+ ACIA6850(config, m_acia[0]);
m_acia[0]->txd_handler().set("kbd", FUNC(informer_207_376_kbd_hle_device::rx_w));
m_acia[0]->irq_handler().set("cpu_irq", FUNC(input_merger_device::in_w<1>));
- ACIA6850(config, m_acia[1], 0); // unknown clock
+ ACIA6850(config, m_acia[1]);
m_acia[1]->txd_handler().set("printer", FUNC(rs232_port_device::write_txd));
rs232_port_device &com1(RS232_PORT(config, "com1", default_rs232_devices, nullptr));
@@ -274,14 +294,14 @@ void informer_207_376_state::informer_207_376(machine_config &config)
// video
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_color(rgb_t::green());
- m_screen->set_raw(14400000, 800, 0, 640, 300, 0, 286); // unknown clock
- m_screen->set_screen_update("crtc", FUNC(mc6845_device::screen_update));
+ m_screen->set_raw(36_MHz_XTAL / 2.5, 800, 0, 640, 300, 0, 286);
+ m_screen->set_screen_update(FUNC(informer_207_376_state::screen_update));
PALETTE(config, m_palette, palette_device::MONOCHROME);
GFXDECODE(config, "gfxdecode", m_palette, chars);
- MC6845(config, m_crtc, 1800000); // unknown clock
+ MC6845(config, m_crtc, 36_MHz_XTAL / 20);
m_crtc->set_screen("screen");
m_crtc->set_show_border_area(false);
m_crtc->set_char_width(8);
@@ -301,15 +321,15 @@ void informer_207_376_state::informer_207_376(machine_config &config)
ROM_START( in207376 )
ROM_REGION(0x6000, "maincpu", 0)
// M2764A F1
- // 79590-023 376SNA V1.00 201C 7224 (our checksum: 7264)
- ROM_LOAD("79590-023.z37", 0x0000, 0x2000, BAD_DUMP CRC(ed4ff488) SHA1(fdd95c520d0288ea483b5d2e8e6c8eecb04063c1))
+ // 79590-023 376SNA V1.00 201C 7224 (checksum matches)
+ ROM_LOAD("79590-023.z37", 0x0000, 0x2000, CRC(61d49637) SHA1(aabcd55af88ff0b6a198eef04a88f58cc8f65dcc))
// M27128AF1
// 79589-023 376 SNAV1.00 201C E86F (checksum matches)
ROM_LOAD("79589-023.z36", 0x2000, 0x4000, CRC(cdfaf629) SHA1(1f21ef6848020726ef3d7ab05166ac8590d58476))
ROM_REGION(0x1000, "chargen", 0)
// TMS2732AGL-25
- // 79573-001 V1.00 376/8 CHAR. GEN.
+ // 79573-001 V1.00 376/8 CHAR. GEN.
ROM_LOAD("79573-001.z6", 0x0000, 0x1000, CRC(f704b827) SHA1(bcc56eeb8681c2bebe3a9f4b6b78c0373c06d875))
ROM_END
diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp
index b32b631b737..dce2553a8f6 100644
--- a/src/mame/drivers/konmedal68k.cpp
+++ b/src/mame/drivers/konmedal68k.cpp
@@ -458,8 +458,23 @@ ROM_START( dobouchn )
ROM_LOAD( "640-a02-4f.bin", 0x080000, 0x080000, CRC(ab6593f5) SHA1(95907ee4a2cdf3bf27b7c0c1283b2bc36b868d9d) )
ROM_END
+// GS562 PCB with no K056766 color DAC and no IC 20D 8Kbyte SRAM (palette RAM?), possible have no video output or have it implemented in some unusual way.
+// at 1st boot press Service1 to initialise NVRAM
+ROM_START( konslot )
+ ROM_REGION( 0x80000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "669-a05-2n.bin", 0x000000, 0x080000, CRC(3330848e) SHA1(24c2ac03fe5d099659081d1f9611c707c746c768) )
+
+ ROM_REGION( 0x80000, "k056832", 0 )
+ ROM_LOAD( "669-a06-14n.bin", 0x000000, 0x080000, CRC(b058fa04) SHA1(b277e814f1814d8892ccc5279f75bff0eec678b5) )
+
+ ROM_REGION( 0x80000, "ymz", 0 )
+ ROM_LOAD( "669-a01-2d.bin", 0x000000, 0x080000, CRC(08438dad) SHA1(b4ef8fc37deca5b6537cc581fc99968c86e6ec2c) )
+ROM_END
+
+
GAME( 1995, kzaurus, 0, kzaurus, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Pittanko Zaurus", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1996, dobouchn, 0, kzaurus, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Dobou-Chan (ver JAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 199?, konslot, 0, kzaurus, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Unknown Konami slot medal game", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
GAME( 1997, koropens, 0, koropens, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Korokoro Pensuke", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1998, kattobas, 0, koropens, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Kattobase Power Pro Kun", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1999, pwrchanc, 0, koropens, kzaurus, konmedal68k_state, empty_init, ROT0, "Konami", "Powerful Chance", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp
index f31e3a104a1..009cda07e1d 100644
--- a/src/mame/drivers/lkage.cpp
+++ b/src/mame/drivers/lkage.cpp
@@ -731,6 +731,24 @@ ROM_START( lkageb3 )
ROM_LOAD( "a54-10.2", 0x0000, 0x0200, CRC(17dfbd14) SHA1(f8f0b6dfedd4ba108dad43ccc7697ef4ab9cbf86) ) /* unknown */
ROM_END
+ROM_START( lkageb4 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "1.ic37", 0x0000, 0x8000, CRC(fa20e863) SHA1(0edba6014e8d7cdd7f6ad1bb5eb65338a3a91243) )
+ ROM_LOAD( "2.ic38", 0x8000, 0x8000, CRC(a5bdd3b4) SHA1(4f691ea8b75fae0dd92f827998e97e40791d24b2) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "4.ic54", 0x0000, 0x8000, CRC(541faf9a) SHA1(b142ff3bd198f700697ec06ea92db3109ab5818e) )
+
+ ROM_REGION( 0x4000, "user1", 0 )
+ ROM_LOAD( "a54-03.51", 0x0000, 0x4000, CRC(493e76d8) SHA1(13c6160edd94ba2801fd89bb33bcae3a1e3454ff) )
+
+ ROM_REGION( 0x10000, "gfx1", 0 )
+ ROM_LOAD( "5.ic84", 0x0000, 0x4000, CRC(0033c06a) SHA1(89964503fc338817c6511fd15942741996b7037a) )
+ ROM_LOAD( "6.ic85", 0x4000, 0x4000, CRC(9f04d9ad) SHA1(3b9a4d30348fd02e5c8ae94655548bd4a02dd65d) )
+ ROM_LOAD( "7.ic86", 0x8000, 0x4000, CRC(b20561a4) SHA1(0d6d83dfae79ea133e37704ca47426b4c978fb36) )
+ ROM_LOAD( "8.ic87", 0xc000, 0x4000, CRC(3ff3b230) SHA1(ffcd964efb0af32b5d7a70305dfda615ea95acbe) )
+ROM_END
+
/*
Bygone
Taito, 1985?
@@ -919,4 +937,5 @@ GAME( 1984, lkageoo, lkage, lkage, lkage, lkage_state, init_lkage, ROT0, "Tai
GAME( 1984, lkageb, lkage, lkageb, lkageb, lkage_state, init_lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1984, lkageb2, lkage, lkageb, lkageb, lkage_state, init_lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1984, lkageb3, lkage, lkageb, lkageb, lkage_state, init_lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, lkageb4, lkage, lkageb, lkageb, lkage_state, init_lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 4)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
GAME( 1985, bygone, 0, lkage, bygone, lkage_state, init_bygone, ROT0, "Taito Corporation", "Bygone (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/magicard.cpp b/src/mame/drivers/magicard.cpp
index c4d741e5b29..20a74fe5b1e 100644
--- a/src/mame/drivers/magicard.cpp
+++ b/src/mame/drivers/magicard.cpp
@@ -941,8 +941,8 @@ ROM_START( magicarde )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68070 Code & GFX */
ROM_LOAD16_WORD_SWAP( "27c4002.ic21", 0x00000, 0x80000, CRC(b5f24412) SHA1(73ff05c19132932a419fef0d5dc985440ce70e83) )
- ROM_REGION( 0x0200, "pic16c54", 0 ) /* protected */
- ROM_LOAD("pic16c54.ic29", 0x0000, 0x0200, BAD_DUMP CRC(73224200) SHA1(c9a1038146647430759d570bb5626047a476a05b) )
+ ROM_REGION( 0x2000, "pic16c54", 0 ) /* decapped */
+ ROM_LOAD("pic16c54.ic29", 0x0000, 0x1fff, CRC(9c225a49) SHA1(249c12d23d1a85de828652c55a1a19ef8ec378ef) )
ROM_REGION( 0x0100, "sereeprom", 0 ) /* Serial EPROM */
ROM_LOAD("st24c02.ic26", 0x0000, 0x0100, CRC(98287c67) SHA1(ad34e55c1ce4f77c27049dac88050ed3c94af1a0) )
@@ -987,8 +987,8 @@ ROM_START( magicardw )
ROM_REGION( 0x80000, "maincpu", 0 ) // 68070 Code & GFX
ROM_LOAD16_WORD_SWAP( "am27c4096.bin", 0x00000, 0x80000, CRC(d9e2a4ec) SHA1(b3000ded242fa25709c90b9b2541c9d1d5cabebb) )
- ROM_REGION( 0x0200, "pic16c54", 0 ) // protected
- ROM_LOAD("pic16c54a.bin", 0x0000, 0x0200, NO_DUMP )
+ ROM_REGION( 0x1fff, "pic16c54", 0 ) // decapped
+ ROM_LOAD("pic16c54a.bin", 0x0000, 0x1fff, CRC(e777e814) SHA1(e0440be76fa1f3c7ae7d31e1b29a2ba73552231c) )
ROM_END
@@ -1097,8 +1097,8 @@ ROM_START( puzzleme )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 68070 Code & GFX */
ROM_LOAD16_WORD_SWAP( "27c4002.ic21", 0x00000, 0x80000, CRC(cd3bc5a9) SHA1(682f62eba454f4f00212b2a8dabb05d6747f22fd) )
- ROM_REGION( 0x0200, "pic16c54", 0 ) /* protected */
- ROM_LOAD("pic16c54.ic29", 0x0000, 0x0200, NO_DUMP )
+ ROM_REGION( 0x1fff, "pic16c54", 0 ) /* decapped */
+ ROM_LOAD("pic16c54.ic29", 0x0000, 0x1fff, CRC(6dd2bd8e) SHA1(380f6b952ddd3183e9ab5404866c30be015b3773) )
ROM_REGION( 0x0100, "sereeprom", 0 ) /* Serial EPROM */
ROM_LOAD("x24c02p.ic26", 0x0000, 0x0100, CRC(bc940f53) SHA1(6b870019752ba5c446a5ad5155e4a81dfbf6e523) )
@@ -1114,8 +1114,8 @@ ROM_START( unkte06 )
ROM_REGION( 0x80000, "maincpu", 0 ) // 68070 Code & GFX
ROM_LOAD16_WORD_SWAP( "m27c4002.bin", 0x00000, 0x80000, CRC(229a504f) SHA1(8033e9b4cb55f2364bf4606375ef9ac05fc715fe) )
- ROM_REGION( 0x0200, "pic16c54", 0 ) // protected
- ROM_LOAD("pic16c54.bin", 0x0000, 0x0200, NO_DUMP )
+ ROM_REGION( 0x1fff, "pic16c56", 0 ) // decapped
+ ROM_LOAD("pic16c56.bin", 0x0000, 0x1fff, CRC(b5655603) SHA1(d9126c36f3fca7e769ea60aaa711bb304b4b6a11) )
ROM_END
/*
diff --git a/src/mame/drivers/missbamby.cpp b/src/mame/drivers/missbamby.cpp
index 3c8655a9f30..6a1e10b1428 100644
--- a/src/mame/drivers/missbamby.cpp
+++ b/src/mame/drivers/missbamby.cpp
@@ -208,7 +208,18 @@ ROM_START( gwinner )
ROM_LOAD( "dm74s188n.bin", 0x00, 0x20, NO_DUMP )
ROM_END
+ROM_START( unkslot )
+ ROM_REGION(0x4000, "maincpu", 0)
+ ROM_LOAD( "tms2564jl.bin", 0x0000, 0x2000, CRC(43fa54fb) SHA1(2e0d0883deb20d68e46d3c5c5c98508c9b5d5411) )
+ ROM_LOAD( "d2764d.bin", 0x2000, 0x1000, CRC(b7c55fc2) SHA1(2dfcc35821971c27178522afe9db1d18e12b3a42) ) // 1xxxxxxxxxxx = 0xFF
+
+ ROM_REGION(0x20, "prom", 0)
+ ROM_LOAD( "n83s23n.bin", 0x00, 0x20, CRC(ea598b2c) SHA1(c0d6367ed2381a4a0f22780773ff4777569e88ab) )
+ROM_END
+
+
GAME( 1981, minisupf, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Cirsa", "Mini Super Fruits", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1981, luckyplr, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Cirsa", "Lucky Player", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 198?, msbamby, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "Automatics Pasqual", "Miss Bamby", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 198?, unkslot, 0, missbamby, missbamby, missbamby_state, empty_init, ROT0, "<unknown>", "unknown MGA or Costa Net slot machine", MACHINE_IS_SKELETON_MECHANICAL )
GAME( 1983, gwinner, 0, gldwinner, missbamby, missbamby_state, empty_init, ROT0, "Reben SA", "Golden Winner", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp
index 73de0bfebc8..ca4b2eda839 100644
--- a/src/mame/drivers/namcos23.cpp
+++ b/src/mame/drivers/namcos23.cpp
@@ -3551,6 +3551,7 @@ void namcos23_state::init_s23()
if((!strcmp(machine().system().name, "motoxgo")) ||
(!strcmp(machine().system().name, "panicprk")) ||
(!strcmp(machine().system().name, "panicprkj")) ||
+ (!strcmp(machine().system().name, "panicprkj2")) ||
(!strcmp(machine().system().name, "rapidrvr")) ||
(!strcmp(machine().system().name, "rapidrvrv2c")) ||
(!strcmp(machine().system().name, "rapidrvrp")) ||
@@ -3832,7 +3833,9 @@ void namcos23_state::ss23e2(machine_config &config)
m_subcpu->subdevice<h8_sci_device>("sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w));
}
-
+// a note about "user1" ROMs:
+// serial number data is at offset 0x201 (interleaved) and it's the only difference between sets marked as 'set 1' and 'set 2'
+// TODO: verify if it's better to just keep one set and note the alternate serial numbers
ROM_START( rapidrvr )
ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */
@@ -4853,6 +4856,53 @@ ROM_START( panicprkj )
ROM_END
+ROM_START( panicprkj2 )
+ ROM_REGION32_BE( 0x400000, "user1", 0 ) // 4 megs for main R4650 code
+ ROM_LOAD16_BYTE( "pnp1verb.ic2", 0x000000, 0x200000, CRC(59748d7d) SHA1(f7677ec9027439a7352c88494873861e78ae9a41) )
+ ROM_LOAD16_BYTE( "pnp1verb.ic1", 0x000001, 0x200000, CRC(718ff346) SHA1(0f631fe32e864623455d9bc39cdfa80b34c6dbb0) )
+
+ ROM_REGION( 0x80000, "subcpu", 0 ) // Hitachi H8/3002 MCU code
+ ROM_LOAD16_WORD_SWAP( "pnp1vera.ic3", 0x000000, 0x080000, CRC(fe4bc6f4) SHA1(2114dc4bc63d589e6c3b26a73dbc60924f3b1765) )
+
+ ROM_REGION( 0x40000, "iocpu", 0 ) // I/O board HD643334 H8/3334 MCU code
+ ROM_LOAD( "asca-3a.ic14", 0x000000, 0x040000, CRC(8e9266e5) SHA1(ffa8782ca641d71d57df23ed1c5911db05d3df97) )
+
+ ROM_REGION32_BE( 0x2000000, "data", 0 )
+ ROM_LOAD16_BYTE( "pnp1mtah.2j", 0x000000, 0x800000, CRC(37addddd) SHA1(3032989653304417df80606bc3fde6e9425d8cbb) )
+ ROM_LOAD16_BYTE( "pnp1mtal.2h", 0x000001, 0x800000, CRC(6490faaa) SHA1(03443746009b434e5d4074ea6314910418907360) )
+
+ ROM_REGION( 0x2000000, "textile", 0 )
+ ROM_LOAD( "pnp1cgll.4m", 0x0000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) )
+ ROM_LOAD( "pnp1cglm.5k", 0x0800000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) )
+ ROM_LOAD( "pnp1cgum.4j", 0x1000000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) )
+ ROM_LOAD( "pnp1cguu.5f", 0x1800000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) )
+
+ ROM_REGION16_LE( 0x200000, "textilemapl", 0 )
+ ROM_LOAD( "pnp1ccrl.7f", 0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) )
+
+ ROM_REGION( 0x200000, "textilemaph", 0 )
+ ROM_LOAD( "pnp1ccrh.7e", 0x000000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) )
+
+ ROM_REGION32_BE( 0x2000000, "pointrom", 0 )
+ ROM_LOAD32_WORD_SWAP( "pnp1pt0h.7a", 0x000000, 0x400000, CRC(43fc2246) SHA1(301d321cd4a01ebd7ccfa6f295d6c3daf0a19efe) )
+ ROM_LOAD32_WORD_SWAP( "pnp1pt0l.7c", 0x000002, 0x400000, CRC(26af5fa1) SHA1(12fcf98c2a59643e0fdfdd7186f9f16baf54a9cf) )
+ ROM_LOAD32_WORD_SWAP( "pnp1pt1h.5a", 0x800000, 0x400000, CRC(1ff470c0) SHA1(ca8fad90743589744939d681b0ce94f368337b3f) )
+ ROM_LOAD32_WORD_SWAP( "pnp1pt1l.5c", 0x800002, 0x400000, CRC(15c6f236) SHA1(e8c393359a91cdce6e9110a48c0a80708f8fc132) )
+
+ ROM_REGION( 0x1000000, "c352", 0 )
+ ROM_LOAD( "pnp1wavel.2c", 0x000000, 0x800000, CRC(35c6a9bd) SHA1(4b56fdc37525c15e57d93091e6609d6a6905fc5c) )
+ ROM_LOAD( "pnp1waveh.2a", 0x800000, 0x800000, CRC(6fa1826a) SHA1(20a5af49e65ae2bc57c016b5cd9bafa5a5220d35) )
+
+ ROM_REGION( 0x800000, "dups", 0 ) // duplicate ROMs
+ ROM_LOAD( "pnp1cguu.4f", 0x000000, 0x800000, CRC(cd64f57f) SHA1(8780270298e0823db1acbbf79396788df0c3c19c) )
+ ROM_LOAD( "pnp1cgum.5j", 0x000000, 0x800000, CRC(206217ca) SHA1(9c095bba7764f3405c3fab10513b9b78981ec44d) )
+ ROM_LOAD( "pnp1cgll.5m", 0x000000, 0x800000, CRC(d03932cf) SHA1(49240e44923cc6e815e9457b6290fd18466658af) )
+ ROM_LOAD( "pnp1cglm.4k", 0x000000, 0x800000, CRC(abf4ccf2) SHA1(3848e26d0ba6c872bbc6d5e0eb23a9d4b34152d5) )
+ ROM_LOAD( "pnp1ccrl.7m", 0x000000, 0x200000, CRC(b7bc43c2) SHA1(f4b470540194486ca6822f438fc1d4700cfb2ab1) )
+ ROM_LOAD( "pnp1ccrh.7k", 0x000000, 0x200000, CRC(caaf1b73) SHA1(b436992817ab4e4dad05e7429eb102d4fb57fa6a) )
+ROM_END
+
+
ROM_START( gunwars )
ROM_REGION32_BE( 0x400000, "user1", 0 ) /* 4 megs for main R4650 code */
ROM_LOAD16_BYTE( "gm1verb.ic2", 0x000000, 0x200000, CRC(401f8264) SHA1(281f245ae0fbc2b82248c7aacaa5dfcdb114e2ee) )
@@ -5330,8 +5380,9 @@ GAME( 1997, timecrs2v2b, timecrs2, timecrs2, timecrs2, namcos23_state, init_
GAME( 1997, timecrs2v1b, timecrs2, timecrs2, timecrs2, namcos23_state, init_s23, ROT0, "Namco", "Time Crisis II (Japan, TSS1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN )
GAME( 1997, timecrs2v4a, timecrs2, timecrs2v4a, timecrs2, namcos23_state, init_s23, ROT0, "Namco", "Time Crisis II (World, TSS4 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN )
GAME( 1997, timecrs2v5a, timecrs2, timecrs2v4a, timecrs2, namcos23_state, init_s23, ROT0, "Namco", "Time Crisis II (US, TSS5 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN )
-GAME( 1997, panicprk, 0, s23, s23, namcos23_state, init_s23, ROT0, "Namco", "Panic Park (World, PNP2 Ver. A)", GAME_FLAGS )
-GAME( 1997, panicprkj, panicprk, s23, s23, namcos23_state, init_s23, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B)", GAME_FLAGS )
+GAME( 1997, panicprk, 0, s23, s23, namcos23_state, init_s23, ROT0, "Namco", "Panic Park (World, PNP2 Ver. A)", GAME_FLAGS )
+GAME( 1997, panicprkj, panicprk, s23, s23, namcos23_state, init_s23, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B, set 1)", GAME_FLAGS )
+GAME( 1997, panicprkj2, panicprk, s23, s23, namcos23_state, init_s23, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B, set 2)", GAME_FLAGS )
GAME( 1998, gunwars, 0, gmen, s23, namcos23_state, init_s23, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN )
GAME( 1998, gunwarsa, gunwars, gmen, s23, namcos23_state, init_s23, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN )
GAME( 1998, raceon, 0, gmen, s23, namcos23_state, init_s23, ROT0, "Namco", "Race On! (World, RO2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN )
diff --git a/src/mame/drivers/neptunp2.cpp b/src/mame/drivers/neptunp2.cpp
index 7b2d8a8b53f..ba8c375a379 100644
--- a/src/mame/drivers/neptunp2.cpp
+++ b/src/mame/drivers/neptunp2.cpp
@@ -247,5 +247,27 @@ ROM_START( rockroll ) // PCB serigraphed 'CB1 (CS4)' and '960606-5 CPU'. It was
ROM_LOAD( "pat_063_tibpal16l8-25cn.bin", 0x000, 0x104, NO_DUMP ) // Protected
ROM_END
-GAME( 199?, neptunp2, 0, neptunp2, neptunp2, neptunp2_state, empty_init, ROT0, "Unidesa?", "Neptune's Pearls 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 1999, rockroll, 0, neptunp2, neptunp2, neptunp2_state, empty_init, ROT0, "Unidesa / Cirsa", "Rock 'n' Roll", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // year taken from parts' manual and sticker on PCB
+ROM_START( mexlindo )
+ ROM_REGION( 0x100000, "maincpu", 0 )
+ ROM_LOAD( "m27c801.u2", 0x000000, 0x100000, CRC(b3269247) SHA1(85911f130325e3082a83cd46b65c270c33e94d3f) )
+
+ ROM_REGION( 0x100000, "prg_data", 0 ) // dunno how this maps ...
+ ROM_LOAD( "m27c801.u3", 0x000000, 0x100000, CRC(7f08dade) SHA1(be320cdd0c1de5d5524878ebcd9779e48cf98b1d) )
+
+ ROM_REGION( 0x200000, "oki", 0 )
+ ROM_LOAD( "m27c801.u14", 0x000000, 0x100000, CRC(418bffcd) SHA1(267e5bf4d06b05902a030949149d56f37459292c) )
+ ROM_LOAD( "m27c801.u15", 0x100000, 0x100000, CRC(8932660c) SHA1(800fe27a74c0adaeebcddcbf5e0cd29767c7a4b3) )
+
+ ROM_REGION( 0x1000000, "gfx", 0 )
+ ROM_LOAD( "m29f032b.u1", 0x000000, 0x400000, CRC(0edf4c06) SHA1(12d625e7fbac19666df16c298864dcb203acd32b) )
+ ROM_LOAD( "m29f032b.u2", 0x400000, 0x400000, CRC(3b082f34) SHA1(ec1668656a885c96ea1946a58a065a56eb3ec60f) )
+ ROM_LOAD( "m29f032b.u3", 0x800000, 0x400000, CRC(caf0dc06) SHA1(8defcb5d83464068a10ba0d45be21fb03ec2155e) )
+ ROM_LOAD( "m29f032b.u4", 0xc00000, 0x400000, CRC(bd623e3c) SHA1(e42743fd1dab83c3de604c347793bb6cfc69e78e) )
+
+ ROM_REGION( 0x0800, "eeprom", 0 )
+ ROM_LOAD( "24c16_it7_0,05.u10", 0x000, 0x800, CRC(d84a3fae) SHA1(56e743a74d1934a6c6d99dc3dbbf6172c30e58a9) )
+ROM_END
+
+GAME( 2003, neptunp2, 0, neptunp2, neptunp2, neptunp2_state, empty_init, ROT0, "Unidesa / Cirsa", "Neptune's Pearls 2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Year from legal registry date
+GAME( 2004, mexlindo, 0, neptunp2, neptunp2, neptunp2_state, empty_init, ROT0, "Unidesa / Cirsa", "Mexico Lindo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Year from legal registry date
+GAME( 1999, rockroll, 0, neptunp2, neptunp2, neptunp2_state, empty_init, ROT0, "Unidesa / Cirsa", "Rock 'n' Roll", MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Year taken from parts' manual and sticker on PCB
diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp
index 95ab2dfe571..c534360fa0f 100644
--- a/src/mame/drivers/pencil2.cpp
+++ b/src/mame/drivers/pencil2.cpp
@@ -64,6 +64,10 @@ All commands must be in uppercase, which is the default at boot.
The 'capslock' is done by pressing Shift and Esc together, and the
cursor will change to a checkerboard pattern.
+The above key combination is not available to natural keyboard, so
+press ~ instead. Natural keyboard & Paste assume this has been done,
+to enable lowercase.
+
MEMORY MAP
0000-1FFF bios rom
@@ -212,50 +216,50 @@ READ_LINE_MEMBER( pencil2_state::printer_ack_r )
static INPUT_PORTS_START( pencil2 )
PORT_START("E0")
// port_custom MUST be ACTIVE_HIGH to work
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(pencil2_state, printer_ready_r)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Break") PORT_CODE(KEYCODE_END)
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(pencil2_state, printer_ack_r)
PORT_START("E1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j') PORT_CHAR('@')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('>')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('<')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m')
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') PORT_CHAR('@')
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f')
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("E3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) PORT_CHAR('~') // natural keyboard: press ~ to enable lowercase
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(32)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c')
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b')
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("E4")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("E6")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e')
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR(39)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
@@ -263,22 +267,22 @@ static INPUT_PORTS_START( pencil2 )
PORT_START("E8")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('*')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') PORT_CHAR('/')
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') PORT_CHAR('/')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR('+')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k') PORT_CHAR('?')
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') PORT_CHAR('?')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("EA")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u')
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v')
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y')
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("F0")
@@ -287,18 +291,18 @@ static INPUT_PORTS_START( pencil2 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('^')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("F2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
diff --git a/src/mame/drivers/rx78.cpp b/src/mame/drivers/rx78.cpp
index 708b108a555..dcc51357c52 100644
--- a/src/mame/drivers/rx78.cpp
+++ b/src/mame/drivers/rx78.cpp
@@ -356,22 +356,22 @@ static INPUT_PORTS_START( rx78 )
PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
- PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Up Down Arrow") PORT_CODE(KEYCODE_PGUP)
+ PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Up Down Arrow") PORT_CODE(KEYCODE_PGUP) PORT_CHAR('^')
PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Right Left Arrow") PORT_CODE(KEYCODE_PGDN)
PORT_START("KEY6")
PORT_BIT(0x01,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
- PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN)
- PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP)
- PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT)
- PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
+ PORT_BIT(0x02,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT(0x04,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+ PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("CLR / HOME") PORT_CODE(KEYCODE_HOME)
PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_UNUSED )
- PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("INST / DEL") PORT_CODE(KEYCODE_BACKSPACE)
+ PORT_BIT(0x80,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("INST / DEL") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_START("KEY7")
PORT_BIT(0x07,IP_ACTIVE_HIGH,IPT_UNUSED )
- PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("STOP") PORT_CODE(KEYCODE_END)
+ PORT_BIT(0x08,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("STOP") PORT_CODE(KEYCODE_END) PORT_CHAR(0xff) PORT_CHAR(3)
PORT_BIT(0x10,IP_ACTIVE_HIGH,IPT_UNUSED )
PORT_BIT(0x20,IP_ACTIVE_HIGH,IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
PORT_BIT(0x40,IP_ACTIVE_HIGH,IPT_UNUSED )
diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp
index f0215e2b933..923ce4a9ac4 100644
--- a/src/mame/drivers/squale.cpp
+++ b/src/mame/drivers/squale.cpp
@@ -52,6 +52,30 @@
3) VID_RD2 : [7..0] = I2,R2,G2,B2,I3,R3,G3,B3 (I=Intensity,R=Red,G=Green,B=Blue)
3) REG1 : [7..0] = EPROM Bank,-,Modem,K7,I,R,G,B (I=Intensity,R=Red,V=Green,B=Blue)
+
+LIST OF MONITOR COMMANDS (all addresses must be 4 characters)
+C Load a file from tape
+D Load DOS from floppy
+E Load a file from tape and run it
+G a Go (a = address)
+M a Memory dump (a = start address) Use the arrow keys to move around.
+R Reset then load DOS from floppy
+S a b c Save memory to tape (a = start, b = end, c = exec)
+
+KEYBOARD
+- When started, the Lock is engaged, so numbers appear as symbols. Hitting
+ Shift will unlock this and return the keyboard to normal.
+- To use the natural keyboard, hit > (or some other shifted character),
+ then proceed as normal.
+- To paste, use the emulated keyboard and hit Shift, then do the paste.
+- The monitor command-line cannot handle the arrow keys or Del correctly.
+- It is thought that the BASIC cartridge has better keyboard handling.
+
+TODO
+- Cassette
+- ACIA
+
+
****************************************************************************/
#include "emu.h"
@@ -649,7 +673,7 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // 0x0b
PORT_START("X1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -658,28 +682,28 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("BackS Delete") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(DEL))
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';')
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Del") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(DEL)) // 0x7f
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
PORT_START("X2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ret") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
PORT_START("X3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
- PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(':')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('-')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR(39)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR(':') PORT_CHAR('*')
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('=')
PORT_START("X4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -687,8 +711,8 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
- PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('[')
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(']')
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_START("X5")
@@ -699,7 +723,7 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("BS") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // 0x08
PORT_START("X6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -709,7 +733,7 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHAR(UCHAR_MAMEKEY(TAB))
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // 0x09
PORT_START("X7")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED)
@@ -718,12 +742,12 @@ static INPUT_PORTS_START( squale )
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
- PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/')
- PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LF") PORT_CODE(KEYCODE_RALT) PORT_CHAR(10)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // 0x0a
PORT_START("ay_keys")
- PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift Lck") PORT_CODE(KEYCODE_RSHIFT)
- PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_LALT)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
PORT_START("ay_joy_1")
@@ -837,7 +861,7 @@ void squale_state::squale(machine_config &config)
WD1770(config, m_fdc, 8_MHz_XTAL);
FLOPPY_CONNECTOR(config, "wd1770:0", squale_floppies, "525qd", floppy_image_device::default_floppy_formats);
FLOPPY_CONNECTOR(config, "wd1770:1", squale_floppies, "525qd", floppy_image_device::default_floppy_formats);
- SOFTWARE_LIST(config, "flop525_list").set_original("squale");
+ //SOFTWARE_LIST(config, "flop525_list").set_original("squale_flop"); // list does not exist
/* Cartridge slot */
GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "squale_cart").set_device_load(FUNC(squale_state::cart_load));
diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp
index 5ffa51a24d3..5261578d882 100644
--- a/src/mame/drivers/tutor.cpp
+++ b/src/mame/drivers/tutor.cpp
@@ -676,7 +676,7 @@ static INPUT_PORTS_START(tutor)
/* Unused? */
PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("o ^") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("o ^") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR(186) PORT_CHAR('^')
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('_') PORT_CHAR('@')
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('[') PORT_CHAR('{')
diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp
index 78e89ec5052..6a4f4115112 100644
--- a/src/mame/drivers/vic20.cpp
+++ b/src/mame/drivers/vic20.cpp
@@ -464,7 +464,7 @@ static INPUT_PORTS_START( vic20 )
PORT_START( "ROW6" )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CHAR(UCHAR_MAMEKEY(F6))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191,'^') PORT_CHAR(0x03C0)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@')
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
diff --git a/src/mame/includes/bublbobl.h b/src/mame/includes/bublbobl.h
index 2dfb75c3fd9..018cae9812e 100644
--- a/src/mame/includes/bublbobl.h
+++ b/src/mame/includes/bublbobl.h
@@ -6,6 +6,7 @@
#pragma once
#include "cpu/m6805/m68705.h"
+#include "cpu/mcs48/mcs48.h"
#include "machine/input_merger.h"
#include "machine/gen_latch.h"
#include "sound/2203intf.h"
@@ -187,4 +188,20 @@ protected:
uint8_t m_latch;
};
+
+class bub8749_state : public bublbobl_state
+{
+public:
+ bub8749_state(const machine_config &mconfig, device_type type, const char *tag)
+ : bublbobl_state(mconfig, type, tag)
+ , m_mcu(*this, "mcu")
+ {
+ }
+
+ void bub8749(machine_config &config);
+
+protected:
+ required_device<i8749_device> m_mcu;
+};
+
#endif // MAME_INCLUDES_BUBLBOBL_H
diff --git a/src/mame/layout/microvision.lay b/src/mame/layout/microvision.lay
index 68aee4b8847..34c266c700d 100644
--- a/src/mame/layout/microvision.lay
+++ b/src/mame/layout/microvision.lay
@@ -37,10 +37,12 @@ license:CC0
<element ref="lcdm" blend="multiply"><bounds x="0" y="0" width="18" height="18" /></element>
<element ref="lcda" blend="add"><bounds x="0" y="0" width="18" height="18" /></element>
- <!-- show paddle position -->
- <element ref="text_p1" blend="add"><bounds x="10.75" y="0.1" width="5" height="0.75" /></element>
- <element ref="nothing" blend="add" inputtag="PADDLE" inputmask="0x00" inputraw="1"><bounds x="15.95" y="0.1" width="2" height="0.75" /></element> <!-- block clickable input -->
- <element ref="text_p2" blend="add" inputtag="PADDLE" inputmask="0xff" inputraw="1"><bounds x="15.95" y="0.1" width="2" height="0.75" /></element>
+ <collection name="Paddle State">
+ <!-- show live paddle position -->
+ <element ref="text_p1" blend="add"><bounds x="10.75" y="0.1" width="5" height="0.75" /></element>
+ <element ref="nothing" blend="add" inputtag="PADDLE" inputmask="0x00" inputraw="1"><bounds x="15.95" y="0.1" width="2" height="0.75" /></element> <!-- block clickable input -->
+ <element ref="text_p2" blend="add" inputtag="PADDLE" inputmask="0xff" inputraw="1"><bounds x="15.95" y="0.1" width="2" height="0.75" /></element>
+ </collection>
</view>
</mamelayout>
diff --git a/src/mame/machine/kb_poisk1.h b/src/mame/machine/kb_poisk1.h
index 87b9eb8f044..21e206059f0 100644
--- a/src/mame/machine/kb_poisk1.h
+++ b/src/mame/machine/kb_poisk1.h
@@ -18,8 +18,8 @@ INPUT_PORTS_START( poisk1_keyboard_v89 )
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?56?") // 0x56
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR('\r')
- PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
- PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
+ PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP),UCHAR_MAMEKEY(8_PAD))
+ PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN),UCHAR_MAMEKEY(2_PAD))
/*-12*/ PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?-12 - ?") /* PORT_CODE(KEYCODE_SLASH) PORT_CHAR('?') PORT_CHAR('/') */
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
/*-11*/ PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?-11 - %") /* PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') */
@@ -27,7 +27,7 @@ INPUT_PORTS_START( poisk1_keyboard_v89 )
PORT_START("Y2")
/*-15*/ PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?-15 - !") /* PORT_CODE(KEYCODE_1) PORT_CHAR('!') PORT_CHAR('1') */
- PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
+ PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT),UCHAR_MAMEKEY(4_PAD))
PORT_BIT( 0x004, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(0_PAD)) /* ??? */
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
/*-13*/ PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?-13 - ;") /* PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') */
@@ -103,7 +103,7 @@ INPUT_PORTS_START( poisk1_keyboard_v89 )
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
- PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
+ PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT),UCHAR_MAMEKEY(6_PAD))
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?5a?") // 0x5a
@@ -132,8 +132,8 @@ INPUT_PORTS_START( poisk1_keyboard_v91 )
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad + \xd0\x81") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) // Cyrillic Yo
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR('\r')
- PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
- PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
+ PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP),UCHAR_MAMEKEY(8_PAD))
+ PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN),UCHAR_MAMEKEY(2_PAD))
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
@@ -141,7 +141,7 @@ INPUT_PORTS_START( poisk1_keyboard_v91 )
PORT_START("Y2")
PORT_BIT( 0x001, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
- PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
+ PORT_BIT( 0x002, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT),UCHAR_MAMEKEY(4_PAD))
PORT_BIT( 0x004, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT( 0x008, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
@@ -217,7 +217,7 @@ INPUT_PORTS_START( poisk1_keyboard_v91 )
PORT_BIT( 0x010, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad - \xd0\x84") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD)) // Cyrillic Ukrainian Ie
PORT_BIT( 0x020, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
PORT_BIT( 0x040, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SCRLOCK) PORT_CHAR(UCHAR_MAMEKEY(SCRLOCK))
- PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
+ PORT_BIT( 0x080, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT),UCHAR_MAMEKEY(6_PAD))
PORT_BIT( 0x100, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
PORT_BIT( 0x200, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
PORT_BIT( 0x400, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
diff --git a/src/mame/machine/octo_kbd.cpp b/src/mame/machine/octo_kbd.cpp
index 8398078dad9..3129cdc5d61 100644
--- a/src/mame/machine/octo_kbd.cpp
+++ b/src/mame/machine/octo_kbd.cpp
@@ -82,7 +82,7 @@ static INPUT_PORTS_START( octopus_keyboard )
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F23")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F26")
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT)
// 0x20
PORT_START("LINE4")
@@ -108,7 +108,7 @@ static INPUT_PORTS_START( octopus_keyboard )
// 0x30
PORT_START("LINE6")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": *") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@ \\") PORT_CHAR('@') PORT_CHAR('\\')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@ \\") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('@') PORT_CHAR('`') // keytop shows backslash but it produces tic
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- =") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
@@ -172,7 +172,7 @@ static INPUT_PORTS_START( octopus_keyboard )
PORT_START("LINEC")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_") PORT_CHAR('_')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F14")
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad .") PORT_CODE(KEYCODE_DEL_PAD)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Numpad 3") PORT_CODE(KEYCODE_3_PAD)
@@ -182,7 +182,7 @@ static INPUT_PORTS_START( octopus_keyboard )
PORT_START("LINED")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 \xE2\x82\xA4") PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 \xE2\x82\xA4") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR(0xA3)
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F21")
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 4924eccd9f1..c2562d8765c 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -9481,6 +9481,7 @@ bbredux // bootleg / hack
boblbobl // bootleg
boblcave // hack
bub68705 // bootleg
+bub8749 // bootleg
bublboblp // Prototype (c) 1986 Taito Corporation
bublbobl // A78 (c) 1986 Taito Corporation
bublbobl1 // A78 (c) 1986 Taito Corporation
@@ -9517,6 +9518,9 @@ busicom //
@source:buster.cpp
buster // (c) 1987 Marian Electronics Ltd.
+@source:bvm.cpp
+bvm20f1e //
+
@source:bw12.cpp
bw12 //
bw14 //
@@ -11233,12 +11237,14 @@ cps3booto2 // bootleg
cps3bs32 //
cps3bs32a //
jojo // 28/01/1999 (c) 1998 (Euro)
-jojoba // 27/09/1999 (c) 1999 (Japan)
+jojoba // 27/09/1999 (c) 1999 (Euro)
+jojobaj // 27/09/1999 (c) 1999 (Japan)
+jojobajr1 // 13/09/1999 (c) 1999 (Japan)
jojoban // 27/09/1999 (c) 1999 (Japan)
jojobane // 27/09/1999 (c) 1999 (Euro)
jojobaner1 // 13/09/1999 (c) 1999 (Euro)
jojobanr1 // 13/09/1999 (c) 1999 (Japan)
-jojobar1 // 13/09/1999 (c) 1999 (Japan)
+jojobar1 // 13/09/1999 (c) 1999 (Euro)
jojoj // 28/01/1999 (c) 1998 (Japan)
jojojr1 // 08/01/1999 (c) 1998 (Japan)
jojojr2 // 02/12/1998 (c) 1998 (Japan)
@@ -11878,6 +11884,7 @@ debutm
@source:dec0.cpp
automat // bootleg
baddudes // EI (c) 1988 Data East USA (US)
+bandit // (c) 1989 Data East USA (US)
birdtry // EK (c) 1988 Data East Corporation (Japan)
birdtrya // EK (c) 1988 Data East Corporation (Japan)
bouldash // (c) 1990 Data East Corporation (World)
@@ -11892,8 +11899,8 @@ ffantasyb // EX (c) 1989 Data East Corporation (World)
ffantasybl // bootleg
hbarrel // EC (c) 1987 Data East Corporation (World)
hbarrelu // (c) 1987 Data East USA (US)
-bandit // (c) 1989 Data East USA (US)
hippodrm // EW (c) 1989 Data East USA (US)
+mastbond // bootleg
midres // (c) 1989 Data East Corporation (World)
midresb // bootleg
midresbj // bootleg
@@ -13686,6 +13693,7 @@ superbug // 009115-009467 1977/09 [6800]
bbprot // unfinished prototype
fitfight // bootleg of Art of Fighting
histryma // bootleg of Fighter's History
+histryma2 // bootleg of Fighter's History
hotmindff // (c) Playmark
@source:fk1.cpp
@@ -14015,7 +14023,8 @@ wrally2a // (c) 1995 - Ref 950510
footbpow // (c) 1999 - Ref 000208
radikalb // (c) 1998 - Ref ???
radikalba // (c) 1998 - Ref ???
-speedup // (c) 1996 - Ref ???
+speedup // (c) 1996 - Ref 961022 (main) + 961029 (ROMs)
+speedup12 // (c) 1996 - Ref ???
speedup10 // (c) 1996 - Ref ???
surfplnt // (c) 1997 - Ref 971223
surfplnt40 // (c) 1997 - Ref 970514
@@ -18990,6 +18999,7 @@ mariorou
@source:konmedal68k.cpp
dobouchn
kattobas
+konslot
koropens
kzaurus
pwrchanc
@@ -19509,6 +19519,7 @@ lkage // A54 (c) 1984 Taito Corporation
lkageb // bootleg
lkageb2 // bootleg
lkageb3 // bootleg
+lkageb4 // bootleg
lkageo // A54 (c) 1984 Taito Corporation
lkageoo // A54 (c) 1984 Taito Corporation
@@ -22999,6 +23010,7 @@ gwinner // (c) 1983 Reben
luckyplr // (c) 1981 Cirsa
minisupf // (c) 1981 Cirsa
msbamby // (c) 198? Automatics Pasqual
+unkslot // (c) 198? MGA or Costa Net?
@source:missile.cpp
mcombat // bootleg
@@ -31232,6 +31244,7 @@ motoxgov2a // November 1997
motoxgov2a2 // November 1997
panicprk // May 1998
panicprkj // May 1998
+panicprkj2 // May 1998
raceon // Race On - September 1998
rapidrvr // December 1997
rapidrvrp // December 1997 (prototype)
@@ -32097,6 +32110,7 @@ npssr2 //
npusagif //
@source:neptunp2.cpp
+mexlindo //
neptunp2 //
rockroll //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 5bc0b7d10c1..8ab3ca34c44 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -128,6 +128,7 @@ br8641.cpp
braiplus.cpp
bullet.cpp
busicom.cpp
+bvm.cpp
bw12.cpp
bw2.cpp
c10.cpp
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index ac4349cf36b..6f8dc3671c9 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -1763,6 +1763,26 @@ void win_window_info::adjust_window_position_after_major_change()
// constrain the existing size to the aspect ratio
if (video_config.keepaspect)
newrect = constrain_to_aspect_ratio(newrect, WMSZ_BOTTOMRIGHT);
+
+ // restrict the window to one monitor and avoid toolbars if possible
+ HMONITOR const nearest_monitor = MonitorFromWindow(platform_window(), MONITOR_DEFAULTTONEAREST);
+ if (NULL != nearest_monitor)
+ {
+ MONITORINFO info;
+ std::memset(&info, 0, sizeof(info));
+ info.cbSize = sizeof(info);
+ if (GetMonitorInfo(nearest_monitor, &info))
+ {
+ if (newrect.right() > info.rcWork.right)
+ newrect = newrect.move_by(info.rcWork.right - newrect.right(), 0);
+ if (newrect.bottom() > info.rcWork.bottom)
+ newrect = newrect.move_by(0, info.rcWork.bottom - newrect.bottom());
+ if (newrect.left() < info.rcWork.left)
+ newrect = newrect.move_by(info.rcWork.left - newrect.left(), 0);
+ if (newrect.top() < info.rcWork.top)
+ newrect = newrect.move_by(0, info.rcWork.top - newrect.top());
+ }
+ }
}
else
{
@@ -1771,26 +1791,6 @@ void win_window_info::adjust_window_position_after_major_change()
newrect = monitor->position_size();
}
- // restrict the window to one monitor and avoid toolbars if possible
- HMONITOR const nearest_monitor = MonitorFromWindow(platform_window(), MONITOR_DEFAULTTONEAREST);
- if (NULL != nearest_monitor)
- {
- MONITORINFO info;
- std::memset(&info, 0, sizeof(info));
- info.cbSize = sizeof(info);
- if (GetMonitorInfo(nearest_monitor, &info))
- {
- if (newrect.right() > info.rcWork.right)
- newrect = newrect.move_by(info.rcWork.right - newrect.right(), 0);
- if (newrect.bottom() > info.rcWork.bottom)
- newrect = newrect.move_by(0, info.rcWork.bottom - newrect.bottom());
- if (newrect.left() < info.rcWork.left)
- newrect = newrect.move_by(info.rcWork.left - newrect.left(), 0);
- if (newrect.top() < info.rcWork.top)
- newrect = newrect.move_by(0, info.rcWork.top - newrect.top());
- }
- }
-
// adjust the position if different
if (RECT_to_osd_rect(oldrect) != newrect)
SetWindowPos(platform_window(), fullscreen() ? HWND_TOPMOST : HWND_TOP,