Compare commits

..

No commits in common. "ba83aa5247ce5f7f0ba51f771a81b3de35fb143b" and "2f044a8d94e9270add1be8fb5ea5f2687b77d701" have entirely different histories.

600 changed files with 4880 additions and 3383 deletions

View File

@ -1,36 +0,0 @@
#!/bin/bash
set -e
# 1. Stage everything
git add -A
# 2. Get list of staged files
FILES=$(git diff --cached --name-only)
if [ -z "$FILES" ]; then
echo "No changes to commit."
exit 0
fi
# 3. Loop file by file
for FILE in $FILES; do
# Get diff for this file
DIFF=$(git diff --cached -- "$FILE")
if [ -z "$DIFF" ]; then
continue
fi
# Ask Ollama for a commit message describing this file change
MSG=$(echo "$DIFF" | ollama run gemma3 \
"You are a commit bot. Write a SHORT, clear, concise Git commit message for changes in file: $FILE.
Only output the commit message, nothing else.
Diff:
$DIFF")
# Commit just this file with its message
git commit -m "$MSG" -- "$FILE"
echo "✅ Committed $FILE with message:"
echo "$MSG"
done

View File

@ -13,9 +13,9 @@ FORMS += $$files($$PWD/*.ui)
RESOURCES += ../data/data.qrc
LIBS += \
-L$$PWD/../third_party/devil_sdk/lib/ -lDevIL -lILU -lILUT \
-L$$PWD/../third_party/zlib/lib/ -lzlib \
-L$$PWD/../third_party/xbox_sdk/lib -lxcompress64 \
#-L$$PWD/../third_party/devil_sdk/lib/ -lDevIL -lILU -lILUT \
#-L$$PWD/../third_party/zlib/lib/ -lzlib \
#-L$$PWD/../third_party/xbox_sdk/lib -lxcompress64 \
-L$$OUT_PWD/../libs/ -lcore \
-L$$OUT_PWD/../libs/ -lxassets\
-L$$OUT_PWD/../libs/ -lcompression \
@ -27,9 +27,9 @@ LIBS += \
-L$$OUT_PWD/../libs/ -lzonefile
INCLUDEPATH += \
$$PWD/../third_party/devil_sdk/include/ \
$$PWD/../third_party/zlib/include \
$$PWD/../third_party/xbox_sdk/include \
#$$PWD/../third_party/devil_sdk/include/ \
#$$PWD/../third_party/zlib/include \
#$$PWD/../third_party/xbox_sdk/include \
$$PWD/../libs/core \
$$PWD/../libs/compression \
$$PWD/../libs/encryption \
@ -41,9 +41,9 @@ INCLUDEPATH += \
$$PWD/../libs/zonefile
DEPENDPATH += \
$$PWD/../third_party/devil_sdk/include/ \
$$PWD/../third_party/zlib/include \
$$PWD/../third_party/xbox_sdk/include \
#$$PWD/../third_party/devil_sdk/include/ \
#$$PWD/../third_party/zlib/include \
#$$PWD/../third_party/xbox_sdk/include \
$$PWD/../libs/core \
$$PWD/../libs/compression \
$$PWD/../libs/encryption \

View File

@ -789,7 +789,7 @@ int MainWindow::LoadFile_IPAK(const QString aFilePath) {
QVector<IPAKIndexEntry> entries = QVector<IPAKIndexEntry>();
QVector<IPAKSection> sections = QVector<IPAKSection>(header.sectionCount);
for (quint32 i = 0; i < header.sectionCount; i++) {
for (uint i = 0; i < header.sectionCount; i++) {
IPAKSection currentSection;
stream >> currentSection;
sections << currentSection;
@ -811,7 +811,7 @@ int MainWindow::LoadFile_IPAK(const QString aFilePath) {
<< " - Count: " << chunkHeader.count << "\n"
<< " - Offset: " << chunkHeader.offset;
for (quint32 j = 0; j < 31; j++) {
for (uint j = 0; j < 31; j++) {
IPAKDataChunkCommand command;
stream >> command;
if (!command.size) { continue; }
@ -821,7 +821,7 @@ int MainWindow::LoadFile_IPAK(const QString aFilePath) {
<< " - Compressed: " << command.compressed;
}
for (quint32 j = 0; j < chunkHeader.count; j++) {
for (uint j = 0; j < chunkHeader.count; j++) {
auto command = chunkHeader.commands[j];
qDebug() << "Reading from " << stream.device()->pos();
@ -846,7 +846,7 @@ int MainWindow::LoadFile_IPAK(const QString aFilePath) {
stream.skipRawData(sizeof(quint32) * (31 - chunkHeader.count));
qDebug() << stream.device()->pos();
} else if (sectionType == "Index") {
for (quint32 j = 0; j < currentSection.itemCount; j++) {
for (uint j = 0; j < currentSection.itemCount; j++) {
IPAKIndexEntry entry;
stream >> entry;

View File

@ -3,27 +3,19 @@
MaterialViewer::MaterialViewer(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MaterialViewer)
{
, ui(new Ui::MaterialViewer) {
ui->setupUi(this);
}
MaterialViewer::~MaterialViewer()
{
MaterialViewer::~MaterialViewer() {
delete ui;
}
QString ToHexStr(quint32 in)
{
QString ToHexStr(quint32 in) {
return QString("%1").arg(in, 8, 16, QChar('0')).toUpper();
}
void MaterialViewer::SetMaterial(const XMaterial* aMaterial)
{
Q_UNUSED(aMaterial);
// TODO: Fill in MaterialViewer::SetMaterial
void MaterialViewer::SetMaterial(const XMaterial* aMaterial) {
// ui->lineEdit_NamePtr->setText(ToHexStr(aMaterial->namePtr));
// ui->lineEdit_Name->setText(aMaterial->name);
// ui->lineEdit_RefPtr->setText(ToHexStr(aMaterial->refNamePtr));

View File

@ -22,7 +22,7 @@ RumbleGraphViewer::~RumbleGraphViewer() {
void RumbleGraphViewer::SetRumbleGraphFile(const XRawFile* aRawFile) {
mRumbleGraphFile = aRawFile;
XDataStream rawFileStream;//(mRumbleGraphFile->contents.toLatin1());
QDataStream rawFileStream;//(mRumbleGraphFile->contents.toLatin1());
QByteArray magic(15, Qt::Uninitialized);
rawFileStream.readRawData(magic.data(), 15);

View File

@ -490,12 +490,12 @@ void XTreeWidget::PrepareContextMenu(const QPoint &pos) {
});
QAction *exportZoneFileAction = new QAction("Export Zone File");
exportSubmenu->addAction(exportZoneFileAction);
connect(exportZoneFileAction, &QAction::triggered, this, [](bool checked) {
connect(exportZoneFileAction, &QAction::triggered, this, [fastFile](bool checked) {
Q_UNUSED(checked);
// const QString zoneFilePath = QFileDialog::getSaveFileName(
// nullptr, "Export Zone File...", QDir::currentPath(),
// "Zone File (*.zone);;All Files(*.*)");
const QString zoneFilePath = QFileDialog::getSaveFileName(
nullptr, "Export Zone File...", QDir::currentPath(),
"Zone File (*.zone);;All Files(*.*)");
//fastFile->GetZoneFile()->SaveZoneFile(zoneFilePath);
});
} else if (activeText.contains(".zone")) {
@ -508,7 +508,7 @@ void XTreeWidget::PrepareContextMenu(const QPoint &pos) {
QMenu *exportSubmenu = new QMenu("Export...", this);
contextMenu->addMenu(exportSubmenu);
//const ZoneFile* zoneFile = mZoneFiles[fileStem];
const ZoneFile* zoneFile = mZoneFiles[fileStem];
QAction *exportZoneFileAction = new QAction("Export Zone File");
exportSubmenu->addAction(exportZoneFileAction);
@ -530,7 +530,7 @@ void XTreeWidget::PrepareContextMenu(const QPoint &pos) {
}
}
if (parentItem && parentItem != invisibleRootItem() && parentItem->text(0).contains(".zone")) {
//const QString fileStem = parentItem->text(0).section('.', 0, 0);
const QString fileStem = parentItem->text(0).section('.', 0, 0);
// QVector<LoadedSound> LoadedSounds = mZoneFiles[fileStem]->GetAssetMap().sounds;
// for (LoadedSound LoadedSound : LoadedSounds) {
// for (Sound sound : LoadedSound.sounds) {
@ -577,14 +577,14 @@ void XTreeWidget::PrepareContextMenu(const QPoint &pos) {
}
if (parentItem && parentItem != invisibleRootItem() && parentItem->text(0).contains(".zone")) {
const QString fileStem = parentItem->text(0).section('.', 0, 0);
//auto zoneFile = mZoneFiles[fileStem];
auto zoneFile = mZoneFiles[fileStem];
QMenu *exportSubmenu = new QMenu("Export...", this);
contextMenu->addMenu(exportSubmenu);
QAction *exportAllWAVAction = new QAction("Export ALL as WAV Files");
exportSubmenu->addAction(exportAllWAVAction);
connect(exportAllWAVAction, &QAction::triggered, this, [](bool checked) {
connect(exportAllWAVAction, &QAction::triggered, this, [zoneFile](bool checked) {
Q_UNUSED(checked);
// for (LoadedSound LoadedSound : zoneFile->GetAssetMap().sounds) {

View File

@ -1,68 +1,73 @@
#include "compression.h"
#include "minilzo.h"
#include "xcompress.h"
//#include "minilzo.h"
//#define XBOXAPI __declspec(dllimport)
//#include "xcompress.h"
#include <QLibrary>
#include <QDebug>
#include <QFile>
#include <QDataStream>
QByteArray Compression::CompressXMem(const QByteArray &data)
{
XMEMCODEC_PARAMETERS_LZX lzxParams = {};
lzxParams.Flags = 0;
lzxParams.WindowSize = 0x20000;
lzxParams.CompressionPartitionSize = 0x80000;
// XMEMCODEC_PARAMETERS_LZX lzxParams = {};
// lzxParams.Flags = 0;
// lzxParams.WindowSize = 0x20000;
// lzxParams.CompressionPartitionSize = 0x80000;
XMEMCOMPRESSION_CONTEXT ctx = nullptr;
if (FAILED(XMemCreateCompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
return QByteArray();
// XMEMCOMPRESSION_CONTEXT ctx = nullptr;
// if (FAILED(XMemCreateCompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
// return QByteArray();
SIZE_T estimatedSize = data.size() + XCOMPRESS_LZX_BLOCK_GROWTH_SIZE_MAX;
QByteArray output(static_cast<int>(estimatedSize), 0);
SIZE_T actualSize = estimatedSize;
// SIZE_T estimatedSize = data.size() + XCOMPRESS_LZX_BLOCK_GROWTH_SIZE_MAX;
// QByteArray output(static_cast<int>(estimatedSize), 0);
// SIZE_T actualSize = estimatedSize;
HRESULT hr = XMemCompress(ctx, output.data(), &actualSize, data.constData(), data.size());
XMemDestroyCompressionContext(ctx);
// HRESULT hr = XMemCompress(ctx, output.data(), &actualSize, data.constData(), data.size());
// XMemDestroyCompressionContext(ctx);
if (FAILED(hr))
return QByteArray();
// if (FAILED(hr))
// return QByteArray();
output.resize(static_cast<int>(actualSize));
return output;
// output.resize(static_cast<int>(actualSize));
// return output;
return QByteArray();
}
QByteArray Compression::DecompressXMem(const QByteArray &data, int flags, int windowSize, int partSize)
{
if (data.isEmpty())
return {};
// if (data.isEmpty())
// return {};
XMEMCODEC_PARAMETERS_LZX lzxParams = {};
lzxParams.Flags = flags;
lzxParams.WindowSize = windowSize;
lzxParams.CompressionPartitionSize = partSize;
// XMEMCODEC_PARAMETERS_LZX lzxParams = {};
// lzxParams.Flags = flags;
// lzxParams.WindowSize = windowSize;
// lzxParams.CompressionPartitionSize = partSize;
XMEMDECOMPRESSION_CONTEXT ctx = nullptr;
if (FAILED(XMemCreateDecompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
return {};
// XMEMDECOMPRESSION_CONTEXT ctx = nullptr;
// if (FAILED(XMemCreateDecompressionContext(XMEMCODEC_LZX, &lzxParams, 0, &ctx)) || !ctx)
// return {};
// Allocate large enough buffer for decompression (16 MB is a safe upper bound)
const SIZE_T kMaxOutSize = 16 * 1024 * 1024;
QByteArray output(static_cast<int>(kMaxOutSize), Qt::Uninitialized);
SIZE_T actualSize = kMaxOutSize;
// // Allocate large enough buffer for decompression (16 MB is a safe upper bound)
// const SIZE_T kMaxOutSize = 16 * 1024 * 1024;
// QByteArray output(static_cast<int>(kMaxOutSize), Qt::Uninitialized);
// SIZE_T actualSize = kMaxOutSize;
HRESULT hr = XMemDecompress(ctx,
output.data(), &actualSize,
data.constData(), data.size() + 16);
// HRESULT hr = XMemDecompress(ctx,
// output.data(), &actualSize,
// data.constData(), data.size() + 16);
XMemDestroyDecompressionContext(ctx);
// XMemDestroyDecompressionContext(ctx);
if (FAILED(hr)) {
qWarning() << "XMemDecompress failed with HRESULT:" << hr;
return {};
}
// if (FAILED(hr)) {
// qWarning() << "XMemDecompress failed with HRESULT:" << hr;
// return {};
// }
output.resize(static_cast<int>(actualSize));
return output;
// output.resize(static_cast<int>(actualSize));
// return output;
return QByteArray();
}
quint32 Compression::CalculateAdler32Checksum(const QByteArray &data) {
@ -293,22 +298,22 @@ QByteArray Compression::CompressDeflateWithSettings(const QByteArray &aData, int
QByteArray Compression::DecompressLZO(const QByteArray &aCompressedData, quint32 aDestSize) {
QByteArray dst;
static bool ok = (lzo_init() == LZO_E_OK);
if (!ok)
throw std::runtime_error("lzo_init failed");
// static bool ok = (lzo_init() == LZO_E_OK);
// if (!ok)
// throw std::runtime_error("lzo_init failed");
dst = QByteArray(aDestSize, Qt::Uninitialized);
lzo_uint out = aDestSize;
// dst = QByteArray(aDestSize, Qt::Uninitialized);
// lzo_uint out = aDestSize;
int rc = lzo1x_decompress_safe(
reinterpret_cast<const lzo_bytep>(aCompressedData.constData()),
static_cast<lzo_uint>(aCompressedData.size()),
reinterpret_cast<lzo_bytep>(dst.data()),
&out,
nullptr);
// int rc = lzo1x_decompress_safe(
// reinterpret_cast<const lzo_bytep>(aCompressedData.constData()),
// static_cast<lzo_uint>(aCompressedData.size()),
// reinterpret_cast<lzo_bytep>(dst.data()),
// &out,
// nullptr);
if (rc != LZO_E_OK || out != aDestSize)
throw std::runtime_error("LZO decompression error");
// if (rc != LZO_E_OK || out != aDestSize)
// throw std::runtime_error("LZO decompression error");
return dst;
}

View File

@ -3,14 +3,13 @@ TEMPLATE = lib
CONFIG += staticlib c++17
DEFINES += MINILZO_USE_STATIC
SOURCES += $$files($$PWD/*.cpp, true) \
$$files($$PWD/*.c, true)
SOURCES += $$files($$PWD/*.cpp, true)
HEADERS += $$files($$PWD/*.h, true)
LIBS += \
-L$$PWD/../../third_party/xbox_sdk/lib -lxcompress64 \
-L$$OUT_PWD/../libs/core -lcore \
-L$$OUT_PWD/../libs/encryption -lencryption
-L$$PWD/../../third_party/xbox_sdk/lib -lxcompress64 \
-L$$OUT_PWD/../libs/core -lcore \
-L$$OUT_PWD/../libs/encryption -lencryption
INCLUDEPATH += \
$$PWD/../../third_party/xbox_sdk/include \

View File

@ -57,7 +57,7 @@
/* get OS and architecture defines */
#ifndef __LZODEFS_H_INCLUDED
#include <lzodefs.h>
#include <lzo/lzodefs.h>
#endif

View File

@ -25,6 +25,13 @@
http://www.oberhumer.com/opensource/lzo/
*/
/*
* NOTE:
* the full LZO package can be found at
* http://www.oberhumer.com/opensource/lzo/
*/
#ifndef __MINILZO_H_INCLUDED
#define __MINILZO_H_INCLUDED 1

View File

@ -2,10 +2,8 @@ QT += core widgets
TEMPLATE = lib
CONFIG += staticlib c++17
SOURCES += $$files($$PWD/*.cpp, true) \
xdatastream.cpp
HEADERS += $$files($$PWD/*.h, true) \
xdatastream.h
SOURCES += $$files($$PWD/*.cpp, true)
HEADERS += $$files($$PWD/*.h, true)
LIBS += -L$$OUT_PWD/../libs/xassets -lxassets

View File

@ -4,9 +4,9 @@
#include <QString>
enum IWI_VERSION {
IWI_VERSION_COD2 = 0x05, // 05 CoD2
IWI_VERSION_COD4 = 0x06, // 06 CoD4
IWI_VERSION_COD5 = 0x06, // 06 CoD5
IWI_VERSION_COD2 = 0x05, // 05 CoD2
IWI_VERSION_COD4 = 0x06, // 06 CoD4
IWI_VERSION_COD5 = 0x06, // 06 CoD5
IWI_VERSION_CODMW2 = 0x08, // 08 CoDMW2
IWI_VERSION_CODMW3 = 0x08, // 08 CoDMW3
IWI_VERSION_CODBO1 = 0x0D, // 13 CoDBO1
@ -16,37 +16,37 @@ enum IWI_VERSION {
enum IWI_FORMAT {
// IWI Format
IWI_FORMAT_ARGB32 = 0x01, // 01 ARGB32
IWI_FORMAT_RGB24 = 0x02, // 02 RGB24
IWI_FORMAT_GA16 = 0x03, // 03 GA16
IWI_FORMAT_A8 = 0x04, // 04 A8
IWI_FORMAT_DXT1 = 0x0B, // 11 DXT1
IWI_FORMAT_DXT3 = 0x0C, // 12 DXT3
IWI_FORMAT_DXT5 = 0x0D // 13 DXT5
IWI_FORMAT_RGB24 = 0x02, // 02 RGB24
IWI_FORMAT_GA16 = 0x03, // 03 GA16
IWI_FORMAT_A8 = 0x04, // 04 A8
IWI_FORMAT_DXT1 = 0x0B, // 11 DXT1
IWI_FORMAT_DXT3 = 0x0C, // 12 DXT3
IWI_FORMAT_DXT5 = 0x0D // 13 DXT5
};
enum DDS_FLAGS {
DDSD_CAPS = 0x1,
DDSD_HEIGHT = 0x2,
DDSD_WIDTH = 0x4,
DDSD_PITCH = 0x8,
DDSD_CAPS = 0x1,
DDSD_HEIGHT = 0x2,
DDSD_WIDTH = 0x4,
DDSD_PITCH = 0x8,
DDSD_PIXELFORMAT = 0x1000,
DDSD_MIPMAPCOUNT = 0x20000,
DDSD_LINEARSIZE = 0x80000,
DDSD_DEPTH = 0x800000
DDSD_LINEARSIZE = 0x80000,
DDSD_DEPTH = 0x800000
};
enum DDS_PIXELFORMAT_FLAGS {
DDPF_ALPHAPIXELS = 0x1,
DDPF_ALPHA = 0x2,
DDPF_FOURCC = 0x4,
DDPF_RGB = 0x40,
DDPF_YUV = 0x200,
DDPF_LUMINANCE = 0x20000
DDPF_ALPHA = 0x2,
DDPF_FOURCC = 0x4,
DDPF_RGB = 0x40,
DDPF_YUV = 0x200,
DDPF_LUMINANCE = 0x20000
};
enum DDS_CAPS_FLAGS {
DDSCAPS_COMPLEX = 0x8,
DDSCAPS_MIPMAP = 0x400000,
DDSCAPS_MIPMAP = 0x400000,
DDSCAPS_TEXTURE = 0x1000
};
@ -189,15 +189,15 @@ enum MENU_ITEM_TYPE {
ITEM_TYPE_RADIOBUTTON = 2, // toggle button, may be grouped
ITEM_TYPE_CHECKBOX = 3, // check box
ITEM_TYPE_EDITFIELD = 4, // editable text, associated with a dvar
ITEM_TYPE_COMBO = 5, // drop down list
ITEM_TYPE_COMBO = 5, // drop down list
ITEM_TYPE_LISTBOX = 6, // scrollable list
ITEM_TYPE_MODEL = 7, // model
ITEM_TYPE_MODEL = 7, // model
ITEM_TYPE_OWNERDRAW = 8, // owner draw, name specs what it is
ITEM_TYPE_NUMERICFIELD = 9, // editable text, associated with a dvar
ITEM_TYPE_SLIDER = 10, // mouse speed, volume, etc.
ITEM_TYPE_YESNO = 11, // yes no dvar setting
ITEM_TYPE_MULTI = 12, // multiple list setting, enumerated
ITEM_TYPE_DVARENUM = 13, // multiple list setting, enumerated from a dvar
ITEM_TYPE_YESNO = 11, // yes no dvar setting
ITEM_TYPE_MULTI = 12, // multiple list setting, enumerated
ITEM_TYPE_DVARENUM = 13, // multiple list setting, enumerated from a dvar
ITEM_TYPE_BIND = 14, // bind
ITEM_TYPE_MENUMODEL = 15, // special menu model
ITEM_TYPE_VALIDFILEFIELD = 16, // text must be valid for use in a dos filename

View File

@ -223,7 +223,7 @@ public:
return color;
}
static bool ReadUntilString(XDataStream* stream, const QString& targetString) {
static bool ReadUntilString(QDataStream* stream, const QString& targetString) {
if (!stream || targetString.isEmpty()) {
return false; // Invalid input
}
@ -257,7 +257,7 @@ public:
return false;
}
static bool ReadUntilHex(XDataStream* stream, const QString& hexString) {
static bool ReadUntilHex(QDataStream* stream, const QString& hexString) {
if (!stream || hexString.isEmpty() || hexString.size() % 2 != 0) {
return false; // Invalid input
}

View File

@ -1,225 +0,0 @@
#include "xdatastream.h"
#include <QIODevice>
#include <QDebug>
XDataStream::XDataStream(QIODevice *aDevice)
: QDataStream(aDevice)
, mDebug(false)
{
}
XDataStream::XDataStream()
: QDataStream()
, mDebug(false)
{
}
XDataStream::XDataStream(const QByteArray &aData)
: QDataStream(aData)
, mDebug(false)
{
}
XDataStream::XDataStream(QByteArray *aData, OpenMode aFlags)
: QDataStream(aData, aFlags)
, mDebug(false)
{
}
XDataStream::~XDataStream()
{
}
void XDataStream::SetDebug(bool aDebug)
{
mDebug = aDebug;
}
qint8 XDataStream::ParseInt8(const QString& aDebugString)
{
qint64 start = this->device()->pos();
qint8 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
quint8 XDataStream::ParseUInt8(const QString& aDebugString)
{
qint64 start = this->device()->pos();
quint8 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
qint16 XDataStream::ParseInt16(const QString& aDebugString)
{
qint64 start = this->device()->pos();
qint16 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
quint16 XDataStream::ParseUInt16(const QString& aDebugString)
{
qint64 start = this->device()->pos();
quint16 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
qint32 XDataStream::ParseInt32(const QString& aDebugString)
{
qint64 start = this->device()->pos();
qint32 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
quint32 XDataStream::ParseUInt32(const QString& aDebugString)
{
qint64 start = this->device()->pos();
quint32 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
qint64 XDataStream::ParseInt64(const QString& aDebugString)
{
qint64 start = this->device()->pos();
qint64 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
quint64 XDataStream::ParseUInt64(const QString& aDebugString)
{
qint64 start = this->device()->pos();
quint64 val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
float XDataStream::ParseSingle(const QString& aDebugString)
{
qint64 start = this->device()->pos();
float val;
quint32 rawVal;
*this >> rawVal;
memcpy(&val, &rawVal, sizeof(val));
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}
double XDataStream::ParseDouble(const QString& aDebugString)
{
qint64 start = this->device()->pos();
float val;
*this >> val;
if (mDebug)
{
qDebug() << QString("[%1-%2] Parsed %3: %4")
.arg(start, 10, 10, QChar('0'))
.arg(this->device()->pos(), 10, 10, QChar('0'))
.arg(aDebugString)
.arg(val);
}
return val;
}

View File

@ -1,33 +0,0 @@
#ifndef XDATASTREAM_H
#define XDATASTREAM_H
#include <QDataStream>
#include <QString>
class XDataStream : public QDataStream
{
public:
explicit XDataStream(QIODevice* aDevice);
XDataStream();
XDataStream(const QByteArray& aData);
XDataStream(QByteArray* aData, OpenMode aFlags);
~XDataStream();
void SetDebug(bool aDebug = true);
qint8 ParseInt8(const QString& aDebugString = "");
quint8 ParseUInt8(const QString& aDebugString = "");
qint16 ParseInt16(const QString& aDebugString = "");
quint16 ParseUInt16(const QString& aDebugString = "");
qint32 ParseInt32(const QString& aDebugString = "");
quint32 ParseUInt32(const QString& aDebugString = "");
qint64 ParseInt64(const QString& aDebugString = "");
quint64 ParseUInt64(const QString& aDebugString = "");
float ParseSingle(const QString& aDebugString = "");
double ParseDouble(const QString& aDebugString = "");
private:
bool mDebug;
};
#endif // XDATASTREAM_H

View File

@ -24,9 +24,9 @@ enum FF_GAME {
};
enum IWI_VERSION {
IWI_VERSION_COD2 = 0x05, // 05 CoD2
IWI_VERSION_COD4 = 0x06, // 06 CoD4
IWI_VERSION_COD5 = 0x06, // 06 CoD5
IWI_VERSION_COD2 = 0x05, // 05 CoD2
IWI_VERSION_COD4 = 0x06, // 06 CoD4
IWI_VERSION_COD5 = 0x06, // 06 CoD5
IWI_VERSION_CODMW2 = 0x08, // 08 CoDMW2
IWI_VERSION_CODMW3 = 0x08, // 08 CoDMW3
IWI_VERSION_CODBO1 = 0x0D, // 13 CoDBO1
@ -36,37 +36,37 @@ enum IWI_VERSION {
enum IWI_FORMAT {
// IWI Format
IWI_FORMAT_ARGB32 = 0x01, // 01 ARGB32
IWI_FORMAT_RGB24 = 0x02, // 02 RGB24
IWI_FORMAT_GA16 = 0x03, // 03 GA16
IWI_FORMAT_A8 = 0x04, // 04 A8
IWI_FORMAT_DXT1 = 0x0B, // 11 DXT1
IWI_FORMAT_DXT3 = 0x0C, // 12 DXT3
IWI_FORMAT_DXT5 = 0x0D // 13 DXT5
IWI_FORMAT_RGB24 = 0x02, // 02 RGB24
IWI_FORMAT_GA16 = 0x03, // 03 GA16
IWI_FORMAT_A8 = 0x04, // 04 A8
IWI_FORMAT_DXT1 = 0x0B, // 11 DXT1
IWI_FORMAT_DXT3 = 0x0C, // 12 DXT3
IWI_FORMAT_DXT5 = 0x0D // 13 DXT5
};
enum DDS_FLAGS {
DDSD_CAPS = 0x1,
DDSD_HEIGHT = 0x2,
DDSD_WIDTH = 0x4,
DDSD_PITCH = 0x8,
DDSD_CAPS = 0x1,
DDSD_HEIGHT = 0x2,
DDSD_WIDTH = 0x4,
DDSD_PITCH = 0x8,
DDSD_PIXELFORMAT = 0x1000,
DDSD_MIPMAPCOUNT = 0x20000,
DDSD_LINEARSIZE = 0x80000,
DDSD_DEPTH = 0x800000
DDSD_LINEARSIZE = 0x80000,
DDSD_DEPTH = 0x800000
};
enum DDS_PIXELFORMAT_FLAGS {
DDPF_ALPHAPIXELS = 0x1,
DDPF_ALPHA = 0x2,
DDPF_FOURCC = 0x4,
DDPF_RGB = 0x40,
DDPF_YUV = 0x200,
DDPF_LUMINANCE = 0x20000
DDPF_ALPHA = 0x2,
DDPF_FOURCC = 0x4,
DDPF_RGB = 0x40,
DDPF_YUV = 0x200,
DDPF_LUMINANCE = 0x20000
};
enum DDS_CAPS_FLAGS {
DDSCAPS_COMPLEX = 0x8,
DDSCAPS_MIPMAP = 0x400000,
DDSCAPS_MIPMAP = 0x400000,
DDSCAPS_TEXTURE = 0x1000
};
@ -209,15 +209,15 @@ enum MENU_ITEM_TYPE {
ITEM_TYPE_RADIOBUTTON = 2, // toggle button, may be grouped
ITEM_TYPE_CHECKBOX = 3, // check box
ITEM_TYPE_EDITFIELD = 4, // editable text, associated with a dvar
ITEM_TYPE_COMBO = 5, // drop down list
ITEM_TYPE_COMBO = 5, // drop down list
ITEM_TYPE_LISTBOX = 6, // scrollable list
ITEM_TYPE_MODEL = 7, // model
ITEM_TYPE_MODEL = 7, // model
ITEM_TYPE_OWNERDRAW = 8, // owner draw, name specs what it is
ITEM_TYPE_NUMERICFIELD = 9, // editable text, associated with a dvar
ITEM_TYPE_SLIDER = 10, // mouse speed, volume, etc.
ITEM_TYPE_YESNO = 11, // yes no dvar setting
ITEM_TYPE_MULTI = 12, // multiple list setting, enumerated
ITEM_TYPE_DVARENUM = 13, // multiple list setting, enumerated from a dvar
ITEM_TYPE_YESNO = 11, // yes no dvar setting
ITEM_TYPE_MULTI = 12, // multiple list setting, enumerated
ITEM_TYPE_DVARENUM = 13, // multiple list setting, enumerated from a dvar
ITEM_TYPE_BIND = 14, // bind
ITEM_TYPE_MENUMODEL = 15, // special menu model
ITEM_TYPE_VALIDFILEFIELD = 16, // text must be valid for use in a dos filename

View File

@ -1,5 +1,15 @@
/* ecrypt-portable.h */
/*
* WARNING: the conversions defined below are implemented as macros,
* and should be used carefully. They should NOT be used with
* parameters which perform some action. E.g., the following two lines
* are not equivalent:
*
* 1) ++x; y = ROTL32(x, n);
* 2) y = ROTL32(++x, n);
*/
/*
* *** Please do not edit this file. ***
*

View File

@ -31,7 +31,7 @@ QByteArray Encryption::InitIVTable(const QByteArray &feed) {
if (static_cast<uchar>(feed.at(ptr)) == 0x00)
ptr = 0;
int base = i * 20 + x * 4;
table[base] = feed.at(ptr);
table[base] = feed.at(ptr);
table[base + 1] = feed.at(ptr);
table[base + 2] = feed.at(ptr);
table[base + 3] = feed.at(ptr);
@ -77,7 +77,7 @@ void Encryption::UpdateIVTable(QByteArray &table, int index, const QByteArray &s
int hashIndex = 0;
for (int x = 0; x < 4; ++x) {
table[startIndex - 1] = table.at(startIndex - 1) ^ sectionHash.at(hashIndex);
table[startIndex] = table.at(startIndex) ^ sectionHash.at(hashIndex + 1);
table[startIndex] = table.at(startIndex) ^ sectionHash.at(hashIndex + 1);
table[startIndex + 1] = table.at(startIndex + 1) ^ sectionHash.at(hashIndex + 2);
table[startIndex + 2] = table.at(startIndex + 2) ^ sectionHash.at(hashIndex + 3);
table[startIndex + 3] = table.at(startIndex + 3) ^ sectionHash.at(hashIndex + 4);

View File

@ -59,7 +59,7 @@ void ECRYPT_encrypt_bytes(ECRYPT_ctx *x,const u8 *m,u8 *c,u32 bytes)
u32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15;
u8 *ctarget;
u8 tmp[64];
u32 i;
int i;
if (!bytes) return;
@ -82,10 +82,7 @@ void ECRYPT_encrypt_bytes(ECRYPT_ctx *x,const u8 *m,u8 *c,u32 bytes)
for (;;) {
if (bytes < 64) {
for (i = 0; i < bytes; ++i)
{
tmp[i] = m[i];
}
for (i = 0;i < bytes;++i) tmp[i] = m[i];
m = tmp;
ctarget = c;
c = tmp;

View File

@ -94,6 +94,7 @@ void SHA1_Transform(uint32_t state[5], const uint8_t buffer[64]);
/* blk0() and blk() perform the initial expand. */
/* I got the idea of expanding during the round function from SSLeay */
/* FIXME: can we do this in an endian-proof way? */
#ifdef WORDS_BIGENDIAN
#define blk0(i) block->l[i]
#else

View File

@ -69,12 +69,12 @@ bool FastFile_COD10_360::Load(const QString aFilePath) {
bool FastFile_COD10_360::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
// Select key based on game.
QByteArray key = QByteArray::fromHex("0E50F49F412317096038665622DD091332A209BA0A05A00E1377CEDB0A3CB1D3");

View File

@ -72,8 +72,8 @@ bool FastFile_COD11_360::Load(const QByteArray aData) {
QByteArray decompressedData;
// Prepare data stream for parsing
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Verify magic header
QByteArray fileMagic(8, Qt::Uninitialized);

View File

@ -72,8 +72,8 @@ bool FastFile_COD12_360::Load(const QByteArray aData) {
QByteArray decompressedData;
// Prepare data stream for parsing
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Verify magic header
QByteArray fileMagic(8, Qt::Uninitialized);

View File

@ -68,9 +68,9 @@ bool FastFile_COD2_360::Load(const QString aFilePath) {
}
bool FastFile_COD2_360::Load(const QByteArray aData) {
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
Utils::ReadUntilHex(&fastFileStream, "78");
QByteArray compressedData = aData.mid(fastFileStream.device()->pos());

View File

@ -80,9 +80,9 @@ bool FastFile_COD4_360::Load(const QByteArray aData) {
// For COD5, simply decompress from offset 12.
decompressedData = Compression::DecompressZLIB(aData.mid(12));
} else if (header == "IWff0100") {
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData.mid(12));
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData.mid(12));
fastFileStream.setByteOrder(QDataStream::LittleEndian);
QByteArray magic(8, Qt::Uninitialized);
fastFileStream.readRawData(magic.data(), 8);

View File

@ -83,7 +83,7 @@ bool FastFile_COD6_360::Load(const QByteArray aData) {
if (decompressedData.isEmpty() || decompressedData.size() < 1024)
{
QByteArray stripped = Compression::StripHashBlocks(compressed);
QByteArray retry = Compression::DecompressZLIB(stripped);
QByteArray retry = Compression::DecompressZLIB(stripped);
if (!retry.isEmpty())
decompressedData.swap(retry);
}

View File

@ -71,12 +71,12 @@ bool FastFile_COD7_360::Load(const QString aFilePath) {
bool FastFile_COD7_360::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.skipRawData(12);
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
// Select key based on game.
QByteArray key = QByteArray::fromHex("1ac1d12d527c59b40eca619120ff8217ccff09cd16896f81b829c7f52793405d");

View File

@ -69,12 +69,12 @@ bool FastFile_COD8_360::Load(const QString aFilePath) {
bool FastFile_COD8_360::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
// Select key based on game.
QByteArray key = QByteArray::fromHex("0E50F49F412317096038665622DD091332A209BA0A05A00E1377CEDB0A3CB1D3");

View File

@ -69,12 +69,12 @@ bool FastFile_COD9_360::Load(const QString aFilePath) {
bool FastFile_COD9_360::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
// Select key based on game.
QByteArray key = QByteArray::fromHex("0E50F49F412317096038665622DD091332A209BA0A05A00E1377CEDB0A3CB1D3");

View File

@ -69,9 +69,9 @@ bool FastFile_COD10_PC::Load(const QString aFilePath) {
bool FastFile_COD10_PC::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD10_PC::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -69,9 +69,9 @@ bool FastFile_COD11_PC::Load(const QString aFilePath) {
bool FastFile_COD11_PC::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD11_PC::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -72,9 +72,9 @@ bool FastFile_COD12_PC::Load(const QString aFilePath) {
bool FastFile_COD12_PC::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Skip header magic
fastFileStream.skipRawData(8);

View File

@ -75,9 +75,9 @@ bool FastFile_COD4_PC::Load(const QByteArray aData) {
StatusBarManager::instance().updateStatus("Loading COD5 Fast File w/data", 1000);
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// For COD5, simply decompress from offset 12.
decompressedData = Compression::DecompressZLIB(aData.mid(12));

View File

@ -75,9 +75,9 @@ bool FastFile_COD5_PC::Load(const QByteArray aData) {
StatusBarManager::instance().updateStatus("Loading COD5 Fast File w/data", 1000);
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// For COD5, simply decompress from offset 12.
decompressedData = Compression::DecompressZLIB(aData.mid(12));

View File

@ -72,9 +72,9 @@ bool FastFile_COD7_PC::Load(const QString aFilePath) {
bool FastFile_COD7_PC::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));

View File

@ -72,9 +72,9 @@ bool FastFile_COD8_PC::Load(const QString aFilePath) {
bool FastFile_COD8_PC::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -87,7 +87,7 @@ bool FastFile_COD8_PC::Load(const QByteArray aData) {
SetGame("COD7");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Select key based on game.
QByteArray key;

View File

@ -69,9 +69,9 @@ bool FastFile_COD9_PC::Load(const QString aFilePath) {
bool FastFile_COD9_PC::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD9_PC::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -69,9 +69,9 @@ bool FastFile_COD10_PS3::Load(const QString aFilePath) {
bool FastFile_COD10_PS3::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD10_PS3::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -69,9 +69,9 @@ bool FastFile_COD11_PS3::Load(const QString aFilePath) {
bool FastFile_COD11_PS3::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD11_PS3::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -69,9 +69,9 @@ bool FastFile_COD12_PS3::Load(const QString aFilePath) {
bool FastFile_COD12_PS3::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD12_PS3::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -75,9 +75,9 @@ bool FastFile_COD4_PS3::Load(const QByteArray aData) {
StatusBarManager::instance().updateStatus("Loading COD5 Fast File w/data", 1000);
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -91,8 +91,8 @@ bool FastFile_COD4_PS3::Load(const QByteArray aData) {
while (pos <= aData.size()) {
// Read 2-byte BIG-ENDIAN chunk size
quint32 chunkSize;
XDataStream chunkStream(aData.mid(pos, 2));
chunkStream.setByteOrder(XDataStream::BigEndian);
QDataStream chunkStream(aData.mid(pos, 2));
chunkStream.setByteOrder(QDataStream::BigEndian);
chunkStream >> chunkSize;
pos += 2;

View File

@ -75,9 +75,9 @@ bool FastFile_COD5_PS3::Load(const QByteArray aData) {
StatusBarManager::instance().updateStatus("Loading COD5 Fast File w/data", 1000);
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -91,8 +91,8 @@ bool FastFile_COD5_PS3::Load(const QByteArray aData) {
while (pos <= aData.size()) {
// Read 2-byte BIG-ENDIAN chunk size
quint32 chunkSize;
XDataStream chunkStream(aData.mid(pos, 2));
chunkStream.setByteOrder(XDataStream::BigEndian);
QDataStream chunkStream(aData.mid(pos, 2));
chunkStream.setByteOrder(QDataStream::BigEndian);
chunkStream >> chunkSize;
pos += 2;

View File

@ -75,9 +75,9 @@ bool FastFile_COD6_PS3::Load(const QByteArray aData) {
StatusBarManager::instance().updateStatus("Loading COD5 Fast File w/data", 1000);
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));

View File

@ -72,9 +72,9 @@ bool FastFile_COD7_PS3::Load(const QString aFilePath) {
bool FastFile_COD7_PS3::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -91,9 +91,9 @@ bool FastFile_COD7_PS3::Load(const QByteArray aData) {
zoneFile->SetStem(GetBaseStem() + ".zone");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Select key based on game.
QByteArray key;

View File

@ -72,9 +72,9 @@ bool FastFile_COD8_PS3::Load(const QString aFilePath) {
bool FastFile_COD8_PS3::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -90,9 +90,9 @@ bool FastFile_COD8_PS3::Load(const QByteArray aData) {
zoneFile->SetStem(GetBaseStem() + ".zone");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Select key based on game.
QByteArray key;

View File

@ -69,9 +69,9 @@ bool FastFile_COD9_PS3::Load(const QString aFilePath) {
bool FastFile_COD9_PS3::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,9 +84,9 @@ bool FastFile_COD9_PS3::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -69,9 +69,9 @@ bool FastFile_COD7_Wii::Load(const QString aFilePath) {
bool FastFile_COD7_Wii::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -84,7 +84,7 @@ bool FastFile_COD7_Wii::Load(const QByteArray aData) {
SetGame("COD7");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
// For COD7, simply decompress from offset 12.
decompressedData = Compression::DecompressZLIB(aData.mid(12));

View File

@ -69,9 +69,9 @@ bool FastFile_COD8_Wii::Load(const QString aFilePath) {
bool FastFile_COD8_Wii::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -81,7 +81,7 @@ bool FastFile_COD8_Wii::Load(const QByteArray aData) {
SetVersion(pParseFFVersion(&fastFileStream));
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
// For COD7, simply decompress from offset 12.
decompressedData = Compression::DecompressZLIB(aData.mid(25));

View File

@ -67,9 +67,9 @@ bool FastFile_COD10_WiiU::Load(const QString aFilePath) {
bool FastFile_COD10_WiiU::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -82,9 +82,9 @@ bool FastFile_COD10_WiiU::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -67,9 +67,9 @@ bool FastFile_COD9_WiiU::Load(const QString aFilePath) {
bool FastFile_COD9_WiiU::Load(const QByteArray aData) {
QByteArray decompressedData;
// Create a XDataStream on the input data.
XDataStream fastFileStream(aData);
fastFileStream.setByteOrder(XDataStream::LittleEndian);
// Create a QDataStream on the input data.
QDataStream fastFileStream(aData);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
// Parse header values.
SetCompany(pParseFFCompany(&fastFileStream));
@ -82,9 +82,9 @@ bool FastFile_COD9_WiiU::Load(const QByteArray aData) {
SetGame("COD9");
// For COD7/COD9, use BigEndian.
fastFileStream.setByteOrder(XDataStream::BigEndian);
fastFileStream.setByteOrder(QDataStream::BigEndian);
if (GetPlatform() == "PC") {
fastFileStream.setByteOrder(XDataStream::LittleEndian);
fastFileStream.setByteOrder(QDataStream::LittleEndian);
}
// Select key based on game.

View File

@ -115,7 +115,7 @@ void FastFile::SetPlatform(const QString aPlatform) {
mPlatform = aPlatform;
}
FF_COMPANY FastFile::pParseFFCompany(XDataStream *afastFileStream, quint32 &aCompanyInt) {
FF_COMPANY FastFile::pParseFFCompany(QDataStream *afastFileStream, quint32 &aCompanyInt) {
LogManager::instance().addEntry("Parsing company into reference...");
// Check for null datastream ptr
if (!afastFileStream) { return COMPANY_NONE; }
@ -137,7 +137,7 @@ FF_COMPANY FastFile::pParseFFCompany(XDataStream *afastFileStream, quint32 &aCom
return COMPANY_NONE;
}
FF_COMPANY FastFile::pParseFFCompany(XDataStream *afastFileStream) {
FF_COMPANY FastFile::pParseFFCompany(QDataStream *afastFileStream) {
LogManager::instance().addEntry("Parsing company...");
// Check for null datastream ptr
if (!afastFileStream) { return COMPANY_NONE; }
@ -157,7 +157,7 @@ FF_COMPANY FastFile::pParseFFCompany(XDataStream *afastFileStream) {
return COMPANY_NONE;
}
FF_FILETYPE FastFile::pParseFFFileType(XDataStream *afastFileStream) {
FF_FILETYPE FastFile::pParseFFFileType(QDataStream *afastFileStream) {
// Parse filetype
QByteArray fileTypeData(2, Qt::Uninitialized);
afastFileStream->readRawData(fileTypeData.data(), 2);
@ -168,7 +168,7 @@ FF_FILETYPE FastFile::pParseFFFileType(XDataStream *afastFileStream) {
return FILETYPE_NONE;
}
FF_SIGNAGE FastFile::pParseFFSignage(XDataStream *afastFileStream) {
FF_SIGNAGE FastFile::pParseFFSignage(QDataStream *afastFileStream) {
// Parse filetype
QByteArray signedData(1, Qt::Uninitialized);
afastFileStream->readRawData(signedData.data(), 1);
@ -181,7 +181,7 @@ FF_SIGNAGE FastFile::pParseFFSignage(XDataStream *afastFileStream) {
return SIGNAGE_NONE;
}
QString FastFile::pParseFFMagic(XDataStream *afastFileStream) {
QString FastFile::pParseFFMagic(QDataStream *afastFileStream) {
// Parse magic
QByteArray magicData(3, Qt::Uninitialized);
afastFileStream->readRawData(magicData.data(), 3);
@ -192,7 +192,7 @@ QString FastFile::pParseFFMagic(XDataStream *afastFileStream) {
return "";
}
quint32 FastFile::pParseFFVersion(XDataStream *afastFileStream) {
quint32 FastFile::pParseFFVersion(QDataStream *afastFileStream) {
// Parse version
quint32 version;
*afastFileStream >> version;

View File

@ -46,12 +46,12 @@ public:
virtual void SetGame(const QString aGame);
virtual void SetPlatform(const QString aPlatform);
static FF_COMPANY pParseFFCompany(XDataStream *afastFileStream, quint32 &aCompanyInt);
static FF_COMPANY pParseFFCompany(XDataStream *afastFileStream);
static FF_FILETYPE pParseFFFileType(XDataStream *afastFileStream);
static FF_SIGNAGE pParseFFSignage(XDataStream *afastFileStream);
static QString pParseFFMagic(XDataStream *afastFileStream);
static quint32 pParseFFVersion(XDataStream *afastFileStream);
static FF_COMPANY pParseFFCompany(QDataStream *afastFileStream, quint32 &aCompanyInt);
static FF_COMPANY pParseFFCompany(QDataStream *afastFileStream);
static FF_FILETYPE pParseFFFileType(QDataStream *afastFileStream);
static FF_SIGNAGE pParseFFSignage(QDataStream *afastFileStream);
static QString pParseFFMagic(QDataStream *afastFileStream);
static quint32 pParseFFVersion(QDataStream *afastFileStream);
static QString pCalculateFFPlatform(quint32 aVersion);
static QString pCalculateFFGame(quint32 aVersion);

View File

@ -52,22 +52,22 @@ class FastFile;
enum FastFile_Platform {
PLATFORM_NONE = 0x00,
PLATFORM_PC = 0x01,
PLATFORM_360 = 0x02,
PLATFORM_PS3 = 0x03,
PLATFORM_WII = 0x04,
PLATFORM_PC = 0x01,
PLATFORM_360 = 0x02,
PLATFORM_PS3 = 0x03,
PLATFORM_WII = 0x04,
PLATFORM_WIIU = 0x05
};
enum FastFile_Game {
GAME_NONE = 0x00,
GAME_COD2 = 0x01,
GAME_COD4 = 0x02,
GAME_COD5 = 0x03,
GAME_COD6 = 0x04,
GAME_COD7 = 0x05,
GAME_COD8 = 0x06,
GAME_COD9 = 0x07,
GAME_NONE = 0x00,
GAME_COD2 = 0x01,
GAME_COD4 = 0x02,
GAME_COD5 = 0x03,
GAME_COD6 = 0x04,
GAME_COD7 = 0x05,
GAME_COD8 = 0x06,
GAME_COD9 = 0x07,
GAME_COD10 = 0x08,
GAME_COD11 = 0x09,
GAME_COD12 = 0x010

View File

@ -5,10 +5,14 @@ XAnimDeltaPart::XAnimDeltaPart()
, mTrans()
, mQuat()
{
SetName("Animation Delta Part");
}
void XAnimDeltaPart::ParseData(XDataStream *aStream) {
XAnimDeltaPart::~XAnimDeltaPart()
{
}
void XAnimDeltaPart::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mTrans.ParsePtr(aStream);
mQuat.ParsePtr(aStream);

View File

@ -9,9 +9,9 @@ class XAnimDeltaPart : public XAsset
{
public:
explicit XAnimDeltaPart();
~XAnimDeltaPart() = default;
~XAnimDeltaPart();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
const XAnimPartTrans& GetTrans() const;

View File

@ -1,14 +1,12 @@
#include "xanimdeltapartquat.h"
XAnimDeltaPartQuat::XAnimDeltaPartQuat()
: XAsset()
{
SetName("Animation Delta Part Quat");
: XAsset() {
}
void XAnimDeltaPartQuat::ParseData(XDataStream *aStream) {
void XAnimDeltaPartQuat::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mSize = aStream->ParseUInt32(QString("%1 size").arg(GetName()));
*aStream >> mSize;
// Parse data
mData.ParseData(aStream);

View File

@ -1,3 +1,9 @@
#ifndef XANIMDELTAPARTQUAT_H
#define XANIMDELTAPARTQUAT_H
@ -8,9 +14,8 @@ class XAnimDeltaPartQuat : public XAsset
{
public:
explicit XAnimDeltaPartQuat();
~XAnimDeltaPartQuat() = default;
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
quint32 GetSize() const;
void SetSize(quint32 size);
@ -24,3 +29,8 @@ private:
};
#endif // XANIMDELTAPARTQUAT_H

View File

@ -1,12 +1,10 @@
#include "xanimdeltapartquatdata.h"
XAnimDeltaPartQuatData::XAnimDeltaPartQuatData()
: XAsset()
{
SetName("Animation Delta Part Quat Data");
: XAsset() {
}
void XAnimDeltaPartQuatData::ParseData(XDataStream *aStream) {
void XAnimDeltaPartQuatData::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
// Parse frames
mFrames.ParseData(aStream);

View File

@ -1,3 +1,9 @@
#ifndef XANIMDELTAPARTQUATDATA_H
#define XANIMDELTAPARTQUATDATA_H
@ -8,9 +14,8 @@ class XAnimDeltaPartQuatData : public XAsset
{
public:
explicit XAnimDeltaPartQuatData();
~XAnimDeltaPartQuatData() = default;
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
const XAnimDeltaPartQuatDataFrames& GetFrames() const;
void SetFrames(const XAnimDeltaPartQuatDataFrames& frames);
@ -24,3 +29,8 @@ private:
};
#endif // XANIMDELTAPARTQUATDATA_H

View File

@ -1,9 +1,7 @@
#include "xanimdeltapartquatdataframes.h"
XAnimDeltaPartQuatDataFrames::XAnimDeltaPartQuatDataFrames()
: XAsset()
{
SetName("Animation Delta Part Quat Data Frame");
: XAsset() {
}
quint32 XAnimDeltaPartQuatDataFrames::GetFramesPtr() const {
@ -36,12 +34,12 @@ void XAnimDeltaPartQuatDataFrames::SetIndices(const XAnimDynamicIndices& indices
mIndices = indices;
}
void XAnimDeltaPartQuatDataFrames::ParseData(XDataStream *aStream) {
void XAnimDeltaPartQuatDataFrames::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mFramesPtr = aStream->ParseInt32(QString("%1 frames ptr").arg(GetName()));
mFrames[0] = aStream->ParseInt16(QString("%1 frame %2").arg(GetName()).arg(0));
mFrames[1] = aStream->ParseInt16(QString("%1 frame %2").arg(GetName()).arg(1));
*aStream
>> mFramesPtr
>> mFrames[0]
>> mFrames[1];
// Parse indices
mIndices.ParseData(aStream);

View File

@ -8,7 +8,6 @@ class XAnimDeltaPartQuatDataFrames : public XAsset
{
public:
explicit XAnimDeltaPartQuatDataFrames();
~XAnimDeltaPartQuatDataFrames() = default;
quint32 GetFramesPtr() const;
void SetFramesPtr(quint32 ptr);
@ -20,11 +19,11 @@ public:
const XAnimDynamicIndices& GetIndices() const;
void SetIndices(const XAnimDynamicIndices& indices);
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
private:
qint32 mFramesPtr = 0;
quint32 mFramesPtr = 0;
qint16 mFrames[2] = {0};
XAnimDynamicIndices mIndices;
};

View File

@ -4,17 +4,24 @@ XAnimDynamicFrames::XAnimDynamicFrames()
: XAsset()
, mFrames(3)
{
SetName("Animation Dynamic Frames");
}
void XAnimDynamicFrames::ParseData(XDataStream *aStream) {
XAnimDynamicFrames::~XAnimDynamicFrames()
{
}
void XAnimDynamicFrames::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
qint32 framePtr = aStream->ParseInt32(QString("%1 frames ptr").arg(GetName()));
qint32 framePtr;
*aStream >> framePtr;
if (framePtr == -1)
{
mFrames[0] = aStream->ParseUInt8(QString("%1 frame %2").arg(GetName()).arg(0));
mFrames[1] = aStream->ParseUInt8(QString("%1 frame %2").arg(GetName()).arg(1));
mFrames[2] = aStream->ParseUInt8(QString("%1 frame %2").arg(GetName()).arg(2));
*aStream
>> mFrames[0]
>> mFrames[1]
>> mFrames[2];
}
}
}

View File

@ -1,3 +1,4 @@
#ifndef XANIMDYNAMICFRAMES_H
#define XANIMDYNAMICFRAMES_H
@ -9,9 +10,9 @@ class XAnimDynamicFrames : public XAsset
{
public:
explicit XAnimDynamicFrames();
~XAnimDynamicFrames() = default;
~XAnimDynamicFrames();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
QVector<quint8> GetFrames() const;

View File

@ -4,12 +4,16 @@ XAnimDynamicIndices::XAnimDynamicIndices()
: XAsset()
, mIndices(1)
{
SetName("Animation Dynamic Indices");
}
void XAnimDynamicIndices::ParseData(XDataStream *aStream) {
XAnimDynamicIndices::~XAnimDynamicIndices()
{
}
void XAnimDynamicIndices::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mIndices[0] = aStream->ParseUInt8(QString("%1 index").arg(GetName()));
*aStream >> mIndices[0];
}
}

View File

@ -9,9 +9,9 @@ class XAnimDynamicIndices : public XAsset
{
public:
explicit XAnimDynamicIndices();
~XAnimDynamicIndices() = default;
~XAnimDynamicIndices();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
QVector<quint8> GetIndices() const;

View File

@ -4,15 +4,21 @@ XAnimIndices::XAnimIndices()
: XAsset()
, mIndex(0)
{
SetName("Animation Indices");
}
void XAnimIndices::ParseData(XDataStream *aStream) {
XAnimIndices::~XAnimIndices()
{
}
void XAnimIndices::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
qint32 indexPtr = aStream->ParseInt32(QString("%1 index ptr").arg(GetName()));
qint32 indexPtr;
*aStream >> indexPtr;
if (indexPtr == -1)
{
mIndex = aStream->ParseUInt32(QString("%1 index").arg(GetName()));
*aStream >> mIndex;
}
}
}

View File

@ -7,9 +7,9 @@ class XAnimIndices : public XAsset
{
public:
explicit XAnimIndices();
~XAnimIndices() = default;
~XAnimIndices();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
quint32 GetIndex() const;

View File

@ -5,14 +5,19 @@ XAnimNotifyInfo::XAnimNotifyInfo()
, mName(0)
, mTime(0.0f)
{
SetName("Animation Notify Info");
}
void XAnimNotifyInfo::ParseData(XDataStream *aStream) {
if (GetPtr() == -1) {
XAnimNotifyInfo::~XAnimNotifyInfo()
{
mName = aStream->ParseUInt32(QString("%1 name").arg(GetName()));
mTime = aStream->ParseSingle(QString("%1 time").arg(GetName()));
}
void XAnimNotifyInfo::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
*aStream
>> mName
>> mTime;
}
}
@ -21,3 +26,19 @@ void XAnimNotifyInfo::Clear()
mName = 0;
mTime = 0.0f;
}
quint32 XAnimNotifyInfo::GetName() const {
return mName;
}
void XAnimNotifyInfo::SetName(quint32 name) {
mName = name;
}
float XAnimNotifyInfo::GetTime() const {
return mTime;
}
void XAnimNotifyInfo::SetTime(float time) {
mTime = time;
}

View File

@ -7,11 +7,17 @@ class XAnimNotifyInfo : public XAsset
{
public:
explicit XAnimNotifyInfo();
~XAnimNotifyInfo() = default;
~XAnimNotifyInfo();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
quint32 GetName() const;
void SetName(quint32 name);
float GetTime() const;
void SetTime(float time);
private:
quint32 mName;
float mTime;

View File

@ -31,49 +31,68 @@ XAnimParts::XAnimParts()
, mDeltaPart()
{
SetType(ASSET_TYPE_XANIMPARTS);
SetName("Animation Parts");
SetName("XAnimParts");
}
void XAnimParts::ParseData(XDataStream *aStream) {
XAnimParts::~XAnimParts()
{
}
void XAnimParts::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mName.ParsePtr(aStream, false);
// Parse all fields
mDataByteCount = aStream->ParseUInt32(QString("%1 data byte count").arg(GetName()));
mDataShortCount = aStream->ParseUInt32(QString("%1 data short count").arg(GetName()));
mDataIntCount = aStream->ParseUInt32(QString("%1 data int count").arg(GetName()));
mRandomDataByteCount = aStream->ParseUInt32(QString("%1 random date byte count").arg(GetName()));
mRandomDataIntCount = aStream->ParseUInt32(QString("%1 random data int count").arg(GetName()));
mNumFrames = aStream->ParseUInt32(QString("%1 # frames").arg(GetName()));
*aStream
>> mDataByteCount
>> mDataShortCount
>> mDataIntCount
>> mRandomDataByteCount
>> mRandomDataIntCount
>> mNumFrames;
quint8 loopDelta = aStream->ParseUInt8(QString("%1 loop delta").arg(GetName()));
quint8 loopDelta;
*aStream >> loopDelta;
mIsLoop = (loopDelta & 0x1) != 0;
mIsDelta = (loopDelta & 0x2) != 0;
for (int i = 0; i < 12; i++)
{
mBoneCount[i] = aStream->ParseUInt8(QString("%1 bone count %2").arg(GetName()).arg(i));
*aStream >> mBoneCount[i];
}
mNotifyCount = aStream->ParseUInt8(QString("%1 notify count").arg(GetName()));
mAssetType = aStream->ParseUInt8(QString("%1 asset type").arg(GetName()));
mPad = aStream->ParseUInt32(QString("%1 pad").arg(GetName())) != 0;
*aStream
>> mNotifyCount
>> mAssetType;
quint32 pad;
*aStream >> pad;
mPad = (pad != 0);
qint32 namesPtr, dataBytePtr, dataShortPtr, dataIntPtr,
randomDataShortPtr, randomDataBytePtr, randomDataIntPtr;
mRandomDataShortCount = aStream->ParseUInt32(QString("%1 random data short count").arg(GetName()));
mIndexCount = aStream->ParseUInt32(QString("%1 index count").arg(GetName()));
mFramerate = aStream->ParseSingle(QString("%1 frame rate").arg(GetName()));
mFrequency = aStream->ParseSingle(QString("%1 frequency").arg(GetName()));
namesPtr = aStream->ParseInt32(QString("%1 names ptr").arg(GetName()));
dataBytePtr = aStream->ParseInt32(QString("%1 data byte ptr").arg(GetName()));
dataShortPtr = aStream->ParseInt32(QString("%1 data short ptr").arg(GetName()));
dataIntPtr = aStream->ParseInt32(QString("%1 data int ptr").arg(GetName()));
randomDataShortPtr = aStream->ParseInt32(QString("%1 random data short ptr").arg(GetName()));
randomDataBytePtr = aStream->ParseInt32(QString("%1 random data byte ptr").arg(GetName()));
randomDataIntPtr = aStream->ParseInt32(QString("%1 random data int ptr").arg(GetName()));
*aStream
>> mRandomDataShortCount
>> mIndexCount
>> mFramerate
>> mFrequency
>> namesPtr
>> mNames
>> dataBytePtr
>> mDataByte
>> dataShortPtr
>> mDataShort
>> dataIntPtr
>> mDataInt
>> randomDataShortPtr
>> mRandomDataShort
>> randomDataBytePtr
>> mRandomDataByte
>> randomDataIntPtr
>> mRandomDataInt;
// Parse indices
mIndices.ParseData(aStream);
@ -83,33 +102,33 @@ void XAnimParts::ParseData(XDataStream *aStream) {
mName.ParseData(aStream);
if (namesPtr)
{
mNames = aStream->ParseInt32(QString("%1 names").arg(GetName()));
}
mNotify.ParseData(aStream);
mDeltaPart.ParseData(aStream);
if (dataBytePtr)
{
mDataByte = aStream->ParseUInt8(QString("%1 data byte").arg(GetName()));
*aStream >> mDataByte;
}
if (dataShortPtr)
{
mDataShort = aStream->ParseInt16(QString("%1 data short").arg(GetName()));
*aStream >> mDataShort;
}
if (dataIntPtr)
{
mDataInt = aStream->ParseInt32(QString("%1 data int").arg(GetName()));
*aStream >> mDataInt;
}
if (randomDataShortPtr)
{
mRandomDataShort = aStream->ParseInt16(QString("%1 random data short").arg(GetName()));
*aStream >> mDataInt;
}
if (randomDataBytePtr)
{
mRandomDataByte = aStream->ParseUInt8(QString("%1 random data byte").arg(GetName()));
*aStream >> mRandomDataByte;
}
if (randomDataIntPtr)
{
mRandomDataInt = aStream->ParseInt32(QString("%1 random data int").arg(GetName()));
*aStream >> mRandomDataInt;
}
mIndices.ParseData(aStream);
}

View File

@ -13,9 +13,9 @@ class XAnimParts : public XAsset
{
public:
explicit XAnimParts();
~XAnimParts() = default;
~XAnimParts();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
private:
@ -43,13 +43,13 @@ private:
float mFramerate = 0.0f;
float mFrequency = 0.0f;
quint16 mNames = 0;
quint32 mNames = 0;
quint8 mDataByte = 0;
qint16 mDataShort = 0;
qint32 mDataInt = 0;
int mDataInt = 0;
qint16 mRandomDataShort = 0;
quint8 mRandomDataByte = 0;
qint32 mRandomDataInt = 0;
int mRandomDataInt = 0;
XAnimIndices mIndices;
XAnimNotifyInfo mNotify;
XAnimDeltaPart mDeltaPart;

View File

@ -6,7 +6,6 @@ XAnimPartTrans::XAnimPartTrans()
, mIsSmallTrans(false)
, mData()
{
SetName("Animation Part Trans");
}
XAnimPartTrans::XAnimPartTrans(const XAnimPartTrans &aSrc)
@ -18,10 +17,18 @@ XAnimPartTrans::XAnimPartTrans(const XAnimPartTrans &aSrc)
}
void XAnimPartTrans::ParseData(XDataStream *aStream) {
XAnimPartTrans::~XAnimPartTrans()
{
}
void XAnimPartTrans::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mSize = aStream->ParseUInt32(QString("%1 size").arg(GetName()));
mIsSmallTrans = aStream->ParseUInt8(QString("%1 is small trans").arg(GetName())) != 0;
quint8 smallTransByte;
*aStream
>> mSize
>> smallTransByte;
mIsSmallTrans = (smallTransByte != 0);
// Parse data
mData.ParseData(aStream);

View File

@ -9,9 +9,9 @@ class XAnimPartTrans : public XAsset
public:
explicit XAnimPartTrans();
XAnimPartTrans(const XAnimPartTrans& aSrc);
~XAnimPartTrans() = default;
~XAnimPartTrans();
void ParseData(XDataStream* aStream) override;
void ParseData(QDataStream* aStream) override;
void Clear() override;
private:

View File

@ -5,7 +5,6 @@ XAnimPartTransData::XAnimPartTransData()
, mFrames()
, mFrame()
{
SetName("Animation Part Trans Data");
}
XAnimPartTransData::XAnimPartTransData(const XAnimPartTransData &aSrc)
@ -16,7 +15,12 @@ XAnimPartTransData::XAnimPartTransData(const XAnimPartTransData &aSrc)
}
void XAnimPartTransData::ParseData(XDataStream *aStream) {
XAnimPartTransData::~XAnimPartTransData()
{
}
void XAnimPartTransData::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
// We need to determine which part of the union to parse
// For simplicity, we'll assume it's always frames for now

View File

@ -9,9 +9,9 @@ class XAnimPartTransData : public XAsset
public:
explicit XAnimPartTransData();
XAnimPartTransData(const XAnimPartTransData &aSrc);
~XAnimPartTransData() = default;
~XAnimPartTransData();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
private:

View File

@ -7,17 +7,22 @@ XAnimPartTransFrames::XAnimPartTransFrames()
, mFrames()
, mIndices()
{
SetName("Animation Parts Trans Frames");
}
void XAnimPartTransFrames::ParseData(XDataStream *aStream) {
XAnimPartTransFrames::~XAnimPartTransFrames()
{
}
void XAnimPartTransFrames::ParseData(QDataStream *aStream) {
if (GetPtr() == -1) {
mMins[0] = aStream->ParseSingle(QString("%1 min %2").arg(GetName()).arg(0));
mMins[1] = aStream->ParseSingle(QString("%1 min %2").arg(GetName()).arg(1));
mMins[2] = aStream->ParseSingle(QString("%1 min %2").arg(GetName()).arg(2));
mMaxs[0] = aStream->ParseSingle(QString("%1 max %2").arg(GetName()).arg(0));
mMaxs[1] = aStream->ParseSingle(QString("%1 max %2").arg(GetName()).arg(1));
mMaxs[2] = aStream->ParseSingle(QString("%1 max %2").arg(GetName()).arg(2));
*aStream
>> mMins[0]
>> mMins[1]
>> mMins[2]
>> mMaxs[0]
>> mMaxs[1]
>> mMaxs[2];
// Parse frames
mFrames.ParseData(aStream);

View File

@ -11,9 +11,9 @@ class XAnimPartTransFrames : public XAsset
{
public:
explicit XAnimPartTransFrames();
~XAnimPartTransFrames() = default;
~XAnimPartTransFrames();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
private:

View File

@ -19,6 +19,8 @@
#include "xstringtable.h"
#include "xweapondef.h"
XAsset::
XAsset::XAsset()
: mPtr(0)
, mType(ASSET_TYPE_NONE)
@ -27,6 +29,11 @@ XAsset::XAsset()
}
XAsset::~XAsset()
{
}
void XAsset::SetPtr(qint32 aPtr) {
mPtr = aPtr;
}
@ -76,9 +83,20 @@ void XAsset::Clear()
mType = ASSET_TYPE_NONE;
}
void XAsset::ParsePtr(XDataStream *aStream, bool aDataFlag) {
void XAsset::ParsePtr(QDataStream *aStream, bool aDataFlag) {
*aStream >> mPtr;
if (mDebug)
{
// Always treat as unsigned when displaying in hex
quint64 raw = static_cast<quint64>(static_cast<quint32>(mPtr));
QString hexPtr = QString("0x%1")
.arg(raw, 8, 16, QLatin1Char('0'))
.toUpper();
qDebug() << QString("[%1] Parsed %2 ptr %3 (%4)").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName()).arg(mPtr).arg(hexPtr);
}
mPtr = aStream->ParseInt32(QString("%1 ptr").arg(GetName()));
if (aDataFlag && mPtr == -1)
{
ParseData(aStream);
@ -87,6 +105,10 @@ void XAsset::ParsePtr(XDataStream *aStream, bool aDataFlag) {
XAsset* XAsset::Create(XAssetType aAssetType)
{
if (mDebug)
{
qDebug() << QString("Creating XAsset with type %1").arg(XAssetTypeToString(aAssetType));
}
switch (aAssetType)
{
case ASSET_TYPE_XANIMPARTS:

View File

@ -3,7 +3,7 @@
#include "xassettype.h"
#include "xdatastream.h"
#include <QDataStream>
#include <QString>
#include <QDebug>
#include <QIODevice>
@ -12,7 +12,7 @@ class XAsset
{
public:
XAsset();
virtual ~XAsset() = default;
virtual ~XAsset();
void SetPtr(qint32 aPtr);
qint32 GetPtr() const;
@ -27,8 +27,8 @@ public:
bool IsDebug() const;
virtual void Clear();
virtual void ParsePtr(XDataStream *aStream, bool aDataFlag = true);
virtual void ParseData(XDataStream *aStream) = 0;
virtual void ParsePtr(QDataStream *aStream, bool aDataFlag = true);
virtual void ParseData(QDataStream *aStream) = 0;
static XAsset* Create(XAssetType aAssetType);
static QString XAssetTypeToString(XAssetType type);

View File

@ -3,39 +3,41 @@
XAssetHeader::XAssetHeader()
: XAsset()
, mRawType(0)
, mAssetType()
, mAssetPtr(0)
, mZoneFile(nullptr)
{
SetName("Asset Header");
}
XAssetHeader::XAssetHeader(ZoneFile *aZoneFile)
: XAsset()
, mRawType(0)
, mAssetType()
, mAssetPtr(0)
, mZoneFile(aZoneFile)
{
SetName("Asset Header");
}
void XAssetHeader::ParseData(XDataStream *aStream)
XAssetHeader::~XAssetHeader()
{
mRawType = aStream->ParseUInt32(QString("%1 raw type").arg(GetName()));
mAssetPtr = aStream->ParseInt32(QString("%1 asset ptr").arg(GetName()));
mAssetType = mZoneFile->GetType(mRawType);
}
qDebug() << "Found asset:" << XAssetTypeToString(mAssetType) << QString::number(mRawType, 16);
void XAssetHeader::ParseData(QDataStream *aStream)
{
quint32 rawAssetType;
*aStream
>> rawAssetType
>> mAssetPtr;
mAssetType = mZoneFile->GetType(rawAssetType);
}
void XAssetHeader::Clear()
{
mAssetType = ASSET_TYPE_NONE;
mAssetPtr = 0;
mRawType = 0;
}
XAssetType XAssetHeader::GetAssetType() const
@ -43,11 +45,6 @@ XAssetType XAssetHeader::GetAssetType() const
return mAssetType;
}
quint32 XAssetHeader::GetRawAssetType() const
{
return mRawType;
}
qint32 XAssetHeader::GetAssetPtr() const
{
return mAssetPtr;

View File

@ -10,17 +10,15 @@ class XAssetHeader: public XAsset
public:
explicit XAssetHeader();
XAssetHeader(ZoneFile* aZoneFile);
~XAssetHeader() = default;
~XAssetHeader();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
XAssetType GetAssetType() const;
quint32 GetRawAssetType() const;
qint32 GetAssetPtr() const;
private:
quint32 mRawType;
XAssetType mAssetType;
qint32 mAssetPtr;
ZoneFile *mZoneFile;

View File

@ -10,8 +10,6 @@ XAssetList::XAssetList()
, mAssetHeaders()
, mZoneFile(nullptr)
{
SetType(ASSET_TYPE_ASSETLIST);
SetName("Asset List");
}
XAssetList::XAssetList(ZoneFile* aZoneFile)
@ -31,23 +29,30 @@ XAssetList::~XAssetList()
}
void XAssetList::ParseData(XDataStream *aStream) {
void XAssetList::ParseData(QDataStream *aStream) {
// Parse string list
if (IsDebug())
{
qDebug() << QString("[%1] Parsing data for %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(GetName());
}
mStringList.ParsePtr(aStream, false);
mStringList.ParsePtr(aStream);
// Parse asset count and assets
mAssetCount = aStream->ParseUInt32(QString("%1 asset count").arg(GetName()));
qint32 assetsPtr = aStream->ParseInt32(QString("%1 assets ptr").arg(GetName()));
qint32 assetsPtr;
*aStream
>> mAssetCount
>> assetsPtr;
if (IsDebug())
{
qDebug() << QString("[%1] mAssetCount = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(mAssetCount);
qDebug() << QString("[%1] assetsPtr = %2").arg(aStream->device()->pos(), 10, 10, QChar('0')).arg(assetsPtr);
}
mStringList.ParseData(aStream);
if (assetsPtr)
{
for (quint32 i = 0; i < mAssetCount; i++)
for (int i = 0; i < mAssetCount; i++)
{
XAssetHeader assetHeader(mZoneFile);
assetHeader.ParseData(aStream);
@ -57,19 +62,11 @@ void XAssetList::ParseData(XDataStream *aStream) {
for (int i = 0; i < mAssetHeaders.size(); i++)
{
if (aStream->device()->pos() > 98000)
{
qDebug() << "test";
}
XAssetHeader assetHeader = mAssetHeaders[i];
XAsset* asset = XAsset::Create(assetHeader.GetAssetType());
if (asset)
{
asset->SetPtr(assetHeader.GetAssetPtr());
asset->ParseData(aStream);
asset->ParseData(aStream);
mAssets.append(asset);
}
mAssets.append(asset);
}
}
}

View File

@ -14,9 +14,9 @@ class XAssetList : public XAsset
public:
explicit XAssetList();
XAssetList(ZoneFile* aZoneFile);
~XAssetList() override;
~XAssetList();
void ParseData(XDataStream *aStream) override;
void ParseData(QDataStream *aStream) override;
void Clear() override;
XScriptStringList GetStringList() const;

View File

@ -5,7 +5,7 @@ XAudioChannelMap::XAudioChannelMap()
, mEntryCount(0)
, mEntries(QVector<XAudioChannelMapEntry*>())
{
SetName("Audio Channel Map");
}
XAudioChannelMap::~XAudioChannelMap()
@ -32,13 +32,15 @@ void XAudioChannelMap::SetMapEntry(int aIndex, XAudioChannelMapEntry *aEntry)
mEntries[aIndex] = aEntry;
}
void XAudioChannelMap::ParseData(XDataStream *aStream)
void XAudioChannelMap::ParseData(QDataStream *aStream)
{
mEntryCount = aStream->ParseUInt8(QString("%1 entry count").arg(GetName()));
*aStream >> mEntryCount;
aStream->skipRawData(3);
quint32 entriesPtr = aStream->ParseInt32(QString("%1 entries ptr").arg(GetName()));
quint32 entriesPtr;
*aStream >> entriesPtr;
if (entriesPtr)
{
mEntries.resize(mEntryCount);

View File

@ -17,7 +17,7 @@ public:
XAudioChannelMapEntry* GetMapEntry(int aIndex) const;
void SetMapEntry(int aIndex, XAudioChannelMapEntry* aEntry);
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:

View File

@ -6,7 +6,7 @@ XAudioChannelMapEntry::XAudioChannelMapEntry()
, mOutputChannel(0)
, mVolume(0.0)
{
SetName("Audio Channel Map Entry");
}
XAudioChannelMapEntry::~XAudioChannelMapEntry()
@ -44,15 +44,16 @@ void XAudioChannelMapEntry::SetVolume(float aVolume)
mVolume = aVolume;
}
void XAudioChannelMapEntry::ParseData(XDataStream *aStream)
void XAudioChannelMapEntry::ParseData(QDataStream *aStream)
{
mInputChannel = aStream->ParseUInt8(QString("%1 input channel").arg(GetName()));
mOutputChannel = aStream->ParseUInt8(QString("%1 output channel").arg(GetName()));
*aStream
>> mInputChannel
>> mOutputChannel;
// Skip padding bytes in struct
aStream->skipRawData(2);
mVolume = aStream->ParseSingle(QString("%1 volume").arg(GetName()));
*aStream >> mVolume;
}
void XAudioChannelMapEntry::Clear()

View File

@ -18,7 +18,7 @@ public:
float GetVolume() const;
void SetVolume(float aVolume);
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:

View File

@ -1,10 +1,8 @@
#include "xaudioformatinfo.h"
XAudioFormatInfo::XAudioFormatInfo()
: XAsset()
, mStream()
{
SetName("Audio Format Info");
}
XAudioFormatInfo::~XAudioFormatInfo()
@ -12,14 +10,12 @@ XAudioFormatInfo::~XAudioFormatInfo()
}
void XAudioFormatInfo::ParseData(XDataStream *aStream)
void XAudioFormatInfo::ParseData(QDataStream *aStream)
{
Q_UNUSED(aStream);
// TODO: Implement ParseData(...) for XAudioFormatInfo
}
void XAudioFormatInfo::Clear()
{
mStream.clear();
}

View File

@ -2,21 +2,22 @@
#define XAUDIOFORMATINFO_H
#include "xasset.h"
#include "xaudioxmaformat.h"
#include <QVector>
class XAudioXmaFormat;
class XAudioFormatInfo : public XAsset
{
public:
explicit XAudioFormatInfo();
XAudioFormatInfo();
~XAudioFormatInfo();
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:
QVector<XAudioXmaFormat> mStream;
QVector<XAudioXmaFormat*> mStream;
};
#endif // XAUDIOFORMATINFO_H

View File

@ -8,7 +8,7 @@ XAudioPacketAligned::XAudioPacketAligned()
, aXmaLoop()
, mContext()
{
SetName("Audio Packet Aligned");
}
XAudioPacketAligned::~XAudioPacketAligned()
@ -16,11 +16,14 @@ XAudioPacketAligned::~XAudioPacketAligned()
}
void XAudioPacketAligned::ParseData(XDataStream *aStream)
void XAudioPacketAligned::ParseData(QDataStream *aStream)
{
qint32 bufferPtr = aStream->ParseInt32(QString("%1 buffer ptr").arg(GetName()));
mBufferSize = aStream->ParseUInt32(QString("%1 buffer size").arg(GetName()));
mLoopCount = aStream->ParseUInt32(QString("%1 loop count").arg(GetName()));
qint32 bufferPtr, contextPtr;
*aStream
>> bufferPtr
>> mBufferSize
>> mLoopCount;
for (int i = 0; i < 6; i++)
{
@ -28,16 +31,15 @@ void XAudioPacketAligned::ParseData(XDataStream *aStream)
loop.ParseData(aStream);
}
qint32 contextPtr = aStream->ParseInt32(QString("%1 context ptr").arg(GetName()));
*aStream >> contextPtr;
if (bufferPtr)
{
aStream->readRawData(mBuffer.data(), mBufferSize);
}
if (contextPtr)
{
mContext = aStream->ParseInt8(QString("%1 context").arg(GetName()));
*aStream >> mContext;
}
}

View File

@ -12,7 +12,7 @@ public:
XAudioPacketAligned();
~XAudioPacketAligned();
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:

View File

@ -5,7 +5,7 @@ XAudioReverbSettings::XAudioReverbSettings()
, mPresetOverridden(0)
, mReverbSettings(new XReverbSettings())
{
SetName("Audio Reverb Settings");
}
void XAudioReverbSettings::Clear()
@ -24,11 +24,12 @@ XReverbSettings* XAudioReverbSettings::GetReverbSettings() const
return mReverbSettings;
}
void XAudioReverbSettings::ParseData(XDataStream *aStream)
void XAudioReverbSettings::ParseData(QDataStream *aStream)
{
if (GetPtr())
{
mPresetOverridden = aStream->ParseInt32(QString("%1 preset overidden").arg(GetName()));
*aStream
>> mPresetOverridden;
if (mReverbSettings != nullptr)
{

View File

@ -16,10 +16,10 @@ public:
void SetReverbSettings(XReverbSettings* aReverbSettings);
virtual void Clear() override;
virtual void ParseData(XDataStream *aStream) override;
virtual void ParseData(QDataStream *aStream) override;
private:
qint32 mPresetOverridden;
int mPresetOverridden;
XReverbSettings* mReverbSettings;
};

View File

@ -5,7 +5,7 @@ XAudioSeekTable::XAudioSeekTable()
, mSize(0)
, mData()
{
SetName("Audio Seek Table");
}
XAudioSeekTable::~XAudioSeekTable()
@ -13,11 +13,13 @@ XAudioSeekTable::~XAudioSeekTable()
}
void XAudioSeekTable::ParseData(XDataStream *aStream)
void XAudioSeekTable::ParseData(QDataStream *aStream)
{
mSize = aStream->ParseUInt32(QString("%1 size").arg(GetName()));
qint32 dataPtr;
*aStream
>> mSize
>> dataPtr;
qint32 dataPtr = aStream->ParseInt32(QString("%1 data ptr").arg(GetName()));
if (dataPtr)
{
aStream->readRawData(mData.data(), 4 * mSize);

View File

@ -11,7 +11,7 @@ public:
XAudioSeekTable();
~XAudioSeekTable();
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:

View File

@ -7,7 +7,7 @@ XAudioSound::XAudioSound()
, mXmaDataInfo()
, mSeekTable()
{
SetName("Audio Sound");
}
XAudioSound::~XAudioSound()
@ -15,7 +15,7 @@ XAudioSound::~XAudioSound()
}
void XAudioSound::ParseData(XDataStream *aStream)
void XAudioSound::ParseData(QDataStream *aStream)
{
mPacket.ParseData(aStream);
mFormat.ParseData(aStream);

View File

@ -13,7 +13,7 @@ public:
XAudioSound();
~XAudioSound();
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:

View File

@ -1,12 +1,8 @@
#include "xaudiosourceformat.h"
XAudioSourceFormat::XAudioSourceFormat()
: XAsset()
, mSampleType(0)
, mStreamInfo()
, mAudioFormatInfo()
{
SetName("Audio Source Format");
}
XAudioSourceFormat::~XAudioSourceFormat()
@ -14,23 +10,12 @@ XAudioSourceFormat::~XAudioSourceFormat()
}
void XAudioSourceFormat::ParseData(XDataStream *aStream)
void XAudioSourceFormat::ParseData(QDataStream *aStream)
{
mSampleType = aStream->ParseUInt8(QString("%1 sample type").arg(GetName()));
aStream->skipRawData(3);
mStreamInfo.ParsePtr(aStream, false);
mAudioFormatInfo.ParsePtr(aStream, false);
mStreamInfo.ParseData(aStream);
mAudioFormatInfo.ParseData(aStream);
}
void XAudioSourceFormat::Clear()
{
mSampleType = 0;
mStreamInfo.Clear();
mAudioFormatInfo.Clear();
}

View File

@ -3,21 +3,22 @@
#include "xasset.h"
#include "xaudioformatinfo.h"
#include "xaudiostreaminfo.h"
class XAudioStreamInfo;
class XAudioSourceFormat : public XAsset
{
public:
explicit XAudioSourceFormat();
XAudioSourceFormat();
~XAudioSourceFormat();
virtual void ParseData(XDataStream* aStream) override;
virtual void ParseData(QDataStream* aStream) override;
virtual void Clear() override;
private:
quint8 mSampleType;
XAudioStreamInfo mStreamInfo;
XAudioFormatInfo mAudioFormatInfo;
XAudioStreamInfo* mStreamInfo;
XAudioFormatInfo* mAudioFormatInfo;
};
#endif // XAUDIOSOURCEFORMAT_H

View File

@ -1,18 +1,18 @@
#include "xaudiostreaminfo.h"
XAudioStreamInfo::XAudioStreamInfo()
: XAsset()
, mNumStreams(0)
, mChannelCount(0)
{
SetName("Audio Stream Info");
}
void XAudioStreamInfo::ParseData(XDataStream *aStream)
XAudioStreamInfo::~XAudioStreamInfo()
{
}
void XAudioStreamInfo::ParseData(QDataStream *aStream)
{
Q_UNUSED(aStream);
// TODO: Fill in XAudioStreamInfo::ParseData
}
void XAudioStreamInfo::Clear()

Some files were not shown because too many files have changed in this diff Show More