(MESS) sg1000: fixed RAM in a few games and added support for the Othello PCB (ROM + 2K RAM). nw.

This commit is contained in:
Fabio Priuli 2013-05-27 05:27:08 +00:00
parent 20687380f6
commit af6d6ee63e
7 changed files with 75 additions and 0 deletions

View File

@ -1385,6 +1385,8 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<dataarea name="rom" size="32768">
<rom name="king's valley (tw).bin" size="32768" crc="223397a1" sha1="922d23895c12707b2fc382ea5cb769c5cb9b5755" offset="000000" />
</dataarea>
<dataarea name="ram" size="9216">
</dataarea>
</part>
</software>
@ -1461,9 +1463,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<info name="serial" value="Y-115"/>
<info name="alt_title" value="Mófǎ shī ~ 魔法師"/>
<part name="cart" interface="sg1000_cart">
<feature name="slot" value="dahjee_typeb"/>
<dataarea name="rom" size="49152">
<rom name="magical kid wiz (tw).bin" size="49152" crc="ffc4ee3f" sha1="fd24b501046cf811b04386129be0362a1eabf6b3" offset="000000" />
</dataarea>
<dataarea name="ram" size="8192">
</dataarea>
</part>
</software>
@ -1695,9 +1700,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<info name="serial" value="G-1044"/>
<info name="alt_title" value="オセロ"/>
<part name="cart" interface="sg1000_cart">
<feature name="slot" value="othello" />
<dataarea name="rom" size="32768">
<rom name="othello (japan).bin" size="32768" crc="af4f14bc" sha1="d0cd594ddb321f707ddba8a044fa3e9b906e720a" offset="000000" />
</dataarea>
<dataarea name="ram" size="2048">
</dataarea>
</part>
</software>
@ -1708,9 +1716,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<info name="serial" value="R-044"/>
<info name="alt_title" value="Hēibái qí ~ 黑白棋"/>
<part name="cart" interface="sg1000_cart">
<feature name="slot" value="othello" />
<dataarea name="rom" size="32768">
<rom name="othello (tw).bin" size="32768" crc="1d1a0ca3" sha1="242c29989149b94ff27d59a94f067d0f1c84b4a7" offset="000000" />
</dataarea>
<dataarea name="ram" size="2048">
</dataarea>
</part>
</software>
@ -2410,6 +2421,7 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<info name="serial" value="GB-800"/>
<info name="alt_title" value="テレビおえかき"/>
<part name="cart" interface="sg1000_cart">
<feature name="slot" value="terebi" />
<feature name="peripheral" value="tablet" />
<dataarea name="rom" size="8192">
<rom name="terebi oekaki (japan).bin" size="8192" crc="dd4a661b" sha1="12296f2bb57d80d1774749d3002a039e0940c6fa" offset="000000" />
@ -2601,9 +2613,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<year>1987</year>
<publisher>Abstract Software</publisher>
<part name="cart" interface="sg1000_cart">
<feature name="slot" value="level3" /> <!-- Not sure about this, in the sense that it could have less RAM... -->
<dataarea name="rom" size="32768">
<rom name="link world.bin" size="32768" crc="d5e919c1" sha1="c81c783fb806b3626ece75bf4456038a8a9e7075" offset="000000" />
</dataarea>
<dataarea name="ram" size="32768">
</dataarea>
</part>
</software>
@ -2612,9 +2627,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
<year>1985</year>
<publisher>Sega</publisher>
<part name="cart" interface="sg1000_cart">
<feature name="slot" value="level3" />
<dataarea name="rom" size="32768">
<rom name="home basic (jp).bin" size="32768" crc="78a37cbc" sha1="f1e1e7e9687cf4f9f498779a44134c2d70bb8d4b" offset="000000" />
</dataarea>
<dataarea name="ram" size="32768">
</dataarea>
</part>
</software>

View File

@ -781,6 +781,7 @@ void sf7000_state::machine_reset()
static SLOT_INTERFACE_START(sg1000_cart)
SLOT_INTERFACE_INTERNAL("rom", SEGA8_ROM_STD)
SLOT_INTERFACE_INTERNAL("othello", SEGA8_ROM_OTHELLO)
SLOT_INTERFACE_INTERNAL("castle", SEGA8_ROM_CASTLE)
SLOT_INTERFACE_INTERNAL("terebi", SEGA8_ROM_TEREBI)
SLOT_INTERFACE_INTERNAL("level3", SEGA8_ROM_BASIC_L3)

View File

@ -560,6 +560,7 @@ static SLOT_INTERFACE_START(sg1000mk3_cart)
SLOT_INTERFACE_INTERNAL("janggun", SEGA8_ROM_JANGGUN)
SLOT_INTERFACE_INTERNAL("korean", SEGA8_ROM_KOREAN)
SLOT_INTERFACE_INTERNAL("korean_nb", SEGA8_ROM_KOREAN_NB)
SLOT_INTERFACE_INTERNAL("othello", SEGA8_ROM_OTHELLO)
SLOT_INTERFACE_INTERNAL("castle", SEGA8_ROM_CASTLE)
SLOT_INTERFACE_INTERNAL("dahjee_typea", SEGA8_ROM_DAHJEE_TYPEA)
SLOT_INTERFACE_INTERNAL("dahjee_typeb", SEGA8_ROM_DAHJEE_TYPEB)

View File

@ -21,6 +21,7 @@ const device_type SEGA8_ROM_STD = &device_creator<sega8_rom_device>;
// Specific SG-1000 MkI - MkII cart types
const device_type SEGA8_ROM_CARDCATCH = &device_creator<sega8_cardcatch_device>;
const device_type SEGA8_ROM_OTHELLO = &device_creator<sega8_othello_device>;
const device_type SEGA8_ROM_CASTLE = &device_creator<sega8_castle_device>;
const device_type SEGA8_ROM_BASIC_L3 = &device_creator<sega8_basic_l3_device>;
const device_type SEGA8_ROM_MUSIC_EDITOR = &device_creator<sega8_music_editor_device>;
@ -62,6 +63,12 @@ sega8_cardcatch_device::sega8_cardcatch_device(const machine_config &mconfig, co
}
sega8_othello_device::sega8_othello_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: sega8_rom_device(mconfig, SEGA8_ROM_OTHELLO, "SG-1000 Othello Cart", tag, owner, clock, "sega8_othello", __FILE__)
{
}
sega8_castle_device::sega8_castle_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: sega8_rom_device(mconfig, SEGA8_ROM_CASTLE, "SG-1000 The Castle Cart", tag, owner, clock, "sega8_castle", __FILE__)
{
@ -401,6 +408,31 @@ machine_config_constructor sega8_cardcatch_device::device_mconfig_additions() co
return MACHINE_CONFIG_NAME( sub_slot );
}
/*-------------------------------------------------
Othello is a SG-1000 game featuring 2K of
oncart RAM, mapped at 0x8000-0x9fff.
Is RAM mirrored? For now we assume so...
-------------------------------------------------*/
READ8_MEMBER(sega8_othello_device::read_cart)
{
// 8K of RAM sits in 0x8000-0x9fff
if (offset >= 0x8000 && offset < 0xa000)
return m_ram[offset & 0x7ff];
return m_rom[offset % m_rom_size];
}
WRITE8_MEMBER(sega8_othello_device::write_cart)
{
// 2K of RAM sits in 0x8000-0x9fff
if (offset >= 0x8000 && offset < 0xa000)
m_ram[offset & 0x7ff] = data;
}
/*-------------------------------------------------
The Castle is a SG-1000 game featuring 8K of

View File

@ -54,6 +54,21 @@ protected:
};
// ======================> sega8_othello_device
class sega8_othello_device : public sega8_rom_device
{
public:
// construction/destruction
sega8_othello_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
// reading and writing
virtual DECLARE_READ8_MEMBER(read_cart);
virtual DECLARE_WRITE8_MEMBER(write_cart);
virtual DECLARE_WRITE8_MEMBER(write_mapper) {}
};
// ======================> sega8_castle_device
class sega8_castle_device : public sega8_rom_device
@ -348,6 +363,7 @@ public:
// device type definition
extern const device_type SEGA8_ROM_STD;
extern const device_type SEGA8_ROM_CARDCATCH;
extern const device_type SEGA8_ROM_OTHELLO;
extern const device_type SEGA8_ROM_CASTLE;
extern const device_type SEGA8_ROM_BASIC_L3;
extern const device_type SEGA8_ROM_MUSIC_EDITOR;

View File

@ -183,6 +183,7 @@ static const sega8_slot slot_list[] =
{ SEGA8_JANGGUN, "janggun" },
{ SEGA8_KOREAN, "korean" },
{ SEGA8_KOREAN_NOBANK, "korean_nb" },
{ SEGA8_OTHELLO, "othello" },
{ SEGA8_CASTLE, "castle" },
{ SEGA8_BASIC_L3, "level3" },
{ SEGA8_MUSIC_EDITOR, "music_editor" },
@ -282,6 +283,11 @@ void sega8_cart_slot_device::setup_ram()
m_cart->ram_alloc(machine(), 0x2000);
m_cart->set_has_battery(FALSE);
}
else if (m_type == SEGA8_OTHELLO)
{
m_cart->ram_alloc(machine(), 0x800);
m_cart->set_has_battery(FALSE);
}
else if (m_type == SEGA8_BASIC_L3)
{
m_cart->ram_alloc(machine(), 0x8000);

View File

@ -19,6 +19,7 @@ enum
SEGA8_JANGGUN,
SEGA8_KOREAN,
SEGA8_KOREAN_NOBANK,
SEGA8_OTHELLO,
SEGA8_CASTLE,
SEGA8_BASIC_L3,
SEGA8_MUSIC_EDITOR,