mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-12 16:14:25 +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)
|
; 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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user