diff options
author | 0kmg <9137159+0kmg@users.noreply.github.com> | 2022-02-09 09:16:21 -0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-09 13:16:21 -0500 |
commit | 56db643ab0315a0d6ffbaf708afc1c6f599bdbf2 (patch) | |
tree | 7f0e34aab2d1ff6f6e37db61b594b67eb757643f | |
parent | d83c79a1ea5a2358e76291bdf1b03a483de5ff0e (diff) |
bus/nes: Added support for an 82 in 1 cartridge. (#9288)
New working software list additions (nes.xml)
-----------------------------------
82 in 1 [flaviocaste]
-rw-r--r-- | hash/nes.xml | 17 | ||||
-rw-r--r-- | src/devices/bus/nes/multigame.cpp | 19 | ||||
-rw-r--r-- | src/devices/bus/nes/multigame.h | 18 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_carts.cpp | 1 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_pcb.hxx | 1 | ||||
-rw-r--r-- | src/devices/bus/nes/nes_slot.h | 2 |
6 files changed, 53 insertions, 5 deletions
diff --git a/hash/nes.xml b/hash/nes.xml index f5fed4a89b2..199bd598648 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -83395,6 +83395,23 @@ be better to redump them properly. --> </part> </software> + <software name="mc_82"> + <description>82 in 1</description> + <year>199?</year> + <publisher><pirate></publisher> + <part name="cart" interface="nes_cart"> + <feature name="slot" value="bmc_82ab" /> + <feature name="pcb_model" value="82AB" /> + <dataarea name="prg" size="2097152"> + <rom name="ncn-82a" size="1048576" crc="ba6b565e" sha1="941cf81cc160371c9ae1a675a4c8195687b9fcdc" offset="0x000000" status="baddump" /> + <rom name="ncn-82b" size="1048576" crc="f4b62953" sha1="fb2a89fd6c2c776f0ee4db807621a061c7cff065" offset="0x100000" status="baddump" /> + </dataarea> + <!-- 8k VRAM on cartridge --> + <dataarea name="vram" size="8192"> + </dataarea> + </part> + </software> + <software name="mc_83"> <description>83 in 1</description> <year>19??</year> diff --git a/src/devices/bus/nes/multigame.cpp b/src/devices/bus/nes/multigame.cpp index 33aff6df695..d2b91f8f177 100644 --- a/src/devices/bus/nes/multigame.cpp +++ b/src/devices/bus/nes/multigame.cpp @@ -97,6 +97,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device, "nes_bmc_1200i DEFINE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device, "nes_bmc_gold150", "NES Cart BMC Golden 150 in 1 PCB") DEFINE_DEVICE_TYPE(NES_BMC_GOLD260, nes_bmc_gold260_device, "nes_bmc_gold260", "NES Cart BMC Golden 260 in 1 PCB") DEFINE_DEVICE_TYPE(NES_BMC_TH22913, nes_bmc_th22913_device, "nes_bmc_th22913", "NES Cart BMC TH2291-3 PCB") +DEFINE_DEVICE_TYPE(NES_BMC_82AB, nes_bmc_82ab_device, "nes_bmc_82ab", "NES Cart BMC 82AB PCB") DEFINE_DEVICE_TYPE(NES_BMC_4IN1RESET, nes_bmc_4in1reset_device, "nes_bmc_4in1reset", "NES Cart BMC 4 in 1 (Reset Based) PCB") DEFINE_DEVICE_TYPE(NES_BMC_42IN1RESET, nes_bmc_42in1reset_device, "nes_bmc_42in1reset", "NES Cart BMC 42 in 1 (Reset Based) PCB") DEFINE_DEVICE_TYPE(NES_BMC_NC20MB, nes_bmc_nc20mb_device, "nes_bmc_nc20mb", "NES Cart BMC NC-20MB PCB") @@ -498,8 +499,18 @@ nes_n625092_device::nes_n625092_device(const machine_config &mconfig, const char { } +nes_bmc_th22913_device::nes_bmc_th22913_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : nes_vram_protect_device(mconfig, type, tag, owner, clock), m_vram_prot_bit(type == NES_BMC_TH22913 ? 10 : 9) +{ +} + nes_bmc_th22913_device::nes_bmc_th22913_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : nes_vram_protect_device(mconfig, NES_BMC_TH22913, tag, owner, clock) + : nes_bmc_th22913_device(mconfig, NES_BMC_TH22913, tag, owner, clock) +{ +} + +nes_bmc_82ab_device::nes_bmc_82ab_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_bmc_th22913_device(mconfig, NES_BMC_82AB, tag, owner, clock) { } @@ -3481,9 +3492,9 @@ void nes_n625092_device::write_h(offs_t offset, u8 data) /*------------------------------------------------- - BMC-TH2291-3, BMC-CH-011 + BMC-TH2291-3, BMC-CH-011, BMC-82AB - Games: Powerful 250 in 1, Powerful 255 in 1 + Games: Powerful 250 in 1, Powerful 255 in 1, 82 in 1 iNES: mapper 63 @@ -3501,5 +3512,5 @@ void nes_bmc_th22913_device::write_h(offs_t offset, u8 data) prg16_cdef(bank | mode); set_nt_mirroring(BIT(offset, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); - m_vram_protect = BIT(offset, 10); + m_vram_protect = BIT(offset, m_vram_prot_bit); } diff --git a/src/devices/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h index 1214710ea66..4ce70450a56 100644 --- a/src/devices/bus/nes/multigame.h +++ b/src/devices/bus/nes/multigame.h @@ -1280,6 +1280,23 @@ public: virtual void write_h(offs_t offset, u8 data) override; virtual void pcb_reset() override; + +protected: + // construction/destruction + nes_bmc_th22913_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + +private: + u8 m_vram_prot_bit; +}; + + +// ======================> nes_bmc_82ab_device + +class nes_bmc_82ab_device : public nes_bmc_th22913_device +{ +public: + // construction/destruction + nes_bmc_82ab_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); }; @@ -1353,5 +1370,6 @@ DECLARE_DEVICE_TYPE(NES_BMC_42IN1RESET, nes_bmc_42in1reset_device) DECLARE_DEVICE_TYPE(NES_BMC_NC20MB, nes_bmc_nc20mb_device) DECLARE_DEVICE_TYPE(NES_BMC_LC160, nes_bmc_lc160_device) DECLARE_DEVICE_TYPE(NES_BMC_TH22913, nes_bmc_th22913_device) +DECLARE_DEVICE_TYPE(NES_BMC_82AB, nes_bmc_82ab_device) #endif // MAME_BUS_NES_MULTIGAME_H diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index 16307334349..111c72f3591 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -383,6 +383,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("bmc_60311c", NES_BMC_60311C); device.option_add_internal("bmc_80013b", NES_BMC_80013B); device.option_add_internal("bmc_810544c", NES_BMC_810544C); + device.option_add_internal("bmc_82ab", NES_BMC_82AB); device.option_add_internal("bmc_830425c", NES_BMC_830425C); device.option_add_internal("bmc_830506c", NES_BMC_830506C); device.option_add_internal("bmc_830928c", NES_BMC_830928C); diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index 3da6f033067..6d4673834d5 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -263,6 +263,7 @@ static const nes_pcb pcb_list[] = { "bmc_60311c", BMC_60311C }, { "bmc_80013b", BMC_80013B }, { "bmc_810544c", BMC_810544C }, + { "bmc_82ab", BMC_82AB }, { "bmc_830425c", BMC_830425C }, { "bmc_830506c", BMC_830506C }, { "bmc_830928c", BMC_830928C }, diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index 970390547af..40f9a4164d9 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_500IN1, BMC_800IN1, BMC_1200IN1, BMC_GKA, BMC_GKB, BMC_GKCXIN1, BMC_GN91B, BMC_HP898F, BMC_VT5201, BMC_BENSHIENG, - BMC_CTC09, BMC_CTC_12IN1, BMC_60311C, BMC_80013B, BMC_810544C, + BMC_CTC09, BMC_CTC_12IN1, BMC_60311C, BMC_80013B, BMC_810544C, BMC_82AB, BMC_830425C, BMC_830506C, BMC_830928C, BMC_850437C, BMC_891227, BMC_970630C, BMC_N32_4IN1, BMC_NC20MB, BMC_NT639, BMC_NTD_03, BMC_SRPG_5IN1, BMC_EL860947C, BMC_EL861121C, BMC_FAM250, BMC_FK23C, BMC_FK23CA, |