diff --git a/hash/nes.xml b/hash/nes.xml index 489387cc8ba..d9a201dda87 100644 --- a/hash/nes.xml +++ b/hash/nes.xml @@ -43,7 +43,7 @@ license:CC0 - + @@ -799,7 +799,7 @@ license:CC0 - + @@ -1131,7 +1131,7 @@ license:CC0 - + @@ -1530,7 +1530,7 @@ license:CC0 - + @@ -1594,7 +1594,7 @@ license:CC0 - + @@ -1633,7 +1633,7 @@ license:CC0 - + @@ -1694,7 +1694,7 @@ license:CC0 - + @@ -1759,7 +1759,7 @@ license:CC0 - + @@ -3117,7 +3117,7 @@ license:CC0 - + @@ -3186,7 +3186,7 @@ license:CC0 - + @@ -3838,7 +3838,7 @@ license:CC0 - + @@ -3922,7 +3922,7 @@ license:CC0 - + @@ -3947,7 +3947,7 @@ license:CC0 - + @@ -4494,7 +4494,7 @@ license:CC0 1988 Jaleco - + @@ -4625,7 +4625,7 @@ license:CC0 1988 Sunsoft - + @@ -5165,7 +5165,7 @@ license:CC0 - + @@ -5785,7 +5785,7 @@ license:CC0 - + @@ -5859,7 +5859,7 @@ license:CC0 - + @@ -6730,7 +6730,7 @@ license:CC0 - + @@ -7071,7 +7071,7 @@ license:CC0 - + @@ -7090,7 +7090,7 @@ license:CC0 - + @@ -7695,7 +7695,7 @@ license:CC0 - + @@ -7850,7 +7850,7 @@ license:CC0 - + @@ -7893,7 +7893,7 @@ license:CC0 - + @@ -8215,7 +8215,7 @@ license:CC0 - + @@ -8426,7 +8426,7 @@ license:CC0 - + @@ -8864,7 +8864,7 @@ license:CC0 - + @@ -8884,7 +8884,7 @@ license:CC0 - + @@ -9199,7 +9199,7 @@ license:CC0 - + @@ -9616,7 +9616,7 @@ license:CC0 - + @@ -10114,7 +10114,7 @@ license:CC0 - + @@ -10962,7 +10962,7 @@ license:CC0 - + @@ -11102,7 +11102,7 @@ license:CC0 - + @@ -12869,7 +12869,7 @@ license:CC0 - + @@ -12909,7 +12909,7 @@ license:CC0 - + @@ -13022,7 +13022,7 @@ license:CC0 - + @@ -13647,7 +13647,7 @@ license:CC0 - + @@ -14756,7 +14756,7 @@ license:CC0 - + @@ -14876,7 +14876,7 @@ license:CC0 - + @@ -15033,7 +15033,7 @@ license:CC0 - + @@ -15111,7 +15111,7 @@ license:CC0 - + @@ -15473,7 +15473,7 @@ license:CC0 - + @@ -15706,7 +15706,7 @@ license:CC0 - + @@ -15988,7 +15988,7 @@ license:CC0 - + @@ -16519,7 +16519,7 @@ license:CC0 - + @@ -16627,7 +16627,7 @@ license:CC0 - + @@ -16791,7 +16791,7 @@ license:CC0 - + @@ -17064,7 +17064,7 @@ license:CC0 - + @@ -17313,7 +17313,7 @@ license:CC0 - + @@ -17451,7 +17451,7 @@ license:CC0 - + @@ -17939,7 +17939,7 @@ license:CC0 - + @@ -18406,7 +18406,7 @@ license:CC0 - + @@ -18993,7 +18993,7 @@ license:CC0 - + @@ -19344,7 +19344,7 @@ license:CC0 - + @@ -19582,7 +19582,7 @@ license:CC0 - + @@ -19666,7 +19666,7 @@ license:CC0 - + @@ -19792,7 +19792,7 @@ license:CC0 - + @@ -20277,7 +20277,7 @@ license:CC0 - + @@ -20922,7 +20922,7 @@ license:CC0 - + @@ -21058,7 +21058,7 @@ license:CC0 - + @@ -21751,7 +21751,7 @@ license:CC0 - + @@ -22683,7 +22683,7 @@ license:CC0 - + @@ -23162,7 +23162,7 @@ license:CC0 - + @@ -23814,7 +23814,7 @@ license:CC0 - + @@ -24316,7 +24316,7 @@ license:CC0 - + @@ -24619,7 +24619,7 @@ license:CC0 - + @@ -25657,7 +25657,7 @@ license:CC0 - + @@ -25717,7 +25717,7 @@ license:CC0 - + @@ -25963,7 +25963,7 @@ license:CC0 - + @@ -26602,7 +26602,7 @@ license:CC0 - + @@ -27059,7 +27059,7 @@ license:CC0 - + @@ -27383,7 +27383,7 @@ license:CC0 - + @@ -27409,7 +27409,7 @@ license:CC0 - + @@ -27636,7 +27636,7 @@ license:CC0 - + @@ -28262,7 +28262,7 @@ license:CC0 - + @@ -29050,7 +29050,7 @@ license:CC0 - + @@ -29373,7 +29373,7 @@ license:CC0 - + @@ -29685,7 +29685,7 @@ license:CC0 - + @@ -30438,7 +30438,7 @@ license:CC0 - + @@ -30892,7 +30892,7 @@ license:CC0 - + @@ -31007,7 +31007,7 @@ license:CC0 - + @@ -31793,7 +31793,7 @@ license:CC0 - + @@ -32482,7 +32482,7 @@ license:CC0 - + @@ -32560,7 +32560,7 @@ license:CC0 - + @@ -32627,7 +32627,7 @@ license:CC0 - + @@ -32651,7 +32651,7 @@ license:CC0 - + @@ -32955,7 +32955,7 @@ license:CC0 - + @@ -32979,7 +32979,7 @@ license:CC0 - + @@ -33260,7 +33260,7 @@ license:CC0 - + @@ -33300,7 +33300,7 @@ license:CC0 - + @@ -33905,7 +33905,7 @@ license:CC0 - + @@ -33969,7 +33969,7 @@ license:CC0 - + @@ -34870,7 +34870,7 @@ license:CC0 - + @@ -35152,7 +35152,7 @@ license:CC0 - + @@ -36461,7 +36461,7 @@ license:CC0 - + @@ -36756,7 +36756,7 @@ license:CC0 - + @@ -37156,7 +37156,7 @@ license:CC0 - + @@ -37414,7 +37414,7 @@ license:CC0 - + @@ -37433,7 +37433,7 @@ license:CC0 - + @@ -37741,7 +37741,7 @@ license:CC0 - + @@ -37884,7 +37884,7 @@ license:CC0 - + @@ -38151,7 +38151,7 @@ license:CC0 - + @@ -38298,7 +38298,7 @@ license:CC0 - + @@ -38898,7 +38898,7 @@ license:CC0 - + @@ -40235,7 +40235,7 @@ license:CC0 - + @@ -40371,7 +40371,7 @@ license:CC0 - + @@ -40467,7 +40467,7 @@ license:CC0 - + @@ -40563,7 +40563,7 @@ license:CC0 - + @@ -41664,7 +41664,7 @@ license:CC0 - + @@ -42831,7 +42831,7 @@ license:CC0 - + @@ -43118,7 +43118,7 @@ license:CC0 - + @@ -43238,7 +43238,7 @@ license:CC0 - + @@ -43649,7 +43649,7 @@ license:CC0 - + @@ -43782,7 +43782,7 @@ license:CC0 - + @@ -43805,7 +43805,7 @@ license:CC0 - + @@ -43975,7 +43975,7 @@ license:CC0 - + diff --git a/src/devices/bus/nes/mmc1.cpp b/src/devices/bus/nes/mmc1.cpp index cb752cb0754..8c8e7bc31bd 100644 --- a/src/devices/bus/nes/mmc1.cpp +++ b/src/devices/bus/nes/mmc1.cpp @@ -16,6 +16,9 @@ TODO: - Combine 2 versions of set_prg in SxROM base class. This means dealing with variant boards SNROM, SUROM, etc which repurpose bits in the MMC1 regs. + - Determine if "MMC1" marked chips, the earliest version, ignores WRAM + enable/disable bit like its first revision, MMC1A. Also determine if MMC1C + really exists. It's described by kevtris, but it's not in BootGod's DB. ***********************************************************************************************************/ @@ -36,10 +39,8 @@ // constructor //------------------------------------------------- -DEFINE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device, "nes_sxrom", "NES Cart SxROM (MMC-1) PCB") -DEFINE_DEVICE_TYPE(NES_SOROM, nes_sorom_device, "nes_sorom", "NES Cart SOROM (MMC-1) PCB") -DEFINE_DEVICE_TYPE(NES_SXROM_A, nes_sxrom_a_device, "nes_sxrom_a", "NES Cart SxROM (MMC-1A) PCB") -DEFINE_DEVICE_TYPE(NES_SOROM_A, nes_sorom_a_device, "nes_sorom_a", "NES Cart SOROM (MMC-1A) PCB") +DEFINE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device, "nes_sxrom", "NES Cart SxROM (MMC-1) PCB") +DEFINE_DEVICE_TYPE(NES_SOROM, nes_sorom_device, "nes_sorom", "NES Cart SOROM (MMC-1) PCB") @@ -58,16 +59,6 @@ nes_sorom_device::nes_sorom_device(const machine_config &mconfig, const char *ta { } -nes_sxrom_a_device::nes_sxrom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nes_sxrom_device(mconfig, NES_SXROM_A, tag, owner, clock) -{ -} - -nes_sorom_a_device::nes_sorom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : nes_sxrom_device(mconfig, NES_SOROM_A, tag, owner, clock) -{ -} - void nes_sxrom_device::device_start() @@ -86,7 +77,8 @@ void nes_sxrom_device::pcb_reset() m_latch = 0; m_count = 0; m_reg[0] = 0x0f; - m_reg[1] = m_reg[2] = m_reg[3] = 0; + m_reg[1] = m_reg[2] = 0; + m_reg[3] = m_mmc1_type == mmc1_type::MMC1C ? 0x10 : 0x00; // WRAM disabled by default on MMC1C m_reg_write_enable = 1; set_nt_mirroring(PPU_MIRROR_HORZ); @@ -94,35 +86,6 @@ void nes_sxrom_device::pcb_reset() set_prg(); } -void nes_sorom_device::pcb_reset() -{ - m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - - m_latch = 0; - m_count = 0; - m_reg[0] = 0x0f; - m_reg[1] = m_reg[2] = m_reg[3] = 0; - m_reg_write_enable = 1; - - set_nt_mirroring(PPU_MIRROR_HORZ); - set_chr(); - set_prg(); -} - -void nes_sorom_a_device::pcb_reset() -{ - m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM; - - m_latch = 0; - m_count = 0; - m_reg[0] = 0x0f; - m_reg[1] = m_reg[2] = m_reg[3] = 0; - m_reg_write_enable = 1; - - set_nt_mirroring(PPU_MIRROR_HORZ); - set_chr(); - set_prg(); -} @@ -295,7 +258,7 @@ void nes_sxrom_device::write_m(offs_t offset, uint8_t data) uint8_t bank = (m_reg[1] >> 2) & 3; LOG_MMC(("sxrom write_m, offset: %04x, data: %02x\n", offset, data)); - if (!BIT(m_reg[3], 4)) // WRAM enabled + if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled { if (!m_battery.empty()) m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)] = data; @@ -309,7 +272,7 @@ uint8_t nes_sxrom_device::read_m(offs_t offset) uint8_t bank = (m_reg[1] >> 2) & 3; LOG_MMC(("sxrom read_m, offset: %04x\n", offset)); - if (!BIT(m_reg[3], 4)) // WRAM enabled + if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled { if (!m_battery.empty()) return m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)]; @@ -317,7 +280,7 @@ uint8_t nes_sxrom_device::read_m(offs_t offset) return m_prgram[((bank * 0x2000) + offset) & (m_prgram.size() - 1)]; } - return get_open_bus(); // open bus + return get_open_bus(); } // SOROM has two RAM banks, the first is not battery backed up, the second is. @@ -326,7 +289,7 @@ void nes_sorom_device::write_m(offs_t offset, uint8_t data) uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3); LOG_MMC(("sorom write_m, offset: %04x, data: %02x\n", offset, data)); - if (!BIT(m_reg[3], 4)) // WRAM enabled + if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled { if (type) m_battery[offset & (m_battery.size() - 1)] = data; @@ -340,7 +303,7 @@ uint8_t nes_sorom_device::read_m(offs_t offset) uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3); LOG_MMC(("sorom read_m, offset: %04x\n", offset)); - if (!BIT(m_reg[3], 4)) // WRAM enabled + if (!BIT(m_reg[3], 4) || m_mmc1_type == mmc1_type::MMC1A) // WRAM enabled { if (type) return m_battery[offset & (m_battery.size() - 1)]; @@ -348,52 +311,5 @@ uint8_t nes_sorom_device::read_m(offs_t offset) return m_prgram[offset & (m_prgram.size() - 1)]; } - return get_open_bus(); // open bus -} - -// MMC1A boards have no wram enable/disable bit -void nes_sxrom_a_device::write_m(offs_t offset, uint8_t data) -{ - uint8_t bank = (m_reg[1] >> 2) & 3; - LOG_MMC(("sxrom_a write_m, offset: %04x, data: %02x\n", offset, data)); - - if (!m_battery.empty()) - m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)] = data; - if (!m_prgram.empty()) - m_prgram[((bank * 0x2000) + offset) & (m_prgram.size() - 1)] = data; -} - -uint8_t nes_sxrom_a_device::read_m(offs_t offset) -{ - uint8_t bank = (m_reg[1] >> 2) & 3; - LOG_MMC(("sxrom_a read_m, offset: %04x\n", offset)); - - if (!m_battery.empty()) - return m_battery[((bank * 0x2000) + offset) & (m_battery.size() - 1)]; - if (!m_prgram.empty()) - return m_prgram[((bank * 0x2000) + offset) & (m_prgram.size() - 1)]; - - return get_open_bus(); // open bus -} - -void nes_sorom_a_device::write_m(offs_t offset, uint8_t data) -{ - uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3); - LOG_MMC(("sorom_a write_m, offset: %04x, data: %02x\n", offset, data)); - - if (type) - m_battery[offset & (m_battery.size() - 1)] = data; - else - m_prgram[offset & (m_prgram.size() - 1)] = data; -} - -uint8_t nes_sorom_a_device::read_m(offs_t offset) -{ - uint8_t type = BIT(m_reg[0], 4) ? BIT(m_reg[1], 4) : BIT(m_reg[1], 3); - LOG_MMC(("sorom_a read_m, offset: %04x\n", offset)); - - if (type) - return m_battery[offset & (m_battery.size() - 1)]; - else - return m_prgram[offset & (m_prgram.size() - 1)]; + return get_open_bus(); } diff --git a/src/devices/bus/nes/mmc1.h b/src/devices/bus/nes/mmc1.h index 2cd0a8ec256..dbf234f734f 100644 --- a/src/devices/bus/nes/mmc1.h +++ b/src/devices/bus/nes/mmc1.h @@ -51,37 +51,11 @@ public: virtual uint8_t read_m(offs_t offset) override; virtual void write_m(offs_t offset, uint8_t data) override; - - virtual void pcb_reset() override; -}; - -class nes_sxrom_a_device : public nes_sxrom_device -{ -public: - // construction/destruction - nes_sxrom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual uint8_t read_m(offs_t offset) override; - virtual void write_m(offs_t offset, uint8_t data) override; -}; - -class nes_sorom_a_device : public nes_sxrom_device -{ -public: - // construction/destruction - nes_sorom_a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - - virtual uint8_t read_m(offs_t offset) override; - virtual void write_m(offs_t offset, uint8_t data) override; - - virtual void pcb_reset() override; }; // device type definition -DECLARE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device) -DECLARE_DEVICE_TYPE(NES_SOROM, nes_sorom_device) -DECLARE_DEVICE_TYPE(NES_SXROM_A, nes_sxrom_a_device) -DECLARE_DEVICE_TYPE(NES_SOROM_A, nes_sorom_a_device) +DECLARE_DEVICE_TYPE(NES_SXROM, nes_sxrom_device) +DECLARE_DEVICE_TYPE(NES_SOROM, nes_sorom_device) #endif // MAME_BUS_NES_MMC1_H diff --git a/src/devices/bus/nes/nes_carts.cpp b/src/devices/bus/nes/nes_carts.cpp index e45b4cbc7f4..e7eab6a1166 100644 --- a/src/devices/bus/nes/nes_carts.cpp +++ b/src/devices/bus/nes/nes_carts.cpp @@ -101,8 +101,6 @@ void nes_cart(device_slot_interface &device) // SxROM device.option_add_internal("sxrom", NES_SXROM); device.option_add_internal("sorom", NES_SOROM); - device.option_add_internal("sxrom_a", NES_SXROM_A); // in MMC1-A PRG RAM is always enabled - device.option_add_internal("sorom_a", NES_SOROM_A); // in MMC1-A PRG RAM is always enabled // TxROM device.option_add_internal("txrom", NES_TXROM); // HKROM diff --git a/src/devices/bus/nes/nes_ines.hxx b/src/devices/bus/nes/nes_ines.hxx index 2bbea2571d4..9de292f5225 100644 --- a/src/devices/bus/nes/nes_ines.hxx +++ b/src/devices/bus/nes/nes_ines.hxx @@ -188,7 +188,7 @@ static const nes_mmc mmc_list[] = { 152, DIS_74X161X161X32 }, { 153, BANDAI_LZ93 }, { 154, NAMCOT_34X3 }, - { 155, STD_SXROM_A }, // diff compared to MMC1 concern WRAM + { 155, STD_SXROM }, // same as mapper 1 but forces the use of MMC1A { 156, OPENCORP_DAOU306 }, { 157, BANDAI_DATACH }, // Datach Reader games -> must go in the Datach subslot { 158, TENGEN_800037 }, @@ -651,10 +651,8 @@ void nes_cart_slot_device::call_load_ines() // handle submappers if (submapper) { - // 001: MMC1 - if (mapper == 1 && submapper == 3) - pcb_id = STD_SXROM_A; - else if (mapper == 1 && submapper == 5) + // 001: MMC1 (other submappers are deprecated) + if (mapper == 1 && submapper == 5) logerror("Unimplemented NES 2.0 submapper: SEROM/SHROM/SH1ROM.\n"); // 002, 003, 007: UxROM, CNROM, AxROM else if (mapper == 2 && submapper == 2) @@ -780,6 +778,11 @@ void nes_cart_slot_device::call_load_ines() } break; + case STD_SXROM: + if (mapper == 155) + m_cart->set_mmc1_type(device_nes_cart_interface::mmc1_type::MMC1A); + break; + case NOCASH_NOCHR: // this mapper uses mirroring flags differently m_cart->set_four_screen_vram(false); @@ -1155,10 +1158,8 @@ const char * nes_cart_slot_device::get_default_card_ines(get_default_card_softwa // handle submappers if (submapper) { - // 001: MMC1 - if (mapper == 1 && submapper == 3) - pcb_id = STD_SXROM_A; - else if (mapper == 1 && submapper == 5) + // 001: MMC1 (other submappers are deprecated) + if (mapper == 1 && submapper == 5) logerror("Unimplemented NES 2.0 submapper: SEROM/SHROM/SH1ROM.\n"); // 021, 023, 025: VRC4 / VRC2 else if (mapper == 21 || mapper == 23 || mapper == 25) diff --git a/src/devices/bus/nes/nes_pcb.hxx b/src/devices/bus/nes/nes_pcb.hxx index a6909062ffe..abf0dfc1aae 100644 --- a/src/devices/bus/nes/nes_pcb.hxx +++ b/src/devices/bus/nes/nes_pcb.hxx @@ -32,8 +32,6 @@ static const nes_pcb pcb_list[] = { "un1rom", STD_UN1ROM }, { "sxrom", STD_SXROM }, { "sorom", STD_SOROM }, - { "sxrom_a", STD_SXROM_A }, - { "sorom_a", STD_SOROM_A }, { "txrom", STD_TXROM }, { "hkrom", STD_HKROM }, { "tqrom", STD_TQROM }, @@ -628,6 +626,24 @@ void nes_cart_slot_device::call_load_pcb() // osd_printf_error("VRC-6, pin9: A%d, pin10: A%d\n", nes_cart_get_line(get_feature("vrc6-pin9"), nes_cart_get_line(get_feature("vrc6-pin10")); } + if (m_pcb_id == STD_SXROM || m_pcb_id == STD_SOROM) + { + if (get_feature("mmc1_type") != nullptr) + { + using mmc1_type = device_nes_cart_interface::mmc1_type; + + const char *type = get_feature("mmc1_type"); + if (!strcmp(type, "MMC1")) + m_cart->set_mmc1_type(mmc1_type::MMC1); + else if (!strcmp(type, "MMC1A")) + m_cart->set_mmc1_type(mmc1_type::MMC1A); + else if (!strncmp(type, "MMC1B", 5)) // common prefix of several variants + m_cart->set_mmc1_type(mmc1_type::MMC1B); + else if (!strcmp(type, "MMC1C")) + m_cart->set_mmc1_type(mmc1_type::MMC1C); + } + } + if (m_pcb_id == STD_HKROM || m_pcb_id == TAITO_X1_017) mapper_sram_size = m_cart->get_mapper_sram_size(); diff --git a/src/devices/bus/nes/nes_slot.cpp b/src/devices/bus/nes/nes_slot.cpp index ebaf5ea0406..fef76b520d0 100644 --- a/src/devices/bus/nes/nes_slot.cpp +++ b/src/devices/bus/nes/nes_slot.cpp @@ -122,6 +122,7 @@ device_nes_cart_interface::device_nes_cart_interface(const machine_config &mconf , m_misc_rom_size(0) , m_ce_mask(0) , m_ce_state(0) + , m_mmc1_type(mmc1_type::MMC1B) , m_vrc_ls_prg_a(0) , m_vrc_ls_prg_b(0) , m_vrc_ls_chr(0) diff --git a/src/devices/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h index e86d22f3312..8ddb7d15ce9 100644 --- a/src/devices/bus/nes/nes_slot.h +++ b/src/devices/bus/nes/nes_slot.h @@ -23,11 +23,10 @@ enum STD_CNROM, STD_CPROM, STD_EXROM, STD_FXROM, STD_GXROM, STD_HKROM, STD_PXROM, - STD_SXROM, STD_TXROM, STD_TXSROM, - STD_TKROM, STD_TQROM, + STD_SXROM, STD_SOROM, + STD_TXROM, STD_TXSROM, STD_TKROM, STD_TQROM, STD_UXROM, STD_UN1ROM, UXROM_CC, HVC_FAMBASIC, NES_QJ, PAL_ZZ, STD_EVENT, - STD_SXROM_A, STD_SOROM, STD_SOROM_A, STD_DISKSYS, STD_NROM368,//homebrew extension of NROM! // Discrete components boards (by various manufacturer) @@ -176,6 +175,8 @@ enum class device_nes_cart_interface : public device_interface { public: + enum class mmc1_type : u8 { MMC1, MMC1A, MMC1B, MMC1C }; + // construction/destruction virtual ~device_nes_cart_interface(); @@ -214,6 +215,7 @@ public: void set_trainer(bool val) { m_has_trainer = val; } void set_ce(int mask, int state) { m_ce_mask = mask; m_ce_state = state; } + 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_x1_005_alt(bool val) { m_x1_005_alt_mirroring = val; } @@ -284,6 +286,7 @@ protected: int m_ce_mask; int m_ce_state; + mmc1_type m_mmc1_type; int m_vrc_ls_prg_a; int m_vrc_ls_prg_b; int m_vrc_ls_chr;