-nintendo/vboy.cpp: Allow it to run unmapped reads with no cartridge.

-hash/gbcolor.xml: Added notes on what happens if you bypass the boot
 check for Rocket Games cartridges.

-bus/vboy/slot.cpp: Don't instantiate a cartridge device when no media
 is loaded.
This commit is contained in:
Vas Crabb 2022-08-26 19:26:32 +10:00
parent 4761e5ebb0
commit 1c2266ce55
4 changed files with 41 additions and 21 deletions

View file

@ -7509,7 +7509,8 @@ license:CC0
</part>
</software>
<software name="tamaosu">
<!-- unemulated speaker and real-time clock -->
<software name="tamaosu" supported="partial">
<!-- The game cart has an integrated speaker and a replaceable battery (CR2016). -->
<description>Game de Hakken!! Tamagotchi - Osutchi to Mesutchi (Japan)</description>
<year>1998</year>
@ -27784,9 +27785,10 @@ patch the rom to 0x00 and 0x00....and at 0x0B3D also patch it to
</software>
<software name="lasama">
<description>La Sa Ma Chuan Qi - Story of Lasama (Taiwan)</description>
<description>Lāsàmǎ Chuánqí - Story of Lasama (Taiwan)</description>
<year>19??</year>
<publisher>GOWIN</publisher>
<info name="alt_title" value="拉薩瑪傳奇" />
<info name="serial" value="GS-04" />
<part name="cart" interface="gameboy_cart">
<feature name="slot" value="rom_lasama" />

View file

@ -24540,6 +24540,7 @@ license:CC0
These were produced between 2000 and 2001 by Rocket Games, run by Datel Design
-->
<!-- missing graphics in Karate Joe -->
<software name="atvrackj" supported="partial">
<description>ATV Racing &amp; Karate Joe (Europe)</description>
<year>200?</year>
@ -24556,6 +24557,7 @@ license:CC0
</part>
</software>
<!-- missing graphics in Karate Joe -->
<software name="atvrackja" cloneof="atvrackj" supported="partial">
<description>ATV Racing &amp; Karate Joe (Europe, alt)</description>
<year>200?</year>
@ -24587,6 +24589,7 @@ license:CC0
</part>
</software>
<!-- displays white screen rather than game selection menu - can still use Up/Down and Start to select game -->
<software name="fullhang" supported="partial">
<description>Full Time Soccer &amp; Hang Time Basketball (Europe)</description>
<year>200?</year>
@ -24634,6 +24637,7 @@ license:CC0
</part>
</software>
<!-- missing graphics in Smash Out -->
<software name="pocksmrt" supported="partial">
<description>Pocket Smash Out &amp; Race Time (Europe)</description>
<year>200?</year>
@ -24664,7 +24668,8 @@ license:CC0
</part>
</software>
<software name="karatej" supported="partial">
<!-- missing graphics make the game almost unplayable -->
<software name="karatej" supported="no">
<description>Karate Joe (Europe)</description>
<year>200?</year>
<publisher>Rocket Games</publisher>
@ -24705,7 +24710,8 @@ license:CC0
</part>
</software>
<software name="sinkj" supported="partial">
<!-- Space Invasion hangs when starting a game, Karate Joe has missing graphics -->
<software name="sinkj" supported="no">
<description>Space Invasion &amp; Karate Joe (Europe)</description>
<year>200?</year>
<publisher>Rocket Games</publisher>
@ -24721,6 +24727,7 @@ license:CC0
</part>
</software>
<!-- Space Invasion hangs when starting a game -->
<software name="sinpntr" supported="partial">
<description>Space Invasion &amp; Painter (Europe)</description>
<year>200?</year>
@ -24737,7 +24744,8 @@ license:CC0
</part>
</software>
<software name="sinvasn" supported="partial">
<!-- hangs when starting a game -->
<software name="sinvasn" supported="no">
<description>Space Invasion (Europe)</description>
<year>200?</year>
<publisher>Rocket Games</publisher>

View file

@ -126,27 +126,38 @@ void vboy_cart_slot_device::device_start()
std::string vboy_cart_slot_device::get_default_card_software(get_default_card_software_hook &hook) const
{
std::string const image_name(mconfig().options().image_option(instance_name()).value());
software_part const *const part(!image_name.empty() ? find_software_item(image_name, true) : nullptr);
if (part)
if (hook.image_file())
{
osd_printf_verbose("[%s] Found software part for image name '%s'\n", tag(), image_name);
for (rom_entry const &entry : part->romdata())
{
if (ROMENTRY_ISREGION(entry) && (entry.name() == "sram"))
{
osd_printf_verbose("[%s] Found 'sram' data area, enabling cartridge backup RAM\n", tag());
return "flatrom_sram";
}
}
// TODO: is there a header field or something indicating presence of save RAM?
osd_printf_verbose("[%s] Assuming plain ROM cartridge\n", tag());
return "flatrom";
}
else
{
osd_printf_verbose("[%s] No software part found for image name '%s'\n", tag(), image_name);
std::string const image_name(mconfig().options().image_option(instance_name()).value());
software_part const *const part(!image_name.empty() ? find_software_item(image_name, true) : nullptr);
if (part)
{
osd_printf_verbose("[%s] Found software part for image name '%s'\n", tag(), image_name);
for (rom_entry const &entry : part->romdata())
{
if (ROMENTRY_ISREGION(entry) && (entry.name() == "sram"))
{
osd_printf_verbose("[%s] Found 'sram' data area, enabling cartridge backup RAM\n", tag());
return "flatrom_sram";
}
}
osd_printf_verbose("[%s] No 'sram' data area found, assuming plain ROM cartridge\n", tag());
return "flatrom";
}
else
{
osd_printf_verbose("[%s] No software part found for image name '%s'\n", tag(), image_name);
}
}
osd_printf_verbose("[%s] Assuming plain ROM cartridge\n", tag());
return "flatrom";
// leave the slot empty
return std::string();
}

View file

@ -1270,7 +1270,6 @@ void vboy_state::vboy(machine_config &config)
/* cartridge */
VBOY_CART_SLOT(config, m_cart, vboy_carts, nullptr);
m_cart->set_must_be_loaded(true);
m_cart->intcro().set_inputline(m_maincpu, 2);
m_cart->set_exp(m_maincpu, AS_PROGRAM, 0x0400'0000);
m_cart->set_chip(m_maincpu, AS_PROGRAM, 0x0600'0000);