Mercurial > repos > blastem
diff system.c @ 2459:cb62730d5c99
Initial work on Copera emulation
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 21 Feb 2024 23:42:19 -0800 |
parents | 9da3de58410d |
children | 8cf7cadc17ee |
line wrap: on
line diff
--- a/system.c Wed Feb 21 20:34:52 2024 -0800 +++ b/system.c Wed Feb 21 23:42:19 2024 -0800 @@ -41,6 +41,21 @@ ) { return SYSTEM_SMS; } + if (media->size > 400) { + uint8_t *buffer = media->buffer; + if (!memcmp(buffer + 4, "\x00\x00\x04\x00", 4) && (buffer[0x80] == 0 || buffer[0x80] == 0xFF)) { + int i = 0x81; + for(; i < 0x400; i++) + { + if (buffer[i] != buffer[0x80]) { + break; + } + } + if (i == 0x400) { + return SYSTEM_COPERA; + } + } + } if (safe_cmp("BLSTEL\x02", 0, media->buffer, media->size)) { uint8_t *buffer = media->buffer; if (media->size > 9 && buffer[7] == 0) { @@ -119,7 +134,8 @@ case SYSTEM_MEDIA_PLAYER: return &(alloc_media_player(media, opts))->header; case SYSTEM_PICO: - return &(alloc_config_pico(media->buffer, media->size, lock_on, lock_on_size, opts, force_region))->header; + case SYSTEM_COPERA: + return &(alloc_config_pico(media->buffer, media->size, lock_on, lock_on_size, opts, force_region, stype))->header; default: return NULL; }