34 lines
No EOL
874 B
C++
34 lines
No EOL
874 B
C++
#include <stdio.h>
|
|
#include <process.h>
|
|
#include <windows.h>
|
|
#include "LibNatal.h"
|
|
//#pragma optimize("",off)
|
|
/* Re map Z according to RGB colors by sliding Z pixels over X */
|
|
void ZXOffsetCorrection(s16 *pZBuffer,u32 SX,u32 SY)
|
|
{
|
|
s16 OneLine[2048];
|
|
for (s32 Y = 0 ; Y < (s32)SY ; Y ++ )
|
|
{
|
|
/* Solve Line By Line */
|
|
memcpy(OneLine,pZBuffer,SX*2);
|
|
memset(pZBuffer,0,SX*2);
|
|
for (s32 X = 0 ; X < (s32)SX ; X ++ )
|
|
{
|
|
s32 NewOffset;
|
|
if (OneLine[X])
|
|
{
|
|
static float Claqueee = 55.5f;
|
|
NewOffset = X + Claqueee * (256.0f / (float)OneLine[X]);
|
|
if ((NewOffset > 0)&&(NewOffset+1 < SX))
|
|
{
|
|
if ((!pZBuffer[NewOffset]) || (pZBuffer[NewOffset] > OneLine[X])) pZBuffer[NewOffset] = OneLine[X];
|
|
if ((!pZBuffer[NewOffset+1]) || (pZBuffer[NewOffset+1] > OneLine[X])) pZBuffer[NewOffset+1] = OneLine[X];
|
|
}
|
|
}
|
|
}
|
|
|
|
pZBuffer += SX;
|
|
|
|
}
|
|
|
|
} |