diff --git a/hash/sg1000.xml b/hash/sg1000.xml
index 54deebb1ba3..6e33ea9e999 100644
--- a/hash/sg1000.xml
+++ b/hash/sg1000.xml
@@ -1385,6 +1385,8 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
+
+
@@ -1461,9 +1463,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
+
+
+
@@ -1695,9 +1700,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
+
+
+
@@ -1708,9 +1716,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
+
+
+
@@ -2410,6 +2421,7 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
+
@@ -2601,9 +2613,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
1987
Abstract Software
+
+
+
@@ -2612,9 +2627,12 @@ A135 : 森林歷險記 / Sēnlín lìxiǎn jì -> Pitfall II (same as R-049 by A
1985
Sega
+
+
+
diff --git a/src/mess/drivers/sg1000.c b/src/mess/drivers/sg1000.c
index b336729507c..dbfdd08689a 100644
--- a/src/mess/drivers/sg1000.c
+++ b/src/mess/drivers/sg1000.c
@@ -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)
diff --git a/src/mess/drivers/sms.c b/src/mess/drivers/sms.c
index a79a855aef4..abef61272f9 100644
--- a/src/mess/drivers/sms.c
+++ b/src/mess/drivers/sms.c
@@ -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)
diff --git a/src/mess/machine/sega8_rom.c b/src/mess/machine/sega8_rom.c
index 82402bc1110..5b2698f85af 100644
--- a/src/mess/machine/sega8_rom.c
+++ b/src/mess/machine/sega8_rom.c
@@ -21,6 +21,7 @@ const device_type SEGA8_ROM_STD = &device_creator;
// Specific SG-1000 MkI - MkII cart types
const device_type SEGA8_ROM_CARDCATCH = &device_creator;
+const device_type SEGA8_ROM_OTHELLO = &device_creator;
const device_type SEGA8_ROM_CASTLE = &device_creator;
const device_type SEGA8_ROM_BASIC_L3 = &device_creator;
const device_type SEGA8_ROM_MUSIC_EDITOR = &device_creator;
@@ -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
diff --git a/src/mess/machine/sega8_rom.h b/src/mess/machine/sega8_rom.h
index 1d8be4f0db4..1c78a20788f 100644
--- a/src/mess/machine/sega8_rom.h
+++ b/src/mess/machine/sega8_rom.h
@@ -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;
diff --git a/src/mess/machine/sega8_slot.c b/src/mess/machine/sega8_slot.c
index 673ec44579c..31d8245d966 100644
--- a/src/mess/machine/sega8_slot.c
+++ b/src/mess/machine/sega8_slot.c
@@ -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);
diff --git a/src/mess/machine/sega8_slot.h b/src/mess/machine/sega8_slot.h
index e88b0976ea0..23d54af0f21 100644
--- a/src/mess/machine/sega8_slot.h
+++ b/src/mess/machine/sega8_slot.h
@@ -19,6 +19,7 @@ enum
SEGA8_JANGGUN,
SEGA8_KOREAN,
SEGA8_KOREAN_NOBANK,
+ SEGA8_OTHELLO,
SEGA8_CASTLE,
SEGA8_BASIC_L3,
SEGA8_MUSIC_EDITOR,