//============================================================== // ヘッダー情報の取得 //-------------------------------------------------------------- // Memo: // VGMInstrSet::Load()関数から呼ばれる //============================================================== bool WdsInstrSet::GetHeaderInfo() { //"hdr"構造体へそのまま転送 GetBytes(dwOffset, sizeof(WdsHdr), &hdr); unLength = hdr.szHeader1 + hdr.szSampColl; //header size + samp coll size id = hdr.iBank; //Bank number. if (hdr.sig == 0x73647764) version = VERSION_DWDS; else if (hdr.sig == 0x20736477) version = VERSION_WDS; //バイナリエディタ表示用 wostringstream theName; theName << L"wds " << id; name = theName.str(); //ヘッダーobjectの生成 VGMHeader* wdsHeader = AddHeader(dwOffset, sizeof(WdsHdr)); wdsHeader->AddSig(dwOffset, sizeof(long)); wdsHeader->AddUnknownItem(dwOffset+0x04, sizeof(long)); wdsHeader->AddSimpleItem(dwOffset+0x08, sizeof(long), L"Header size? (0)"); wdsHeader->AddUnknownItem(dwOffset+0x0C, sizeof(long)); wdsHeader->AddSimpleItem(dwOffset+0x10, sizeof(long), L"Header size? (1)"); wdsHeader->AddSimpleItem(dwOffset+0x14, sizeof(long), L"AD-PCM body(.VB) size"); wdsHeader->AddSimpleItem(dwOffset+0x18, sizeof(long), L"Header size? (2)"); wdsHeader->AddSimpleItem(dwOffset+0x1C, sizeof(long), L"Number of Instruments"); wdsHeader->AddSimpleItem(dwOffset+0x20, sizeof(long), L"Bank number"); wdsHeader->AddUnknownItem(dwOffset+0x24, sizeof(long)); wdsHeader->AddUnknownItem(dwOffset+0x28, sizeof(long)); wdsHeader->AddUnknownItem(dwOffset+0x2C, sizeof(long)); //波形objectの生成 sampColl = new PSXSampColl(FFTFormat::name, this, dwOffset + hdr.szHeader1, hdr.szSampColl); // sampColl->Load(); //VGMInstrSet::Load()関数内でやっている。 // sampColl->UseInstrSet(this); //"WD.cpp"では、同様の事をやっている。 return true; }
bool RareSnesSeq::GetHeaderInfo(void) { SetPPQN(SEQ_PPQN); VGMHeader* seqHeader = AddHeader(dwOffset, MAX_TRACKS * 2 + 2, L"Sequence Header"); uint32_t curHeaderOffset = dwOffset; for (int i = 0; i < MAX_TRACKS; i++) { uint16_t trkOff = GetShort(curHeaderOffset); seqHeader->AddPointer(curHeaderOffset, 2, trkOff, (trkOff != 0), L"Track Pointer"); curHeaderOffset += 2; } initialTempo = GetByte(curHeaderOffset); seqHeader->AddTempo(curHeaderOffset++, 1, L"Tempo"); seqHeader->AddUnknownItem(curHeaderOffset++, 1); return true; //successful }