mirror of
https://github.com/AxioDL/amuse.git
synced 2025-12-11 06:27:41 +00:00
General: Be explicit about athena's SeekOrigin type
Allows the code to still compile if the enum is turned into an enum class.
This commit is contained in:
@@ -13,19 +13,19 @@ namespace amuse {
|
||||
|
||||
static bool AtEnd64(athena::io::IStreamReader& r) {
|
||||
uint64_t v = r.readUint64Big();
|
||||
r.seek(-8, athena::Current);
|
||||
r.seek(-8, athena::SeekOrigin::Current);
|
||||
return v == 0xffffffffffffffff;
|
||||
}
|
||||
|
||||
static bool AtEnd32(athena::io::IStreamReader& r) {
|
||||
uint32_t v = r.readUint32Big();
|
||||
r.seek(-4, athena::Current);
|
||||
r.seek(-4, athena::SeekOrigin::Current);
|
||||
return v == 0xffffffff;
|
||||
}
|
||||
|
||||
static bool AtEnd16(athena::io::IStreamReader& r) {
|
||||
uint16_t v = r.readUint16Big();
|
||||
r.seek(-2, athena::Current);
|
||||
r.seek(-2, athena::SeekOrigin::Current);
|
||||
return v == 0xffff;
|
||||
}
|
||||
|
||||
@@ -89,30 +89,35 @@ AudioGroupProject::AudioGroupProject(athena::io::IStreamReader& r, GCNDataTag) {
|
||||
GroupId::CurNameDB->registerPair(NameDB::generateName(header.groupId, NameDB::Type::Group), header.groupId);
|
||||
|
||||
#if 0
|
||||
/* Sound Macros */
|
||||
r.seek(header.soundMacroIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<athena::Big>(SoundMacroId::CurNameDB, r, NameDB::Type::SoundMacro);
|
||||
/* Sound Macros */
|
||||
r.seek(header.soundMacroIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(SoundMacroId::CurNameDB, r, NameDB::Type::SoundMacro);
|
||||
}
|
||||
|
||||
/* Samples */
|
||||
r.seek(header.samplIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<athena::Big>(SampleId::CurNameDB, r, NameDB::Type::Sample);
|
||||
/* Samples */
|
||||
r.seek(header.samplIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(SampleId::CurNameDB, r, NameDB::Type::Sample);
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
r.seek(header.tableIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<athena::Big>(TableId::CurNameDB, r, NameDB::Type::Table);
|
||||
/* Tables */
|
||||
r.seek(header.tableIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(TableId::CurNameDB, r, NameDB::Type::Table);
|
||||
}
|
||||
|
||||
/* Keymaps */
|
||||
r.seek(header.keymapIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<athena::Big>(KeymapId::CurNameDB, r, NameDB::Type::Keymap);
|
||||
/* Keymaps */
|
||||
r.seek(header.keymapIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(KeymapId::CurNameDB, r, NameDB::Type::Keymap);
|
||||
}
|
||||
|
||||
/* Layers */
|
||||
r.seek(header.layerIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<athena::Big>(LayersId::CurNameDB, r, NameDB::Type::Layer);
|
||||
/* Layers */
|
||||
r.seek(header.layerIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(LayersId::CurNameDB, r, NameDB::Type::Layer);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (header.type == GroupType::Song) {
|
||||
@@ -120,7 +125,7 @@ AudioGroupProject::AudioGroupProject(athena::io::IStreamReader& r, GCNDataTag) {
|
||||
idx = MakeObj<SongGroupIndex>();
|
||||
|
||||
/* Normal pages */
|
||||
r.seek(header.pageTableOff, athena::Begin);
|
||||
r.seek(header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd64(r)) {
|
||||
SongGroupIndex::PageEntryDNA<athena::Big> entry;
|
||||
entry.read(r);
|
||||
@@ -128,7 +133,7 @@ AudioGroupProject::AudioGroupProject(athena::io::IStreamReader& r, GCNDataTag) {
|
||||
}
|
||||
|
||||
/* Drum pages */
|
||||
r.seek(header.drumTableOff, athena::Begin);
|
||||
r.seek(header.drumTableOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd64(r)) {
|
||||
SongGroupIndex::PageEntryDNA<athena::Big> entry;
|
||||
entry.read(r);
|
||||
@@ -136,24 +141,26 @@ AudioGroupProject::AudioGroupProject(athena::io::IStreamReader& r, GCNDataTag) {
|
||||
}
|
||||
|
||||
/* MIDI setups */
|
||||
r.seek(header.midiSetupsOff, athena::Begin);
|
||||
r.seek(header.midiSetupsOff, athena::SeekOrigin::Begin);
|
||||
while (r.position() < header.groupEndOff) {
|
||||
uint16_t songId = r.readUint16Big();
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
std::array<SongGroupIndex::MIDISetup, 16>& setup = idx->m_midiSetups[songId];
|
||||
for (int i = 0; i < 16; ++i)
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
setup[i].read(r);
|
||||
if (SongId::CurNameDB)
|
||||
}
|
||||
if (SongId::CurNameDB) {
|
||||
SongId::CurNameDB->registerPair(NameDB::generateName(songId, NameDB::Type::Song), songId);
|
||||
}
|
||||
}
|
||||
} else if (header.type == GroupType::SFX) {
|
||||
auto& idx = m_sfxGroups[header.groupId];
|
||||
idx = MakeObj<SFXGroupIndex>();
|
||||
|
||||
/* SFX entries */
|
||||
r.seek(header.pageTableOff, athena::Begin);
|
||||
r.seek(header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
uint16_t count = r.readUint16Big();
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
idx->m_sfxEntries.reserve(count);
|
||||
for (int i = 0; i < count; ++i) {
|
||||
SFXGroupIndex::SFXEntryDNA<athena::Big> entry;
|
||||
@@ -164,7 +171,7 @@ AudioGroupProject::AudioGroupProject(athena::io::IStreamReader& r, GCNDataTag) {
|
||||
}
|
||||
}
|
||||
|
||||
r.seek(header.groupEndOff, athena::Begin);
|
||||
r.seek(header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,30 +188,35 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
GroupId::CurNameDB->registerPair(NameDB::generateName(header.groupId, NameDB::Type::Group), header.groupId);
|
||||
|
||||
#if 0
|
||||
/* Sound Macros */
|
||||
r.seek(subDataOff + header.soundMacroIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<DNAE>(SoundMacroId::CurNameDB, r, NameDB::Type::SoundMacro);
|
||||
/* Sound Macros */
|
||||
r.seek(subDataOff + header.soundMacroIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(SoundMacroId::CurNameDB, r, NameDB::Type::SoundMacro);
|
||||
}
|
||||
|
||||
/* Samples */
|
||||
r.seek(subDataOff + header.samplIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<DNAE>(SampleId::CurNameDB, r, NameDB::Type::Sample);
|
||||
/* Samples */
|
||||
r.seek(subDataOff + header.samplIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(SampleId::CurNameDB, r, NameDB::Type::Sample);
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
r.seek(subDataOff + header.tableIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<DNAE>(TableId::CurNameDB, r, NameDB::Type::Table);
|
||||
/* Tables */
|
||||
r.seek(subDataOff + header.tableIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(TableId::CurNameDB, r, NameDB::Type::Table);
|
||||
}
|
||||
|
||||
/* Keymaps */
|
||||
r.seek(subDataOff + header.keymapIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<DNAE>(KeymapId::CurNameDB, r, NameDB::Type::Keymap);
|
||||
/* Keymaps */
|
||||
r.seek(subDataOff + header.keymapIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(KeymapId::CurNameDB, r, NameDB::Type::Keymap);
|
||||
}
|
||||
|
||||
/* Layers */
|
||||
r.seek(subDataOff + header.layerIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<DNAE>(LayersId::CurNameDB, r, NameDB::Type::Layer);
|
||||
/* Layers */
|
||||
r.seek(subDataOff + header.layerIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(LayersId::CurNameDB, r, NameDB::Type::Layer);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (header.type == GroupType::Song) {
|
||||
@@ -213,7 +225,7 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
|
||||
if (absOffs) {
|
||||
/* Normal pages */
|
||||
r.seek(header.pageTableOff, athena::Begin);
|
||||
r.seek(header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
SongGroupIndex::PageEntryDNA<DNAE> entry;
|
||||
entry.read(r);
|
||||
@@ -221,7 +233,7 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
}
|
||||
|
||||
/* Drum pages */
|
||||
r.seek(header.drumTableOff, athena::Begin);
|
||||
r.seek(header.drumTableOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
SongGroupIndex::PageEntryDNA<DNAE> entry;
|
||||
entry.read(r);
|
||||
@@ -229,19 +241,20 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
}
|
||||
|
||||
/* MIDI setups */
|
||||
r.seek(header.midiSetupsOff, athena::Begin);
|
||||
r.seek(header.midiSetupsOff, athena::SeekOrigin::Begin);
|
||||
while (r.position() < header.groupEndOff) {
|
||||
uint16_t songId;
|
||||
athena::io::Read<athena::io::PropType::None>::Do<decltype(songId), DNAE>({}, songId, r);
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
std::array<SongGroupIndex::MIDISetup, 16>& setup = idx->m_midiSetups[songId];
|
||||
for (int i = 0; i < 16; ++i)
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
setup[i].read(r);
|
||||
}
|
||||
SongId::CurNameDB->registerPair(NameDB::generateName(songId, NameDB::Type::Song), songId);
|
||||
}
|
||||
} else {
|
||||
/* Normal pages */
|
||||
r.seek(subDataOff + header.pageTableOff, athena::Begin);
|
||||
r.seek(subDataOff + header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
SongGroupIndex::MusyX1PageEntryDNA<DNAE> entry;
|
||||
entry.read(r);
|
||||
@@ -249,7 +262,7 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
}
|
||||
|
||||
/* Drum pages */
|
||||
r.seek(subDataOff + header.drumTableOff, athena::Begin);
|
||||
r.seek(subDataOff + header.drumTableOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
SongGroupIndex::MusyX1PageEntryDNA<DNAE> entry;
|
||||
entry.read(r);
|
||||
@@ -257,11 +270,11 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
}
|
||||
|
||||
/* MIDI setups */
|
||||
r.seek(subDataOff + header.midiSetupsOff, athena::Begin);
|
||||
r.seek(subDataOff + header.midiSetupsOff, athena::SeekOrigin::Begin);
|
||||
while (atInt64(r.position() + 4) < groupBegin + header.groupEndOff) {
|
||||
uint16_t songId;
|
||||
athena::io::Read<athena::io::PropType::None>::Do<decltype(songId), DNAE>({}, songId, r);
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
std::array<SongGroupIndex::MIDISetup, 16>& setup = idx->m_midiSetups[songId];
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
SongGroupIndex::MusyX1MIDISetup ent;
|
||||
@@ -276,24 +289,24 @@ AudioGroupProject AudioGroupProject::_AudioGroupProject(athena::io::IStreamReade
|
||||
idx = MakeObj<SFXGroupIndex>();
|
||||
|
||||
/* SFX entries */
|
||||
r.seek(subDataOff + header.pageTableOff, athena::Begin);
|
||||
r.seek(subDataOff + header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
uint16_t count;
|
||||
athena::io::Read<athena::io::PropType::None>::Do<decltype(count), DNAE>({}, count, r);
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
idx->m_sfxEntries.reserve(count);
|
||||
for (int i = 0; i < count; ++i) {
|
||||
SFXGroupIndex::SFXEntryDNA<DNAE> entry;
|
||||
entry.read(r);
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
idx->m_sfxEntries[entry.sfxId.id] = entry;
|
||||
SFXId::CurNameDB->registerPair(NameDB::generateName(entry.sfxId.id, NameDB::Type::SFX), entry.sfxId.id);
|
||||
}
|
||||
}
|
||||
|
||||
if (absOffs)
|
||||
r.seek(header.groupEndOff, athena::Begin);
|
||||
r.seek(header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
else
|
||||
r.seek(groupBegin + header.groupEndOff, athena::Begin);
|
||||
r.seek(groupBegin + header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -452,43 +465,47 @@ void AudioGroupProject::BootstrapObjectIDs(athena::io::IStreamReader& r, GCNData
|
||||
GroupId::CurNameDB->registerPair(NameDB::generateName(header.groupId, NameDB::Type::Group), header.groupId);
|
||||
|
||||
/* Sound Macros */
|
||||
r.seek(header.soundMacroIdsOff, athena::Begin);
|
||||
r.seek(header.soundMacroIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r))
|
||||
ReadRangedObjectIds<athena::Big>(SoundMacroId::CurNameDB, r, NameDB::Type::SoundMacro);
|
||||
|
||||
/* Samples */
|
||||
r.seek(header.samplIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(header.samplIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(SampleId::CurNameDB, r, NameDB::Type::Sample);
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
r.seek(header.tableIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(header.tableIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(TableId::CurNameDB, r, NameDB::Type::Table);
|
||||
}
|
||||
|
||||
/* Keymaps */
|
||||
r.seek(header.keymapIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(header.keymapIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(KeymapId::CurNameDB, r, NameDB::Type::Keymap);
|
||||
}
|
||||
|
||||
/* Layers */
|
||||
r.seek(header.layerIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(header.layerIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<athena::Big>(LayersId::CurNameDB, r, NameDB::Type::Layer);
|
||||
}
|
||||
|
||||
if (header.type == GroupType::Song) {
|
||||
/* MIDI setups */
|
||||
r.seek(header.midiSetupsOff, athena::Begin);
|
||||
r.seek(header.midiSetupsOff, athena::SeekOrigin::Begin);
|
||||
while (r.position() < header.groupEndOff) {
|
||||
uint16_t id = r.readUint16Big();
|
||||
SongId::CurNameDB->registerPair(NameDB::generateName(id, NameDB::Type::Song), id);
|
||||
r.seek(2 + 5 * 16, athena::Current);
|
||||
r.seek(2 + 5 * 16, athena::SeekOrigin::Current);
|
||||
}
|
||||
} else if (header.type == GroupType::SFX) {
|
||||
/* SFX entries */
|
||||
r.seek(header.pageTableOff, athena::Begin);
|
||||
r.seek(header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
uint16_t count = r.readUint16Big();
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
for (int i = 0; i < count; ++i) {
|
||||
SFXGroupIndex::SFXEntryDNA<athena::Big> entry;
|
||||
entry.read(r);
|
||||
@@ -496,7 +513,7 @@ void AudioGroupProject::BootstrapObjectIDs(athena::io::IStreamReader& r, GCNData
|
||||
}
|
||||
}
|
||||
|
||||
r.seek(header.groupEndOff, athena::Begin);
|
||||
r.seek(header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -511,67 +528,73 @@ void AudioGroupProject::BootstrapObjectIDs(athena::io::IStreamReader& r, bool ab
|
||||
GroupId::CurNameDB->registerPair(NameDB::generateName(header.groupId, NameDB::Type::Group), header.groupId);
|
||||
|
||||
/* Sound Macros */
|
||||
r.seek(subDataOff + header.soundMacroIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(subDataOff + header.soundMacroIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(SoundMacroId::CurNameDB, r, NameDB::Type::SoundMacro);
|
||||
}
|
||||
|
||||
/* Samples */
|
||||
r.seek(subDataOff + header.samplIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(subDataOff + header.samplIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(SampleId::CurNameDB, r, NameDB::Type::Sample);
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
r.seek(subDataOff + header.tableIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(subDataOff + header.tableIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(TableId::CurNameDB, r, NameDB::Type::Table);
|
||||
}
|
||||
|
||||
/* Keymaps */
|
||||
r.seek(subDataOff + header.keymapIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(subDataOff + header.keymapIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(KeymapId::CurNameDB, r, NameDB::Type::Keymap);
|
||||
}
|
||||
|
||||
/* Layers */
|
||||
r.seek(subDataOff + header.layerIdsOff, athena::Begin);
|
||||
while (!AtEnd16(r))
|
||||
r.seek(subDataOff + header.layerIdsOff, athena::SeekOrigin::Begin);
|
||||
while (!AtEnd16(r)) {
|
||||
ReadRangedObjectIds<DNAE>(LayersId::CurNameDB, r, NameDB::Type::Layer);
|
||||
}
|
||||
|
||||
if (header.type == GroupType::Song) {
|
||||
/* MIDI setups */
|
||||
if (absOffs) {
|
||||
r.seek(header.midiSetupsOff, athena::Begin);
|
||||
r.seek(header.midiSetupsOff, athena::SeekOrigin::Begin);
|
||||
while (r.position() < header.groupEndOff) {
|
||||
uint16_t id;
|
||||
athena::io::Read<athena::io::PropType::None>::Do<decltype(id), DNAE>({}, id, r);
|
||||
SongId::CurNameDB->registerPair(NameDB::generateName(id, NameDB::Type::Song), id);
|
||||
r.seek(2 + 5 * 16, athena::Current);
|
||||
r.seek(2 + 5 * 16, athena::SeekOrigin::Current);
|
||||
}
|
||||
} else {
|
||||
r.seek(subDataOff + header.midiSetupsOff, athena::Begin);
|
||||
r.seek(subDataOff + header.midiSetupsOff, athena::SeekOrigin::Begin);
|
||||
while (atInt64(r.position()) < groupBegin + header.groupEndOff) {
|
||||
uint16_t id;
|
||||
athena::io::Read<athena::io::PropType::None>::Do<decltype(id), DNAE>({}, id, r);
|
||||
SongId::CurNameDB->registerPair(NameDB::generateName(id, NameDB::Type::Song), id);
|
||||
r.seek(2 + 8 * 16, athena::Current);
|
||||
r.seek(2 + 8 * 16, athena::SeekOrigin::Current);
|
||||
}
|
||||
}
|
||||
} else if (header.type == GroupType::SFX) {
|
||||
/* SFX entries */
|
||||
r.seek(subDataOff + header.pageTableOff, athena::Begin);
|
||||
r.seek(subDataOff + header.pageTableOff, athena::SeekOrigin::Begin);
|
||||
uint16_t count;
|
||||
athena::io::Read<athena::io::PropType::None>::Do<decltype(count), DNAE>({}, count, r);
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
for (int i = 0; i < count; ++i) {
|
||||
SFXGroupIndex::SFXEntryDNA<DNAE> entry;
|
||||
entry.read(r);
|
||||
r.seek(2, athena::Current);
|
||||
r.seek(2, athena::SeekOrigin::Current);
|
||||
SFXId::CurNameDB->registerPair(NameDB::generateName(entry.sfxId.id, NameDB::Type::SFX), entry.sfxId.id);
|
||||
}
|
||||
}
|
||||
|
||||
if (absOffs)
|
||||
r.seek(header.groupEndOff, athena::Begin);
|
||||
else
|
||||
r.seek(groupBegin + header.groupEndOff, athena::Begin);
|
||||
if (absOffs) {
|
||||
r.seek(header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
} else {
|
||||
r.seek(groupBegin + header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -861,9 +884,9 @@ std::vector<uint8_t> AudioGroupProject::toGCNData(const AudioGroupPool& pool,
|
||||
}
|
||||
|
||||
header.groupEndOff = fo.position();
|
||||
fo.seek(groupStart, athena::Begin);
|
||||
fo.seek(groupStart, athena::SeekOrigin::Begin);
|
||||
header.write(fo);
|
||||
fo.seek(header.groupEndOff, athena::Begin);
|
||||
fo.seek(header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
} else {
|
||||
auto search2 = m_sfxGroups.find(id);
|
||||
if (search2 != m_sfxGroups.end()) {
|
||||
@@ -897,9 +920,9 @@ std::vector<uint8_t> AudioGroupProject::toGCNData(const AudioGroupPool& pool,
|
||||
}
|
||||
|
||||
header.groupEndOff = fo.position();
|
||||
fo.seek(groupStart, athena::Begin);
|
||||
fo.seek(groupStart, athena::SeekOrigin::Begin);
|
||||
header.write(fo);
|
||||
fo.seek(header.groupEndOff, athena::Begin);
|
||||
fo.seek(header.groupEndOff, athena::SeekOrigin::Begin);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user