summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2021-08-13 22:10:08 -0700
committer Aaron Giles <aaron@aarongiles.com>2021-08-13 22:10:08 -0700
commitb78251b9ca31b90d5f5afc832717568b4527afd0 (patch)
treec4968b4cccb502f77ff3fcd68f839b1ebd6c645f
parent5c34e3f00cfd5974a0ea36bacacb719186251a3f (diff)
parent1f192de48fe60040a37d9b81adad00f724403c31 (diff)
Merge branch 'master' into time-experiments
-rw-r--r--hash/nes.xml62
-rw-r--r--src/devices/bus/nes/multigame.cpp91
-rw-r--r--src/devices/bus/nes/multigame.h35
-rw-r--r--src/devices/bus/nes/nes_carts.cpp2
-rw-r--r--src/devices/bus/nes/nes_ines.hxx4
-rw-r--r--src/devices/bus/nes/nes_pcb.hxx2
-rw-r--r--src/devices/bus/nes/nes_slot.h4
-rw-r--r--src/devices/bus/ti99/peb/cc_fdc.cpp10
-rw-r--r--src/devices/bus/ti99/peb/cc_fdc.h2
-rw-r--r--src/devices/bus/ti99/peb/myarcfdc.cpp14
-rw-r--r--src/devices/bus/ti99/peb/myarcfdc.h2
-rw-r--r--src/devices/bus/ti99/peb/pcode.cpp2
-rw-r--r--src/devices/bus/ti99/peb/pcode.h2
-rw-r--r--src/devices/bus/ti99/peb/pgram.cpp8
-rw-r--r--src/devices/machine/applefdintf.cpp4
-rw-r--r--src/devices/machine/applefdintf.h5
-rw-r--r--src/devices/machine/swim1.cpp24
-rw-r--r--src/devices/machine/swim2.cpp24
-rw-r--r--src/mame/drivers/enmirage.cpp2
-rw-r--r--src/mame/drivers/geniusjr.cpp35
-rw-r--r--src/mame/drivers/ginganin.cpp4
-rw-r--r--src/mame/drivers/mac.cpp4
-rw-r--r--src/mame/drivers/royalmah.cpp2
-rw-r--r--src/mame/drivers/stv.cpp2
-rw-r--r--src/mame/mame.lst1
25 files changed, 257 insertions, 90 deletions
diff --git a/hash/nes.xml b/hash/nes.xml
index fd5c9beaaf5..68e739842ed 100644
--- a/hash/nes.xml
+++ b/hash/nes.xml
@@ -78386,7 +78386,7 @@ be better to redump them properly. -->
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_hik300" /> <!-- header gives 212, but is it correct? -->
+ <feature name="slot" value="bmc_hik300" />
<feature name="pcb" value="BMC-SUPERHIK-300IN1" />
<dataarea name="chr" size="65536">
<rom name="200-in-1 (unchained melody)[p1].chr" size="65536" crc="aa97eff7" sha1="68ffcb379e3c3ad44b0b5ea4df47118c811d9d0d" offset="00000" status="baddump" />
@@ -78397,13 +78397,13 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_2kum" supported="no">
+ <software name="mc_2kum">
<description>2000 in 1 (No Splash, No Rev, Alt Mapper)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_gc6in1" /> <!-- header gives 217, but is it correct? -->
- <feature name="pcb" value="BMC-GOLDENCARD-6IN1" />
+ <feature name="slot" value="bmc_500in1" />
+ <feature name="mirroring" value="vertical" />
<dataarea name="chr" size="65536">
<rom name="2000-in-1 (no splash, no rev, alt mapper)[p1].chr" size="65536" crc="4a0611c1" sha1="8a1869ce3aff1c34a743c9cc3f22f01df5be2c77" offset="00000" status="baddump" />
</dataarea>
@@ -78430,6 +78430,22 @@ be better to redump them properly. -->
</part>
</software>
+ <software name="mc_21ga3">
+ <description>21 in 1 (GA-003)</description>
+ <year>19??</year>
+ <publisher>&lt;pirate&gt;</publisher>
+ <part name="cart" interface="nes_cart">
+ <feature name="slot" value="bmc_gkcxin1" />
+ <feature name="mirroring" value="vertical" />
+ <dataarea name="prg" size="131072">
+ <rom name="21-in-1 (ga-003).prg" size="131072" crc="c6a91589" sha1="d49788201ddc21f23cf33009e1bd72b51bf7e238" status="baddump" />
+ </dataarea>
+ <dataarea name="chr" size="65536">
+ <rom name="21-in-1 (ga-003).chr" size="65536" crc="0c6f5a24" sha1="04ce852a20e8e5ddfbfe00d7633a6a50873ba8cb" status="baddump" />
+ </dataarea>
+ </part>
+ </software>
+
<software name="mc_21k6">
<description>21 in 1 (K-3006)</description>
<year>199?</year>
@@ -78478,13 +78494,13 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_255" supported="no">
+ <software name="mc_255">
<description>255 in 1</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_64in1" />
- <feature name="pcb" value="BMC-64IN1" /> <!-- header says mapper 204, but it's not correct -->
+ <feature name="slot" value="bmc_500in1" />
+ <feature name="mirroring" value="vertical" />
<dataarea name="chr" size="32768">
<rom name="255-in-1 (duck hunt 100 to mario j 515).chr" size="32768" crc="f7096ccd" sha1="85f40ddc03af4e2824e742c18d20efe4fa5da325" offset="00000" status="baddump" />
</dataarea>
@@ -78955,13 +78971,15 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_4fg">
+<!-- Like many unlicensed games the 3 zapper games do not work. -->
+ <software name="mc_4fg" supported="partial">
<description>Super 4-in-1 Fantasy Gun</description>
<year>19??</year>
<publisher>&lt;unknown&gt;</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_hik300" />
<feature name="pcb" value="BMC-SUPERHIK-300IN1" />
+ <feature name="peripheral" value="zapper" />
<dataarea name="chr" size="65536">
<rom name="super 4-in-1 fantasy gun [p1].chr" size="65536" crc="5516b3f9" sha1="bdbfef593273dd442aeaf38bb6c9b6dd80384c10" offset="00000" status="baddump" />
</dataarea>
@@ -79629,13 +79647,13 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_500" supported="no">
+ <software name="mc_500">
<description>500 in 1</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_hik300" /> <!-- mapper says 217 but it's not gc6in1 either! -->
- <feature name="pcb" value="BMC-SUPERHIK-300IN1" />
+ <feature name="slot" value="bmc_500in1" />
+ <feature name="mirroring" value="vertical" />
<dataarea name="chr" size="65536">
<rom name="500-in-1 (anim splash, no rev, alt mapper)[p1].chr" size="65536" crc="25bdd64a" sha1="1f95eaf20fec9058b6917aa47dbdcec4b7a5b87d" offset="00000" status="baddump" />
</dataarea>
@@ -79645,13 +79663,13 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_500a" supported="no">
+ <software name="mc_500a">
<description>500 in 1 (Alt)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_hik300" /> <!-- mapper says 217 but it's not gc6in1 either! -->
- <feature name="pcb" value="BMC-SUPERHIK-300IN1" />
+ <feature name="slot" value="bmc_500in1" />
+ <feature name="mirroring" value="vertical" />
<dataarea name="chr" size="65536">
<rom name="500-in-1 (static splash, no rev, alt mapper)[p1].chr" size="65536" crc="e7dacb8a" sha1="ece1b9c7fd8be955a1df6c8505533b4fac194eeb" offset="00000" status="baddump" />
</dataarea>
@@ -80589,7 +80607,7 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_9999" supported="partial">
+ <software name="mc_9999">
<description>9999 in 1</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
@@ -80605,7 +80623,7 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_9999a" supported="partial">
+ <software name="mc_9999a">
<description>9999 in 1 (Alt)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
@@ -80621,7 +80639,7 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_9999b" supported="partial">
+ <software name="mc_9999b">
<description>9999 in 1 (Alt 2)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
@@ -80637,12 +80655,12 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_9999c" supported="no">
+ <software name="mc_9999c">
<description>9999 in 1 (Anim. Splash, Rev 13)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_hik300" /> <!-- header gives 212, but is it correct? -->
+ <feature name="slot" value="bmc_hik300" />
<feature name="pcb" value="BMC-SUPERHIK-300IN1" />
<dataarea name="chr" size="65536">
<rom name="9999-in-1 (anim splash, rev 13)[p1].chr" size="65536" crc="9b6e8be7" sha1="4c53a3d5e510c4355041b9ad88f1e633ce85f916" offset="00000" status="baddump" />
@@ -80669,13 +80687,13 @@ be better to redump them properly. -->
</part>
</software>
- <software name="mc_9x7a" supported="no">
+ <software name="mc_9x7a">
<description>9999999 in 1 (Alt)</description>
<year>19??</year>
<publisher>&lt;pirate&gt;</publisher>
<part name="cart" interface="nes_cart">
- <feature name="slot" value="bmc_hik300" /> <!-- mapper says 217 but it's not gc6in1 either! -->
- <feature name="pcb" value="BMC-SUPERHIK-300IN1" />
+ <feature name="slot" value="bmc_500in1" />
+ <feature name="mirroring" value="vertical" />
<dataarea name="chr" size="65536">
<rom name="9999999-in-1 (static splash, no rev, alt mapper)[p1].chr" size="65536" crc="25bdd64a" sha1="1f95eaf20fec9058b6917aa47dbdcec4b7a5b87d" offset="00000" status="baddump" />
</dataarea>
diff --git a/src/devices/bus/nes/multigame.cpp b/src/devices/bus/nes/multigame.cpp
index e9f5481a6e6..8ce1f8dfd58 100644
--- a/src/devices/bus/nes/multigame.cpp
+++ b/src/devices/bus/nes/multigame.cpp
@@ -51,6 +51,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device, "nes_bmc_ctc09
DEFINE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device, "nes_bmc_gb63", "NES Cart BMC Ghostbusters 63 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_GKA, nes_bmc_gka_device, "nes_bmc_gka", "NES Cart BMC GK-A PCB")
DEFINE_DEVICE_TYPE(NES_BMC_GKB, nes_bmc_gkb_device, "nes_bmc_gkb", "NES Cart BMC GK-B PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_GKCXIN1, nes_bmc_gkcxin1_device, "nes_bmc_gkcxin1", "NES Cart BMC GKCXIN1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_K3036, nes_bmc_k3036_device, "nes_bmc_k3036", "NES Cart BMC K-3036 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_K3046, nes_bmc_k3046_device, "nes_bmc_k3046", "NES Cart BMC K-3046 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_SA005A, nes_bmc_sa005a_device, "nes_bmc_sa005a", "NES Cart BMC SA005-A PCB")
@@ -78,6 +79,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_76IN1, nes_bmc_76in1_device, "nes_bmc_76in1
DEFINE_DEVICE_TYPE(NES_BMC_110IN1, nes_bmc_110in1_device, "nes_bmc_110in1", "NES Cart BMC 110 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_150IN1, nes_bmc_150in1_device, "nes_bmc_150in1", "NES Cart BMC 150 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_190IN1, nes_bmc_190in1_device, "nes_bmc_190in1", "NES Cart BMC 190 in 1 PCB")
+DEFINE_DEVICE_TYPE(NES_BMC_500IN1, nes_bmc_500in1_device, "nes_bmc_500in1", "NES Cart BMC 500 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device, "nes_bmc_800in1", "NES Cart BMC 800 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device, "nes_bmc_1200in1", "NES Cart BMC 1200 in 1 PCB")
DEFINE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device, "nes_bmc_gold150", "NES Cart BMC Golden 150 in 1 PCB")
@@ -232,6 +234,11 @@ nes_bmc_gkb_device::nes_bmc_gkb_device(const machine_config &mconfig, const char
{
}
+nes_bmc_gkcxin1_device::nes_bmc_gkcxin1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : nes_nrom_device(mconfig, NES_BMC_GKCXIN1, tag, owner, clock)
+{
+}
+
nes_bmc_k3036_device::nes_bmc_k3036_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, NES_BMC_K3036, tag, owner, clock)
{
@@ -279,7 +286,7 @@ nes_bmc_8157_device::nes_bmc_8157_device(const machine_config &mconfig, const ch
{
}
-nes_bmc_hik300_device::nes_bmc_hik300_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+nes_bmc_hik300_device::nes_bmc_hik300_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, NES_BMC_HIK300, tag, owner, clock)
{
}
@@ -364,6 +371,11 @@ nes_bmc_150in1_device::nes_bmc_150in1_device(const machine_config &mconfig, cons
{
}
+nes_bmc_500in1_device::nes_bmc_500in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
+ : nes_nrom_device(mconfig, NES_BMC_500IN1, tag, owner, clock)
+{
+}
+
nes_bmc_800in1_device::nes_bmc_800in1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: nes_nrom_device(mconfig, NES_BMC_800IN1, tag, owner, clock), m_mode(0)
{
@@ -802,16 +814,11 @@ void nes_bmc_8157_device::pcb_reset()
m_latch = 0;
}
-void nes_bmc_hik300_device::device_start()
-{
- common_start();
-}
-
void nes_bmc_hik300_device::pcb_reset()
{
- m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
- prg32(0xff);
- chr8(0xff, CHRROM);
+ prg16_89ab(0);
+ prg16_cdef(0);
+ chr8(0, CHRROM);
}
void nes_bmc_s700_device::device_start()
@@ -1894,6 +1901,27 @@ void nes_bmc_gkb_device::write_h(offs_t offset, uint8_t data)
/*-------------------------------------------------
+ Board BMC-GKCXIN1
+
+ Unknown Bootleg Multigame Board
+ Games: 21 in 1
+
+ NES 2.0: mapper 288
+
+ In MAME: Supported.
+
+ -------------------------------------------------*/
+
+void nes_bmc_gkcxin1_device::write_h(offs_t offset, u8 data)
+{
+ LOG_MMC(("bmc_gkcxin1 write_h, offset: %04x, data: %02x\n", offset, data));
+
+ prg32((offset >> 3) & 0x03);
+ chr8(offset & 0x07, CHRROM);
+}
+
+/*-------------------------------------------------
+
BMC-K-3036
Games: 35 in 1
@@ -2143,24 +2171,27 @@ u8 nes_bmc_8157_device::read_h(offs_t offset)
iNES: mapper 212
- In MESS: Supported.
+ In MAME: Supported.
-------------------------------------------------*/
-void nes_bmc_hik300_device::write_h(offs_t offset, uint8_t data)
+u8 nes_bmc_hik300_device::read_m(offs_t offset)
+{
+ LOG_MMC(("bmc_hik300 read_m, offset: %04x, data: %02x\n", offset));
+ return get_open_bus() | (!BIT(offset, 4) << 7); // some games have a protection MSB
+}
+
+void nes_bmc_hik300_device::write_h(offs_t offset, u8 data)
{
LOG_MMC(("bmc_hik300 write_h, offset: %04x, data: %02x\n", offset, data));
- set_nt_mirroring(BIT(data, 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
- chr8(offset, CHRROM);
+ u8 bank = offset & 0x07;
+ u8 mode = BIT(offset, 14);
+ prg16_89ab(bank & ~mode);
+ prg16_cdef(bank | mode);
- if (offset < 0x4000)
- {
- prg16_89ab(offset);
- prg16_cdef(offset);
- }
- else
- prg32(offset >> 1);
+ chr8(bank, CHRROM);
+ set_nt_mirroring(BIT(offset, 3) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
}
/*-------------------------------------------------
@@ -2693,6 +2724,26 @@ void nes_bmc_150in1_device::write_h(offs_t offset, uint8_t data)
/*-------------------------------------------------
+ BMC-500IN1
+
+ Unknown Bootleg Multigame Board
+ Games: 500 in 1, 2000 in 1 Unchained Melody, etc
+
+ iNES: mapper 217
+
+ In MAME: Supported.
+
+ -------------------------------------------------*/
+
+void nes_bmc_500in1_device::write_h(offs_t offset, u8 data)
+{
+ LOG_MMC(("bmc500in1 write_h, offset: %04x, data: %02x\n", offset, data));
+ prg32((offset >> 2) & 0x07);
+ chr8(offset & 0x07, CHRROM);
+}
+
+/*-------------------------------------------------
+
BMC-800IN1
Unknown Bootleg Multigame Board
diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h
index 78fb551d36f..134bbc9a962 100644
--- a/src/devices/bus/nes/multigame.h
+++ b/src/devices/bus/nes/multigame.h
@@ -462,6 +462,18 @@ protected:
};
+// ======================> nes_bmc_gkcxin1_device
+
+class nes_bmc_gkcxin1_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_gkcxin1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_h(offs_t offset, u8 data) override;
+};
+
+
// ======================> nes_bmc_k3036_device
class nes_bmc_k3036_device : public nes_nrom_device
@@ -606,15 +618,12 @@ class nes_bmc_hik300_device : public nes_nrom_device
{
public:
// construction/destruction
- nes_bmc_hik300_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ nes_bmc_hik300_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
- virtual void write_h(offs_t offset, uint8_t data) override;
+ virtual u8 read_m(offs_t offset) override;
+ virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
-
-protected:
- // device-level overrides
- virtual void device_start() override;
};
@@ -923,6 +932,18 @@ protected:
};
+// ======================> nes_bmc_500in1_device
+
+class nes_bmc_500in1_device : public nes_nrom_device
+{
+public:
+ // construction/destruction
+ nes_bmc_500in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ virtual void write_h(offs_t offset, uint8_t data) override;
+};
+
+
// ======================> nes_bmc_800in1_device
class nes_bmc_800in1_device : public nes_nrom_device
@@ -1160,6 +1181,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device)
DECLARE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device)
DECLARE_DEVICE_TYPE(NES_BMC_GKA, nes_bmc_gka_device)
DECLARE_DEVICE_TYPE(NES_BMC_GKB, nes_bmc_gkb_device)
+DECLARE_DEVICE_TYPE(NES_BMC_GKCXIN1, nes_bmc_gkcxin1_device)
DECLARE_DEVICE_TYPE(NES_BMC_K3036, nes_bmc_k3036_device)
DECLARE_DEVICE_TYPE(NES_BMC_K3046, nes_bmc_k3046_device)
DECLARE_DEVICE_TYPE(NES_BMC_SA005A, nes_bmc_sa005a_device)
@@ -1187,6 +1209,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_76IN1, nes_bmc_76in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_110IN1, nes_bmc_110in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_150IN1, nes_bmc_150in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_190IN1, nes_bmc_190in1_device)
+DECLARE_DEVICE_TYPE(NES_BMC_500IN1, nes_bmc_500in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device)
DECLARE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device)
diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp
index e3d2fcc3e72..52985640cc7 100644
--- a/src/devices/bus/nes/nes_carts.cpp
+++ b/src/devices/bus/nes/nes_carts.cpp
@@ -377,6 +377,7 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("bmc_gb63", NES_BMC_GB63);
device.option_add_internal("bmc_gka", NES_BMC_GKA);
device.option_add_internal("bmc_gkb", NES_BMC_GKB);
+ device.option_add_internal("bmc_gkcxin1", NES_BMC_GKCXIN1);
device.option_add_internal("bmc_k3006", NES_BMC_K3006);
device.option_add_internal("bmc_k3036", NES_BMC_K3036);
device.option_add_internal("bmc_k3046", NES_BMC_K3046);
@@ -406,6 +407,7 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("bmc_110in1", NES_BMC_110IN1);
device.option_add_internal("bmc_150in1", NES_BMC_150IN1);
device.option_add_internal("bmc_190in1", NES_BMC_190IN1);
+ device.option_add_internal("bmc_500in1", NES_BMC_500IN1);
device.option_add_internal("bmc_800in1", NES_BMC_800IN1); // mapper 236?
device.option_add_internal("bmc_1200in1", NES_BMC_1200IN1);
device.option_add_internal("bmc_gold150", NES_BMC_GOLD150); // mapper 235 with 2M PRG
diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx
index 056be6f808a..796fd63dd44 100644
--- a/src/devices/bus/nes/nes_ines.hxx
+++ b/src/devices/bus/nes/nes_ines.hxx
@@ -250,7 +250,7 @@ static const nes_mmc mmc_list[] =
{ 214, BMC_SUPERGUN_20IN1 },
{ 215, SUPERGAME_BOOGERMAN },
{ 216, RCM_GS2015 },
- { 217, BMC_GOLDENCARD_6IN1 },
+ { 217, BMC_500IN1 },
{ 218, NOCASH_NOCHR },
// 219 UNL-A9746 (according to Cah4e3's code, no dump available (yet)
// 220 Unused - reserved for emulator debugging
@@ -323,7 +323,7 @@ static const nes_mmc mmc_list[] =
{ 285, BMC_A65AS },
{ 286, BMC_BENSHIENG },
{ 287, BMC_411120C },
- // 288 GKCX1 21 in 1 multicarts, not in nes.xml?
+ { 288, BMC_GKCXIN1 },
{ 289, BMC_60311C },
{ 290, BMC_NTD_03 },
// 291 Kasheng 2-in-1 multicarts not yet in nes.xml?
diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx
index 7b9cab3a353..8ec381a72ad 100644
--- a/src/devices/bus/nes/nes_pcb.hxx
+++ b/src/devices/bus/nes/nes_pcb.hxx
@@ -262,6 +262,7 @@ static const nes_pcb pcb_list[] =
{ "bmc_gb63", BMC_G63IN1 },
{ "bmc_gka", BMC_GKA },
{ "bmc_gkb", BMC_GKB },
+ { "bmc_gkcxin1", BMC_GKCXIN1 },
{ "bmc_k3006", BMC_K3006 },
{ "bmc_k3036", BMC_K3036 },
{ "bmc_k3046", BMC_K3046 },
@@ -287,6 +288,7 @@ static const nes_pcb pcb_list[] =
{ "bmc_110in1", BMC_110IN1 },
{ "bmc_150in1", BMC_150IN1 },
{ "bmc_190in1", BMC_190IN1 },
+ { "bmc_500in1", BMC_500IN1 },
{ "bmc_800in1", BMC_800IN1 },
{ "bmc_1200in1", BMC_1200IN1 },
{ "bmc_2751", BMC_2751 },
diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index c3abf5fe199..d33b24e78a1 100644
--- a/src/devices/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
@@ -94,8 +94,8 @@ enum
BMC_8IN1, BMC_15IN1, BMC_SUPERHIK_300IN1, BMC_SUPERGUN_20IN1,
BMC_GOLDENCARD_6IN1, BMC_72IN1, BMC_SUPER_42IN1, BMC_76IN1,
BMC_31IN1, BMC_22GAMES, BMC_20IN1, BMC_110IN1,
- BMC_70IN1, BMC_800IN1, BMC_1200IN1,
- BMC_GKA, BMC_GKB, BMC_VT5201, BMC_BENSHIENG,
+ BMC_70IN1, BMC_500IN1, BMC_800IN1, BMC_1200IN1,
+ BMC_GKA, BMC_GKB, BMC_GKCXIN1, BMC_VT5201, BMC_BENSHIENG,
BMC_60311C, BMC_80013B, BMC_810544C, BMC_830425C,
BMC_NTD_03, BMC_G63IN1, BMC_FCGENJIN_8IN1, BMC_FK23C, BMC_FK23CA,
BMC_PJOY84, BMC_TH22913, BMC_11160, BMC_G146,
diff --git a/src/devices/bus/ti99/peb/cc_fdc.cpp b/src/devices/bus/ti99/peb/cc_fdc.cpp
index 12153fa1d28..c2b20e778a8 100644
--- a/src/devices/bus/ti99/peb/cc_fdc.cpp
+++ b/src/devices/bus/ti99/peb/cc_fdc.cpp
@@ -102,7 +102,7 @@ void corcomp_fdc_device::setaddress_dbin(offs_t offset, int state)
/*
Provides the current address to the PALs.
*/
-uint16_t corcomp_fdc_device::get_address()
+offs_t corcomp_fdc_device::get_address()
{
return m_address;
}
@@ -133,7 +133,7 @@ bool corcomp_fdc_device::write_access()
*/
void corcomp_fdc_device::debug_read(offs_t offset, uint8_t* value)
{
- uint16_t saveaddress = m_address;
+ offs_t saveaddress = m_address;
m_address = offset;
*value = 0x00;
@@ -147,7 +147,7 @@ void corcomp_fdc_device::debug_read(offs_t offset, uint8_t* value)
if (m_ctrlpal->selectdsr())
{
// EPROM selected
- uint16_t base = m_banksel? 0x2000 : 0;
+ offs_t base = m_banksel? 0x2000 : 0;
uint8_t* rom = &m_dsrrom[base | (m_address & 0x1fff)];
*value = *rom;
}
@@ -156,7 +156,7 @@ void corcomp_fdc_device::debug_read(offs_t offset, uint8_t* value)
void corcomp_fdc_device::debug_write(offs_t offset, uint8_t data)
{
- uint16_t saveaddress = m_address;
+ offs_t saveaddress = m_address;
m_address = offset;
if (m_ctrlpal->selectram())
{
@@ -219,7 +219,7 @@ void corcomp_fdc_device::readz(offs_t offset, uint8_t *value)
if (m_ctrlpal->selectdsr())
{
// EPROM selected
- uint16_t base = m_banksel? 0x2000 : 0;
+ offs_t base = m_banksel? 0x2000 : 0;
uint8_t* rom = &m_dsrrom[base | (m_address & 0x1fff)];
*value = *rom;
diff --git a/src/devices/bus/ti99/peb/cc_fdc.h b/src/devices/bus/ti99/peb/cc_fdc.h
index 9b3ad6fa4ab..179ba10e0e5 100644
--- a/src/devices/bus/ti99/peb/cc_fdc.h
+++ b/src/devices/bus/ti99/peb/cc_fdc.h
@@ -84,7 +84,7 @@ protected:
bool ready_trap_active();
// Deliver the current state of the address bus
- uint16_t get_address();
+ offs_t get_address();
// Wait state logic
void operate_ready_line();
diff --git a/src/devices/bus/ti99/peb/myarcfdc.cpp b/src/devices/bus/ti99/peb/myarcfdc.cpp
index 7e7d6abd318..8c1410bb848 100644
--- a/src/devices/bus/ti99/peb/myarcfdc.cpp
+++ b/src/devices/bus/ti99/peb/myarcfdc.cpp
@@ -84,7 +84,7 @@ bool myarc_fdc_device::card_selected()
/*
Provides the current address to the PAL.
*/
-uint16_t myarc_fdc_device::get_address()
+offs_t myarc_fdc_device::get_address()
{
return m_address;
}
@@ -94,7 +94,7 @@ uint16_t myarc_fdc_device::get_address()
*/
void myarc_fdc_device::debug_read(offs_t offset, uint8_t* value)
{
- uint16_t addrcopy = m_address;
+ offs_t addrcopy = m_address;
m_address = offset;
if (m_pal->ramsel())
{
@@ -104,7 +104,7 @@ void myarc_fdc_device::debug_read(offs_t offset, uint8_t* value)
if (m_pal->romen())
{
// EPROM selected
- uint16_t base = m_banksel? 0x1000 : 0;
+ offs_t base = m_banksel? 0x1000 : 0;
*value = m_dsrrom[base | (m_address & 0x0fff)];
}
m_address = addrcopy;
@@ -115,7 +115,7 @@ void myarc_fdc_device::debug_read(offs_t offset, uint8_t* value)
*/
void myarc_fdc_device::debug_write(offs_t offset, uint8_t data)
{
- uint16_t addrcopy = m_address;
+ offs_t addrcopy = m_address;
m_address = offset;
if (m_pal->ramsel())
{
@@ -145,7 +145,7 @@ void myarc_fdc_device::readz(offs_t offset, uint8_t *value)
if (m_pal->romen())
{
// EPROM selected
- uint16_t base = m_banksel? 0x1000 : 0;
+ offs_t base = m_banksel? 0x1000 : 0;
uint8_t* rom = &m_dsrrom[base | (m_address & 0x0fff)];
*value = *rom;
@@ -196,7 +196,7 @@ void myarc_fdc_device::write(offs_t offset, uint8_t data)
void myarc_fdc_device::crureadz(offs_t offset, uint8_t *value)
{
const uint8_t dipswitch[] = { 0x00, 0x01, 0x02, 0x04, 0x08 };
- uint16_t addrcopy = m_address;
+ offs_t addrcopy = m_address;
m_address = offset; // Copy the CRU address on the address variable
if (m_pal->cs251())
{
@@ -229,7 +229,7 @@ void myarc_fdc_device::crureadz(offs_t offset, uint8_t *value)
*/
void myarc_fdc_device::cruwrite(offs_t offset, uint8_t data)
{
- uint16_t addrcopy = m_address;
+ offs_t addrcopy = m_address;
m_address = offset; // Copy the CRU address on the address variable
if (m_pal->cs259())
{
diff --git a/src/devices/bus/ti99/peb/myarcfdc.h b/src/devices/bus/ti99/peb/myarcfdc.h
index e4f59027244..6917d67c146 100644
--- a/src/devices/bus/ti99/peb/myarcfdc.h
+++ b/src/devices/bus/ti99/peb/myarcfdc.h
@@ -61,7 +61,7 @@ private:
DECLARE_WRITE_LINE_MEMBER( drivesel_w );
// Deliver the current state of the address bus
- uint16_t get_address();
+ offs_t get_address();
// Polled from the PAL
bool card_selected();
diff --git a/src/devices/bus/ti99/peb/pcode.cpp b/src/devices/bus/ti99/peb/pcode.cpp
index 48618f2dbea..c7f10650995 100644
--- a/src/devices/bus/ti99/peb/pcode.cpp
+++ b/src/devices/bus/ti99/peb/pcode.cpp
@@ -142,7 +142,7 @@ void ti_pcode_card_device::setaddress_dbin(offs_t offset, int state)
}
}
-void ti_pcode_card_device::debugger_read(uint16_t offset, uint8_t& value)
+void ti_pcode_card_device::debugger_read(offs_t offset, uint8_t& value)
{
// The debuger does not call setaddress
if (m_active && in_dsr_space(offset, true))
diff --git a/src/devices/bus/ti99/peb/pcode.h b/src/devices/bus/ti99/peb/pcode.h
index c8afea6b053..dd1ce542d1a 100644
--- a/src/devices/bus/ti99/peb/pcode.h
+++ b/src/devices/bus/ti99/peb/pcode.h
@@ -51,7 +51,7 @@ private:
DECLARE_WRITE_LINE_MEMBER(pcpage_w);
DECLARE_WRITE_LINE_MEMBER(ekrpg_w);
- void debugger_read(uint16_t addr, uint8_t& value);
+ void debugger_read(offs_t addr, uint8_t& value);
required_device_array<tmc0430_device, 8> m_groms;
diff --git a/src/devices/bus/ti99/peb/pgram.cpp b/src/devices/bus/ti99/peb/pgram.cpp
index 47ea13db0bb..851a7bcee4a 100644
--- a/src/devices/bus/ti99/peb/pgram.cpp
+++ b/src/devices/bus/ti99/peb/pgram.cpp
@@ -248,8 +248,8 @@ void pgram_device::dsr_ram_read(offs_t offset, uint8_t *value)
m_bankff->clear_w(m_crulatch->q3_r());
m_bankff->preset_w(m_crulatch->q4_r());
- uint16_t base = (offset & 0x2000)<<1; // DSR:0000, RAM:4000
- uint16_t address = base | (offset & 0x1fff) | (m_bankff->output_r()? 0x2000 : 0);
+ offs_t base = (offset & 0x2000)<<1; // DSR:0000, RAM:4000
+ offs_t address = base | (offset & 0x1fff) | (m_bankff->output_r()? 0x2000 : 0);
if ((dsr && m_crulatch->q0_r()) || (!dsr && m_crulatch->q1_r()))
{
@@ -294,8 +294,8 @@ void pgram_device::dsr_ram_write(offs_t offset, uint8_t data)
if (m_crulatch->q2_r()==0) // not write-protected
{
- uint16_t base = (offset & 0x2000)<<1;
- uint16_t address = base | (offset & 0x1fff) | (m_bankff->output_r()? 0x2000 : 0);
+ offs_t base = (offset & 0x2000)<<1;
+ offs_t address = base | (offset & 0x1fff) | (m_bankff->output_r()? 0x2000 : 0);
m_dsrram->write(address, data);
if (base==0)
diff --git a/src/devices/machine/applefdintf.cpp b/src/devices/machine/applefdintf.cpp
index 2dc9fcec319..d81f77562d3 100644
--- a/src/devices/machine/applefdintf.cpp
+++ b/src/devices/machine/applefdintf.cpp
@@ -52,7 +52,8 @@ applefdintf_device::applefdintf_device(const machine_config &mconfig, device_typ
m_phases_cb(*this),
m_devsel_cb(*this),
m_sel35_cb(*this),
- m_hdsel_cb(*this)
+ m_hdsel_cb(*this),
+ m_dat1byte_cb(*this)
{
}
@@ -62,6 +63,7 @@ void applefdintf_device::device_start()
m_devsel_cb.resolve_safe();
m_sel35_cb.resolve_safe();
m_hdsel_cb.resolve_safe();
+ m_dat1byte_cb.resolve_safe();
save_item(NAME(m_phases));
save_item(NAME(m_phases_input));
}
diff --git a/src/devices/machine/applefdintf.h b/src/devices/machine/applefdintf.h
index 063006b59fd..97f5bc19b22 100644
--- a/src/devices/machine/applefdintf.h
+++ b/src/devices/machine/applefdintf.h
@@ -39,6 +39,9 @@ public:
// hdsel line when present and in output mode (active high)
auto hdsel_cb() { return m_hdsel_cb.bind(); }
+ // dat1byte line when present (active high)
+ auto dat1byte_cb() { return m_dat1byte_cb.bind(); }
+
// floppy selection input, to be updated according to the previous callbacks,
// nullptr if none selected
virtual void set_floppy(floppy_image_device *floppy) = 0;
@@ -94,7 +97,7 @@ public:
protected:
devcb_write8 m_phases_cb, m_devsel_cb;
- devcb_write_line m_sel35_cb, m_hdsel_cb;
+ devcb_write_line m_sel35_cb, m_hdsel_cb, m_dat1byte_cb;
// Current phase value in the bottom bits, input/output flags in the top bits
u8 m_phases;
diff --git a/src/devices/machine/swim1.cpp b/src/devices/machine/swim1.cpp
index 3781c2640c5..2bc553f9c81 100644
--- a/src/devices/machine/swim1.cpp
+++ b/src/devices/machine/swim1.cpp
@@ -100,6 +100,7 @@ void swim1_device::device_reset()
m_devsel_cb(0);
m_sel35_cb(true);
m_hdsel_cb(false);
+ m_dat1byte_cb(0);
}
void swim1_device::set_floppy(floppy_image_device *floppy)
@@ -310,6 +311,8 @@ void swim1_device::ism_write(offs_t offset, u8 data)
m_ism_mode &= ~data;
m_ism_param_idx = 0;
ism_show_mode();
+ if(data & 0x10)
+ m_dat1byte_cb((m_ism_fifo_pos != 0) ? 1 : 0);
if(!(m_ism_mode & 0x40)) {
logerror("switch to iwm\n");
u8 ism_devsel = m_ism_mode & 0x80 ? (m_ism_mode >> 1) & 3 : 0;
@@ -321,6 +324,8 @@ void swim1_device::ism_write(offs_t offset, u8 data)
case 0x7:
m_ism_mode |= data;
ism_show_mode();
+ if(data & 0x10)
+ m_dat1byte_cb((m_ism_fifo_pos != 2) ? 1 : 0);
break;
default:
@@ -598,6 +603,7 @@ attotime swim1_device::cycles_to_time(u64 cycles) const
void swim1_device::ism_fifo_clear()
{
m_ism_fifo_pos = 0;
+ m_dat1byte_cb((m_ism_mode & 0x10) ? 1 : 0);
ism_crc_clear();
}
@@ -606,6 +612,15 @@ bool swim1_device::ism_fifo_push(u16 data)
if(m_ism_fifo_pos == 2)
return true;
m_ism_fifo[m_ism_fifo_pos ++] = data;
+ if(m_ism_mode & 0x10) {
+ // write
+ if(m_ism_fifo_pos == 2)
+ m_dat1byte_cb(0);
+ } else {
+ // read
+ if(m_ism_fifo_pos == 1)
+ m_dat1byte_cb(1);
+ }
return false;
}
@@ -616,6 +631,15 @@ u16 swim1_device::ism_fifo_pop()
u16 r = m_ism_fifo[0];
m_ism_fifo[0] = m_ism_fifo[1];
m_ism_fifo_pos --;
+ if(m_ism_mode & 0x10) {
+ // write
+ if(m_ism_fifo_pos == 1)
+ m_dat1byte_cb(1);
+ } else {
+ // read
+ if(m_ism_fifo_pos == 0)
+ m_dat1byte_cb(0);
+ }
return r;
}
diff --git a/src/devices/machine/swim2.cpp b/src/devices/machine/swim2.cpp
index 64c1ce8155d..80a01f672b3 100644
--- a/src/devices/machine/swim2.cpp
+++ b/src/devices/machine/swim2.cpp
@@ -70,6 +70,7 @@ void swim2_device::device_reset()
m_devsel_cb(0);
m_sel35_cb(true);
m_hdsel_cb(false);
+ m_dat1byte_cb(0);
m_flux_write_start = 0;
m_flux_write_count = 0;
std::fill(m_flux_write.begin(), m_flux_write.end(), 0);
@@ -282,11 +283,15 @@ void swim2_device::write(offs_t offset, u8 data)
m_mode |= 0x40;
m_param_idx = 0;
show_mode();
+ if(data & 0x10)
+ m_dat1byte_cb((m_fifo_pos != 0) ? 1 : 0);
break;
case 7: // mode set
m_mode |= data;
show_mode();
+ if(data & 0x10)
+ m_dat1byte_cb((m_fifo_pos != 2) ? 1 : 0);
break;
default:
@@ -367,6 +372,7 @@ attotime swim2_device::cycles_to_time(u64 cycles) const
void swim2_device::fifo_clear()
{
m_fifo_pos = 0;
+ m_dat1byte_cb((m_mode & 0x10) ? 1 : 0);
crc_clear();
}
@@ -375,6 +381,15 @@ bool swim2_device::fifo_push(u16 data)
if(m_fifo_pos == 2)
return true;
m_fifo[m_fifo_pos ++] = data;
+ if(m_mode & 0x10) {
+ // write
+ if(m_fifo_pos == 2)
+ m_dat1byte_cb(0);
+ } else {
+ // read
+ if(m_fifo_pos == 1)
+ m_dat1byte_cb(1);
+ }
return false;
}
@@ -385,6 +400,15 @@ u16 swim2_device::fifo_pop()
u16 r = m_fifo[0];
m_fifo[0] = m_fifo[1];
m_fifo_pos --;
+ if(m_mode & 0x10) {
+ // write
+ if(m_fifo_pos == 1)
+ m_dat1byte_cb(1);
+ } else {
+ // read
+ if(m_fifo_pos == 0)
+ m_dat1byte_cb(0);
+ }
return r;
}
diff --git a/src/mame/drivers/enmirage.cpp b/src/mame/drivers/enmirage.cpp
index 3aff190371d..5684c66d0fe 100644
--- a/src/mame/drivers/enmirage.cpp
+++ b/src/mame/drivers/enmirage.cpp
@@ -171,7 +171,7 @@ static void ensoniq_floppies(device_slot_interface &device)
uint8_t enmirage_state::mirage_adc_read()
{
- uint8_t value;
+ uint8_t value = 0;
switch(m_mux_value & 0x03)
{
case 0:
diff --git a/src/mame/drivers/geniusjr.cpp b/src/mame/drivers/geniusjr.cpp
index 0553c9d1393..7be46e41481 100644
--- a/src/mame/drivers/geniusjr.cpp
+++ b/src/mame/drivers/geniusjr.cpp
@@ -318,6 +318,18 @@ ROM_START( gj4000 )
ROM_LOAD( "27-05886-000-000.u4", 0x000000, 0x40000, CRC(5f6db95b) SHA1(fe683154e33a82ea38696096616d11e850e0c7a3))
ROM_END
+// VTech PCB 35-21205. "C.Q.F.D" is a VTech brand, and the Scientus is a straight clone of the "Genius Junior 4000".
+ROM_START( scientus )
+ ROM_REGION( 0x2000, "maincpu", 0 )
+ ROM_LOAD( "hc05_internal.bin", 0x0000, 0x2000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "extrom", 0 )
+ ROM_LOAD( "54-6050-00-0.u2", 0x000000, 0x80000, CRC(dbcfebaa) SHA1(863697d144857fab45aad493b812ed607ad7e1d0)) // AMD AM27C010
+
+ ROM_REGION( 0x2000, "speech", 0 )
+ ROM_LOAD( "27-05992-0-0.u3", 0x0000, 0x2000, NO_DUMP ) // TI speech chip
+ROM_END
+
ROM_START( gj5000 )
ROM_REGION( 0x2000, "maincpu", 0 )
ROM_LOAD( "hc05_internal.bin", 0x0000, 0x2000, NO_DUMP )
@@ -397,14 +409,15 @@ ROM_START( gls )
ROM_END
-// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1996, gj4000, 0, 0, gj4000, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 4000 (Germany)", MACHINE_IS_SKELETON )
-COMP( 1993, gjmovie, 0, 0, gjmovie, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Movie (Germany)", MACHINE_IS_SKELETON )
-COMP( 199?, pitagjr, gjmovie, 0, gjmovie, geniusjr, geniusjr_state, empty_init, "VTech", "Pitagorin Junior", MACHINE_IS_SKELETON )
-COMP( 1996, gjrstar, 0, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar (Germany)", MACHINE_IS_SKELETON )
-COMP( 1996, gjrstar2, gjrstar, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 2 (Germany)", MACHINE_IS_SKELETON )
-COMP( 1998, gjrstar3, 0, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 3 (Germany)", MACHINE_IS_SKELETON )
-COMP( 1998, gj5000, 0, 0, gj5000, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 5000 (Germany)", MACHINE_IS_SKELETON )
-COMP( 1993, gln, 0, 0, gln, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Leader Notebook", MACHINE_IS_SKELETON )
-COMP( 1993, pitagor, gln, 0, gln, geniusjr, geniusjr_state, empty_init, "VTech", "Pitagorin", MACHINE_IS_SKELETON )
-COMP( 1995, gls, 0, 0, gls, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Leader Select", MACHINE_IS_SKELETON )
+// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
+COMP( 1996, gj4000, 0, 0, gj4000, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 4000 (Germany)", MACHINE_IS_SKELETON )
+COMP( 1999?, scientus, gj4000, 0, gj4000, geniusjr, geniusjr_state, empty_init, "C.Q.F.D", "Scientus (France)", MACHINE_IS_SKELETON )
+COMP( 1993, gjmovie, 0, 0, gjmovie, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Movie (Germany)", MACHINE_IS_SKELETON )
+COMP( 199?, pitagjr, gjmovie, 0, gjmovie, geniusjr, geniusjr_state, empty_init, "VTech", "Pitagorin Junior", MACHINE_IS_SKELETON )
+COMP( 1996, gjrstar, 0, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar (Germany)", MACHINE_IS_SKELETON )
+COMP( 1996, gjrstar2, gjrstar, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 2 (Germany)", MACHINE_IS_SKELETON )
+COMP( 1998, gjrstar3, 0, 0, gjrstar, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior Redstar 3 (Germany)", MACHINE_IS_SKELETON )
+COMP( 1998, gj5000, 0, 0, gj5000, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Junior 5000 (Germany)", MACHINE_IS_SKELETON )
+COMP( 1993, gln, 0, 0, gln, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Leader Notebook", MACHINE_IS_SKELETON )
+COMP( 1993, pitagor, gln, 0, gln, geniusjr, geniusjr_state, empty_init, "VTech", "Pitagorin", MACHINE_IS_SKELETON )
+COMP( 1995, gls, 0, 0, gls, geniusjr, geniusjr_state, empty_init, "VTech", "Genius Leader Select", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/ginganin.cpp b/src/mame/drivers/ginganin.cpp
index 1a904bf5000..9ca0156ef05 100644
--- a/src/mame/drivers/ginganin.cpp
+++ b/src/mame/drivers/ginganin.cpp
@@ -315,7 +315,7 @@ ROM_START( ginganin )
ROM_REGION( 0x08000, "bgrom", 0 ) /* background tilemaps */
ROM_LOAD( "gn_11.bin", 0x00000, 0x08000, CRC(f0d0e605) SHA1(0c541e8e036573be1d99ecb71fdb4568ca8cc269) )
- ROM_REGION( 0x20000, "ymsnd:adpcma", 0 ) /* samples */
+ ROM_REGION( 0x20000, "ymsnd", 0 ) /* samples */
ROM_LOAD( "gn_04.bin", 0x00000, 0x10000, CRC(0ed9133b) SHA1(77f628e8ec28016efac2d906146865ca4ec54bd5) )
ROM_LOAD( "gn_03.bin", 0x10000, 0x10000, CRC(f1ba222c) SHA1(780c0bd0045bac1e1bb3209576383db90504fbf3) )
@@ -350,7 +350,7 @@ ROM_START( ginganina )
ROM_REGION( 0x08000, "bgrom", 0 ) /* background tilemaps */
ROM_LOAD( "gn_11.bin", 0x00000, 0x08000, CRC(f0d0e605) SHA1(0c541e8e036573be1d99ecb71fdb4568ca8cc269) )
- ROM_REGION( 0x20000, "ymsnd:adpcma", 0 ) /* samples */
+ ROM_REGION( 0x20000, "ymsnd", 0 ) /* samples */
ROM_LOAD( "gn_04.bin", 0x00000, 0x10000, CRC(0ed9133b) SHA1(77f628e8ec28016efac2d906146865ca4ec54bd5) )
ROM_LOAD( "gn_03.bin", 0x10000, 0x10000, CRC(f1ba222c) SHA1(780c0bd0045bac1e1bb3209576383db90504fbf3) )
ROM_END
diff --git a/src/mame/drivers/mac.cpp b/src/mame/drivers/mac.cpp
index dea97b69281..8391e40b503 100644
--- a/src/mame/drivers/mac.cpp
+++ b/src/mame/drivers/mac.cpp
@@ -882,12 +882,16 @@ void mac_state::maciifx(machine_config &config)
sccpic.hint_callback().set(FUNC(mac_state::oss_interrupt<7>));
m_scc->intrq_callback().set("sccpic", FUNC(applepic_device::pint_w));
+ //m_scc->dtr_reqa_callback().set("sccpic", FUNC(applepic_device::reqa_w));
+ //m_scc->dtr_reqb_callback().set("sccpic", FUNC(applepic_device::reqb_w));
applepic_device &swimpic(APPLEPIC(config, "swimpic", C15M));
swimpic.prd_callback().set(m_fdc, FUNC(applefdintf_device::read));
swimpic.pwr_callback().set(m_fdc, FUNC(applefdintf_device::write));
swimpic.hint_callback().set(FUNC(mac_state::oss_interrupt<6>));
+ m_fdc->dat1byte_cb().set("swimpic", FUNC(applepic_device::reqa_w));
+
RAM(config, m_ram);
m_ram->set_default_size("4M");
m_ram->set_extra_options("8M,16M,32M,64M,96M,128M");
diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp
index abd99d8190b..c4ae4be0222 100644
--- a/src/mame/drivers/royalmah.cpp
+++ b/src/mame/drivers/royalmah.cpp
@@ -5519,7 +5519,7 @@ void royalmah_state::init_mjsenka()
rom[i] = bitswap<8>(rom[i], 0, 6, 5, 4, 3, 1, 2, 7);
}
- m_mainopbank->configure_entries(0, 8, m_decrypted_opcodes + 0x8000, 0x400);
+ m_mainopbank->configure_entries(0, 8, &m_decrypted_opcodes[0x8000], 0x400);
init_chalgirl();
}
diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp
index 61f259ccf11..68f70050581 100644
--- a/src/mame/drivers/stv.cpp
+++ b/src/mame/drivers/stv.cpp
@@ -191,10 +191,10 @@ uint8_t stv_state::critcrsh_ioga_r(offs_t offset)
void stv_state::critcrsh_ioga_w(offs_t offset, uint8_t data)
{
+ static uint8_t const bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x49, 0x78, 0x00 }; // TODO: chip type unknown
switch (offset * 2 + 1)
{
case 0x0b:
- static uint8_t bcd2hex[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0x58, 0x4c, 0x62, 0x49, 0x78, 0x00 }; // TODO: chip type unknown
m_cc_digits[0] = bcd2hex[(data & 0xf0) >> 4];
m_cc_digits[1] = bcd2hex[data & 0x0f];
break;
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 1a1d29db7aa..7be1d5ed54d 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -15197,6 +15197,7 @@ gln // Genius Leader Notebook
pitagor // Pitagorin
gls // Genius Leader Select
pitagjr // Pitagorin Junior
+scientus // Scientus (France, from C.Q.F.D)
@source:genpc.cpp
pc // 1987 PC with CGA