diff options
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 |
commit | b78251b9ca31b90d5f5afc832717568b4527afd0 (patch) | |
tree | c4968b4cccb502f77ff3fcd68f839b1ebd6c645f | |
parent | 5c34e3f00cfd5974a0ea36bacacb719186251a3f (diff) | |
parent | 1f192de48fe60040a37d9b81adad00f724403c31 (diff) |
Merge branch 'master' into time-experiments
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><pirate></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><pirate></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><pirate></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><pirate></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><unknown></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><pirate></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><pirate></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><pirate></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><pirate></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><pirate></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><pirate></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><pirate></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 |