Browse Source

ENG_set_pixel + engine_draw_pixel (#691)

pull/44/head
galaxyhaxz 7 years ago committed by Robin Eklind
parent
commit
f388472713
  1. 66
      Source/engine.cpp
  2. 4
      Source/engine.h

66
Source/engine.cpp

@ -1970,34 +1970,62 @@ void __fastcall CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nC
}
// 69CF0C: using guessed type int gpBufEnd;
void __fastcall ENG_set_pixel(int screen_x, int screen_y, UCHAR pixel)
void __fastcall ENG_set_pixel(int sx, int sy, BYTE col)
{
UCHAR *v3; // edi
BYTE *dst;
/// ASSERT: assert(gpBuffer);
if(sy < 0 || sy >= 640 || sx < 64 || sx >= 704)
return;
dst = &gpBuffer[sx + screen_y_times_768[sy]];
if (screen_y >= 0 && screen_y < 640 && screen_x >= 64 && screen_x < 704) {
v3 = (UCHAR *)gpBuffer + screen_y_times_768[screen_y] + screen_x;
if (v3 < gpBufEnd)
*v3 = pixel;
#if (_MSC_VER >= 800) && (_MSC_VER <= 1200)
__asm {
mov edi, dst
cmp edi, gpBufEnd
jnb label1
mov al, col
mov [edi], al
label1:
}
#else
if(dst < gpBufEnd)
*dst = col;
#endif
}
// 69CF0C: using guessed type int gpBufEnd;
void __fastcall engine_draw_pixel(int x, int y)
void __fastcall engine_draw_pixel(int sx, int sy)
{
_BYTE *v2; // eax
BYTE *dst;
if (dword_52B970) {
if (!dword_52B99C || x >= 0 && x < 640 && y >= 64 && y < 704) {
v2 = (unsigned char *)gpBuffer + screen_y_times_768[x] + y;
goto LABEL_14;
}
} else if (!dword_52B99C || y >= 0 && y < 640 && x >= 64 && x < 704) {
v2 = (unsigned char *)gpBuffer + screen_y_times_768[y] + x;
LABEL_14:
if (v2 < gpBufEnd)
*v2 = gbPixelCol;
return;
/// ASSERT: assert(gpBuffer);
if(dword_52B970) {
if(dword_52B99C && (sx < 0 || sx >= 640 || sy < 64 || sy >= 704))
return;
dst = &gpBuffer[sy + screen_y_times_768[sx]];
} else {
if(dword_52B99C && (sy < 0 || sy >= 640 || sx < 64 || sx >= 704))
return;
dst = &gpBuffer[sx + screen_y_times_768[sy]];
}
#if (_MSC_VER >= 800) && (_MSC_VER <= 1200)
__asm {
mov edi, dst
cmp edi, gpBufEnd
jnb label1
mov al, gbPixelCol
mov [edi], al
label1:
}
#else
if(dst < gpBufEnd)
*dst = gbPixelCol;
#endif
}
// 52B96C: using guessed type char gbPixelCol;
// 52B970: using guessed type int dword_52B970;

4
Source/engine.h

@ -33,8 +33,8 @@ void __fastcall Cel2DrawHdrLightRed(int sx, int sy, BYTE *pCelBuff, int nCel, in
void __fastcall CelDecodeRect(BYTE *pBuff, int always_0, int hgt, int wdt, BYTE *pCelBuff, int nCel, int nWidth);
void __fastcall CelDecodeClr(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int always_0, int dir);
void __fastcall CelDrawHdrClrHL(char col, int sx, int sy, BYTE *pCelBuff, int nCel, int nWidth, int always_0, int dir);
void __fastcall ENG_set_pixel(int screen_x, int screen_y, UCHAR pixel);
void __fastcall engine_draw_pixel(int x, int y);
void __fastcall ENG_set_pixel(int sx, int sy, BYTE col);
void __fastcall engine_draw_pixel(int sx, int sy);
void __fastcall DrawLine(int x0, int y0, int x1, int y1, UCHAR col);
int __fastcall GetDirection(int x1, int y1, int x2, int y2);
void __fastcall SetRndSeed(int s);

Loading…
Cancel
Save