static string iNES(const uint8_t *data, unsigned size) { if(size < 16) return ""; if(data[0] != 'N') return ""; if(data[1] != 'E') return ""; if(data[2] != 'S') return ""; if(data[3] != 0x1a) return ""; string output; unsigned mapper = ((data[7] >> 4) << 4) | (data[6] >> 4); unsigned mirror = ((data[6] & 0x08) >> 2) | (data[6] & 0x01); unsigned prgrom = data[4] * 0x4000; unsigned chrrom = data[5] * 0x2000; unsigned prgram = 0; unsigned chrram = chrrom == 0 ? 8192 : 0; //print("iNES mapper: ", mapper, "\n"); output.append("\n"); output.append("\n"); switch(mapper) { default: output.append(" \n"); output.append(" \n"); break; case 1: output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 2: output.append(" \n"); output.append(" \n"); break; case 3: output.append(" \n"); output.append(" \n"); break; case 4: //MMC3 output.append(" \n"); output.append(" \n"); prgram = 8192; //MMC6 //output.append(" \n"); //output.append(" \n"); //prgram = 1024; break; case 5: output.append(" \n"); output.append(" \n"); prgram = 65536; break; case 7: output.append(" \n"); break; case 9: output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 10: output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 16: output.append(" \n"); output.append(" \n"); break; case 21: case 23: case 25: //VRC4 output.append(" \n"); output.append(" \n"); output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 22: //VRC2 output.append(" \n"); output.append(" \n"); output.append(" \n"); output.append(" \n"); break; case 24: output.append(" \n"); output.append(" \n"); break; case 26: output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 34: output.append(" \n"); output.append(" \n"); break; case 66: output.append(" \n"); output.append(" \n"); break; case 69: output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 73: output.append(" \n"); output.append(" \n"); output.append(" \n"); prgram = 8192; break; case 75: output.append(" \n"); output.append(" \n"); break; case 85: output.append(" \n"); output.append(" \n"); prgram = 8192; break; } output.append( " \n" " \n" " \n" "\n" ); print(output, "\n"); return output; }