From c7d04d404a3dc5f2035deabc7daf188f14800f08 Mon Sep 17 00:00:00 2001 From: 0kmg <9137159+0kmg@users.noreply.github.com> Date: Sat, 9 Oct 2021 16:30:47 -0800 Subject: bus/nes: Added support for a couple Korean educational titles. (#8675) - Also replaced the underdumped ROMs for brillco2, which is now fully working. New working software list additions (nes.xml) ----------------------------------- Yeongjaekeom Cocoma Pack 1 (Korea) [MLX] --- hash/nes.xml | 34 ++++++++++++++++++++++-------- src/devices/bus/nes/mmc3_clones.cpp | 41 +++++++++++++++++++++++++++++++++++++ src/devices/bus/nes/mmc3_clones.h | 15 ++++++++++++++ src/devices/bus/nes/nes_carts.cpp | 1 + src/devices/bus/nes/nes_ines.hxx | 2 +- src/devices/bus/nes/nes_pcb.hxx | 1 + src/devices/bus/nes/nes_slot.h | 2 +- 7 files changed, 85 insertions(+), 11 deletions(-) diff --git a/hash/nes.xml b/hash/nes.xml index f81b66423e2..64bf441c762 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -62814,18 +62814,34 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx + + Yeongjaekeom Cocoma Pack 1 (Korea) + 1999 + EduBank + + + + + + + + + + + + - Brilliant Com Pack 2 (Kor) - 19?? - <unknown> + Yeongjaekeom Cocoma Pack 2 (Korea) + 1999 + EduBank + - - - - + + + - - + + diff --git a/src/devices/bus/nes/mmc3_clones.cpp b/src/devices/bus/nes/mmc3_clones.cpp index 828189f9767..6ee14c0fabd 100644 --- a/src/devices/bus/nes/mmc3_clones.cpp +++ b/src/devices/bus/nes/mmc3_clones.cpp @@ -47,6 +47,7 @@ DEFINE_DEVICE_TYPE(NES_TXC_TW, nes_txc_tw_device, "nes_txc_tw", DEFINE_DEVICE_TYPE(NES_KOF97, nes_kof97_device, "nes_kof97", "NES Cart KoF 97 PCB") DEFINE_DEVICE_TYPE(NES_KOF96, nes_kof96_device, "nes_kof96", "NES Cart KoF 96 PCB") DEFINE_DEVICE_TYPE(NES_SF3, nes_sf3_device, "nes_sf3", "NES Cart Super Fighter III PCB") +DEFINE_DEVICE_TYPE(NES_COCOMA, nes_cocoma_device, "nes_cocoma", "NES Cart Cocoma Core Pro PCB") DEFINE_DEVICE_TYPE(NES_GOUDER, nes_gouder_device, "nes_gouder", "NES Cart Gouder PCB") DEFINE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device, "nes_sa9602b", "NES Cart SA-9602B PCB") DEFINE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device, "nes_shero", "NES Cart Street Hero PCB") @@ -229,6 +230,11 @@ nes_sf3_device::nes_sf3_device(const machine_config &mconfig, const char *tag, d { } +nes_cocoma_device::nes_cocoma_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : nes_txrom_device(mconfig, NES_COCOMA, tag, owner, clock) +{ +} + nes_gouder_device::nes_gouder_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : nes_txrom_device(mconfig, NES_GOUDER, tag, owner, clock) { @@ -533,6 +539,12 @@ void nes_kof96_device::pcb_reset() mmc3_common_initialize(0xff, 0xff, 0); } +void nes_cocoma_device::pcb_reset() +{ + m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; + mmc3_common_initialize(0x0f, 0x7f, 0); +} + void nes_gouder_device::device_start() { mmc3_start(); @@ -1853,6 +1865,35 @@ void nes_sf3_device::write_h(offs_t offset, uint8_t data) } } +/*------------------------------------------------- + + Cocoma Core Pro Board + + Games: BrilliantCom Cocoma Pack 1 and 2 + + MMC3 clone with an extra outer bank latch. + + NES 2.0: mapper 516 + + In MAME: Supported. + + -------------------------------------------------*/ + +void nes_cocoma_device::write_h(offs_t offset, u8 data) +{ + LOG_MMC(("cocoma write_h, offset: %04x, data: %02x\n", offset, data)); + + if (BIT(offset, 4)) + { + m_prg_base = (offset & 0x03) << 4; + set_prg(m_prg_base, m_prg_mask); + m_chr_base = (offset & 0x0c) << 5; + set_chr(m_chr_source, m_chr_base, m_chr_mask); + } + else + txrom_write(offset, data); +} + /*------------------------------------------------- Bootleg Board 37017 (?) by Gouder diff --git a/src/devices/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h index 61cfa0d568e..d08368ea43f 100644 --- a/src/devices/bus/nes/mmc3_clones.h +++ b/src/devices/bus/nes/mmc3_clones.h @@ -360,6 +360,20 @@ protected: }; +// ======================> nes_cocoma_device + +class nes_cocoma_device : public nes_txrom_device +{ +public: + // construction/destruction + nes_cocoma_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; +}; + + // ======================> nes_gouder_device class nes_gouder_device : public nes_txrom_device @@ -1067,6 +1081,7 @@ DECLARE_DEVICE_TYPE(NES_TXC_TW, nes_txc_tw_device) DECLARE_DEVICE_TYPE(NES_KOF97, nes_kof97_device) DECLARE_DEVICE_TYPE(NES_KOF96, nes_kof96_device) DECLARE_DEVICE_TYPE(NES_SF3, nes_sf3_device) +DECLARE_DEVICE_TYPE(NES_COCOMA, nes_cocoma_device) DECLARE_DEVICE_TYPE(NES_GOUDER, nes_gouder_device) DECLARE_DEVICE_TYPE(NES_SA9602B, nes_sa9602b_device) DECLARE_DEVICE_TYPE(NES_SACHEN_SHERO, nes_sachen_shero_device) diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index 29fc3cc5541..6f38d3cabbf 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -194,6 +194,7 @@ void nes_cart(device_slot_interface &device) device.option_add_internal("cne_decathl", NES_CNE_DECATHL); device.option_add_internal("cne_fsb", NES_CNE_FSB); device.option_add_internal("cne_shlz", NES_CNE_SHLZ); + device.option_add_internal("cocoma", NES_COCOMA); device.option_add_internal("nanjing", NES_NANJING); // mapper 163 device.option_add_internal("ntdec_2746", NES_NTDEC_2746); device.option_add_internal("ntdec_asder", NES_NTDEC_ASDER); // mapper 112 diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index b8c1a5a59c3..0075482f87f 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -479,7 +479,7 @@ static const nes_mmc mmc_list[] = { 513, SACHEN_SA9602B }, // 514 seems to be for skaraok, currently set to UNKNOWN in nes.xml // 515 Korean Family Noraebang karaoke cart with expansion cart, mic, and YM2413! - // 516 is this for brillco2 and another related title not in nes.xml? + { 516, COCOMA_BOARD }, // 517 another Korean karaoke cart with mic // 518 Subor UNL-DANCE2000 and a few others { 519, UNL_EH8813A }, // Dr Mario II Chinese pirate diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index 20b18da7827..251e146850a 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -106,6 +106,7 @@ static const nes_pcb pcb_list[] = { "cne_decathl", CNE_DECATHLON }, { "cne_fsb", CNE_FSB }, { "cne_shlz", CNE_SHLZ }, + { "cocoma", COCOMA_BOARD }, { "nanjing", NANJING_BOARD }, // mapper 163 { "ntdec_2746", NTDEC_2746 }, { "ntdec_asder", NTDEC_ASDER }, // mapper 112 diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index 476b0fdbc73..cdb673f9c32 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -135,7 +135,7 @@ enum OPENCORP_DAOU306, HES_BOARD, SVISION16_BOARD, RUMBLESTATION_BOARD, JYCOMPANY_A, JYCOMPANY_B, JYCOMPANY_C, MAGICSERIES_MD, KASING_BOARD, FUTUREMEDIA_BOARD, FUKUTAKE_BOARD, SOMARI_SL12, HENGG_SRICH, HENGG_XHZS, HENGG_SHJY3, SUBOR_TYPE0, SUBOR_TYPE1, SUBOR_TYPE2, - CNE_DECATHLON, CNE_FSB, CNE_SHLZ, CONY_BOARD, YOKO_BOARD, + CNE_DECATHLON, CNE_FSB, CNE_SHLZ, COCOMA_BOARD, CONY_BOARD, YOKO_BOARD, RCM_GS2015, RCM_GS2004, RCM_GS2013, RCM_TF9IN1, RCM_3DBLOCK, WAIXING_TYPE_A, WAIXING_TYPE_A1, WAIXING_TYPE_B, WAIXING_TYPE_C, WAIXING_TYPE_D, WAIXING_TYPE_E, WAIXING_TYPE_F, WAIXING_TYPE_G, WAIXING_TYPE_H, WAIXING_TYPE_H1, -- cgit v1.2.3