summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/gameboy/slot.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Restored ability of for image devices to report specific error messages. Vas Crabb2023-04-081-7/+7
| | | | | | | | | | | | | | Restores ability to give specific/detailed messages removed in 6f7e4141ea14acaaf9cb973c66788fabb3457023 while pandering to obsession with single return value. Moved responsibility for displaying the error message in the UI to the caller rather than device_image_interface, and made device_image_interface always log the error along with the full path and error condition content. Gave several image devices more detailed error messages. Added some FIXME comments for apparent bugs.
* gameboy/slot.cpp: Fix error return for loose software AJR2023-04-051-1/+1
|
* API change for device_image_interface AJR2023-03-301-6/+10
| | | | | | | | | - Remove the seterror method for recording error messages and conditions. Condition codes have been made return values for call_load, call_create and various related callbacks. Error messages (which many devices weren't generating) are now displayed through osd_printf_error. - Eliminate the image_init_result and image_verify_result pass/fail enumeration types. Update many functions that were returning these enumerations or simply bools to return std::error_condition instead. In some cases, this type is now passed down from internal parsing/loading functions which were already returning it. In various other cases, the former default UNSPECIFIED has been used as a catchall for I/O errors; anticipated future refactorings should make these error returns more specific. - Expand the image_error categories to include INVALIDLENGTH, NOSOFTWARE and BADSOFTWARE. The first is largely self-explanatory. The second is generated by the core to indicate failure to find software items in lists. The third is provided for devices to indicate semantic errors in software list entries. - Change the return type of floppy_image_device::identify to a pair so the potential error condition can be passed along to the UI without storing it in a member variable. - Move device_image_interface::message down into snapshot_image_device and change its implementation to use string_format instead of printf. - Correct a typo in the shortname of the generic snapshot device.
* Reimplemented Game Boy and Mega Duck cartridge slots: Vas Crabb2022-09-131-0/+84
Allow cartridges to install themselves rather than putting accesses through trampolines. Use memory banks even when they aren't installed directly, as it exposes script bindings and declares intent. Added support for MBC6 Flash, and MBC7 two-axis accelerometer and 128*16 or 256*16 serial EEPROM. Added basic support for Game Boy Camera image capture (various M64282FP processing features are not implemented). Improved MBC3 real-time clock emulation. Added basic support for Hudson Soft HuC-1 cartridges (infrared I/O not supported) and HuC-3 cartridges (real-time clock and infrared I/O not supported). Added full support for Vast Fame VF001 cartridges. Separated Mega Duck flat and banked ROM cartridge types, and allowed software list items to specify whether a cartridge has fixed and selectable 16K banks or a single selectable 32K bank. Added support for RAM sizes smaller than 8K that will be mirrored in the 0xA000-0xBFFF area. Implemented correct ROM mapping for sizes that are not powers of two. Corrected size of MBC2 internal static RAM. Added support for various hypothetical cartridge wirings, such as MBC5 with outer ROM banking for up to 128M, M161 and Wisdom Tree cartridges with flat RAM, and MBC1 or MBC5 with fewer than the maximum number of inner ROM bank lines used. Fixed logo spoofing logic for many pirate cartridges, including Rocket Games, Sachen MMC1 and MMC2, Sintax, Li Cheng, and Niutoude. Identified fine bank mask register for GBCK003 board. Added basic support for GBX format ROM images. Added heuristic for detecting raw dumps of M161 cartridge images. Removed unreliable unlicensed cartridge detection heuristics - these need to be reimplemented in a better way. Software list items promoted to working --------------------------------------- gameboy.xml: Game Boy Camera (Europe, USA) Game Boy Camera Gold (USA) Pocket Camera (Japan, Rev 1) gbcolor.xml: Command Master (Japan) Kirby Tilt 'n' Tumble (USA) Korokoro Kirby (Japan) Street Hero (Taiwan) Thunder Blast Man (Europe) 4 in 1 + 8 in 1 (World, 4B-001) 4 in 1 + 8 in 1 (World, 4B-002) 4 in 1 + 8 in 1 + 16 in 1 (World, 4B-005) 4 in 1 + 8 in 1 (World, 4B-007) 31 in 1 Mighty Mix (Taiwan) 31-in-1 Mighty Mix (Australia) Nǚwáng Gédòu 2000 (Taiwan) Chāojí Gédòu 2001 Alpha (Taiwan) Gédòu Jiàn Shén - Soul Falchion (Taiwan)