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]
This commit is contained in:
0kmg 2021-10-07 04:06:31 -08:00 committed by GitHub
parent af18af07e9
commit 9cc814751e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 212 additions and 121 deletions

View File

@ -51718,7 +51718,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1994 super hik 4-in-1 (jy-001 rev1).prg" size="524288" crc="dbdfef5e" sha1="289a97175056bc5bff5c5c09635a450bda7058ad" status="baddump" />
</dataarea>
@ -51734,7 +51736,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1993 heroe series 4-in-1 (jy-001).prg" size="524288" crc="8e40296d" sha1="5d0b50d195f11a656f6d46c369bb3f60000ed085" status="baddump" />
</dataarea>
@ -51750,7 +51754,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1994 super hik 4-in-1 (jy-002).prg" size="524288" crc="fbc1ee6b" sha1="7c82449372191ac3b6cfa4cc72e53b860c9f635b" status="baddump" />
</dataarea>
@ -51766,7 +51772,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1994 super hik 4-in-1 (jy-003).prg" size="524288" crc="f6822fe5" sha1="81dcace66ae60a4fe4035bb8b2e7901a8b33170f" status="baddump" />
</dataarea>
@ -51779,6 +51787,24 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part>
</software>
<software name="mc_4jy4">
<description>1996 Super HiK 4 in 1 (JY-004)</description>
<year>1996</year>
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1996 super hik 4-in-1 (jy-004).prg" size="524288" crc="1ad4b9d5" sha1="87911ce6cae6799f8fa2a785190b54e397472b35" status="baddump" />
</dataarea>
<dataarea name="chr" size="524288">
<rom name="1996 super hik 4-in-1 (jy-004).chr" size="524288" crc="d851081c" sha1="688ff9f483751d42ec6eb3c1eb4c90c019746609" status="baddump" />
</dataarea>
</part>
</software>
<software name="mc_3jy7">
<description>1994 Super HiK 3 in 1 (JY-007)</description>
<year>1994</year>
@ -51800,7 +51826,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-008).prg" size="524288" crc="74a6176e" sha1="920e7a9a42b903b98c80166bc3dbf0aa50367709" status="baddump" />
</dataarea>
@ -51835,7 +51863,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="mario series 4-in-1 (jy-013).prg" size="524288" crc="4558acd5" sha1="86d99d13e813f19c792fac8802c15888739179d2" status="baddump" />
</dataarea>
@ -51946,7 +51976,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-023).prg" size="524288" crc="cadebc3e" sha1="92024688aaa583c673801bc585c4d693458f4d78" status="baddump" />
</dataarea>
@ -51965,7 +51997,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1997 super hik 4-in-1 (jy-024 rev1).prg" size="524288" crc="cef38f6c" sha1="5aebb9e0bb157d3eaa53204607610c22e8bc2548" status="baddump" />
</dataarea>
@ -51984,7 +52018,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-024).prg" size="524288" crc="cef38f6c" sha1="5aebb9e0bb157d3eaa53204607610c22e8bc2548" status="baddump" />
</dataarea>
@ -52003,7 +52039,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-038).prg" size="524288" crc="bd705234" sha1="499393d8bd79b3de5a2ada099fc9477a573cc6ef" status="baddump" />
</dataarea>
@ -52019,7 +52057,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom2" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="256K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-039).prg" size="524288" crc="a32b698b" sha1="f12d34c330d0577aa560507d15c3083a885138fa" status="baddump" />
</dataarea>
@ -52035,7 +52075,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom2" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="256K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-040).prg" size="524288" crc="677c6862" sha1="1f212b29ac4c7fa52eed6dbe4ef2ce62ed7e3bda" status="baddump" />
</dataarea>
@ -52066,7 +52108,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom1" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="256K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="1048576">
<rom name="1995 super hik 4-in-1 (jy-043).prg" size="1048576" crc="a5d89dc1" sha1="cf238422714e35e86e6e2fa5dd3fc0a64230db6e" status="baddump" />
</dataarea>
@ -52083,7 +52127,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1997 super hik 4-in-1 (jy-047).prg" size="524288" crc="7a82a25c" sha1="f05a95eecd16073e82d5ec8e05c6cdf262025735" status="baddump" />
</dataarea>
@ -52099,7 +52145,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1995 super hik 4-in-1 (jy-047 rev0).prg" size="524288" crc="113688e2" sha1="600e52f8a93cf3aa0bbb09e56bf570ad09d10184" status="baddump" />
</dataarea>
@ -52147,7 +52195,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom2" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="256K" />
<dataarea name="prg" size="524288">
<rom name="1996 super hik 4-in-1 (jy-057).prg" size="524288" crc="142184be" sha1="eec27f45ded5a7111e7b2d5ac8e0d33b0f6449cc" status="baddump" />
</dataarea>
@ -52166,7 +52216,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom2" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="256K" />
<dataarea name="prg" size="524288">
<rom name="1996 super hik 4-in-1 (jy-058).prg" size="524288" crc="019a5cf7" sha1="ace2c8eada92bda13ca9bd3e3dc336648ebb28c7" status="baddump" />
</dataarea>
@ -52182,7 +52234,9 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<publisher>J.Y. Company</publisher>
<info name="usage" value="Press reset to switch games."/>
<part name="cart" interface="nes_cart">
<feature name="slot" value="resettxrom0" />
<feature name="slot" value="resettxrom" />
<feature name="outer-prg-size" value="128K" />
<feature name="outer-chr-size" value="128K" />
<dataarea name="prg" size="524288">
<rom name="1996 super hik 4-in-1 (jy-072).prg" size="524288" crc="8b1f7c74" sha1="0987c7b4aaf4419605e71a65405c9fe7a1e98a04" status="baddump" />
</dataarea>
@ -52222,12 +52276,48 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
</part>
</software>
<software name="mc_8j111">
<description>1998 Super Game 8 in 1 (JY-111)</description>
<year>1998</year>
<publisher>J.Y. Company</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_el86xc" />
<feature name="pcb" value="EL860947C" />
<feature name="outer-prg-size" value="128K" />
<dataarea name="prg" size="1048576">
<rom name="1998 super game 8-in-1 (jy-111).prg" size="1048576" crc="8d6805f0" sha1="c13d1a3c72f48ad00db939f088f67750fafef13e" status="baddump" />
</dataarea>
<dataarea name="chr" size="1048576">
<rom name="1998 super game 8-in-1 (jy-111).chr" size="1048576" crc="c907cacf" sha1="de2a790ca0ce7e5aa2312f97cb8d92ac3836ddc5" status="baddump" />
</dataarea>
</part>
</software>
<software name="mc_8j112">
<description>1997 8 in 1 (JY-112)</description>
<year>1997</year>
<publisher>J.Y. Company</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="bmc_el86xc" />
<feature name="pcb" value="EL860947C" />
<feature name="outer-prg-size" value="128K" />
<dataarea name="prg" size="1048576">
<rom name="1997 8-in-1 (jy-112).prg" size="1048576" crc="c6971394" sha1="d3f37dd47c9a857515b40035debe6d2dbd2ec825" status="baddump" />
</dataarea>
<dataarea name="chr" size="1048576">
<rom name="1997 8-in-1 (jy-112).chr" size="1048576" crc="6751a900" sha1="fc88086b13d379848d8582aee932c3d821eea7c1" status="baddump" />
</dataarea>
</part>
</software>
<software name="mc_8j119">
<description>FC Genjin 8 in 1 (JY-119)</description>
<year>199?</year>
<publisher>J.Y. Company</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="fcgj8in1" />
<feature name="slot" value="bmc_el86xc" />
<feature name="pcb" value="EL861121C" />
<feature name="outer-prg-size" value="256K" />
<dataarea name="prg" size="2097152">
<rom name="8-in-1 (jy-119).prg" size="2097152" crc="acb1f4e9" sha1="e65bf41010b4f3d4692b458698e355c233ecd729" status="baddump" />
</dataarea>

View File

@ -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);
}
}

View File

@ -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)

View File

@ -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);

View File

@ -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);

View File

@ -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...

View File

@ -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)

View File

@ -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;