1
0
mirror of https://github.com/XProger/OpenLara.git synced 2025-08-13 00:24:24 +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) ; plutPtr = plutOffset + (tex->shift >> 16) * sizeof(PLUT)
ldr plutOffset, [sp, #SP_PALETTE] ldr plutOffset, [sp, #SP_PALETTE]
mov plutPtr, shift, lsr #16 add plutPtr, plutOffset, shift, lsr #16
add plutPtr, plutOffset, plutPtr, lsl #5
ldmia vp2, {vx2, vy2} ldmia vp2, {vx2, vy2}
sub vx2, vx2, vx0 sub vx2, vx2, vx0

View File

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

View File

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

View File

@@ -202,9 +202,8 @@ skip cmp fPolys, fLast
stmia face!, {flags, nextPtr} stmia face!, {flags, nextPtr}
ldmia tex, {dataPtr, shift} ldmia tex, {dataPtr, shift}
; plutPtr = plutOffset + (tex->shift >> 16) * sizeof(PLUT) ; plutPtr = plutOffset + (tex->shift >> 16)
mov plutPtr, shift, lsr #16 add plutPtr, plutOffset, shift, lsr #16
add plutPtr, plutOffset, plutPtr, lsl #5
and ws, shift, #0xFF and ws, shift, #0xFF
mov hs, shift, lsr #8 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) (flags >> (8 + FACE_MIP_SHIFT + FACE_MIP_SHIFT) << 5); // set CCB_BGND (0x20 == 1 << 5)
face->ccb_SourcePtr = (CelData*)texture->data; 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) X_INLINE void ccbSetColor(uint32 flags, Face* face)

View File

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