comparison system.c @ 2428:65c2e4d990cc

WIP Pico emulation
author Michael Pavone <pavone@retrodev.com>
date Sat, 03 Feb 2024 18:32:41 -0800
parents 64cf80e683aa
children bed4d3db8a3f
comparison
equal deleted inserted replaced
2427:8b948cf23557 2428:65c2e4d990cc
12 return filesize >= offset+len && !memcmp(str, buffer + offset, len); 12 return filesize >= offset+len && !memcmp(str, buffer + offset, len);
13 } 13 }
14 14
15 system_type detect_system_type(system_media *media) 15 system_type detect_system_type(system_media *media)
16 { 16 {
17 static char *pico_names[] = {
18 "SEGA PICO", "SEGATOYS PICO", "SEGA TOYS PICO", "SAMSUNG PICO",
19 "SEGA IAC", "IMA IKUNOUJYUKU", "IMA IKUNOJYUKU"
20 };
21 static const int num_pico = sizeof(pico_names)/sizeof(*pico_names);
22 for (int i = 0; i < num_pico; i++) {
23 if (safe_cmp(pico_names[i], 0x100, media->buffer, media->size)) {
24 return SYSTEM_PICO;
25 }
26 }
17 if (safe_cmp("SEGA", 0x100, media->buffer, media->size)) { 27 if (safe_cmp("SEGA", 0x100, media->buffer, media->size)) {
18 //TODO: support other bootable identifiers 28 //TODO: support other bootable identifiers
19 if (safe_cmp("SEGADISCSYSTEM", 0, media->buffer, media->size)) { 29 if (safe_cmp("SEGADISCSYSTEM", 0, media->buffer, media->size)) {
20 return SYSTEM_SEGACD; 30 return SYSTEM_SEGACD;
21 } 31 }
103 case SYSTEM_COLECOVISION: 113 case SYSTEM_COLECOVISION:
104 return &(alloc_configure_coleco(media))->header; 114 return &(alloc_configure_coleco(media))->header;
105 #endif 115 #endif
106 case SYSTEM_MEDIA_PLAYER: 116 case SYSTEM_MEDIA_PLAYER:
107 return &(alloc_media_player(media, opts))->header; 117 return &(alloc_media_player(media, opts))->header;
118 case SYSTEM_PICO:
119 return &(alloc_config_pico(media->buffer, media->size, lock_on, lock_on_size, opts, force_region))->header;
108 default: 120 default:
109 return NULL; 121 return NULL;
110 } 122 }
111 } 123 }
112 124