diff --git a/hash/nes.xml b/hash/nes.xml index d70dd20b90e..15e30a2f4c3 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -51669,6 +51669,69 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + + + 1994 Ball 4 in 1 Series (JY-009) + 1994 + J.Y. Company + + + + + + + + + + + + + 1996 Super HiK 4 in 1 (JY-018) + 1996 + J.Y. Company + + + + + + + + + + + + + 1995 Super HiK 4 in 1 (JY-019) + 1995 + J.Y. Company + + + + + + + + + + + + + 1996 Super HiK 4 in 1 (JY-020) + 1996 + J.Y. Company + + + + + + + + + + + + @@ -79084,13 +79147,12 @@ be better to redump them properly. --> - + 4 in 1 (OK-411) 19?? <unknown> - - + diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp index ac35e998231..e0623b7ff88 100644 --- a/src/devices/bus/nes/mmc3_clones.cpp +++ b/src/devices/bus/nes/mmc3_clones.cpp @@ -62,6 +62,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_GOLD7IN1, nes_bmc_gold7in1_device, "nes_bmc_gold7in DEFINE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_device, "nes_bmc_gc6in1", "NES Cart BMC Golden Card 6 in 1 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_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") @@ -236,6 +237,11 @@ nes_bmc_830118c_device::nes_bmc_830118c_device(const machine_config &mconfig, co { } +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) +{ +} + nes_pjoy84_device::nes_pjoy84_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : nes_txrom_device(mconfig, NES_PJOY84, tag, owner, clock) { @@ -601,6 +607,12 @@ void nes_bmc_830118c_device::pcb_reset() mmc3_common_initialize(0x7f, 0x7f, 0); } +void nes_bmc_841101c_device::pcb_reset() +{ + m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; + mmc3_common_initialize(0x0f, 0x7f, 0); +} + void nes_pjoy84_device::device_start() { mmc3_start(); @@ -2437,6 +2449,32 @@ void nes_bmc_830118c_device::write_m(offs_t offset, uint8_t data) } } +/*------------------------------------------------- + + BMC-841101C + + Games: 4 in 1 (OK-411, JY-009, JY-018, JY-019, JY-020) + + MMC3 clone with banking for multigame menu. + + NES 2.0: mapper 361 + + In MAME: Supported. + + -------------------------------------------------*/ + +void nes_bmc_841101c_device::write_m(offs_t offset, u8 data) +{ + LOG_MMC(("bmc_841101c write_m, offset: %04x, data: %02x\n", offset, data)); + if (offset & 0x1000) // games only write 0x7000, this mask is a guess + { + m_prg_base = data & 0xf0; + set_prg(m_prg_base, m_prg_mask); + m_chr_base = (data & 0xf0) << 3; + set_chr(m_chr_source, m_chr_base, m_chr_mask); + } +} + /*------------------------------------------------- BMC-POWERJOY diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h index b22c55b3b4a..afb89c7b359 100644 --- a/src/devices/bus/nes/mmc3_clones.h +++ b/src/devices/bus/nes/mmc3_clones.h @@ -675,6 +675,20 @@ private: }; +// ======================> nes_bmc_841101c_device + +class nes_bmc_841101c_device : public nes_txrom_device +{ +public: + // construction/destruction + nes_bmc_841101c_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_pjoy84_device class nes_pjoy84_device : public nes_txrom_device @@ -753,6 +767,7 @@ DECLARE_DEVICE_TYPE(NES_BMC_GOLD7IN1, nes_bmc_gold7in1_device) DECLARE_DEVICE_TYPE(NES_BMC_GC6IN1, nes_bmc_gc6in1_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_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/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index bc3963fd774..03e8e634dbb 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -419,6 +419,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_841101c", NES_BMC_841101C); device.option_add_internal("pjoy84", NES_PJOY84); device.option_add_internal("nocash_nochr", NES_NOCHR); device.option_add_internal("action53", NES_ACTION53); diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index cd3ec201eb6..57b835a6c54 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -396,7 +396,7 @@ static const nes_mmc mmc_list[] = // 358 JY multicarts, variant of mapper 282 // 359 BMC-SB-5013 multicarts // 360 Bit Corp 31-in-1 (ID 3150) (has five accessible DIP switches!) - // 361 JY multicarts + { 361, BMC_841101C }, // 362 JY-005 multicart // 363 variant of mapper 358? // 364 JY-007, is this ttoons6 in nes.xml? diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index ad6378ea1d4..f4bd81c2eca 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -296,6 +296,7 @@ static const nes_pcb pcb_list[] = { "bmc_gc6in1", BMC_GOLDENCARD_6IN1 }, { "bmc_411120c", BMC_411120C }, { "bmc_830118c", BMC_830118C }, + { "bmc_841101c", BMC_841101C }, { "pjoy84", BMC_PJOY84 }, { "bmc_gold150", BMC_GOLD150 }, { "bmc_gold260", BMC_GOLD260 }, diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index 0c3cbb95b09..bad8b6f0dab 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -97,7 +97,7 @@ enum BMC_70IN1, BMC_800IN1, BMC_1200IN1, BMC_GKA, BMC_GKB, BMC_VT5201, BMC_BENSHIENG, BMC_80013B, BMC_810544C, BMC_NTD_03, BMC_G63IN1, BMC_FK23C, BMC_FK23CA, BMC_PJOY84, - BMC_POWERFUL_255, BMC_11160, BMC_G146, BMC_8157, BMC_830118C, + BMC_POWERFUL_255, BMC_11160, BMC_G146, BMC_8157, BMC_830118C, BMC_841101C, BMC_411120C, BMC_GOLD150, BMC_GOLD260, BMC_CH001, BMC_SUPER22, BMC_12IN1, BMC_4IN1RESET, BMC_42IN1RESET, BMC_LITTLECOM160, BMC_CTC09, BMC_K3046, BMC_SA005A, BMC_TJ03,