Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <fstream>
- #include <string>
- #include <direct.h>
- #define u8 unsigned char
- #define u16 unsigned short
- #define u32 unsigned int
- #define u64 unsigned long long
- typedef struct {
- u8 NameLenght;
- u8 NameBuffer[0x43];
- u32 FileOffset;
- u32 FileLenght;
- } WAVFile;
- void main() {
- std::string fileName, folderName;
- FILE *file;
- std::cout
- << " NSound - ernilos" << std::endl
- << " NoSsT! Project" << std::endl
- << "-----------------------------------------------------" << std::endl
- << " File to unpack: ";
- std::cin >> fileName;
- std::cout
- << " Unpack to folder: ";
- std::cin >> folderName;
- std::cout
- << "-----------------------------------------------------" << std::endl
- << " Unpacking \"" << fileName << "\"..." << std::endl;
- if ((file = fopen(fileName.c_str(), "rb+")) != NULL) {
- _mkdir(folderName.c_str());
- char *FILE_HEADER = (char*)malloc(0x12);
- u32 FILE_AMOUNT;
- fread(FILE_HEADER, 0x11, 1, file);
- FILE_HEADER[0x11] = 0;
- fseek(file, 0x18, SEEK_SET);
- fread(&FILE_AMOUNT, 4, 1, file);
- std::cout
- << " File header: " << FILE_HEADER << std::endl
- << " File amount: " << FILE_AMOUNT << std::endl
- << std::hex;
- FILE *fOut;
- std::stringstream ss;
- for (int i = 0; i < FILE_AMOUNT; i++) {
- int tSeek;
- WAVFile wavFile;
- fread(&wavFile, sizeof(wavFile), 1, file);
- ss << folderName << "\\" << std::string((const char*)wavFile.NameBuffer).substr(0, wavFile.NameLenght);
- fOut = fopen(ss.str().c_str(), "wb+");
- ss.str("");
- tSeek = ftell(file);
- fseek(file, wavFile.FileOffset, SEEK_SET);
- char *memory = (char*)malloc(wavFile.FileLenght + 1);
- fread(memory, wavFile.FileLenght, 1, file);
- fwrite(memory, wavFile.FileLenght, 1, fOut);
- fclose(fOut);
- std::cout
- << "[" << std::string((const char*)wavFile.NameBuffer).substr(0, wavFile.NameLenght) << "]" << std::endl
- << " File offset: 0x" << wavFile.FileOffset << std::endl
- << " File lenght: 0x" << wavFile.FileLenght << std::endl << std::endl;
- fseek(file, tSeek, SEEK_SET);
- }
- std::cout
- << "-----------------------------------------------------" << std::endl
- << " All files unpacked! Press a key to exit..." << std::endl;
- std::getchar();
- exit(EXIT_SUCCESS);
- }
- else {
- std::cout
- << " Canno't open \"" << fileName << "\" Press a key to exit...";
- std::getchar();
- exit(EXIT_FAILURE);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment