bus/nes: Added partial support for 8-bit Xmas cartridges. (#8930)

* bus/nes: Added partial support for 8-bit Xmas cartridges.

New working software list additions (nes.xml)
-----------------------------------
8-bit Xmas 2008 [kmg]
8-bit Xmas 2009 [kmg]
8-bit Xmas 2010 [kmg]
8-bit Xmas 2011 [kmg]
8-bit Xmas 2012 [kmg]
8-bit Xmas 2013 [kmg]
8-bit Xmas 2014 [kmg]
8-bit Xmas 2015 [kmg]
8-bit Xmas 2018 [kmg]
8-bit Xmas 2019 [kmg]
8-bit Xmas 2020 [kmg]
8-bit Xmas 2021 [kmg]

New NOT_WORKING software list additions (nes.xml)
---------------------------------------
8-bit Xmas 2016 [kmg]

* Mark a few titles I missed as partially supported.
This commit is contained in:
0kmg 2021-12-06 19:05:59 -09:00 committed by GitHub
parent 59867a349a
commit 9c6d7f1dcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 321 additions and 10 deletions

View File

@ -78847,6 +78847,206 @@ be better to redump them properly. -->
</part>
</software>
<!-- 8-bit Xmas 2008-2011 are not really NROM, but an NROM-like board with flashing LEDs -->
<software name="xmas08" supported="partial">
<description>8-bit Xmas 2008</description>
<year>2008</year>
<publisher>RetroZone</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="nrom" />
<dataarea name="prg" size="32768">
<rom name="xmas08demo.prg" size="32768" crc="3ae2a150" sha1="5ce021bebb9049604434af45d6c397e6dd7b84c4" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas09" supported="partial">
<description>8-bit Xmas 2009</description>
<year>2009</year>
<publisher>RetroZone</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="nrom" />
<dataarea name="prg" size="32768">
<rom name="xmas09demo.prg" size="32768" crc="851cea10" sha1="88ed2741e88144eda26366985d216f27629cf3f8" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas10" supported="partial">
<description>8-bit Xmas 2010</description>
<year>2010</year>
<publisher>RetroZone</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="nrom" />
<feature name="mirroring" value="vertical" />
<dataarea name="prg" size="32768">
<rom name="xmas10demo.prg" size="32768" crc="a6e02975" sha1="a3a81cc6fdb7a68efbb061ba44dd52407a978e26" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas11" supported="partial">
<description>8-bit Xmas 2011</description>
<year>2011</year>
<publisher>RetroZone</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="nrom" />
<dataarea name="prg" size="32768">
<rom name="xmas11demo.prg" size="32768" crc="d0d0c932" sha1="067bbd99c5f9ccaf66ef484e024b9c98e4893d6d" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<!-- This will crash if left on the title screen. The mini-game seems fine, however. -->
<software name="xmas12" supported="partial">
<description>8-bit Xmas 2012</description>
<year>2012</year>
<publisher>RetroZone</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas12demo.prg" size="131072" crc="feab08f1" sha1="4834a8bea6df40c9566b97412de775de2ffde492" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas13" supported="partial">
<description>8-bit Xmas 2013</description>
<year>2013</year>
<publisher>RetroZone</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas13demo.prg" size="131072" crc="f8d04aa0" sha1="98e57ebca93689042d254fe205c357cdc4d84b0a" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas14" supported="partial">
<description>8-bit Xmas 2014</description>
<year>2014</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas14demo.prg" size="131072" crc="900ca825" sha1="9e7a881a5c1e643b1327a7c4434e2623eefb95e5" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas15" supported="partial">
<description>8-bit Xmas 2015</description>
<year>2015</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas15demo.prg" size="131072" crc="376c9fcc" sha1="658929d3377e30469c82b3bf8a66c7d2fbcd0b57" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas16" supported="no">
<description>8-bit Xmas 2016</description>
<year>2016</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas16demo.prg" size="131072" crc="19eb1773" sha1="9a22cb50f0b7d26f81dd0b9f8e3f05e07c3b4834" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas18" supported="partial">
<description>8-bit Xmas 2018</description>
<year>2018</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<feature name="mirroring" value="vertical" />
<dataarea name="prg" size="131072">
<rom name="xmas18demo.prg" size="131072" crc="38431bf6" sha1="cb5a7ee17b4a4a7a30d4c98073d107561d903641" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas19" supported="partial">
<description>8-bit Xmas 2019</description>
<year>2019</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas19demo.prg" size="131072" crc="3e03466b" sha1="a8cceadd892a8fb4c43ccc660a2073c2d8b2d69e" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas20" supported="partial">
<description>8-bit Xmas 2020</description>
<year>2020</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<dataarea name="prg" size="131072">
<rom name="xmas20demo.prg" size="131072" crc="bad62c7b" sha1="b0d4a83d71e571ab7ba5ba95784498f17b527606" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<software name="xmas21" supported="partial">
<description>8-bit Xmas 2021</description>
<year>2021</year>
<publisher>retroUSB</publisher>
<part name="cart" interface="nes_cart">
<feature name="slot" value="8bitxmas" />
<feature name="mirroring" value="vertical" />
<dataarea name="prg" size="131072">
<rom name="xmas21demo.prg" size="131072" crc="d8ab6288" sha1="8b15b9eff1bcb128ff4969de7a5d4d47b3b2b62f" status="baddump" />
</dataarea>
<!-- 8k VRAM on cartridge? -->
<dataarea name="vram" size="8192">
</dataarea>
</part>
</software>
<!-- This release is nearly identical to the prototype 1 set but with rebranding -->
<software name="airballr" cloneof="airball">
<description>Airball (RetroZone)</description>

View File

@ -476,10 +476,11 @@ void nes_cart(device_slot_interface &device)
device.option_add_internal("action53", NES_ACTION53);
device.option_add_internal("batmap_000", NES_BATMAP_000);
device.option_add_internal("batmap_srrx", NES_BATMAP_SRRX);
device.option_add_internal("8bitxmas", NES_8BITXMAS);
device.option_add_internal("cufrom", NES_CUFROM);
device.option_add_internal("dpcmcart", NES_DPCMCART);
device.option_add_internal("unrom512", NES_UNROM512);
device.option_add_internal("2a03pur", NES_2A03PURITANS);
device.option_add_internal("dpcmcart", NES_DPCMCART);
device.option_add_internal("farid_slrom8in1", NES_FARID_SLROM);
device.option_add_internal("farid_unrom8in1", NES_FARID_UNROM);
// other unsupported...

View File

@ -61,8 +61,8 @@ static const nes_mmc mmc_list[] =
{ 26, KONAMI_VRC6 },
{ 27, UNL_CC21 }, // Mihunche, but previously used for World Hero
{ 28, UNL_ACTION53 }, // Multi-discrete PCB designed by Tepples for Action 53
{ 29, UNL_CUFROM }, // homebrew PCB used by Glider
{ 30, UNL_UNROM512 }, // UNROM 512 + Flash
{ 29, SEALIE_CUFROM }, // homebrew PCB used by Glider
{ 30, SEALIE_UNROM512 }, // UNROM 512 + Flash
{ 31, UNL_2A03PURITANS }, // PCB designed by infinitelives & rainwarrior for 2A03 Puritans Album
{ 32, IREM_G101 },
{ 33, TAITO_TC0190FMC },
@ -444,7 +444,7 @@ static const nes_mmc mmc_list[] =
// 406 homebrew game Haradius Zero
// 407 VT03 PnP
// 408 Konami PnP
{ 409, UNL_DPCMCART }, // A Winner is You homebrew music cart
{ 409, SEALIE_DPCMCART }, // A Winner is You homebrew music cart
// 410 Unused or JY?
{ 411, BMC_A88S1 },
// 412 INTV 10-in-1 PnP 2nd edition
@ -871,7 +871,7 @@ void nes_cart_slot_device::call_load_ines()
}
break;
case UNL_UNROM512:
case SEALIE_UNROM512:
// this mapper also uses mirroring flags differently
m_cart->set_four_screen_vram(false);
switch (local_options & 0x09)

View File

@ -385,10 +385,11 @@ static const nes_pcb pcb_list[] =
{ "action53", UNL_ACTION53 },
{ "batmap_000", BATMAP_000 },
{ "batmap_srrx", BATMAP_SRRX },
{ "cufrom", UNL_CUFROM },
{ "unrom512", UNL_UNROM512 },
{ "8bitxmas", SEALIE_8BITXMAS },
{ "cufrom", SEALIE_CUFROM },
{ "dpcmcart", SEALIE_DPCMCART },
{ "unrom512", SEALIE_UNROM512 },
{ "2a03pur", UNL_2A03PURITANS },
{ "dpcmcart", UNL_DPCMCART },
{ "farid_slrom8in1", FARID_SLROM8IN1 },
{ "farid_unrom8in1", FARID_UNROM8IN1 },
{ "ffe3", FFE3_BOARD },

View File

@ -151,7 +151,7 @@ enum
// Batlab Electronics
BATMAP_000, BATMAP_SRRX,
// Sealie
UNL_CUFROM, UNL_UNROM512, UNL_DPCMCART,
SEALIE_8BITXMAS, SEALIE_CUFROM, SEALIE_DPCMCART, SEALIE_UNROM512,
// FFE boards, for mappers 6, 8, 17
FFE3_BOARD, FFE4_BOARD, FFE8_BOARD, TEST_BOARD,
// Unsupported (for place-holder boards, with no working emulation) & no-board (at init)

View File

@ -11,6 +11,7 @@
* SEALIE RET-CUFROM [mapper 29]
* SEALIE DPCMcart [mapper 409]
* SEALIE UNROM 512 [mapper 30]
* SEALIE 8BIT XMAS [mapper 30]
***********************************************************************************************************/
@ -32,6 +33,7 @@
// constructor
//-------------------------------------------------
DEFINE_DEVICE_TYPE(NES_8BITXMAS, nes_8bitxmas_device, "nes_8bitxmas", "NES Cart Sealie 8BIT XMAS PCB")
DEFINE_DEVICE_TYPE(NES_CUFROM, nes_cufrom_device, "nes_cufrom", "NES Cart Sealie RET-CUFROM PCB")
DEFINE_DEVICE_TYPE(NES_DPCMCART, nes_dpcmcart_device, "nes_dpcmcart", "NES Cart Sealie DPCMcart PCB")
DEFINE_DEVICE_TYPE(NES_UNROM512, nes_unrom512_device, "nes_unrom512", "NES Cart Sealie UNROM 512 PCB")
@ -47,8 +49,18 @@ nes_dpcmcart_device::nes_dpcmcart_device(const machine_config &mconfig, const ch
{
}
nes_unrom512_device::nes_unrom512_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, type, tag, owner, clock)
{
}
nes_unrom512_device::nes_unrom512_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_nrom_device(mconfig, NES_UNROM512, tag, owner, clock)
: nes_unrom512_device(mconfig, NES_UNROM512, tag, owner, clock)
{
}
nes_8bitxmas_device::nes_8bitxmas_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: nes_unrom512_device(mconfig, NES_8BITXMAS, tag, owner, clock), m_led(0)
{
}
@ -77,6 +89,23 @@ void nes_unrom512_device::pcb_reset()
set_nt_mirroring(PPU_MIRROR_LOW);
}
void nes_8bitxmas_device::device_start()
{
nes_unrom512_device::device_start();
save_item(NAME(m_led));
m_bus_conflict = false;
}
void nes_8bitxmas_device::pcb_reset()
{
nes_unrom512_device::pcb_reset();
m_led = 0;
update_led();
}
/*-------------------------------------------------
mapper specific handlers
@ -159,3 +188,56 @@ void nes_unrom512_device::write_h(offs_t offset, u8 data)
prg16_89ab(data & 0x1f);
chr8((data >> 5) & 0x03, CHRRAM);
}
/*-------------------------------------------------
Sealie 8BIT XMAS revD board
Games: 8-bit Xmas 2012-2016 and 2018-2021?
This board is a variant of UNROM512 with 16 LEDs
in 4 colors, blue, yellow, green, red, which are
controlled in pairs by each byte written to
0x8000-0xbfff. Bits are [BYGR bygr] where bygr
control LEDs 1,2 and BYGR control LEDs 3,4. On
the 8BIT XMAS revD 2012 board LEDS are arranged:
_______________________________
| RED2 GRN3 |
| |
| YEL2 BLU3 |
| |
| BLU1 YEL4 |
| |
| GRN1 RED4 |
| |
| RED1 GRN4 |
| |
| YEL1 BLU4 |
-- --
| GRN2 BLU2 YEL3 RED3 |
| |
iNES: mapper 30
In MAME: Preliminary partial support.
-------------------------------------------------*/
void nes_8bitxmas_device::update_led()
{
// TODO: add artwork
}
void nes_8bitxmas_device::write_h(offs_t offset, u8 data)
{
LOG_MMC(("8bitxmas write_h, offset: %04x, data: %02x\n", offset, data));
if (BIT(offset, 14))
nes_unrom512_device::write_h(offset, data);
else if (m_led != data)
{
m_led = data;
update_led();
}
}

View File

@ -47,10 +47,37 @@ public:
virtual void write_h(offs_t offset, u8 data) override;
virtual void pcb_reset() override;
protected:
// construction/destruction
nes_unrom512_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock);
};
// ======================> nes_8bitxmas_device
class nes_8bitxmas_device : public nes_unrom512_device
{
public:
// construction/destruction
nes_8bitxmas_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;
protected:
// device-level overrides
virtual void device_start() override;
private:
void update_led();
u8 m_led;
};
// device type definition
DECLARE_DEVICE_TYPE(NES_8BITXMAS, nes_8bitxmas_device)
DECLARE_DEVICE_TYPE(NES_CUFROM, nes_cufrom_device)
DECLARE_DEVICE_TYPE(NES_DPCMCART, nes_dpcmcart_device)
DECLARE_DEVICE_TYPE(NES_UNROM512, nes_unrom512_device)