1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-11 07:34:33 +02:00

#370 use byte offset to PLUT instead of index

This commit is contained in:
XProger
2021-12-22 15:37:11 +03:00
parent 8a51916cd7
commit d3a591a1ff
6 changed files with 15 additions and 18 deletions

View File

@@ -197,8 +197,7 @@ skip cmp fPolys, fLast
; plutPtr = plutOffset + (tex->shift >> 16) * sizeof(PLUT)
ldr plutOffset, [sp, #SP_PALETTE]
mov plutPtr, shift, lsr #16
add plutPtr, plutOffset, plutPtr, lsl #5
add plutPtr, plutOffset, shift, lsr #16
ldmia vp2, {vx2, vy2}
sub vx2, vx2, vx0

View File

@@ -186,9 +186,8 @@ skip cmp fPolys, fLast
stmia face!, {flags, nextPtr}
ldmia tex, {dataPtr, shift}
; plutPtr = plutOffset + (tex->shift >> 16) * sizeof(PLUT)
mov plutPtr, shift, lsr #16
add plutPtr, plutOffset, plutPtr, lsl #5
; plutPtr = plutOffset + (tex->shift >> 16)
add plutPtr, plutOffset, shift, lsr #16
and ws, shift, #0xFF
mov hs, shift, lsr #8

View File

@@ -210,10 +210,9 @@ skip cmp fPolys, fLast
stmia face!, {flags, nextPtr}
ldmia tex, {dataPtr, shift}
; plutPtr = plutOffset + (tex->shift >> 16) * sizeof(PLUT)
; plutPtr = plutOffset + (tex->shift >> 16)
ldr plutOffset, [sp, #SP_PALETTE]
mov plutPtr, shift, lsr #16
add plutPtr, plutOffset, plutPtr, lsl #5
add plutPtr, plutOffset, shift, lsr #16
ldmia vp2, {vx2, vy2}
sub vx2, vx2, vx0

View File

@@ -202,9 +202,8 @@ skip cmp fPolys, fLast
stmia face!, {flags, nextPtr}
ldmia tex, {dataPtr, shift}
; plutPtr = plutOffset + (tex->shift >> 16) * sizeof(PLUT)
mov plutPtr, shift, lsr #16
add plutPtr, plutOffset, plutPtr, lsl #5
; plutPtr = plutOffset + (tex->shift >> 16)
add plutPtr, plutOffset, shift, lsr #16
and ws, shift, #0xFF
mov hs, shift, lsr #8

View File

@@ -208,7 +208,7 @@ X_INLINE void ccbSetTexture(uint32 flags, Face* face, const Texture* texture)
(flags >> (8 + FACE_MIP_SHIFT + FACE_MIP_SHIFT) << 5); // set CCB_BGND (0x20 == 1 << 5)
face->ccb_SourcePtr = (CelData*)texture->data;
face->ccb_PLUTPtr = gPalette + (texture->shift >> 16) * 16;
face->ccb_PLUTPtr = (uint8*)gPalette + (texture->shift >> 16);
}
X_INLINE void ccbSetColor(uint32 flags, Face* face)

View File

@@ -3005,6 +3005,11 @@ struct LevelPC
}
// 3DO ========================================================================
struct PLUT {
uint16 colors[16];
} PLUTs[MAX_TEXTURES];
int32 plutsCount;
struct Texture3DO {
int32 data;
int32 plut;
@@ -3024,7 +3029,8 @@ struct LevelPC
void write(FileStream &f) const
{
uint32 shift = wShift | (hShift << 8) | (plut << 16);
ASSERT(plut * sizeof(PLUT) < 0xFFFF);
uint32 shift = wShift | (hShift << 8) | ((plut * sizeof(PLUT)) << 16);
f.write(data);
f.write(shift);
}
@@ -3041,11 +3047,6 @@ struct LevelPC
int32 spritesBaseIndex;
struct PLUT {
uint16 colors[16];
} PLUTs[MAX_TEXTURES];
int32 plutsCount;
uint32 nextPow2(uint32 x) {
x--;
x |= x >> 1;