mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-15 09:34:18 +02:00
#15 TR3 PSX fix animated textures & sound
This commit is contained in:
23
src/format.h
23
src/format.h
@@ -2516,6 +2516,7 @@ namespace TR {
|
|||||||
soundSize = new uint32[soundOffsetsCount];
|
soundSize = new uint32[soundOffsetsCount];
|
||||||
soundDataSize = 0;
|
soundDataSize = 0;
|
||||||
for (int i = 0; i < soundOffsetsCount; i++) {
|
for (int i = 0; i < soundOffsetsCount; i++) {
|
||||||
|
ASSERT(soundOffsets[i] < soundOffsets[i + 1]);
|
||||||
soundSize[i] = soundOffsets[i + 1] - soundOffsets[i];
|
soundSize[i] = soundOffsets[i + 1] - soundOffsets[i];
|
||||||
soundOffsets[i] = soundDataSize;
|
soundOffsets[i] = soundDataSize;
|
||||||
soundDataSize += soundSize[i];
|
soundDataSize += soundSize[i];
|
||||||
@@ -2527,6 +2528,18 @@ namespace TR {
|
|||||||
stream.read(soundOffsets, stream.read(soundOffsetsCount));
|
stream.read(soundOffsets, stream.read(soundOffsetsCount));
|
||||||
stream.read(soundDataSize);
|
stream.read(soundDataSize);
|
||||||
stream.read(soundData, soundDataSize);
|
stream.read(soundData, soundDataSize);
|
||||||
|
soundSize = new uint32[soundOffsetsCount];
|
||||||
|
int size = 0;
|
||||||
|
for (int i = 0; i < soundOffsetsCount - 1; i++) {
|
||||||
|
ASSERT(soundOffsets[i] < soundOffsets[i + 1]);
|
||||||
|
size += soundSize[i] = soundOffsets[i + 1] - soundOffsets[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (soundOffsetsCount) {
|
||||||
|
soundSize[soundOffsetsCount - 1] = soundDataSize;
|
||||||
|
if (soundOffsetsCount > 1)
|
||||||
|
soundSize[soundOffsetsCount - 1] -= soundSize[soundOffsetsCount - 2];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (version == VER_TR3_PSX) {
|
if (version == VER_TR3_PSX) {
|
||||||
@@ -2763,6 +2776,12 @@ namespace TR {
|
|||||||
f.flags.texture += objectTexturesCount;
|
f.flags.texture += objectTexturesCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remap animated textures
|
||||||
|
for (int i = 0; i < animTexturesCount; i++)
|
||||||
|
for (int j = 0; j < animTextures[i]->count; j++)
|
||||||
|
animTextures[i]->textures[j] += objectTexturesCount;
|
||||||
|
|
||||||
LOG("objTex:%d + roomTex:%d = %d\n", objectTexturesCount, roomTexCount, objectTexturesCount + roomTexCount);
|
LOG("objTex:%d + roomTex:%d = %d\n", objectTexturesCount, roomTexCount, objectTexturesCount + roomTexCount);
|
||||||
objectTexturesCount += roomTexCount;
|
objectTexturesCount += roomTexCount;
|
||||||
}
|
}
|
||||||
@@ -4106,8 +4125,8 @@ namespace TR {
|
|||||||
case VER_TR2_PC :
|
case VER_TR2_PC :
|
||||||
case VER_TR3_PC : size = FOURCC(data + 4) + 8; break; // read size from wave header
|
case VER_TR3_PC : size = FOURCC(data + 4) + 8; break; // read size from wave header
|
||||||
case VER_TR1_PSX :
|
case VER_TR1_PSX :
|
||||||
case VER_TR2_PSX : size = soundSize[index]; break;
|
case VER_TR2_PSX :
|
||||||
case VER_TR3_PSX : return NULL; // TR3_TODO
|
case VER_TR3_PSX : size = soundSize[index]; break;
|
||||||
default : ASSERT(false);
|
default : ASSERT(false);
|
||||||
}
|
}
|
||||||
return new Stream(NULL, data, size);
|
return new Stream(NULL, data, size);
|
||||||
|
Reference in New Issue
Block a user