diff --git a/hash/vsmile.xml b/hash/vsmile.xml
index 14959c52e7c..c7bf57ab368 100644
--- a/hash/vsmile.xml
+++ b/hash/vsmile.xml
@@ -199,6 +199,84 @@ Language:
+
+
+ Aladdin - Aladdins Welt der Wunder (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Arielle Die Meerjungfrau - Arielles aufregendes Abenteuer (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Bob der Baumeister - Bobs spannender Arbeitstag (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Cinderella - Lernen im Maerchenland (Ger, Rev. 0)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Cinderella - Lernen im Maerchenland (Ger, Rev. 1)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Fußball Schule (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Freds Zahlen Rallye (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
Meister Manny's Werkzeugkiste (Ger)
200?
@@ -210,6 +288,83 @@ Language:
+
+ Monsters vs Aliens (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Oben (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Ratatouille - Remys Neue Rezepte (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Shrek - Die Geschichte des Drache (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Spongebob Schwammkopf - Der Tag des Schwamms (Ger, Rev. 1)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Spongebob Schwammkopf - Der Tag des Schwamms (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Superman - Der Superheld (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
Thomas & seine Freunde - Freunde halten zusammen (Ger)
200?
@@ -221,17 +376,52 @@ Language:
-
- Spongebob Schwammkopf - Der Tag es Schwamms (Germany) (Ger)
+
+ Toy Story 2 - Woodys Spannende Rettung (Ger)
200?
VTech
-
-
+
+
+
+ Wall-E (Ger)
+ 200?
+ VTech
+
+
+
+
+
+
+
+
+ Winnie Puhh - Die Honigjagd (Ger)
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+ Zayzoo's Lernall (Germany)
+ 19??
+ <unknown>
+
+
+
+
+
+
+
+
+
diff --git a/src/mess/drivers/vii.c b/src/mess/drivers/vii.c
index fdfcd175666..8af4fed7dcf 100644
--- a/src/mess/drivers/vii.c
+++ b/src/mess/drivers/vii.c
@@ -70,6 +70,7 @@ Detailed list of bugs:
#include "cpu/unsp/unsp.h"
#include "imagedev/cartslot.h"
#include "machine/i2cmem.h"
+#include "formats/imageutl.h"
#define PAGE_ENABLE_MASK 0x0008
@@ -87,12 +88,13 @@ class vii_state : public driver_device
public:
vii_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
+ m_maincpu(*this, "maincpu"),
m_p_ram(*this, "p_ram"),
m_p_rowscroll(*this, "p_rowscroll"),
m_p_palette(*this, "p_palette"),
m_p_spriteram(*this, "p_spriteram"),
m_p_cart(*this, "p_cart"),
+ m_region_cpu(*this, "maincpu"),
m_region_cart(*this, "cart"),
m_io_p1(*this, "P1")
{ }
@@ -150,6 +152,7 @@ public:
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(vsmile_cart);
protected:
+ required_memory_region m_region_cpu;
optional_memory_region m_region_cart;
required_ioport m_io_p1;
@@ -596,7 +599,7 @@ void vii_state::vii_do_gpio(UINT32 offset)
what ^= (dir & ~attr);
what &= ~special;
- if(m_spg243_mode == SPG243_VII)
+ if (m_spg243_mode == SPG243_VII)
{
if(index == 1)
{
@@ -604,7 +607,7 @@ void vii_state::vii_do_gpio(UINT32 offset)
vii_switch_bank(bank);
}
}
- else if(m_spg243_mode == SPG243_BATMAN)
+ else if (m_spg243_mode == SPG243_BATMAN)
{
if(index == 0)
{
@@ -939,6 +942,7 @@ static INPUT_PORTS_START( walle )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("B Button")
INPUT_PORTS_END
+
DEVICE_IMAGE_LOAD_MEMBER( vii_state, vii_cart )
{
UINT8 *cart = m_region_cart->base();
@@ -974,26 +978,28 @@ DEVICE_IMAGE_LOAD_MEMBER( vii_state, vii_cart )
DEVICE_IMAGE_LOAD_MEMBER( vii_state, vsmile_cart )
{
- UINT8 *cart = m_region_cart->base();
+ UINT8 *CART = m_region_cart->base();
+ UINT16 *ROM = (UINT16 *) m_region_cpu->base();
if (image.software_entry() == NULL)
{
int size = image.length();
-
- if( image.fread( cart, size ) != size )
- {
- image.seterror( IMAGE_ERROR_UNSPECIFIED, "Unable to fully read from file" );
- return IMAGE_INIT_FAIL;
- }
+ image.fread(CART, size);
}
else
{
- int filesize = image.get_software_region_length("rom");
- memcpy(cart, image.get_software_region("rom"), filesize);
+ int size = image.get_software_region_length("rom");
+ memcpy(CART, image.get_software_region("rom"), size);
}
- memcpy(m_p_cart, cart + 0x4000*2, (0x400000 - 0x4000) * 2);
+
+ // for whatever reason if we copy more than this, the CPU
+ // is not happy and VSmile won't show anything... bankswitch?
+ for (int i = 0; i < 0x400000; i += 2)
+ ROM[i / 2] = pick_integer_le(CART, i, 2);
+
return IMAGE_INIT_PASS;
}
+
TIMER_CALLBACK_MEMBER(vii_state::tmb1_tick)
{
m_io_regs[0x22] |= 1;
@@ -1015,7 +1021,7 @@ void vii_state::machine_start()
m_controller_input[6] = 0xff;
m_controller_input[7] = 0;
- if ( m_region_cart )
+ if ( m_region_cart && m_spg243_mode == SPG243_VII)
{
UINT8 *rom = m_region_cart->base();
memcpy(m_p_cart, rom + 0x4000*2, (0x400000 - 0x4000) * 2);
@@ -1182,7 +1188,7 @@ DRIVER_INIT_MEMBER(vii_state,batman)
DRIVER_INIT_MEMBER(vii_state,vsmile)
{
- m_spg243_mode = SPG243_VSMILE;
+ m_spg243_mode = SPG243_BATMAN;//SPG243_VSMILE;
m_centered_coordinates = 1;
}
@@ -1207,10 +1213,9 @@ ROM_END
ROM_START( vsmile )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) /* dummy region for u'nSP */
+ ROM_LOAD16_WORD_SWAP( "bios german.bin", 0x000000, 0x200000, CRC(205c5296) SHA1(7fbcf761b5885c8b1524607aabaf364b4559c8cc) )
ROM_REGION( 0x2000000, "cart", ROMREGION_ERASE00 )
- ROM_LOAD16_WORD_SWAP( "bios german.bin", 0x000000, 0x200000, CRC(205c5296) SHA1(7fbcf761b5885c8b1524607aabaf364b4559c8cc) )
- ROM_CART_LOAD("cart", 0x0000, 0x2000000, ROM_MIRROR)
ROM_END
ROM_START( walle )