comparison system.c @ 2604:c768bbd912f1

Give sega 8-bit consoles separate system_type enum values and allow selecting them from the command line
author Michael Pavone <pavone@retrodev.com>
date Thu, 13 Feb 2025 23:07:31 -0800
parents 6404643aca38
children c4256ce2c45a
comparison
equal deleted inserted replaced
2603:acb8f0f70a68 2604:c768bbd912f1
284 } 284 }
285 if (safe_cmp("TMR SEGA", 0x1FF0, media->buffer, media->size) 285 if (safe_cmp("TMR SEGA", 0x1FF0, media->buffer, media->size)
286 || safe_cmp("TMR SEGA", 0x3FF0, media->buffer, media->size) 286 || safe_cmp("TMR SEGA", 0x3FF0, media->buffer, media->size)
287 || safe_cmp("TMR SEGA", 0x7FF0, media->buffer, media->size) 287 || safe_cmp("TMR SEGA", 0x7FF0, media->buffer, media->size)
288 ) { 288 ) {
289 return SYSTEM_SMS; 289 return strcmp("gg", media->extension) ? SYSTEM_SMS : SYSTEM_GAME_GEAR;
290 } 290 }
291 if (media->size > 400) { 291 if (media->size > 400) {
292 uint8_t *buffer = media->buffer; 292 uint8_t *buffer = media->buffer;
293 if (!memcmp(buffer + 4, "\x00\x00\x04\x00", 4) && (buffer[0x80] == 0 || buffer[0x80] == 0xFF)) { 293 if (!memcmp(buffer + 4, "\x00\x00\x04\x00", 4) && (buffer[0x80] == 0 || buffer[0x80] == 0xFF)) {
294 int i = 0x81; 294 int i = 0x81;
331 //Header based detection failed, examine filename for clues 331 //Header based detection failed, examine filename for clues
332 if (media->extension) { 332 if (media->extension) {
333 if (!strcmp("md", media->extension) || !strcmp("gen", media->extension)) { 333 if (!strcmp("md", media->extension) || !strcmp("gen", media->extension)) {
334 return SYSTEM_GENESIS; 334 return SYSTEM_GENESIS;
335 } 335 }
336 if (!strcmp("sms", media->extension) || !strcmp("sg", media->extension) || !strcmp("gg", media->extension) 336 if (!strcmp("sms", media->extension)) {
337 || !strcmp("sc", media->extension) || !strcmp("sf7", media->extension)) {
338 return SYSTEM_SMS; 337 return SYSTEM_SMS;
338 }
339 if (!strcmp("gg", media->extension)) {
340 return SYSTEM_GAME_GEAR;
341 }
342 if (!strcmp("sg", media->extension) || !strcmp("sg1", media->extension)) {
343 return SYSTEM_SG1000;
344 }
345 if (!strcmp("sc", media->extension) || !strcmp("sf7", media->extension) ||
346 !strcmp("sc3", media->extension)
347 ) {
348 return SYSTEM_SC3000;
339 } 349 }
340 if (!strcmp("j64", media->extension)) { 350 if (!strcmp("j64", media->extension)) {
341 return SYSTEM_JAGUAR; 351 return SYSTEM_JAGUAR;
342 } 352 }
343 if (!strcmp("col", media->extension)) { 353 if (!strcmp("col", media->extension)) {
373 return &(alloc_config_gen_player(media->buffer, media->size))->header; 383 return &(alloc_config_gen_player(media->buffer, media->size))->header;
374 case SYSTEM_SEGACD: 384 case SYSTEM_SEGACD:
375 return &(alloc_config_genesis_cdboot(media, opts, force_region))->header; 385 return &(alloc_config_genesis_cdboot(media, opts, force_region))->header;
376 #ifndef NO_Z80 386 #ifndef NO_Z80
377 case SYSTEM_SMS: 387 case SYSTEM_SMS:
378 return &(alloc_configure_sms(media, opts, force_region))->header; 388 case SYSTEM_GAME_GEAR:
389 case SYSTEM_SG1000:
390 case SYSTEM_SC3000:
391 return &(alloc_configure_sms(media, stype, opts, force_region))->header;
379 case SYSTEM_COLECOVISION: 392 case SYSTEM_COLECOVISION:
380 return &(alloc_configure_coleco(media))->header; 393 return &(alloc_configure_coleco(media))->header;
381 #endif 394 #endif
382 case SYSTEM_MEDIA_PLAYER: 395 case SYSTEM_MEDIA_PLAYER:
383 return &(alloc_media_player(media, opts))->header; 396 return &(alloc_media_player(media, opts))->header;