mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
bus/nes: Fixed Powerful 255 in 1 and added its parent. (#8404)
New working software list additions (nes.xml) ----------------------------------- Powerful 250 in 1 [NewRisingSun] Software list items promoted to working (nes.xml) --------------------------------------- Powerful 255 in 1
This commit is contained in:
parent
782810b4d9
commit
9ff9ced022
26
hash/nes.xml
26
hash/nes.xml
@ -80951,13 +80951,31 @@ to check why this is different -->
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="mc_pw255" supported="no">
|
||||
<software name="mc_pw250">
|
||||
<description>Powerful 250 in 1</description>
|
||||
<year>1991</year>
|
||||
<publisher>NTDEC</publisher>
|
||||
<info name="alt_title" value="Golden 250"/>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_th22913" />
|
||||
<feature name="pcb_model" value="TH2291-3" />
|
||||
<dataarea name="prg" size="3145728">
|
||||
<rom name="powerful 255-in-1.prg" size="3145728" crc="4bf3227c" sha1="5407fba6bf00ff7ac3af249ba4f5607e4fb15a01" status="baddump" />
|
||||
</dataarea>
|
||||
<!-- 8k VRAM on cartridge -->
|
||||
<dataarea name="vram" size="8192">
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<!-- This seems to be a bootleg of the above multi-bootleg cart. -->
|
||||
<software name="mc_pw255" cloneof="mc_pw250">
|
||||
<description>Powerful 255 in 1</description>
|
||||
<year>19??</year>
|
||||
<year>199?</year>
|
||||
<publisher><pirate></publisher>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="bmc_power255" />
|
||||
<feature name="pcb" value="BMC-POWERFUL-255" /> <!-- Mapper 63 -->
|
||||
<feature name="slot" value="bmc_th22913" />
|
||||
<feature name="pcb_model" value="CH-011" />
|
||||
<dataarea name="prg" size="3145728">
|
||||
<rom name="powerful 255-in-1.prg" size="3145728" crc="41a14986" sha1="afee7b75d43e322cd18f382688fe6f2d9a294988" offset="00000" status="baddump" />
|
||||
</dataarea>
|
||||
|
@ -79,7 +79,7 @@ DEFINE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device, "nes_bmc_800in
|
||||
DEFINE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device, "nes_bmc_1200in1", "NES Cart BMC 1200 in 1 PCB")
|
||||
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_CH001, nes_bmc_ch001_device, "nes_bmc_ch001", "NES Cart BMC CH-001 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_SUPER22, nes_bmc_super22_device, "nes_bmc_super22", "NES Cart BMC Super 22 Games 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")
|
||||
@ -341,11 +341,6 @@ nes_bmc_gold260_device::nes_bmc_gold260_device(const machine_config &mconfig, co
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_ch001_device::nes_bmc_ch001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_CH001, tag, owner, clock), m_latch(0)
|
||||
{
|
||||
}
|
||||
|
||||
nes_bmc_super22_device::nes_bmc_super22_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: nes_nrom_device(mconfig, NES_BMC_SUPER22, tag, owner, clock)
|
||||
{
|
||||
@ -366,6 +361,16 @@ nes_bmc_lc160_device::nes_bmc_lc160_device(const machine_config &mconfig, const
|
||||
{
|
||||
}
|
||||
|
||||
nes_vram_protect_device::nes_vram_protect_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
|
||||
: nes_nrom_device(mconfig, type, tag, owner, clock), m_vram_protect(false)
|
||||
{
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1050,21 +1055,6 @@ void nes_bmc_gold260_device::pcb_reset()
|
||||
chr8(0, m_chr_source);
|
||||
}
|
||||
|
||||
void nes_bmc_ch001_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_latch));
|
||||
}
|
||||
|
||||
void nes_bmc_ch001_device::pcb_reset()
|
||||
{
|
||||
m_chr_source = m_vrom_chunks ? CHRROM : CHRRAM;
|
||||
prg32(0);
|
||||
chr8(0, m_chr_source);
|
||||
|
||||
m_latch = 0;
|
||||
}
|
||||
|
||||
void nes_bmc_super22_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
@ -1115,6 +1105,25 @@ void nes_bmc_42in1reset_device::pcb_reset()
|
||||
m_reg[1] = 0;
|
||||
}
|
||||
|
||||
void nes_vram_protect_device::device_start()
|
||||
{
|
||||
common_start();
|
||||
save_item(NAME(m_vram_protect));
|
||||
}
|
||||
|
||||
void nes_vram_protect_device::pcb_reset()
|
||||
{
|
||||
chr8(0, CHRRAM);
|
||||
m_vram_protect = false;
|
||||
}
|
||||
|
||||
void nes_bmc_th22913_device::pcb_reset()
|
||||
{
|
||||
nes_vram_protect_device::pcb_reset();
|
||||
prg16_89ab(0);
|
||||
prg16_cdef(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2783,59 +2792,6 @@ uint8_t nes_bmc_gold150_device::read_h(offs_t offset)
|
||||
return hi_access_rom(offset);
|
||||
}
|
||||
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-POWERFUL-255
|
||||
|
||||
Unknown Bootleg Multigame Board
|
||||
Games:
|
||||
|
||||
iNES: mapper 63
|
||||
|
||||
|
||||
In MESS: Preliminary Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_ch001_device::write_h(offs_t offset, uint8_t data)
|
||||
{
|
||||
int bank = ((offset >> 1) & 0x1fc);
|
||||
LOG_MMC(("bmc_ch001 write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
m_latch = ((offset & 0x300) == 0x300);
|
||||
set_nt_mirroring(BIT(offset, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
|
||||
if (offset & 2)
|
||||
{
|
||||
prg8_89(bank + 0);
|
||||
prg8_ab(bank + 1);
|
||||
prg8_cd(bank + 2);
|
||||
prg8_ef(bank + 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
bank |= (offset & 4) >> 1;
|
||||
prg8_89(bank + 0);
|
||||
prg8_ab(bank + 1);
|
||||
prg8_cd(bank + 0);
|
||||
prg8_ef(bank + 1);
|
||||
}
|
||||
|
||||
if (offset & 0x800) // in this case, the last 8KB bank is switched differently...
|
||||
prg8_ef((offset & 0x07c ) | ((offset & 0x6) ? 0x3 : 0x1));
|
||||
}
|
||||
|
||||
uint8_t nes_bmc_ch001_device::read_h(offs_t offset)
|
||||
{
|
||||
LOG_MMC(("bmc_ch001 read_h, offset: %04x\n", offset));
|
||||
|
||||
if (m_latch && offset < 0x4000) // open bus
|
||||
return get_open_bus();
|
||||
else
|
||||
return hi_access_rom(offset);
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-SUPER22GAMES
|
||||
@ -2950,3 +2906,28 @@ void nes_bmc_lc160_device::write_h(offs_t offset, u8 data)
|
||||
set_nt_mirroring(BIT(offset, 0) ? PPU_MIRROR_VERT : PPU_MIRROR_HORZ);
|
||||
}
|
||||
}
|
||||
|
||||
/*-------------------------------------------------
|
||||
|
||||
BMC-TH2291-3, BMC-CH-011
|
||||
|
||||
Games: Powerful 250 in 1, Powerful 255 in 1
|
||||
|
||||
iNES: mapper 63
|
||||
|
||||
In MAME: Supported.
|
||||
|
||||
-------------------------------------------------*/
|
||||
|
||||
void nes_bmc_th22913_device::write_h(offs_t offset, u8 data)
|
||||
{
|
||||
LOG_MMC(("bmc_th22913 write_h, offset: %04x, data: %02x\n", offset, data));
|
||||
|
||||
u8 bank = offset >> 2;
|
||||
u8 mode = BIT(offset, 1);
|
||||
prg16_89ab(bank & ~mode);
|
||||
prg16_cdef(bank | mode);
|
||||
|
||||
set_nt_mirroring(BIT(offset, 0) ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT);
|
||||
m_vram_protect = BIT(offset, 10);
|
||||
}
|
||||
|
@ -986,28 +986,6 @@ protected:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_ch001_device
|
||||
|
||||
class nes_bmc_ch001_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_ch001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
virtual uint8_t read_h(offs_t offset) override;
|
||||
virtual void write_h(offs_t offset, uint8_t data) override;
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
private:
|
||||
uint8_t m_latch;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_super22_device
|
||||
|
||||
class nes_bmc_super22_device : public nes_nrom_device
|
||||
@ -1079,6 +1057,40 @@ public:
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_vram_protect_device
|
||||
|
||||
class nes_vram_protect_device : public nes_nrom_device
|
||||
{
|
||||
public:
|
||||
virtual void chr_w(offs_t offset, u8 data) override { if (!m_vram_protect) device_nes_cart_interface::chr_w(offset, data); }
|
||||
|
||||
virtual void pcb_reset() override;
|
||||
|
||||
protected:
|
||||
// construction/destruction
|
||||
nes_vram_protect_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
bool m_vram_protect;
|
||||
};
|
||||
|
||||
|
||||
// ======================> nes_bmc_th22913_device
|
||||
|
||||
class nes_bmc_th22913_device : public nes_vram_protect_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
nes_bmc_th22913_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;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(NES_ACTION52, nes_action52_device)
|
||||
DECLARE_DEVICE_TYPE(NES_CALTRON6IN1, nes_caltron6in1_device)
|
||||
@ -1131,10 +1143,10 @@ DECLARE_DEVICE_TYPE(NES_BMC_800IN1, nes_bmc_800in1_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_1200IN1, nes_bmc_1200in1_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_GOLD150, nes_bmc_gold150_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_GOLD260, nes_bmc_gold260_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_CH001, nes_bmc_ch001_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_SUPER22, nes_bmc_super22_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_4IN1RESET, nes_bmc_4in1reset_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_42IN1RESET, nes_bmc_42in1reset_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_LC160, nes_bmc_lc160_device)
|
||||
DECLARE_DEVICE_TYPE(NES_BMC_TH22913, nes_bmc_th22913_device)
|
||||
|
||||
#endif // MAME_BUS_NES_MULTIGAME_H
|
||||
|
@ -403,7 +403,7 @@ void nes_cart(device_slot_interface &device)
|
||||
device.option_add_internal("bmc_1200in1", NES_BMC_1200IN1);
|
||||
device.option_add_internal("bmc_gold150", NES_BMC_GOLD150); // mapper 235 with 2M PRG
|
||||
device.option_add_internal("bmc_gold260", NES_BMC_GOLD260); // mapper 235 with 4M PRG
|
||||
device.option_add_internal("bmc_power255", NES_BMC_CH001); // mapper 63?
|
||||
device.option_add_internal("bmc_th22913", NES_BMC_TH22913); // mapper 63
|
||||
device.option_add_internal("bmc_s22games", NES_BMC_SUPER22); // mapper 233
|
||||
device.option_add_internal("bmc_reset4", NES_BMC_4IN1RESET); // mapper 60 with 64k prg and 32k chr
|
||||
device.option_add_internal("bmc_reset42", NES_BMC_42IN1RESET); // mapper 226? or 233?
|
||||
|
@ -95,7 +95,7 @@ static const nes_mmc mmc_list[] =
|
||||
{ 60, BMC_4IN1RESET },
|
||||
{ 61, RCM_TF9IN1 },
|
||||
{ 62, BMC_SUPER_700IN1 },
|
||||
{ 63, BMC_CH001 }, // Powerful 255
|
||||
{ 63, BMC_TH22913 }, // Powerful 250/255
|
||||
{ 64, TENGEN_800032 },
|
||||
{ 65, IREM_H3001 },
|
||||
{ 66, STD_GXROM },
|
||||
|
@ -303,7 +303,7 @@ static const nes_pcb pcb_list[] =
|
||||
{ "pjoy84", BMC_PJOY84 },
|
||||
{ "bmc_gold150", BMC_GOLD150 },
|
||||
{ "bmc_gold260", BMC_GOLD260 },
|
||||
{ "bmc_power255", BMC_CH001 },
|
||||
{ "bmc_th22913", BMC_TH22913 },
|
||||
{ "bmc_s22games", BMC_SUPER22 },
|
||||
{ "bmc_reset4", BMC_4IN1RESET },
|
||||
{ "bmc_reset42", BMC_42IN1RESET },
|
||||
|
@ -97,7 +97,7 @@ enum
|
||||
BMC_70IN1, BMC_800IN1, BMC_1200IN1,
|
||||
BMC_GKA, BMC_GKB, BMC_VT5201, BMC_BENSHIENG, BMC_80013B, BMC_810544C,
|
||||
BMC_NTD_03, BMC_G63IN1, BMC_FCGENJIN_8IN1, BMC_FK23C, BMC_FK23CA,
|
||||
BMC_PJOY84, BMC_POWERFUL_255, BMC_11160, BMC_G146,
|
||||
BMC_PJOY84, BMC_TH22913, BMC_11160, BMC_G146,
|
||||
BMC_2751, BMC_8157, BMC_830118C, BMC_841101C,
|
||||
BMC_411120C, BMC_GOLD150, BMC_GOLD260, BMC_CH001, BMC_SUPER22,
|
||||
BMC_12IN1, BMC_4IN1RESET, BMC_42IN1RESET, BMC_LITTLECOM160,
|
||||
|
Loading…
Reference in New Issue
Block a user