char board[8];
char console_type[8];
char console_series[4];
char console_region_code[4];
char console_storage[4];
char console_region_name[32];
// platform_id is the output of syscall 387. sys_sm_get_system_info
// pscode[3] is the output of syscall 867. sys_ss_appliance_info_manager -> get_ps_code. Also known as "Product Code", 6th byte of IDPS
// pscode[5] is the output of syscall 867. sys_ss_appliance_info_manager -> get_ps_code. Also known as "Product Sub Code", 8th byte of IDPS
switch (hwinfo.platform_id) {
case 'Cyt2.2': // DEH-R1000, DEH-R1010, DEH-R1020
board = 'TMU-510';
break;
case 'Cyt3.1': // DEH-R1030
board = 'TMU-520';
break;
case 'Cyt3.2': // DEH-R1040, DECR-1000
board = 'TMU-520';
console_series = '-10';
break;
case 'Deb01': // DECR-1400
board = 'DEB-001';
console_series = '-14';
break;
case 'Cok14':
board = 'COK-001';
switch (pscode[5]) {
case '1': // CECHAxx
console_series = 'A';
break;
case '2': // CECHBxx
console_series = 'B';
break;
}
break;
case 'CokB10':
board = 'COK-002';
if (pscode[3] == 0xA0) {
console_series = '-11'; // GECR-1100
break;
}
switch (pscode[5]) {
case '3': // CECHCxx
console_series = 'C';
break;
case '4': // CECHExx
console_series = 'E';
break;
}
break;
case 'CokC12': // CECHGxx
board = 'SEM-001';
console_series = 'G';
break;
case 'CokD10': // CECHHxx
board = 'DIA-001';
console_series = 'H';
break;
case 'CokE10': // CECHJxx or CECHKxx
board = 'DIA-002';
break;
case 'CokF10': // CECHLxx or CECHMxx or CECHPxx or CECHQxx
board = 'VER-001';
if (pscode[3] == 0xA0) {
console_series = '-15'; // GECR-1500
break;
}
break;
case 'CokG11': // CECH-20xxA/B
board = 'DYN-001';
console_series = '-20';
console_storage = 'A/B';
break;
case 'CokH11': // CECH-21xxA/B
board = 'SUR-001';
console_series = '-21';
console_storage = 'A/B';
break;
case 'CokJ13': // CECH-25xxA/B
board = 'JTP-001';
console_series = '-25';
console_storage = 'A/B';
break;
case 'CokJ20': // CECH-25xxA/B
board = 'JSD-001';
console_series = '-25';
console_storage = 'A/B';
break;
case 'CokK10': // CECH-30xxA/B
board = 'KTE-001';
console_series = '-30';
console_storage = 'A/B';
break;
/*
case 'CokM10': // CECH-40xxB/C ?
board = 'MPX-001';
console_series = '-40';
console_storage = 'B/C';
break;
*/
case 'CokM20': // CECH-40xxB/C
board = 'MSX-001';
console_series = '-40';
console_storage = 'B/C';
break;
case 'CokM30': // CECH-40xxA
board = 'MPX-001';
console_series = '-40';
console_storage = 'A';
break;
/*
case 'CokM40': // CECH-40xxA ?
board = 'MSX-001';
console_series = '-40';
console_storage = 'A';
break;
*/
case 'CokN10': // CECH-40xxB/C
board = 'NPX-001';
console_series = '-40';
console_storage = 'B/C';
break;
/*
case 'CokN30': // CECH-40xxA ?
board = 'NPX-001';
console_series = '-40';
console_storage = 'A';
break;
*/
case 'CokP10': // CECH-42xxB/C
board = 'PQX-001';
console_series = '-42';
console_storage = 'B/C';
break;
/*
case 'cokP20': // CECH-42xxB/C ?
board = 'PPX-001';
console_series = '-42';
console_storage = 'B/C';
break;
*/
case 'CokP30': // CECH-42xxA
board = 'PQX-001';
console_series = '-42';
console_storage = 'A';
break;
case 'CokP40': // CECH-42xxA
board = 'PPX-001';
console_series = '-42';
console_storage = 'A';
break;
/*
case 'cokR10': // CECH-43xxB/C ?
board = 'RTX-001';
console_series = '-43';
console_storage = 'B/C';
break;
case 'cokR20': // CECH-43xxB/C ?
board = 'REX-001';
console_series = '-43';
console_storage = 'B/C';
break;
case 'cokR30': // CECH-43xxA ?
board = 'RTX-001';
console_series = '-43';
console_storage = 'A';
break;
*/
case 'cokR40': // CECH-43xxA
board = 'REX-001';
console_series = '-43';
console_storage = 'A';
break;
default:
board = 'Unknown !!!';
console_series = '-xx';
console_storage = ' ';
}
switch (pscode[3]) {
case '81':
console_type = 'DECR';
console_region_code = '00';
console_region_name = 'Worldwide';
break;
case '82':
console_type = 'DECH';
console_region_code = '00';
console_region_name = 'Worldwide';
console_storage = ' ';
break;
case '83':
console_type = 'CECH';
console_region_code = '00';
console_region_name = 'Japan';
break;
case '84':
console_type = 'CECH';
console_region_code = '01';
console_region_name = 'United States';
break;
case '85':
console_type = 'CECH';
console_region_code = '04';
console_region_name = 'Europe';
break;
case '86':
console_type = 'CECH';
console_region_code = '05';
console_region_name = 'Korea';
break;
case '87':
console_type = 'CECH';
console_region_code = '03';
console_region_name = 'United Kingdom';
break;
case '88':
console_type = 'CECH';
console_region_code = '11';
console_region_name = 'Mexico';
break;
case '89':
console_type = 'CECH';
console_region_code = '02';
console_region_name = 'Australia';
break;
case '8A':
console_type = 'CECH';
console_region_code = '06';
console_region_name = 'South Asia';
break;
case '8B':
console_type = 'CECH';
console_region_code = '07';
console_region_name = 'Taiwan';
break;
case '8C':
console_type = 'CECH';
console_region_code = '08';
console_region_name = 'Russia';
break;
/*
case '8D': // PS3 never released in China
console_type = 'CECH';
console_region_code = '09';
console_region_name = 'China';
break;
*/
case '8E':
console_type = 'CECH';
console_region_code = '12';
console_region_name = 'Hong Kong';
break;
case '8F':
console_type = 'CECH';
console_region_code = '14';
console_region_name = 'Brazil';
break;
case 'A0':
console_type = 'GECR';
console_region_code = '00';
console_region_name = 'Worldwide';
console_storage = ' ';
break;
default:
console_type = 'UNKN';
console_region_code = 'xx';
console_region_name = 'Unknown';
}
if (strcmp(hwinfo.platform_id, 'Cyt2.2') == 0) {
fprintf(fp, "PS3 Model Name: DEH-R1000, or DEH-R1010, or DEH-R1020 (Worldwide)");
}
else if (strcmp(hwinfo.platform_id, 'Cyt3.1') == 0) {
fprintf(fp, "PS3 Model Name: DEH-R1030 (Worldwide)");
}
else if (strcmp(hwinfo.platform_id, 'Cyt3.2') == 0) {
fprintf(fp, "PS3 Model Name: DEH-R1040, or DECR-1000 (Worldwide)");
}
else if (strcmp(hwinfo.platform_id, 'CokE10') == 0) {
// print PS3 model 2 times, with the console_series hardcoded to J and K
fprintf(fp, "PS3 Model Name: ");
fprintf(fp, "%sJ%s", console_type, console_region_code);
fprintf(fp, ", or ");
fprintf(fp, "%sK%s", console_type, console_region_code);
fprintf(fp, " (%s)\n", console_region_name);
}
else if (strcmp(hwinfo.platform_id, 'CokF10') == 0 && pscode[3] != 0xA0) {
// print PS3 model 4 times, with the console_series hardcoded to L, M, P, Q
fprintf(fp, "PS3 Model Name: ");
fprintf(fp, "%sL%s", console_type, console_region_code);
fprintf(fp, ", or ");
fprintf(fp, "%sM%s", console_type, console_region_code);
fprintf(fp, ", or ");
fprintf(fp, "%sP%s", console_type, console_region_code);
fprintf(fp, ", or ");
fprintf(fp, "%sQ%s", console_type, console_region_code);
fprintf(fp, " (%s)\n", console_region_name);
}
else {
// print PS3 model 1 time
fprintf(fp, "PS3 Model Name: %s%s%s%s (%s)\n", console_type, console_series, console_region_code, console_storage, console_region_name);
}
fprintf(fp, "Motherboard Name: %s\n", board);