2019-09-19 22:42:45 +00:00
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
/*
|
|
|
|
Copyright (C) 2010-2019 EDuke32 developers and contributors
|
|
|
|
Copyright (C) 2019 Nuke.YKT
|
|
|
|
|
|
|
|
This file is part of NBlood.
|
|
|
|
|
|
|
|
NBlood is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License version 2
|
|
|
|
as published by the Free Software Foundation.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
|
|
|
See the GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------
|
2019-09-21 18:59:54 +00:00
|
|
|
#include "ns.h" // Must come before everything else!
|
|
|
|
|
2019-09-19 22:42:45 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <ctype.h>
|
2019-09-22 21:15:46 +00:00
|
|
|
#include "crc32_.h"
|
2019-09-19 22:42:45 +00:00
|
|
|
#include "compat.h"
|
|
|
|
#include "cache1d.h"
|
|
|
|
#include "common_game.h"
|
|
|
|
|
|
|
|
#include "misc.h"
|
|
|
|
#include "qheap.h"
|
|
|
|
#include "resource.h"
|
|
|
|
|
|
|
|
#if B_BIG_ENDIAN == 1
|
|
|
|
#include "qav.h"
|
|
|
|
#include "seq.h"
|
|
|
|
#include "sound.h"
|
|
|
|
#endif
|
|
|
|
|
2019-09-22 06:39:22 +00:00
|
|
|
BEGIN_BLD_NS
|
|
|
|
|
2019-09-19 22:42:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if B_BIG_ENDIAN == 1
|
2019-10-31 16:13:48 +00:00
|
|
|
// Todo: Hook these up with the resource loader
|
|
|
|
void ByteSwapQAV(void *p)
|
|
|
|
{
|
|
|
|
QAV *qav = (QAV*)p;
|
|
|
|
qav->nFrames = B_LITTLE32(qav->nFrames);
|
|
|
|
qav->ticksPerFrame = B_LITTLE32(qav->ticksPerFrame);
|
|
|
|
qav->at10 = B_LITTLE32(qav->at10);
|
|
|
|
qav->x = B_LITTLE32(qav->x);
|
|
|
|
qav->y = B_LITTLE32(qav->y);
|
|
|
|
qav->nSprite = B_LITTLE32(qav->nSprite);
|
|
|
|
for (int i = 0; i < qav->nFrames; i++)
|
|
|
|
{
|
|
|
|
FRAMEINFO *pFrame = &qav->frames[i];
|
|
|
|
SOUNDINFO *pSound = &pFrame->sound;
|
|
|
|
pFrame->nCallbackId = B_LITTLE32(pFrame->nCallbackId);
|
|
|
|
pSound->sound = B_LITTLE32(pSound->sound);
|
|
|
|
for (int j = 0; j < 8; j++)
|
|
|
|
{
|
|
|
|
TILE_FRAME *pTile = &pFrame->tiles[j];
|
|
|
|
pTile->picnum = B_LITTLE32(pTile->picnum);
|
|
|
|
pTile->x = B_LITTLE32(pTile->x);
|
|
|
|
pTile->y = B_LITTLE32(pTile->y);
|
|
|
|
pTile->z = B_LITTLE32(pTile->z);
|
|
|
|
pTile->stat = B_LITTLE32(pTile->stat);
|
|
|
|
pTile->angle = B_LITTLE16(pTile->angle);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ByteSwapSEQ(void *p)
|
|
|
|
{
|
|
|
|
Seq *pSeq = (Seq*)p;
|
|
|
|
pSeq->version = B_LITTLE16(pSeq->version);
|
|
|
|
pSeq->nFrames = B_LITTLE16(pSeq->nFrames);
|
|
|
|
pSeq->at8 = B_LITTLE16(pSeq->at8);
|
|
|
|
pSeq->ata = B_LITTLE16(pSeq->ata);
|
|
|
|
pSeq->atc = B_LITTLE32(pSeq->atc);
|
|
|
|
for (int i = 0; i < pSeq->nFrames; i++)
|
|
|
|
{
|
|
|
|
SEQFRAME *pFrame = &pSeq->frames[i];
|
|
|
|
BitReader bitReader((char *)pFrame, sizeof(SEQFRAME));
|
|
|
|
SEQFRAME swapFrame;
|
|
|
|
swapFrame.tile = bitReader.readUnsigned(12);
|
|
|
|
swapFrame.at1_4 = bitReader.readBit();
|
|
|
|
swapFrame.at1_5 = bitReader.readBit();
|
|
|
|
swapFrame.at1_6 = bitReader.readBit();
|
|
|
|
swapFrame.at1_7 = bitReader.readBit();
|
|
|
|
swapFrame.at2_0 = bitReader.readUnsigned(8);
|
|
|
|
swapFrame.at3_0 = bitReader.readUnsigned(8);
|
|
|
|
swapFrame.at4_0 = bitReader.readSigned(8);
|
|
|
|
swapFrame.at5_0 = bitReader.readUnsigned(5);
|
|
|
|
swapFrame.at5_5 = bitReader.readBit();
|
|
|
|
swapFrame.at5_6 = bitReader.readBit();
|
|
|
|
swapFrame.at5_7 = bitReader.readBit();
|
|
|
|
swapFrame.at6_0 = bitReader.readBit();
|
|
|
|
swapFrame.at6_1 = bitReader.readBit();
|
|
|
|
swapFrame.at6_2 = bitReader.readBit();
|
|
|
|
swapFrame.at6_3 = bitReader.readBit();
|
|
|
|
swapFrame.at6_4 = bitReader.readBit();
|
|
|
|
swapFrame.tile2 = bitReader.readUnsigned(4);
|
|
|
|
swapFrame.soundRange = bitReader.readUnsigned(4);
|
|
|
|
swapFrame.surfaceSound = bitReader.readBit();
|
|
|
|
swapFrame.reserved = bitReader.readUnsigned(2);
|
|
|
|
*pFrame = swapFrame;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ByteSwapSFX(void *p)
|
|
|
|
{
|
|
|
|
SFX *pSFX = (SFX*)p;
|
|
|
|
pSFX->relVol = B_LITTLE32(pSFX->relVol);
|
|
|
|
pSFX->pitch = B_LITTLE32(pSFX->pitch);
|
|
|
|
pSFX->pitchRange = B_LITTLE32(pSFX->pitchRange);
|
|
|
|
pSFX->format = B_LITTLE32(pSFX->format);
|
|
|
|
pSFX->loopStart = B_LITTLE32(pSFX->loopStart);
|
2019-09-19 22:42:45 +00:00
|
|
|
}
|
|
|
|
|
2019-09-15 15:25:21 +00:00
|
|
|
#endif
|
2019-09-19 22:42:45 +00:00
|
|
|
|
2019-09-22 06:39:22 +00:00
|
|
|
|
|
|
|
END_BLD_NS
|