diff --git a/.gitattributes b/.gitattributes
index 2365850871a..133b422866e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -116,6 +116,8 @@ hash/gamepock.xml svneol=native#text/xml
hash/gba.xml svneol=native#text/xml
hash/gbcolor.xml svneol=native#text/xml
hash/genius.xml svneol=native#text/xml
+hash/gl2000.xml svneol=native#text/xml
+hash/gl6000sl.xml svneol=native#text/xml
hash/gmaster.xml svneol=native#text/xml
hash/gp32.xml svneol=native#text/xml
hash/gx4000.xml svneol=native#text/xml
diff --git a/hash/genius.xml b/hash/genius.xml
index 166bccfb69d..3063044d877 100644
--- a/hash/genius.xml
+++ b/hash/genius.xml
@@ -95,95 +95,6 @@ On one was the highest adressline set to HIGH, on the other one this adressline
-
-
- Super Naturwissenschaften
- 200?
- Video Technology
-
-
-
-
-
-
-
-
-
-
-
- Englisch für Anfänger (Genius Leader)
- 200?
- Video Technology
-
-
-
-
-
-
-
-
-
-
-
- Schreibmaschinenkurs (Genius Leader)
- 200?
- Video Technology
-
-
-
-
-
-
-
-
-
-
-
- Englisch für Fortgeschrittene
- 200?
- Video Technology
-
-
-
-
-
-
-
-
-
-
-
- Französisch für Anfänger
- 200?
- Video Technology
-
-
-
-
-
-
-
-
-
-
-
- Tabellenkalkulation
- 200?
- Video Technology
-
-
-
-
-
-
-
-
-
Französisch Total
diff --git a/hash/gl2000.xml b/hash/gl2000.xml
new file mode 100644
index 00000000000..670f3920c97
--- /dev/null
+++ b/hash/gl2000.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ Englisch für Anfänger
+ 199?
+ Video Technology
+
+
+
+
+
+
+
+
+
+
+ Englisch für Fortgeschrittene
+ 199?
+ Video Technology
+
+
+
+
+
+
+
+
+
+
+ Französisch für Anfänger
+ 199?
+ Video Technology
+
+
+
+
+
+
+
+
+
+
+ Schreibmaschinenkurs
+ 199?
+ Video Technology
+
+
+
+
+
+
+
+
+
+
+ Super Naturwissenschaften
+ 199?
+ Video Technology
+
+
+
+
+
+
+
+
+
+
+ Berühmte Orte und Leute
+ 199?
+ Video Technology
+
+
+
+
+
+
+
diff --git a/hash/gl6000sl.xml b/hash/gl6000sl.xml
new file mode 100644
index 00000000000..bd31bd7e0dc
--- /dev/null
+++ b/hash/gl6000sl.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ Tabellenkalkulation
+ 199?
+ Video Technology
+
+
+
+
+
+
+
+
diff --git a/hash/misterx.xml b/hash/misterx.xml
index 6b46632b79f..e5cc2fc7e20 100644
--- a/hash/misterx.xml
+++ b/hash/misterx.xml
@@ -5,10 +5,10 @@
Fantasie-Trivia
1989
Video Technology / Yeno
-
-
+
-
+
+
@@ -17,8 +17,7 @@
Allgemeinwissen II
1989
Video Technology / Yeno
-
-
+
diff --git a/src/mess/drivers/pc2000.c b/src/mess/drivers/pc2000.c
index 7522f33b338..c1abc1aaee9 100644
--- a/src/mess/drivers/pc2000.c
+++ b/src/mess/drivers/pc2000.c
@@ -50,7 +50,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
- DECLARE_DEVICE_IMAGE_LOAD_MEMBER( cart_load );
DECLARE_READ8_MEMBER( key_matrix_r );
DECLARE_WRITE8_MEMBER( key_matrix_w );
DECLARE_WRITE8_MEMBER( rombank0_w );
@@ -734,34 +733,6 @@ static INPUT_PORTS_START( gl3000s )
PORT_BIT(0xe1, IP_ACTIVE_LOW, IPT_UNUSED)
INPUT_PORTS_END
-DEVICE_IMAGE_LOAD_MEMBER(pc2000_state, cart_load)
-{
- UINT8 *cart = memregion("cart")->base();
-
- if (image.software_entry() == NULL)
- {
- UINT32 size = MIN(image.length(), memregion("cart")->bytes());
-
- if (image.fread(cart, size) != size)
- return IMAGE_INIT_FAIL;
- }
- else
- {
- UINT32 size = MIN(image.get_software_region_length("rom"), memregion("cart")->bytes());
- const char *pcb_type = image.get_feature("pcb_type");
-
- if (pcb_type && !strcmp(pcb_type, "allgeme2"))
- memcpy(cart, image.get_software_region("rom"), size >> 1);
- else if (pcb_type && !strcmp(pcb_type, "ftrivia"))
- memcpy(cart, image.get_software_region("rom") + (1<<16), size >> 1);
- else
- memcpy(cart, image.get_software_region("rom"), size);
- }
-
- return IMAGE_INIT_PASS;
-}
-
-
void pc2000_state::machine_start()
{
UINT8 *bios = memregion("bios")->base();
@@ -824,8 +795,6 @@ static GFXDECODE_START( pc2000 )
GFXDECODE_ENTRY( "hd44780:cgrom", 0x0000, hd44780_charlayout, 0, 1 )
GFXDECODE_END
-static GFXDECODE_START( gl3000s )
-GFXDECODE_END
static MACHINE_CONFIG_START( pc2000, pc2000_state )
/* basic machine hardware */
@@ -857,13 +826,13 @@ static MACHINE_CONFIG_START( pc2000, pc2000_state )
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin")
- MCFG_CARTSLOT_INTERFACE("pc1000_cart")
- MCFG_CARTSLOT_LOAD(pc2000_state, cart_load)
+ MCFG_CARTSLOT_INTERFACE("genius_cart")
MCFG_CARTSLOT_NOT_MANDATORY
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gl2000, pc2000 )
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cart_list", "misterx")
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gl2000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
MACHINE_CONFIG_END
static HD44780_PIXEL_UPDATE(gl4000_pixel_update)
@@ -898,7 +867,10 @@ static MACHINE_CONFIG_DERIVED_CLASS( gl3000s, pc2000, gl3000s_state )
MCFG_DEFAULT_LAYOUT(layout_gl3000s)
- MCFG_GFXDECODE_MODIFY("gfxdecode", gl3000s)
+ MCFG_DEVICE_REMOVE("gfxdecode")
+
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( gl4000, pc2000, gl4004_state )
@@ -909,6 +881,9 @@ static MACHINE_CONFIG_DERIVED_CLASS( gl4000, pc2000, gl4004_state )
MCFG_DEVICE_MODIFY("hd44780")
MCFG_HD44780_LCD_SIZE(4, 20)
MCFG_HD44780_PIXEL_UPDATE_CB(gl4000_pixel_update)
+
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED_CLASS( misterx, pc2000, pc1000_state )
@@ -928,8 +903,7 @@ static MACHINE_CONFIG_DERIVED_CLASS( misterx, pc2000, pc1000_state )
MCFG_HD44780_PIXEL_UPDATE_CB(pc1000_pixel_update)
MCFG_CARTSLOT_MODIFY("cart")
- MCFG_CARTSLOT_INTERFACE("pc1000_cart")
- MCFG_CARTSLOT_LOAD(pc1000_state, cart_load)
+ MCFG_CARTSLOT_INTERFACE("genius_cart")
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list", "misterx")
@@ -1013,6 +987,7 @@ ROM_START( misterx )
ROM_LOAD( "27-00882-001.bin", 0x000000, 0x020000, CRC(30e0dc94) SHA1(2f4675746a41399b3d9e3e8001a9b4a0dcc5b620))
ROM_REGION( 0x40000, "cart", ROMREGION_ERASEFF )
+ ROM_CART_LOAD( "cart", 0, 0x40000, 0 )
ROM_END
@@ -1028,4 +1003,4 @@ COMP( 1994, gl4000, 0, 0, gl4000, pc2000, driver_device, 0, "V
COMP( 1996, gl4004, 0, 0, gl4000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 4004 Quadro L (Germany)", GAME_NOT_WORKING)
COMP( 1997, gl5000, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 5000 (Germany)", GAME_IS_SKELETON)
COMP( 1997, gl5005x, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader 5005X (Germany)", GAME_IS_SKELETON)
-COMP( 1993, gln, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader Notebook", GAME_NOT_WORKING)
+COMP( 1993, gln, 0, 0, pc2000, pc2000, driver_device, 0, "Video Technology", "Genius Leader Notebook", GAME_IS_SKELETON)
diff --git a/src/mess/drivers/prestige.c b/src/mess/drivers/prestige.c
index ce94cb2da05..7406d9a749e 100644
--- a/src/mess/drivers/prestige.c
+++ b/src/mess/drivers/prestige.c
@@ -501,7 +501,7 @@ static MACHINE_CONFIG_START( prestige, prestige_state )
/* cartridge */
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin")
- MCFG_CARTSLOT_INTERFACE("prestige_cart")
+ MCFG_CARTSLOT_INTERFACE("genius_cart")
/* internal ram */
MCFG_RAM_ADD(RAM_TAG)
@@ -509,6 +509,18 @@ static MACHINE_CONFIG_START( prestige, prestige_state )
MCFG_RAM_EXTRA_OPTIONS("64K")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( gl6000sl, prestige )
+ MCFG_SOFTWARE_LIST_ADD("cart_list", "gl6000sl")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( gl7007sl, prestige )
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl6000sl_cart", "gl6000sl")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("gl2000_cart", "gl2000")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("misterx_cart", "misterx")
+MACHINE_CONFIG_END
+
/* ROM definition */
ROM_START( gl6000sl )
ROM_REGION(0x100000, "maincpu", 0)
@@ -530,8 +542,8 @@ ROM_START( prestige )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "27-6020-02.u2", 0x00000, 0x100000, CRC(6bb6db14) SHA1(5d51fc3fd799e7f01ee99c453f9005fb07747b1e) )
- ROM_REGION( 0x8000, "cart", ROMREGION_ERASE )
- ROM_CART_LOAD( "cart", 0, 0x8000, 0 )
+ ROM_REGION( 0x40000, "cart", ROMREGION_ERASEFF )
+ ROM_CART_LOAD( "cart", 0, 0x40000, 0 )
ROM_END
ROM_START( glcolor )
@@ -546,6 +558,6 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1994, glcolor, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Leader Color (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1997, gl6000sl, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Leader 6000SL (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1998, gl7007sl, 0, 0, prestige, prestige, driver_device, 0, "VTech", "Genius Leader 7007SL (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1997, gl6000sl, 0, 0, gl6000sl, prestige, driver_device, 0, "VTech", "Genius Leader 6000SL (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1998, gl7007sl, 0, 0, gl7007sl, prestige, driver_device, 0, "VTech", "Genius Leader 7007SL (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
COMP( 1998, prestige, 0, 0, prestige, prestige, driver_device, 0, "VTech", "PreComputer Prestige Elite", GAME_NOT_WORKING | GAME_NO_SOUND)