Da ich für ein anderes Projekt Silkroads DDJ Dateien in normale DDS Dateien umwandeln musste, hab ich mir schnell nen converter geschrieben. Die DDJ Dateien könnt ihr mit Drew's pk2Tools aus der Media.pk2 extrahieren.
Wie funktionierts? Ganz einfach Tool öffnen Pfad zu nem Ordner in dem die DDJ Dateien sind angeben (Pfad muss mit "\" enden) und enter drücken. Alle DDJ Dateien im Ordner werden dann zu DDS umgewandelt und die alten DDJ Files werden gelöscht.
Falls jmd Bugs oder ähnliches findet, darf er sie gerne fixxen, ich mach da aber nix mehr dran. Um nach erfolgreichem umwandeln die DDS Dateien zu öffnen kann ich euch IrfanView mit DDS Plugin empfehlen, damit kann man dann auch gleich ganze Ordner in Jpg umwandeln (File->Batch Conversion/Rename).
Source:
- // ddj_dds_Converter.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
- //
- #include <windows.h>
- #include <iostream>
- bool ConvertToDDS(char* filename);
- int main(int argc, char* argv[])
- {
- char input[255] = {0};
- printf("Select the Folder to convert\r\n");
- gets(input);
- //////////////////loop through all Data
- WIN32_FIND_DATA fData;
- strcpy(&input[strlen(input)], "*.ddj");
- HANDLE hSearch = FindFirstFile(input, &fData);
- int countFiles = 0;
- if (hSearch == INVALID_HANDLE_VALUE)
- {
- printf("No File found! %s\r\n", input);
- gets(input);
- return 0;
- }
- do
- {
- char fileName[255] = {0};
- strncpy(fileName, input, strlen(input) - 5);
- strcpy(&fileName[strlen(fileName)], fData.cFileName);
- if (!ConvertToDDS(fileName))
- break;
- countFiles++;
- }
- while(FindNextFile(hSearch, &fData));
- //ConvertToDDS("D:\\RsroMap\\26x38.ddj");
- printf("Successfully converted %d Files\r\n", countFiles);
- gets(input);
- return 0;
- }
- bool ConvertToDDS(char* filename)
- {
- HANDLE hFile = CreateFile(filename, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hFile == INVALID_HANDLE_VALUE)
- {
- printf("Couldn't open %s Error: %d\r\n", filename, GetLastError());
- return false;
- }
- DWORD dwSize = GetFileSize(hFile, NULL);
- byte* pFile = new byte[dwSize];
- DWORD bytesReadWrite = 0;
- if (!ReadFile(hFile, pFile, dwSize, &bytesReadWrite, NULL))
- {
- printf("Couldn't read %s properly\r\n", filename);
- return false;
- }
- char newFilename[255] = {0};
- strncpy(newFilename, filename, strlen(filename) - 3);
- strcpy(&newFilename[strlen(newFilename) - 1], ".dds");
- HANDLE hNewFile = CreateFile(newFilename, GENERIC_ALL, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- if (hNewFile == INVALID_HANDLE_VALUE)
- {
- printf("Couldn't create %s Error: %d\r\n", newFilename, GetLastError());
- return false;
- }
- if(!WriteFile(hNewFile, &pFile[20], dwSize - 20, &bytesReadWrite, NULL))
- {
- printf("Couldn't write %s properly\r\n", newFilename);
- return false;
- }
- CloseHandle(hNewFile);
- CloseHandle(hFile);
- DeleteFile(filename);
- printf("Successfully converted to %s\r\n", newFilename);
- return true;
- }