某所でPARAM.SFO内のデータ取得についての話があったので、iso_toolで利用している部分を抜き出してみました
事前にchar *bufにPARAM.SFOが読み込まれているのが前提です
iso_toolの、file.cの関数を利用すれば読み込めると思います
typedef struct { short label_off; char unk; char data_type; int datafield_used; int datafield_size; int data_off; } psf_t; int loop; int label_ptr; int data_ptr; psf_t *psf_ptr; char work[256]; loop = 0; label_ptr = *(int *)&buf[0x08]; // ラベルの先頭位置 data_ptr = *(int *)&buf[0x0c]; // データの先頭位置 psf_ptr = (psf_t *)&buf[0x14]; work[0] = '\0'; while(loop < *(int *)&buf[0x10]) { if(strcmp((char *)(psf_ptr[loop].label_off + label_ptr + buf), "TITLE") == 0) // 「TITLE」を検索 { // 見つかった場合の処理、実際のデータは(char *)(psf_ptr[loop].data_off + data_ptr + buf)以下です strcpy(work, (char *)(psf_ptr[loop].data_off + data_ptr + buf)); break; } loop++; } if(work[0] == '\0') strncpy(work, iso_path, 127); // 見つからなかった場合の処理
最近のコメント