Mercurial > repos > blastem
changeset 2160:3f09312685e3
Fix loading CD bios from absolute path
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 24 May 2022 18:31:12 -0700 |
parents | 2ed402b4c1fb |
children | 6a954675d634 |
files | segacd.c |
diffstat | 1 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/segacd.c Tue May 24 09:11:12 2022 -0700 +++ b/segacd.c Tue May 24 18:31:12 2022 -0700 @@ -1426,7 +1426,21 @@ key = "system\0scd_bios_us\0"; } char *bios_path = tern_find_path_default(config, key, (tern_val){.ptrval = "cdbios.bin"}, TVAL_PTR).ptrval; - cd->rom = (uint16_t *)read_bundled_file(bios_path, &firmware_size); + if (is_absolute_path(bios_path)) { + FILE *f = fopen(bios_path, "rb"); + if (f) { + long to_read = file_size(f); + cd->rom = malloc(to_read); + firmware_size = fread(cd->rom, 1, to_read, f); + if (!firmware_size) { + free(cd->rom); + cd->rom = NULL; + } + fclose(f); + } + } else { + cd->rom = (uint16_t *)read_bundled_file(bios_path, &firmware_size); + } if (!cd->rom) { fatal_error("Failed to load Sega CD BIOS from %s\n", bios_path); }