MSX: Check for missing bios files on startup
This slows down boot a little but I think it's worth it to avoid user frustration!
This commit is contained in:
parent
15139cbf85
commit
6e8052cb21
@ -74,7 +74,8 @@ Some emulators support loading a BIOS. The files should be placed as follows:
|
||||
- GB: `/retro-go/bios/gb_bios.bin`
|
||||
- GBC: `/retro-go/bios/gbc_bios.bin`
|
||||
- FDS: `/retro-go/bios/fds_bios.bin`
|
||||
- MSX: `/retro-go/bios/MSX.ROM` `/retro-go/bios/MSX2.ROM` `/retro-go/bios/MSX2EXT.ROM`
|
||||
- MSX: In folder `/retro-go/bios/msx/` put: `MSX.ROM` `MSX2.ROM` `MSX2EXT.ROM` `MSX2P.ROM` `MSX2PEXT.ROM` `FMPAC.ROM` `DISK.ROM` `MSXDOS2.ROM` `PAINTER.ROM` `KANJI.ROM`
|
||||
|
||||
|
||||
## Game & Watch
|
||||
The roms must be packed with [LCD-Game-Shrinker](https://github.com/bzhxx/LCD-Game-Shrinker) and a tutorial can be [found here](https://gist.github.com/DNA64/16fed499d6bd4664b78b4c0a9638e4ef).
|
||||
|
||||
@ -1390,16 +1390,16 @@ void rg_gui_sysinfo_menu(void)
|
||||
|
||||
void rg_gui_about_menu(const rg_gui_option_t *extra_options)
|
||||
{
|
||||
char build_ver[40], build_date[40], build_user[40], title[40];
|
||||
const rg_app_t *app = rg_system_get_app();
|
||||
|
||||
size_t extra_options_count = get_dialog_items_count(extra_options);
|
||||
|
||||
rg_gui_option_t options[16 + extra_options_count];
|
||||
rg_gui_option_t *opt = &options[0];
|
||||
|
||||
*opt++ = (rg_gui_option_t){0, "Version", build_ver, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t){0, "Date ", build_date, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t){0, "By ", build_user, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t){0, "Version", app->version, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t){0, "Date ", app->buildDate, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t){0, "By ", app->buildUser, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t){0, "App ", app->name, RG_DIALOG_FLAG_MESSAGE, NULL};
|
||||
*opt++ = (rg_gui_option_t)RG_DIALOG_SEPARATOR;
|
||||
*opt++ = (rg_gui_option_t){1000, "System information", NULL, RG_DIALOG_FLAG_NORMAL, NULL};
|
||||
for (size_t i = 0; i < extra_options_count; i++)
|
||||
@ -1408,16 +1408,9 @@ void rg_gui_about_menu(const rg_gui_option_t *extra_options)
|
||||
*opt++ = (rg_gui_option_t){3000, "Debug", NULL, RG_DIALOG_FLAG_NORMAL, NULL};
|
||||
*opt++ = (rg_gui_option_t)RG_DIALOG_END;
|
||||
|
||||
const rg_app_t *app = rg_system_get_app();
|
||||
|
||||
snprintf(build_ver, sizeof(build_ver), "%s", app->version);
|
||||
snprintf(build_date, sizeof(build_date), "%s", app->buildDate);
|
||||
snprintf(build_user, sizeof(build_user), "%s", app->buildUser);
|
||||
snprintf(title, sizeof(title), "About Retro-Go"); // , app->name
|
||||
|
||||
while (true)
|
||||
{
|
||||
switch (rg_gui_dialog(title, options, 4))
|
||||
switch (rg_gui_dialog("About Retro-Go", options, 4))
|
||||
{
|
||||
case 1000:
|
||||
rg_gui_sysinfo_menu();
|
||||
|
||||
@ -54,6 +54,21 @@ static const unsigned char KBDKeys[YKEYS][XKEYS] = {
|
||||
{'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/', 0, 0},
|
||||
{'[', ']', ' ', ' ', ' ', ' ', ' ', '\\', '\'', 0, 0, 0}};
|
||||
|
||||
static const char *BiosFolder = RG_BASE_PATH_BIOS "/msx";
|
||||
// We only check for absolutely essential files to avoid slowing down boot too much!
|
||||
static const char *BiosFiles[] = {
|
||||
"MSX.ROM",
|
||||
"MSX2.ROM",
|
||||
"MSX2EXT.ROM",
|
||||
// "MSX2P.ROM",
|
||||
// "MSX2PEXT.ROM",
|
||||
// "FMPAC.ROM",
|
||||
"DISK.ROM",
|
||||
"MSXDOS2.ROM",
|
||||
// "PAINTER.ROM",
|
||||
// "KANJI.ROM",
|
||||
};
|
||||
|
||||
static inline void SubmitFrame(void)
|
||||
{
|
||||
int crop_v = CropPicture ? (ScanLines212 ? 8 : 18) : 0;
|
||||
@ -409,12 +424,25 @@ void app_main(void)
|
||||
KeyboardEmulation = rg_settings_get_number(NS_APP, "Input", 1);
|
||||
CropPicture = rg_settings_get_number(NS_APP, "Crop", 0);
|
||||
|
||||
for (size_t i = 0; i < RG_COUNT(BiosFiles); ++i)
|
||||
{
|
||||
char pathbuf[RG_PATH_MAX + 1];
|
||||
snprintf(pathbuf, RG_PATH_MAX, "%s/%s", BiosFolder, BiosFiles[i]);
|
||||
if (!rg_storage_exists(pathbuf))
|
||||
{
|
||||
char message[512];
|
||||
snprintf(message, 512, "File: %s\nYou can find it at:\n%s",
|
||||
pathbuf, "https://fms.komkon.org/fMSX/");
|
||||
rg_gui_alert("BIOS file missing!", message);
|
||||
}
|
||||
}
|
||||
|
||||
if (app->bootFlags & RG_BOOT_RESUME)
|
||||
{
|
||||
PendingLoadSTA = rg_emu_get_path(RG_PATH_SAVE_STATE + app->saveSlot, app->romPath);
|
||||
}
|
||||
|
||||
char *argv[] = {"fmsx", "-skip", "50", "-home", RG_BASE_PATH_BIOS, "-joy", "1", NULL, NULL, NULL,};
|
||||
char *argv[] = {"fmsx", "-skip", "50", "-home", BiosFolder, "-joy", "1", NULL, NULL, NULL,};
|
||||
int argc = RG_COUNT(argv) - 3;
|
||||
|
||||
if (strcasecmp(rg_extension(app->romPath), "dsk") == 0)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user