From 9cc814751eddbbcb5e614156030b51eac53ab568 Mon Sep 17 00:00:00 2001 From: 0kmg <9137159+0kmg@users.noreply.github.com> Date: Thu, 7 Oct 2021 04:06:31 -0800 Subject: bus/nes: Set multicart bank size in softlist when appropriate. (#8644) New working software list additions (nes.xml) ----------------------------------- 1996 Super HiK 4 in 1 (JY-004) [NewRisingSun, taizou] 1998 Super Game 8 in 1 (JY-111) [Consolethinks, NewRisingSun] 1997 8 in 1 (JY-112) [Consolethinks, NewRisingSun] --- hash/nes.xml | 128 ++++++++++++++++++++++++++++++------ src/devices/bus/nes/mmc3_clones.cpp | 59 ++++++----------- src/devices/bus/nes/mmc3_clones.h | 42 +++--------- src/devices/bus/nes/nes_carts.cpp | 6 +- src/devices/bus/nes/nes_ines.hxx | 59 +++++++++++------ src/devices/bus/nes/nes_pcb.hxx | 28 ++++++-- src/devices/bus/nes/nes_slot.cpp | 3 + src/devices/bus/nes/nes_slot.h | 8 ++- 8 files changed, 212 insertions(+), 121 deletions(-) diff --git a/hash/nes.xml b/hash/nes.xml index bf6d675c602..d5755a13f25 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -51718,7 +51718,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51734,7 +51736,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51750,7 +51754,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51766,7 +51772,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51779,6 +51787,24 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + 1996 Super HiK 4 in 1 (JY-004) + 1996 + J.Y. Company + + + + + + + + + + + + + + 1994 Super HiK 3 in 1 (JY-007) 1994 @@ -51800,7 +51826,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51835,7 +51863,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51946,7 +51976,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51965,7 +51997,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -51984,7 +52018,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52003,7 +52039,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52019,7 +52057,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52035,7 +52075,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52066,7 +52108,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52083,7 +52127,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52099,7 +52145,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52147,7 +52195,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52166,7 +52216,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52182,7 +52234,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx J.Y. Company - + + + @@ -52222,12 +52276,48 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + 1998 Super Game 8 in 1 (JY-111) + 1998 + J.Y. Company + + + + + + + + + + + + + + + 1997 8 in 1 (JY-112) + 1997 + J.Y. Company + + + + + + + + + + + + + FC Genjin 8 in 1 (JY-119) 199? J.Y. Company - + + + diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp index b4282eacd06..aba487fccba 100644 --- a/src/devices/bus/nes/mmc3_clones.cpp +++ b/src/devices/bus/nes/mmc3_clones.cpp @@ -53,13 +53,11 @@ DEFINE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device, "nes_shero", DEFINE_DEVICE_TYPE(NES_A9746, nes_a9746_device, "nes_bmc_a9746", "NES Cart A-9746 PCB") DEFINE_DEVICE_TYPE(NES_A88S1, nes_a88s1_device, "nes_a88s1", "NES Cart BMC A88S-1 PCB") -DEFINE_DEVICE_TYPE(NES_FCGJ8IN1, nes_fcgj8in1_device, "nes_fcgj8in1", "NES Cart BMC FC Genjin 8 in 1 PCB") +DEFINE_DEVICE_TYPE(NES_BMC_EL86XC, nes_bmc_el86xc_device, "nes_bmc_el86xc", "NES Cart BMC EL860947C/EL861121C PCB") DEFINE_DEVICE_TYPE(NES_FK23C, nes_fk23c_device, "nes_fk23c", "NES Cart FK23C PCB") DEFINE_DEVICE_TYPE(NES_FK23CA, nes_fk23ca_device, "nes_fk23ca", "NES Cart FK23CA PCB") DEFINE_DEVICE_TYPE(NES_NT639, nes_nt639_device, "nes_nt639", "NES Cart NT-639 PCB") -DEFINE_DEVICE_TYPE(NES_RESETTXROM0, nes_resettxrom0_device, "nes_resettxrom0", "NES Cart BMC RESET-TXROM 128K/128K PCB") -DEFINE_DEVICE_TYPE(NES_RESETTXROM1, nes_resettxrom1_device, "nes_resettxrom1", "NES Cart BMC RESET-TXROM 256K/128K PCB") -DEFINE_DEVICE_TYPE(NES_RESETTXROM2, nes_resettxrom2_device, "nes_resettxrom2", "NES Cart BMC RESET-TXROM 128K/256K PCB") +DEFINE_DEVICE_TYPE(NES_RESETTXROM, nes_resettxrom_device, "nes_resettxrom", "NES Cart BMC RESET-TXROM PCB") DEFINE_DEVICE_TYPE(NES_S24IN1SC03, nes_s24in1sc03_device, "nes_s24in1c03", "NES Cart Super 24 in 1 SC-03 PCB") DEFINE_DEVICE_TYPE(NES_TECHLINE9IN1, nes_tech9in1_device, "nes_tech9in1", "NES Cart Techline 9 in 1 PCB") DEFINE_DEVICE_TYPE(NES_BMC_8IN1, nes_bmc_8in1_device, "nes_bmc_8in1", "NES Cart BMC GRM070 8 in 1 PCB") @@ -257,8 +255,8 @@ nes_a88s1_device::nes_a88s1_device(const machine_config &mconfig, const char *ta { } -nes_fcgj8in1_device::nes_fcgj8in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : nes_txrom_device(mconfig, NES_FCGJ8IN1, tag, owner, clock) +nes_bmc_el86xc_device::nes_bmc_el86xc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_txrom_device(mconfig, NES_BMC_EL86XC, tag, owner, clock) { } @@ -282,23 +280,8 @@ nes_nt639_device::nes_nt639_device(const machine_config &mconfig, const char *ta { } -nes_resettxrom0_device::nes_resettxrom0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prg_shift, int chr_shift) - : nes_txrom_device(mconfig, type, tag, owner, clock), m_count(-1), m_prg_shift(prg_shift), m_chr_shift(chr_shift) -{ -} - -nes_resettxrom0_device::nes_resettxrom0_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : nes_resettxrom0_device(mconfig, NES_RESETTXROM0, tag, owner, clock, 4, 7) -{ -} - -nes_resettxrom1_device::nes_resettxrom1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : nes_resettxrom0_device(mconfig, NES_RESETTXROM1, tag, owner, clock, 5, 7) -{ -} - -nes_resettxrom2_device::nes_resettxrom2_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : nes_resettxrom0_device(mconfig, NES_RESETTXROM2, tag, owner, clock, 4, 8) +nes_resettxrom_device::nes_resettxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_txrom_device(mconfig, NES_RESETTXROM, tag, owner, clock), m_count(-1) { } @@ -620,10 +603,10 @@ void nes_a88s1_device::pcb_reset() update_banks(); } -void nes_fcgj8in1_device::pcb_reset() +void nes_bmc_el86xc_device::pcb_reset() { m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - mmc3_common_initialize(0x1f, 0x7f, 0); + mmc3_common_initialize((m_outer_prg_size >> 3) - 1, 0x7f, 0); } void nes_fk23c_device::device_start() @@ -666,20 +649,20 @@ void nes_nt639_device::pcb_reset() } // These reset-based PCBs are emulated here with no additional handlers -void nes_resettxrom0_device::device_start() +void nes_resettxrom_device::device_start() { mmc3_start(); save_item(NAME(m_count)); } -void nes_resettxrom0_device::pcb_reset() +void nes_resettxrom_device::pcb_reset() { m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - mmc3_common_initialize((1 << m_prg_shift) - 1, (1 << m_chr_shift) - 1, 0); + mmc3_common_initialize((m_outer_prg_size >> 3) - 1, m_outer_chr_size - 1, 0); m_count = (m_count + 1) & 3; - m_prg_base = m_count << m_prg_shift; - m_chr_base = m_count << m_chr_shift; + m_prg_base = m_count << (31 - count_leading_zeros_32(m_outer_prg_size) - 3); // << std::countr_zero(m_outer_prg_size) - 3; in C++20 + m_chr_base = m_count << (31 - count_leading_zeros_32(m_outer_chr_size)); // << std::countr_zero(m_outer_chr_size); in C++20 set_prg(m_prg_base, m_prg_mask); set_chr(m_chr_source, m_chr_base, m_chr_mask); } @@ -2759,27 +2742,27 @@ void nes_bmc_f600_device::chr_cb(int start, int bank, int source) /*------------------------------------------------- - BMC-FCGENJIN-8IN1 + BMC EL860947C and EL861121C boards - Unknown Multigame Bootleg Board - Games: 8 in 1 (JY-119) + Games: 8 in 1 (JY-111, JY-112, and JY-119) MMC3 clone with banking for multigame menu. - NES 2.0: mapper 267 + NES 2.0: mapper 267 and mapper 377 In MAME: Supported. -------------------------------------------------*/ -void nes_fcgj8in1_device::write_m(offs_t offset, u8 data) +void nes_bmc_el86xc_device::write_m(offs_t offset, u8 data) { - LOG_MMC(("fcgj8in1 write_m, offset: %04x, data: %02x\n", offset, data)); + LOG_MMC(("bmc_el86xc write_m, offset: %04x, data: %02x\n", offset, data)); if (!(offset & 0x1000)) // game only banks via 0x6000, this mask is a guess { - m_prg_base = (data & 0x20) << 2 | (data & 0x06) << 4; + int outer = bitswap<3>(data, 5, 2, 1); + m_prg_base = outer << (31 - count_leading_zeros_32(m_outer_prg_size) - 3); // << std::countr_zero(m_outer_prg_size) - 3; in C++20 set_prg(m_prg_base, m_prg_mask); - m_chr_base = m_prg_base << 2; + m_chr_base = outer << 7; set_chr(m_chr_source, m_chr_base, m_chr_mask); } } diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h index f5cf970728b..f1d73d146f2 100644 --- a/src/devices/bus/nes/mmc3_clones.h +++ b/src/devices/bus/nes/mmc3_clones.h @@ -475,13 +475,13 @@ private: }; -// ======================> nes_fcgj8in1_device +// ======================> nes_bmc_el86xc_device -class nes_fcgj8in1_device : public nes_txrom_device +class nes_bmc_el86xc_device : public nes_txrom_device { public: // construction/destruction - nes_fcgj8in1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + nes_bmc_el86xc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); virtual void write_m(offs_t offset, u8 data) override; @@ -543,46 +543,22 @@ public: }; -// ======================> nes_resettxrom0_device +// ======================> nes_resettxrom_device -class nes_resettxrom0_device : public nes_txrom_device +class nes_resettxrom_device : public nes_txrom_device { public: // construction/destruction - nes_resettxrom0_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + nes_resettxrom_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); virtual void pcb_reset() override; protected: - // construction/destruction - nes_resettxrom0_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prg_shift, int chr_shift); - // device-level overrides virtual void device_start() override; private: int m_count; - int m_prg_shift, m_chr_shift; -}; - - -// ======================> nes_resettxrom1_device - -class nes_resettxrom1_device : public nes_resettxrom0_device -{ -public: - // construction/destruction - nes_resettxrom1_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); -}; - - -// ======================> nes_resettxrom2_device - -class nes_resettxrom2_device : public nes_resettxrom0_device -{ -public: - // construction/destruction - nes_resettxrom2_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; @@ -1072,13 +1048,11 @@ DECLARE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device) DECLARE_DEVICE_TYPE(NES_A9746, nes_a9746_device) DECLARE_DEVICE_TYPE(NES_A88S1, nes_a88s1_device) -DECLARE_DEVICE_TYPE(NES_FCGJ8IN1, nes_fcgj8in1_device) +DECLARE_DEVICE_TYPE(NES_BMC_EL86XC, nes_bmc_el86xc_device) DECLARE_DEVICE_TYPE(NES_FK23C, nes_fk23c_device) DECLARE_DEVICE_TYPE(NES_FK23CA, nes_fk23ca_device) DECLARE_DEVICE_TYPE(NES_NT639, nes_nt639_device) -DECLARE_DEVICE_TYPE(NES_RESETTXROM0, nes_resettxrom0_device) -DECLARE_DEVICE_TYPE(NES_RESETTXROM1, nes_resettxrom1_device) -DECLARE_DEVICE_TYPE(NES_RESETTXROM2, nes_resettxrom2_device) +DECLARE_DEVICE_TYPE(NES_RESETTXROM, nes_resettxrom_device) DECLARE_DEVICE_TYPE(NES_S24IN1SC03, nes_s24in1sc03_device) DECLARE_DEVICE_TYPE(NES_TECHLINE9IN1, nes_tech9in1_device) DECLARE_DEVICE_TYPE(NES_BMC_8IN1, nes_bmc_8in1_device) diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index c90ea67c8bf..1a9ba571c45 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -430,13 +430,11 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("resetsxrom", NES_RESETSXROM); // misc multigame cart MMC3 clone boards device.option_add_internal("a88s1", NES_A88S1); - device.option_add_internal("fcgj8in1", NES_FCGJ8IN1); + device.option_add_internal("bmc_el86xc", NES_BMC_EL86XC); device.option_add_internal("fk23c", NES_FK23C); device.option_add_internal("fk23ca", NES_FK23CA); device.option_add_internal("nt639", NES_NT639); - device.option_add_internal("resettxrom0", NES_RESETTXROM0); - device.option_add_internal("resettxrom1", NES_RESETTXROM1); - device.option_add_internal("resettxrom2", NES_RESETTXROM2); + device.option_add_internal("resettxrom", NES_RESETTXROM); device.option_add_internal("s24in1c03", NES_S24IN1SC03); device.option_add_internal("tech9in1", NES_TECHLINE9IN1); device.option_add_internal("bmc_8in1", NES_BMC_8IN1); diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index 1eaae491cfb..01da0d79db4 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -302,7 +302,7 @@ static const nes_mmc mmc_list[] = { 264, YOKO_BOARD }, { 265, BMC_T262 }, { 266, UNL_CITYFIGHT }, - { 267, BMC_FCGENJIN_8IN1 }, + { 267, BMC_EL861121C }, // 268 COOLBOY and MINDKIDS // 269 mc_gx121 seems to be a PnP, but there are two actual multicarts for this mapper? // 270 multicarts on OneBus Famiclones @@ -348,7 +348,7 @@ static const nes_mmc mmc_list[] = // 310 variant of mapper 125? // 311 Unused (previously assigned in error to a bad SMB2 pirate dump) { 312, KAISER_KS7013B }, // Highway Star Kaiser bootleg - { 313, BMC_RESETTXROM0 }, + { 313, BMC_RESETTXROM }, { 314, BMC_64IN1NR }, // 315 820732C and 830134C multicarts, not in nes.xml? // 316 Unused @@ -412,7 +412,7 @@ static const nes_mmc mmc_list[] = { 374, BMC_RESETSXROM }, // 375 135-in-1 2MB multicart { 376, BMC_YY841155C }, - // 377 JY-111 multicart, similar to mapper 367 + { 377, BMC_EL860947C }, // 378 8-in-1 multicart, which one? // 379 35-in-1 multicart, similar to mapper 38 { 380, BMC_970630C }, @@ -748,6 +748,32 @@ void nes_cart_slot_device::call_load_ines() submapper = 0; logerror("Unimplemented NES 2.0 submapper: CAMERICA-BF9096.\n"); } + // 313: BMC RESET-TXROM + else if (mapper == 313) + { + if (submapper == 0) + { + m_cart->set_outer_prg_size(128); + m_cart->set_outer_chr_size(128); + } + else if (submapper == 1) + { + m_cart->set_outer_prg_size(256); + m_cart->set_outer_chr_size(128); + } + else if (submapper == 2) + { + m_cart->set_outer_prg_size(128); + m_cart->set_outer_chr_size(256); + } + else if (submapper == 3) + { + m_cart->set_outer_prg_size(256); + m_cart->set_outer_chr_size(256); + } + else + logerror("Unimplemented NES 2.0 submapper: %d\n", submapper); + } else if (submapper) { submapper = 0; @@ -937,15 +963,6 @@ void nes_cart_slot_device::call_load_ines() m_pcb_id = RCM_GS2013; break; - case BMC_RESETTXROM0: - if (submapper == 1) - m_pcb_id = BMC_RESETTXROM1; - else if (submapper == 2) - m_pcb_id = BMC_RESETTXROM2; - else if (submapper > 2) - logerror("Unimplemented NES 2.0 submapper: %d\n", submapper); - break; - case HES_BOARD: if (crc_hack) m_cart->set_pcb_ctrl_mirror(true); // Mapper 113 is used for 2 diff boards @@ -999,7 +1016,16 @@ void nes_cart_slot_device::call_load_ines() case NAMCOT_163: mapper_sram_size = m_cart->get_mapper_sram_size(); break; - //FIXME: we also have to fix Action 52 PRG loading somewhere... + + case BMC_EL860947C: + m_cart->set_outer_prg_size(128); + break; + + case BMC_EL861121C: + m_cart->set_outer_prg_size(256); + break; + + //FIXME: we also have to fix Action 52 PRG loading somewhere... case BANDAI_DATACH: fatalerror("Bandai Datach games have to be mounted in the Datach subslot!\n"); @@ -1283,13 +1309,6 @@ const char * nes_cart_slot_device::get_default_card_ines(get_default_card_softwa if (ROM[4] >= 20) pcb_id = RCM_GS2013; break; - - case BMC_RESETTXROM0: // Mapper 313 is used for 3 diff boards - if (submapper == 1) - pcb_id = BMC_RESETTXROM1; - if (submapper == 2) - pcb_id = BMC_RESETTXROM2; - break; } return nes_get_slot(pcb_id); diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index ea4ee0b70b5..e9287db7d0e 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -303,14 +303,12 @@ static const nes_pcb pcb_list[] = { "bmc_g146", BMC_G146 }, { "bmc_11160", BMC_11160 }, { "a88s1", BMC_A88S1 }, - { "fcgj8in1", BMC_FCGENJIN_8IN1 }, + { "bmc_el86xc", BMC_EL860947C }, { "fk23c", BMC_FK23C }, { "fk23ca", BMC_FK23CA }, { "nt639", BMC_NT639 }, { "resetsxrom", BMC_RESETSXROM }, - { "resettxrom0", BMC_RESETTXROM0 }, - { "resettxrom1", BMC_RESETTXROM1 }, - { "resettxrom2", BMC_RESETTXROM2 }, + { "resettxrom", BMC_RESETTXROM }, { "s24in1c03", BMC_S24IN1SC03 }, { "tech9in1", BMC_TECHLINE9IN1 }, { "bmc_8in1", BMC_8IN1 }, @@ -668,6 +666,28 @@ void nes_cart_slot_device::call_load_pcb() m_cart->set_n163_vol(n163_get_submapper_num(get_feature("n163-vol"))); } + // get outer PRG bank size for multicart boards that use this feature + if (m_pcb_id == BMC_EL860947C || m_pcb_id == BMC_RESETTXROM) + { + const char *size = get_feature("outer-prg-size"); + int kbyte = 128; + + if (size == nullptr || sscanf(size, "%u%*c", &kbyte) != 1 || kbyte & (kbyte - 1) || kbyte <= 0) + logerror("Unexpected outer-prg-size: %s\n", size ? size : "(nullptr)"); + m_cart->set_outer_prg_size(kbyte); + } + + // get outer CHR bank size for multicart boards that use this feature + if (m_pcb_id == BMC_RESETTXROM) + { + const char *size = get_feature("outer-chr-size"); + int kbyte = 128; + + if (size == nullptr || sscanf(size, "%u%*c", &kbyte) != 1 || kbyte & (kbyte - 1) || kbyte <= 0) + logerror("Unexpected outer-chr-size: %s\n", size ? size : "(nullptr)"); + m_cart->set_outer_chr_size(kbyte); + } + // pirate variants of boards with bus conflict are often not suffering from it // and actually games glitch if bus conflict is emulated... diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp index 53fc0a2f058..ec839fb1e7b 100644 --- a/src/devices/bus/nes/nes_slot.cpp +++ b/src/devices/bus/nes/nes_slot.cpp @@ -126,6 +126,9 @@ device_nes_cart_interface::device_nes_cart_interface(const machine_config &mconf , m_vrc_ls_prg_a(0) , m_vrc_ls_prg_b(0) , m_vrc_ls_chr(0) + , m_n163_vol(0) + , m_outer_prg_size(0) + , m_outer_chr_size(0) , m_mirroring(PPU_MIRROR_NONE) , m_pcb_ctrl_mirror(false) , m_four_screen_vram(false) diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index b83a4eecc65..d36d1ffc0af 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -98,14 +98,14 @@ enum BMC_60311C, BMC_80013B, BMC_810544C, BMC_830425C, BMC_830928C, BMC_850437C, BMC_970630C, BMC_N32_4IN1, BMC_NT639, BMC_NTD_03, - BMC_FCGENJIN_8IN1, BMC_FK23C, BMC_FK23CA, BMC_JY820845C, + BMC_EL860947C, BMC_EL861121C, BMC_FK23C, BMC_FK23CA, BMC_JY820845C, BMC_PJOY84, BMC_TH22913, BMC_11160, BMC_G146, BMC_2751, BMC_8157, BMC_00202650, BMC_820720C, BMC_830118C, BMC_830832C, BMC_YY841101C, BMC_YY841155C, BMC_411120C, BMC_GOLD150, BMC_GOLD260, BMC_12IN1, BMC_4IN1RESET, BMC_42IN1RESET, BMC_LITTLECOM160, BMC_CTC09, BMC_K1029, BMC_K3006, BMC_K3033, BMC_K3036, BMC_K3046, BMC_SA005A, BMC_TJ03, - BMC_RESETSXROM, BMC_RESETTXROM0, BMC_RESETTXROM1, BMC_RESETTXROM2, BMC_TECHLINE9IN1, + BMC_RESETSXROM, BMC_RESETTXROM, BMC_TECHLINE9IN1, // Unlicensed UNL_8237, UNL_8237A, UNL_CC21, UNL_AX5705, UNL_KN42, UNL_KOF97, UNL_N625092, UNL_SC127, UNL_SMB2J, UNL_T230, UNL_MMALEE, @@ -223,6 +223,8 @@ public: void set_mmc1_type(mmc1_type val) { m_mmc1_type = val; } void set_vrc_lines(int PRG_A, int PRG_B, int CHR) { m_vrc_ls_prg_a = PRG_A; m_vrc_ls_prg_b = PRG_B; m_vrc_ls_chr = CHR; } void set_n163_vol(int vol) { m_n163_vol = vol; } + void set_outer_prg_size(int val) { m_outer_prg_size = val; } + void set_outer_chr_size(int val) { m_outer_chr_size = val; } void set_x1_005_alt(bool val) { m_x1_005_alt_mirroring = val; } void set_bus_conflict(bool val) { m_bus_conflict = val; } uint8_t get_open_bus() { return m_open_bus; } @@ -296,6 +298,8 @@ protected: int m_vrc_ls_prg_b; int m_vrc_ls_chr; int m_n163_vol; + int m_outer_prg_size; + int m_outer_chr_size; int m_mirroring; bool m_pcb_ctrl_mirror, m_four_screen_vram, m_has_trainer; -- cgit v1.2.3