某所で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); // 見つからなかった場合の処理
最近のコメント