#pragma once #include "Resource.h" #include #include #include namespace Ship { struct AdsrEnvelope { int16_t delay; int16_t arg; }; struct AdpcmBook { /* 0x00 */ uint32_t order; /* 0x04 */ uint32_t npredictors; /* 0x08 */ std::vector books; // size 8 * order * npredictors. 8-byte aligned }; struct AdpcmLoop { /* 0x00 */ uint32_t start; /* 0x04 */ uint32_t end; /* 0x08 */ uint32_t count; /* 0x10 */ std::vector states; }; struct SoundFontEntry { std::string sampleFileName; float tuning; }; struct DrumEntry { uint8_t releaseRate; uint8_t pan; uint8_t loaded; std::string sampleFileName; float tuning; std::vector env; }; struct InstrumentEntry { bool isValidEntry; uint8_t loaded; uint8_t normalRangeLo; uint8_t normalRangeHi; uint8_t releaseRate; std::vector env; SoundFontEntry* lowNotesSound = nullptr; SoundFontEntry* normalNotesSound = nullptr; SoundFontEntry* highNotesSound = nullptr; }; class AudioSequenceV2 : public ResourceFile { public: void ParseFileBinary(BinaryReader* reader, Resource* res) override; static std::vector ReadEnvelopeData(BinaryReader* reader); }; class AudioSoundFontV2 : public ResourceFile { public: void ParseFileBinary(BinaryReader* reader, Resource* res) override; static std::vector ReadEnvelopeData(BinaryReader* reader); }; class AudioSampleV2 : public ResourceFile { public: void ParseFileBinary(BinaryReader* reader, Resource* res) override; }; class AudioV2 : public ResourceFile { public: void ParseFileBinary(BinaryReader* reader, Resource* res) override; }; class AudioSequence : public Resource { public: std::vector seqData; uint8_t seqNumber; uint8_t medium; uint8_t cachePolicy; std::vector fonts; }; class AudioSoundFont : public Resource { public: uint32_t ptr; uint32_t size; uint32_t id; uint8_t medium; uint8_t cachePolicy; uint16_t data1; uint16_t data2; uint16_t data3; std::vector drums; std::vector soundEffects; std::vector instruments; }; class AudioSample : public Resource { public: uint32_t originalOffset; uint8_t codec; uint8_t medium; uint8_t unk_bit26; uint8_t unk_bit25; std::vector data; AdpcmLoop loop; AdpcmBook book; }; class Audio : public Resource { public: }; }