mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
(MESS) sg1000: fixed RAM in a few games and added support for the Othello PCB (ROM + 2K RAM). nw.
This commit is contained in:
parent
20687380f6
commit
af6d6ee63e
@ -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>
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -19,6 +19,7 @@ enum
|
||||
SEGA8_JANGGUN,
|
||||
SEGA8_KOREAN,
|
||||
SEGA8_KOREAN_NOBANK,
|
||||
SEGA8_OTHELLO,
|
||||
SEGA8_CASTLE,
|
||||
SEGA8_BASIC_L3,
|
||||
SEGA8_MUSIC_EDITOR,
|
||||
|
Loading…
Reference in New Issue
Block a user