Mercurial > repos > blastem
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; |