comparison system.c @ 2257:1e626d0ecf9c

WIP SG-1000/TMS9918A mode support
author Michael Pavone <pavone@retrodev.com>
date Sat, 17 Dec 2022 23:32:34 -0800
parents 3414a4423de1
children 92449b47cce8
comparison
equal deleted inserted replaced
2256:cbe1ba70c247 2257:1e626d0ecf9c
30 uint8_t *buffer = media->buffer; 30 uint8_t *buffer = media->buffer;
31 if (media->size > 9 && buffer[7] == 0) { 31 if (media->size > 9 && buffer[7] == 0) {
32 return buffer[8] + 1; 32 return buffer[8] + 1;
33 } 33 }
34 } 34 }
35 35
36 36
37 //TODO: Detect Jaguar ROMs here 37 //TODO: Detect Jaguar ROMs here
38 38
39 //Header based detection failed, examine filename for clues 39 //Header based detection failed, examine filename for clues
40 if (media->extension) { 40 if (media->extension) {
41 if (!strcmp("md", media->extension) || !strcmp("gen", media->extension)) { 41 if (!strcmp("md", media->extension) || !strcmp("gen", media->extension)) {
42 return SYSTEM_GENESIS; 42 return SYSTEM_GENESIS;
43 } 43 }
44 if (!strcmp("sms", media->extension)) { 44 if (!strcmp("sms", media->extension) || !strcmp("sg", media->extension) || !strcmp("gg", media->extension)) {
45 return SYSTEM_SMS; 45 return SYSTEM_SMS;
46 } 46 }
47 if (!strcmp("j64", media->extension)) { 47 if (!strcmp("j64", media->extension)) {
48 return SYSTEM_JAGUAR; 48 return SYSTEM_JAGUAR;
49 } 49 }
50 } 50 }
51 51
52 //More certain checks failed, look for a valid 68K reset vector 52 //More certain checks failed, look for a valid 68K reset vector
53 if (media->size >= 8) { 53 if (media->size >= 8) {
54 char *rom = media->buffer; 54 char *rom = media->buffer;
55 uint32_t reset = rom[5] << 16 | rom[6] << 8 | rom[7]; 55 uint32_t reset = rom[5] << 16 | rom[6] << 8 | rom[7];
56 if (!(reset & 1) && reset < media->size) { 56 if (!(reset & 1) && reset < media->size) {