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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user