diff --git a/hash/nes.xml b/hash/nes.xml index 4cfad06aa2e..748dd598908 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -51671,6 +51671,21 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + 1994 Super HiK 3 in 1 (JY-007) + 1994 + J.Y. Company + + + + + + + + + + + 1994 Ball 4 in 1 Series (JY-009) 1994 @@ -51731,6 +51746,51 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + 1995 Super 8 in 1 (JY-050) + 1995 + J.Y. Company + + + + + + + + + + + + + Super 8 in 1 Gold Card Series (JY-085) + 1995 + J.Y. Company + + + + + + + + + + + + + Super 8 in 1 Gold Card Series (JY-086) + 1995 + J.Y. Company + + + + + + + + + + + FC Genjin 8 in 1 (JY-119) 199? @@ -63417,7 +63477,7 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx Mickey Mania 7 19?? <unknown> - + @@ -64281,7 +64341,7 @@ We don't include these hacks because they were not burned into real carts nor so Tiny Toon Adventures 6 (Asia) 19?? <unknown> - + diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp index 45f643d70be..e9bd7de2e22 100644 --- a/src/devices/bus/nes/mmc3_clones.cpp +++ b/src/devices/bus/nes/mmc3_clones.cpp @@ -67,6 +67,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device, "nes_bmc_gc6in1" DEFINE_DEVICE_TYPE(NES_BMC_K3006, nes_bmc_k3006_device, "nes_bmc_k3006", "NES Cart BMC K-3006 PCB") DEFINE_DEVICE_TYPE(NES_BMC_411120C, nes_bmc_411120c_device, "nes_bmc_411120c", "NES Cart BMC 411120C PCB") DEFINE_DEVICE_TYPE(NES_BMC_830118C, nes_bmc_830118c_device, "nes_bmc_830118c", "NES Cart BMC 830118C PCB") +DEFINE_DEVICE_TYPE(NES_BMC_830832C, nes_bmc_830832c_device, "nes_bmc_830832c", "NES Cart BMC 830832C PCB") DEFINE_DEVICE_TYPE(NES_BMC_841101C, nes_bmc_841101c_device, "nes_bmc_841101c", "NES Cart BMC 841101C PCB") DEFINE_DEVICE_TYPE(NES_PJOY84, nes_pjoy84_device, "nes_pjoy84", "NES Cart Powerjoy 84 PCB") DEFINE_DEVICE_TYPE(NES_COOLBOY, nes_coolboy_device, "nes_coolboy", "NES Cart CoolBoy PCB") @@ -267,6 +268,11 @@ nes_bmc_830118c_device::nes_bmc_830118c_device(const machine_config &mconfig, co { } +nes_bmc_830832c_device::nes_bmc_830832c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_txrom_device(mconfig, NES_BMC_830832C, tag, owner, clock) +{ +} + nes_bmc_841101c_device::nes_bmc_841101c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : nes_txrom_device(mconfig, NES_BMC_841101C, tag, owner, clock) { @@ -679,6 +685,12 @@ void nes_bmc_830118c_device::pcb_reset() mmc3_common_initialize(0x7f, 0x7f, 0); } +void nes_bmc_830832c_device::pcb_reset() +{ + m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; + mmc3_common_initialize(0x1f, 0xff, 0); +} + void nes_bmc_841101c_device::pcb_reset() { m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; @@ -2686,6 +2698,35 @@ void nes_bmc_830118c_device::write_m(offs_t offset, uint8_t data) } } +/*------------------------------------------------- + + BMC-830832C + + Games: 1994 Super HiK 3 in 1 (JY-007) + + MMC3 clone with banking for multigame menu. + + NES 2.0: mapper 364 + + In MAME: Supported. + + -------------------------------------------------*/ + +void nes_bmc_830832c_device::write_m(offs_t offset, u8 data) +{ + LOG_MMC(("bmc_830832c write_m, offset: %04x, data: %02x\n", offset, data)); + if (offset & 0x1000) // game only writes 0x7000, this mask is a guess + { + m_prg_base = (data & 0x40) >> 1; + m_prg_mask = 0x1f >> BIT(data, 5); + set_prg(m_prg_base, m_prg_mask); + + m_chr_base = (data & 0x10) << 4; + m_chr_mask = 0xff >> BIT(data, 5); + set_chr(m_chr_source, m_chr_base, m_chr_mask); + } +} + /*------------------------------------------------- BMC-841101C diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h index 84ca31ccb4e..65ae5ede1ec 100644 --- a/src/devices/bus/nes/mmc3_clones.h +++ b/src/devices/bus/nes/mmc3_clones.h @@ -752,6 +752,20 @@ private: }; +// ======================> nes_bmc_830832c_device + +class nes_bmc_830832c_device : public nes_txrom_device +{ +public: + // construction/destruction + nes_bmc_830832c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + virtual void write_m(offs_t offset, u8 data) override; + + virtual void pcb_reset() override; +}; + + // ======================> nes_bmc_841101c_device class nes_bmc_841101c_device : public nes_txrom_device @@ -849,6 +863,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device) DECLARE_DEVICE_TYPE(NES_BMC_K3006, nes_bmc_k3006_device) DECLARE_DEVICE_TYPE(NES_BMC_411120C, nes_bmc_411120c_device) DECLARE_DEVICE_TYPE(NES_BMC_830118C, nes_bmc_830118c_device) +DECLARE_DEVICE_TYPE(NES_BMC_830832C, nes_bmc_830832c_device) DECLARE_DEVICE_TYPE(NES_BMC_841101C, nes_bmc_841101c_device) DECLARE_DEVICE_TYPE(NES_PJOY84, nes_pjoy84_device) DECLARE_DEVICE_TYPE(NES_COOLBOY, nes_coolboy_device) diff --git a/src/devices/bus/nes/multigame.cpp b/src/devices/bus/nes/multigame.cpp index 1923ad4dfe7..5cd84e0034a 100644 --- a/src/devices/bus/nes/multigame.cpp +++ b/src/devices/bus/nes/multigame.cpp @@ -46,6 +46,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_60311C, nes_bmc_60311c_device, "nes_bmc_60311 DEFINE_DEVICE_TYPE(NES_BMC_80013B, nes_bmc_80013b_device, "nes_bmc_80013b", "NES Cart BMC 80013-B PCB") DEFINE_DEVICE_TYPE(NES_BMC_810544C, nes_bmc_810544c_device, "nes_bmc_810544c", "NES Cart BMC 810544-C-A1 PCB") DEFINE_DEVICE_TYPE(NES_BMC_830425C, nes_bmc_830425c_device, "nes_bmc_830425c", "NES Cart BMC 830425C-4391T PCB") +DEFINE_DEVICE_TYPE(NES_BMC_850437C, nes_bmc_850437c_device, "nes_bmc_850437c", "NES Cart BMC 850437C PCB") DEFINE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device, "nes_ntd03", "NES Cart NTD-03 PCB") DEFINE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device, "nes_bmc_ctc09", "NES Cart BMC CTC-09 PCB") DEFINE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device, "nes_bmc_gb63", "NES Cart BMC Ghostbusters 63 in 1 PCB") @@ -209,6 +210,11 @@ nes_bmc_830425c_device::nes_bmc_830425c_device(const machine_config &mconfig, co { } +nes_bmc_850437c_device::nes_bmc_850437c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_nrom_device(mconfig, NES_BMC_850437C, tag, owner, clock) +{ +} + nes_ntd03_device::nes_ntd03_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : nes_nrom_device(mconfig, NES_NTD03, tag, owner, clock) { @@ -680,6 +686,21 @@ void nes_bmc_830425c_device::pcb_reset() m_latch = 0; } +void nes_bmc_850437c_device::device_start() +{ + common_start(); + save_item(NAME(m_reg)); +} + +void nes_bmc_850437c_device::pcb_reset() +{ + prg16_89ab(0); + prg16_cdef(7); + chr8(0, CHRRAM); + + m_reg[0] = m_reg[1] = 0; +} + void nes_ntd03_device::device_start() { common_start(); @@ -1718,7 +1739,7 @@ void nes_bmc_810544c_device::write_h(offs_t offset, u8 data) /*------------------------------------------------- - BMC-820425C-4391T + BMC-830425C-4391T Games: Super HiK 6-in-1 (A-030) @@ -1741,6 +1762,31 @@ void nes_bmc_830425c_device::write_h(offs_t offset, u8 data) prg16_cdef(outer | mode); } +/*------------------------------------------------- + + BMC-850437C + + Games: Super 8-in-1 (JY-050 rev0, JY-085, JY-086) + + NES 2.0: mapper 396 + + In MAME: Supported. + + -------------------------------------------------*/ + +void nes_bmc_850437c_device::write_h(offs_t offset, u8 data) +{ + LOG_MMC(("bmc_850437c write_h, offset: %04x, data: %02x\n", offset, data)); + + m_reg[(offset & 0x6000) == 0x2000] = data; // outer banking is always at 0xa000, mask is a guess + + u8 bank = (m_reg[1] & 0x07) << 3 | (m_reg[0] & 0x07); + prg16_89ab(bank); + prg16_cdef(bank | 0x07); + + set_nt_mirroring(BIT(m_reg[1], 6) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); +} + /*------------------------------------------------- BMC-NTD-03 diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h index 0d6453a28ff..32d3c1f3d21 100644 --- a/src/devices/bus/nes/multigame.h +++ b/src/devices/bus/nes/multigame.h @@ -364,6 +364,27 @@ private: }; +// ======================> nes_bmc_850437c_device + +class nes_bmc_850437c_device : public nes_nrom_device +{ +public: + // construction/destruction + nes_bmc_850437c_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + + virtual void write_h(offs_t offset, u8 data) override; + + virtual void pcb_reset() override; + +protected: + // device-level overrides + virtual void device_start() override; + +private: + u8 m_reg[2]; +}; + + // ======================> nes_ntd03_device class nes_ntd03_device : public nes_nrom_device @@ -1179,6 +1200,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_60311C, nes_bmc_60311c_device) DECLARE_DEVICE_TYPE(NES_BMC_80013B, nes_bmc_80013b_device) DECLARE_DEVICE_TYPE(NES_BMC_810544C, nes_bmc_810544c_device) DECLARE_DEVICE_TYPE(NES_BMC_830425C, nes_bmc_830425c_device) +DECLARE_DEVICE_TYPE(NES_BMC_850437C, nes_bmc_850437c_device) DECLARE_DEVICE_TYPE(NES_NTD03, nes_ntd03_device) DECLARE_DEVICE_TYPE(NES_BMC_CTC09, nes_bmc_ctc09_device) DECLARE_DEVICE_TYPE(NES_BMC_GB63, nes_bmc_gb63_device) diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index f3b69d7419f..0c969ebff85 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -372,6 +372,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("bmc_80013b", NES_BMC_80013B); device.option_add_internal("bmc_810544c", NES_BMC_810544C); device.option_add_internal("bmc_830425c", NES_BMC_830425C); + device.option_add_internal("bmc_850437c", NES_BMC_850437C); device.option_add_internal("ntd03", NES_NTD03); device.option_add_internal("bmc_ctc09", NES_BMC_CTC09); device.option_add_internal("bmc_gb63", NES_BMC_GB63); @@ -434,6 +435,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("bmc_gc6in1", NES_BMC_GC6IN1); device.option_add_internal("bmc_411120c", NES_BMC_411120C); device.option_add_internal("bmc_830118c", NES_BMC_830118C); + device.option_add_internal("bmc_830832c", NES_BMC_830832C); device.option_add_internal("bmc_841101c", NES_BMC_841101C); device.option_add_internal("pjoy84", NES_PJOY84); device.option_add_internal("nocash_nochr", NES_NOCHR); diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index 4f1fc9c3870..5c89eed246b 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -399,7 +399,7 @@ static const nes_mmc mmc_list[] = { 361, BMC_841101C }, // 362 JY-005 multicart // 363 variant of mapper 358? - // 364 JY-007, is this ttoons6 in nes.xml? + { 364, BMC_830832C }, // 365 is this asderp95 in nes.xml? { 366, BMC_GN45 }, // 367 7-in-1 cart that is a close variant of mapper 205 @@ -431,7 +431,7 @@ static const nes_mmc mmc_list[] = // 393 820720C multicart // 394 Realtec HSK007 multicart // 395 Realtec 8210 multicarts - // 396 various JY multicarts + { 396, BMC_850437C }, // 397 JY-082 multicart, not in nes.xml? // 398 JY-048 multicart, not in nes.xml? // 399 homebrew game Star Versus diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index ae35ffdaafa..a4fb1ac8f60 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -257,6 +257,7 @@ static const nes_pcb pcb_list[] = { "bmc_80013b", BMC_80013B }, { "bmc_810544c", BMC_810544C }, { "bmc_830425c", BMC_830425C }, + { "bmc_850437c", BMC_850437C }, { "ntd03", BMC_NTD_03 }, { "bmc_ctc09", BMC_CTC09 }, { "bmc_gb63", BMC_G63IN1 }, @@ -311,6 +312,7 @@ static const nes_pcb pcb_list[] = { "bmc_gc6in1", BMC_GOLDENCARD_6IN1 }, { "bmc_411120c", BMC_411120C }, { "bmc_830118c", BMC_830118C }, + { "bmc_830832c", BMC_830832C }, { "bmc_841101c", BMC_841101C }, { "pjoy84", BMC_PJOY84 }, { "bmc_gold150", BMC_GOLD150 }, diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index 548de0a7aa7..91f820365c4 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -96,10 +96,10 @@ enum BMC_31IN1, BMC_22GAMES, BMC_20IN1, BMC_110IN1, 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_60311C, BMC_80013B, BMC_810544C, BMC_830425C, BMC_850437C, BMC_NTD_03, BMC_G63IN1, BMC_FCGENJIN_8IN1, BMC_FK23C, BMC_FK23CA, BMC_PJOY84, BMC_TH22913, BMC_11160, BMC_G146, - BMC_2751, BMC_8157, BMC_830118C, BMC_841101C, + BMC_2751, BMC_8157, BMC_830118C, BMC_830832C, BMC_841101C, BMC_411120C, BMC_GOLD150, BMC_GOLD260, BMC_SUPER22, BMC_12IN1, BMC_4IN1RESET, BMC_42IN1RESET, BMC_LITTLECOM160, BMC_CTC09, BMC_K3006, BMC_K3036, BMC_K3046, BMC_SA005A, BMC_TJ03,