Browse Source

Implement "fade.cpp" in DiabloUI (#219)

pull/4/head
galaxyhaxz 8 years ago committed by Anders Jenbo
parent
commit
cd17ca323d
  1. 2
      3rdParty/Storm/Source/storm.cpp
  2. 4
      3rdParty/Storm/Source/storm.def
  3. 2
      3rdParty/Storm/Source/storm.h
  4. 6
      3rdParty/Storm/Source/storm_gcc.def
  5. 7
      DiabloUI/_temp_data.cpp
  6. 19
      DiabloUI/_temp_funcs.h
  7. 223
      DiabloUI/fade.cpp

2
3rdParty/Storm/Source/storm.cpp vendored

@ -243,3 +243,5 @@ void __stdcall SDlgBeginPaint(HWND hWnd, char *a2) rVoid;
void __stdcall SDlgEndPaint(HWND hWnd, char *a2) rVoid; void __stdcall SDlgEndPaint(HWND hWnd, char *a2) rVoid;
void __stdcall SDlgSetSystemCursor(BYTE *a1, BYTE *a2, int *a3, int a4) rVoid; void __stdcall SDlgSetSystemCursor(BYTE *a1, BYTE *a2, int *a3, int a4) rVoid;
void __stdcall SDlgSetCursor(HWND hWnd, HCURSOR a2, int a3, int *a4) rVoid; void __stdcall SDlgSetCursor(HWND hWnd, HCURSOR a2, int a3, int *a4) rVoid;
BOOL __stdcall SDlgSetTimer(int a1, int a2, int a3, void (__stdcall *a4)(int)) rBool;
BOOL __stdcall SDlgKillTimer(int a1, int a2) rBool;

4
3rdParty/Storm/Source/storm.def vendored

@ -63,13 +63,13 @@ EXPORTS
;SDlgDrawBitmap @210 NONAME ;SDlgDrawBitmap @210 NONAME
SDlgEndDialog @211 NONAME SDlgEndDialog @211 NONAME
SDlgEndPaint @212 NONAME SDlgEndPaint @212 NONAME
;SDlgKillTimer @213 NONAME SDlgKillTimer @213 NONAME
;SDlgSetBaseFont @214 NONAME ;SDlgSetBaseFont @214 NONAME
SDlgSetBitmapI @215 NONAME SDlgSetBitmapI @215 NONAME
SDlgSetControlBitmaps @216 NONAME SDlgSetControlBitmaps @216 NONAME
SDlgSetCursor @217 NONAME SDlgSetCursor @217 NONAME
SDlgSetSystemCursor @218 NONAME SDlgSetSystemCursor @218 NONAME
;SDlgSetTimer @219 NONAME SDlgSetTimer @219 NONAME
;SDlgUpdateCursor @220 NONAME ;SDlgUpdateCursor @220 NONAME
SDlgBltToWindowE @221 NONAME SDlgBltToWindowE @221 NONAME
SDlgSetBitmapE @222 NONAME SDlgSetBitmapE @222 NONAME

2
3rdParty/Storm/Source/storm.h vendored

@ -1306,6 +1306,8 @@ void __stdcall SDlgBeginPaint(HWND hWnd, char *a2);
void __stdcall SDlgEndPaint(HWND hWnd, char *a2); void __stdcall SDlgEndPaint(HWND hWnd, char *a2);
void __stdcall SDlgSetSystemCursor(BYTE *a1, BYTE *a2, int *a3, int a4); void __stdcall SDlgSetSystemCursor(BYTE *a1, BYTE *a2, int *a3, int a4);
void __stdcall SDlgSetCursor(HWND hWnd, HCURSOR a2, int a3, int *a4); void __stdcall SDlgSetCursor(HWND hWnd, HCURSOR a2, int a3, int *a4);
BOOL __stdcall SDlgSetTimer(int a1, int a2, int a3, void (__stdcall *a4)(int));
BOOL __stdcall SDlgKillTimer(int a1, int a2);
#ifdef __GNUC__ #ifdef __GNUC__
} }

6
3rdParty/Storm/Source/storm_gcc.def vendored

@ -83,7 +83,8 @@ EXPORTS
SDlgEndDialog @211 NONAME SDlgEndDialog @211 NONAME
SDlgEndPaint @212 NONAME SDlgEndPaint @212 NONAME
SDlgEndPaint@8 @212 NONAME SDlgEndPaint@8 @212 NONAME
;SDlgKillTimer @213 NONAME SDlgKillTimer @213 NONAME
SDlgKillTimer@8 @213 NONAME
;SDlgSetBaseFont @214 NONAME ;SDlgSetBaseFont @214 NONAME
SDlgSetBitmapI @215 NONAME SDlgSetBitmapI @215 NONAME
SDlgSetBitmapI@40 @215 NONAME SDlgSetBitmapI@40 @215 NONAME
@ -92,7 +93,8 @@ EXPORTS
SDlgSetCursor@16 @217 NONAME SDlgSetCursor@16 @217 NONAME
SDlgSetSystemCursor @218 NONAME SDlgSetSystemCursor @218 NONAME
SDlgSetSystemCursor@16 @218 NONAME SDlgSetSystemCursor@16 @218 NONAME
;SDlgSetTimer @219 NONAME SDlgSetTimer @219 NONAME
SDlgSetTimer@16 @219 NONAME
;SDlgUpdateCursor @220 NONAME ;SDlgUpdateCursor @220 NONAME
SDlgBltToWindowE @221 NONAME SDlgBltToWindowE @221 NONAME
SDlgSetBitmapE @222 NONAME SDlgSetBitmapE @222 NONAME

7
DiabloUI/_temp_data.cpp

@ -8,6 +8,7 @@ ProfileStruct bnprofiles[4] =
}; };
int profilemsg1[6] = { 1125, 1127, 1129, 1131, 1133, 0 }; int profilemsg1[6] = { 1125, 1127, 1129, 1131, 1133, 0 };
int profilemsg2[6] = { 1126, 1128, 1130, 1132, 1134, 0 }; int profilemsg2[6] = { 1126, 1128, 1130, 1132, 1134, 0 };
int fade_cpp_float_value = 2139095040; // weak
int local_cpp_float_value = 2139095040; // weak int local_cpp_float_value = 2139095040; // weak
int dword_10022258 = 4; // weak int dword_10022258 = 4; // weak
ProfFntStruct proffnts[4] = ProfFntStruct proffnts[4] =
@ -210,10 +211,10 @@ LPSTR dword_10029858; // idb
int dword_1002985C; // weak int dword_1002985C; // weak
int dword_10029860; // weak int dword_10029860; // weak
LPSTR dword_10029864; // idb LPSTR dword_10029864; // idb
int dword_10029868; // weak int fade_cpp_float; // weak
int dword_1002986C; // weak int sgbFadeRange; // idb
tagPALETTEENTRY fadepal[256]; tagPALETTEENTRY fadepal[256];
int dword_10029C70; // weak int sgbIsFading; // weak
HANDLE dword_10029C78; // idb HANDLE dword_10029C78; // idb
int dword_10029C98; // weak int dword_10029C98; // weak
int dword_10029C9C; // weak int dword_10029C9C; // weak

19
DiabloUI/_temp_funcs.h

@ -228,15 +228,16 @@ void __fastcall EntName_100071ED(HWND hWnd, unsigned int a2, int a3);
signed int EntName_10007220(); signed int EntName_10007220();
int __fastcall Fade_1000722B(int a1, int a2); void __fastcall Fade_ApplyPaletteRange(int range1, int range2);
int __fastcall Fade_100072BE(int a1); void __fastcall Fade_UpdatePaletteRange(int range);
signed int Fade_1000739F(); BOOL __cdecl Fade_CheckRange5();
signed int Fade_100073B4(); void __cdecl Fade_Range5SetZero();
void __fastcall Fade_100073C5(HWND hWnd, int a2); void __fastcall Fade_NoInputAndArt(HWND hWnd, BOOL bShowCurs);
BOOL UNKCALL Fade_100073EF(HWND hWnd); void __fastcall Fade_SetInputWindow(HWND hWnd);
int __fastcall Fade_100073FD(int a1, int a2, int a3); void __fastcall Fade_SetFadeTimer(int nTime);
int __stdcall Fade_10007420(int a1, int a2, int a3, int a4); void __stdcall Fade_TimerFunctionDlg(int a1);
signed int Fade_1000744D(); void __cdecl j_Fade_cpp_init();
void __cdecl Fade_cpp_init();
int (__stdcall *UNKCALL Focus_10007458(void *arg))(_DWORD); int (__stdcall *UNKCALL Focus_10007458(void *arg))(_DWORD);

223
DiabloUI/fade.cpp

@ -1,186 +1,157 @@
// ref: 0x1000722B // ref: 0x1000722B
int __fastcall Fade_1000722B(int a1, int a2) { return 0; } void __fastcall Fade_ApplyPaletteRange(int range1, int range2)
/* { {
int v2; // ebx tagPALETTEENTRY *v4; // eax MAPDST
int v3; // edi
char *v4; // eax
char *v5; // ecx
BYTE *v6; // esi BYTE *v6; // esi
BYTE v7; // al BYTE v7; // al
v2 = a1; v4 = local_GetArtPalEntry(0);
v3 = a2; if ( range1 == range2 )
v4 = local_10007895(0);
v5 = v4;
if ( v2 == v3 )
{ {
memcpy(&pPalEntries, v4, 0x400u); memcpy(fadepal, v4, 0x400u);
} }
else if ( v3 ) else if ( range2 )
{ {
v6 = &pPalEntries.peGreen; v6 = &fadepal[0].peGreen;
do do
{ {
v7 = v3 * (unsigned char)*v5 / v2; v7 = range2 * v4->peRed / range1;
v5 += 4; ++v4;
*(v6 - 1) = v7; *(v6 - 1) = v7;
*v6 = v3 * (unsigned char)*(v5 - 3) / v2; *v6 = range2 * v4[-1].peGreen / range1;
v6 += 4; v6 += 4;
*(v6 - 3) = v3 * (unsigned char)*(v5 - 2) / v2; *(v6 - 3) = range2 * v4[-1].peBlue / range1;
} }
while ( (signed int)v6 < (signed int)&dword_10029C70 + 1 ); while ( (signed int)v6 < (signed int)&fadepal[256].peGreen );
} }
else else
{ {
memcpy(&pPalEntries, v4, 0x400u); memcpy(fadepal, v4, 0x400u);
local_1000789D((char *)&pPalEntries); local_ClearPalette(fadepal);
} }
return SDrawUpdatePalette(0, 256, &pPalEntries, 1); SDrawUpdatePalette(0, 0x100u, fadepal, 1);
} */ }
// 100103FA: using guessed type int __stdcall SDrawUpdatePalette(_DWORD, _DWORD, _DWORD, _DWORD);
// 10029C70: using guessed type int dword_10029C70;
// ref: 0x100072BE // ref: 0x100072BE
int __fastcall Fade_100072BE(int a1) { return 0; } void __fastcall Fade_UpdatePaletteRange(int range)
/* { {
int v1; // ebx tagPALETTEENTRY *v2; // eax
char *v2; // eax tagPALETTEENTRY *v3; // edi
char *v3; // edi
BYTE *v4; // ecx BYTE *v4; // ecx
char v5; // al BYTE v5; // al
HPALETTE v6; // ebx HPALETTE v6; // ebx
int v8; // [esp+10h] [ebp-4h] int v7; // [esp+10h] [ebp-4h]
v1 = a1; v2 = local_GetArtPalEntry(0);
v2 = local_10007895(0); memcpy(fadepal, v2, 0x400u);
memcpy(&pPalEntries, v2, 0x400u); if ( range > 0 )
if ( v1 > 0 )
{ {
v8 = v1; v7 = range;
do do
{ {
v3 = local_10007895(0); v3 = local_GetArtPalEntry(0);
v4 = &pPalEntries.peGreen; v4 = &fadepal[0].peGreen;
do do
{ {
v5 = (unsigned char)*v3 / v1; v5 = v3->peRed / range;
v3 += 4; ++v3;
*(v4 - 1) -= v5; *(v4 - 1) -= v5;
*v4 -= (unsigned char)*(v3 - 3) / v1; *v4 -= v3[-1].peGreen / range;
v4 += 4; v4 += 4;
*(v4 - 3) -= (unsigned char)*(v3 - 2) / v1; *(v4 - 3) -= v3[-1].peBlue / range;
} }
while ( (signed int)v4 < (signed int)&dword_10029C70 + 1 ); while ( (signed int)v4 < (signed int)&fadepal[256].peGreen );
SDrawUpdatePalette(0, 256, &pPalEntries, 1); SDrawUpdatePalette(0, 0x100u, fadepal, 1);
--v8; --v7;
} }
while ( v8 ); while ( v7 );
} }
local_1000789D((char *)&pPalEntries); local_ClearPalette(fadepal);
SDrawUpdatePalette(0, 256, &pPalEntries, 1); SDrawUpdatePalette(0, 0x100u, fadepal, 1);
local_1000811B(); local_SetCursorDefault();
SDrawClearSurface(); SDrawClearSurface(0);
v6 = (HPALETTE)GetStockObject(15); v6 = (HPALETTE)GetStockObject(15);
GetPaletteEntries(v6, 0, 0xAu, &pPalEntries); GetPaletteEntries(v6, 0, 0xAu, fadepal);
GetPaletteEntries(v6, 0xAu, 0xAu, &stru_10029C48); GetPaletteEntries(v6, 0xAu, 0xAu, &fadepal[246]);
return SDrawUpdatePalette(0, 256, &pPalEntries, 1); SDrawUpdatePalette(0, 0x100u, fadepal, 1);
} */ }
// 100103FA: using guessed type int __stdcall SDrawUpdatePalette(_DWORD, _DWORD, _DWORD, _DWORD); // 1001043C: using guessed type int __stdcall SDrawClearSurface(_DWORD);
// 1001043C: using guessed type _DWORD __stdcall SDrawClearSurface();
// 10029C70: using guessed type int dword_10029C70;
// ref: 0x1000739F // ref: 0x1000739F
signed int Fade_1000739F() { return 0; } BOOL __cdecl Fade_CheckRange5()
/* { {
signed int result; // eax BOOL result; // eax
result = 0; result = 0;
if ( dword_10029C70 ) if ( sgbIsFading )
{ {
if ( dword_1002986C <= 5 ) if ( sgbFadeRange <= 5 )
result = 1; result = 1;
} }
return result; return result;
} */ }
// 1002986C: using guessed type int dword_1002986C; // 10029C70: using guessed type int sgbIsFading;
// 10029C70: using guessed type int dword_10029C70;
// ref: 0x100073B4 // ref: 0x100073B4
signed int Fade_100073B4() { return 0; } void __cdecl Fade_Range5SetZero()
/* { {
signed int result; // eax if ( Fade_CheckRange5() )
sgbIsFading = 0;
result = Fade_1000739F(); }
if ( result ) // 10029C70: using guessed type int sgbIsFading;
dword_10029C70 = 0;
return result;
} */
// 10029C70: using guessed type int dword_10029C70;
// ref: 0x100073C5 // ref: 0x100073C5
void __fastcall Fade_100073C5(HWND hWnd, int a2) { return; } void __fastcall Fade_NoInputAndArt(HWND hWnd, BOOL bShowCurs)
/* { {
int v2; // esi
HWND v3; // eax HWND v3; // eax
int result; // eax
v2 = a2;
v3 = GetParent(hWnd); v3 = GetParent(hWnd);
result = local_10007F04(v3); local_DisableKeyWaitMouse(v3);
if ( v2 ) if ( bShowCurs )
result = local_100080F1(); local_SetCursorArt();
dword_10029C70 = 0; sgbIsFading = 0;
dword_1002986C = 0; sgbFadeRange = 0;
return result; }
} */ // 10029C70: using guessed type int sgbIsFading;
// 1002986C: using guessed type int dword_1002986C;
// 10029C70: using guessed type int dword_10029C70;
// ref: 0x100073EF // ref: 0x100073EF
BOOL UNKCALL Fade_100073EF(HWND hWnd) { return 0; } void __fastcall Fade_SetInputWindow(HWND hWnd)
/* { {
HWND v1; // eax HWND v1; // eax
v1 = GetParent(hWnd); v1 = GetParent(hWnd);
return local_10007F04(v1); local_DisableKeyWaitMouse(v1);
} */ }
// ref: 0x100073FD // ref: 0x100073FD
int UNKCALL Fade_100073FD(void *arg, int a2) { return 0; } void __fastcall Fade_SetFadeTimer(int nTime)
/* { {
int result; // eax if ( !sgbIsFading )
if ( !dword_10029C70 )
{ {
result = SDlgSetTimer(arg, 16, 50, Fade_10007420); SDlgSetTimer(nTime, 16, 50, Fade_TimerFunctionDlg);
dword_10029C70 = 1; sgbIsFading = 1;
} }
return result; }
} */ // 10029C70: using guessed type int sgbIsFading;
// 10010412: using guessed type int __stdcall SDlgSetTimer(_DWORD, _DWORD, _DWORD, _DWORD);
// 10029C70: using guessed type int dword_10029C70;
// ref: 0x10007420 // ref: 0x10007420
int __stdcall Fade_10007420(int a1, int a2, int a3, int a4) { return 0; } void __stdcall Fade_TimerFunctionDlg(int a1)
/* { {
int result; // eax if ( sgbFadeRange > 5 )
{
if ( dword_1002986C > 5 ) SDlgKillTimer(a1, 16);
return SDlgKillTimer(a1, 16); }
result = Fade_1000722B(5, dword_1002986C); else
++dword_1002986C; {
return result; Fade_ApplyPaletteRange(5, sgbFadeRange);
} */ ++sgbFadeRange;
// 10010418: using guessed type int __stdcall SDlgKillTimer(_DWORD, _DWORD); }
// 1002986C: using guessed type int dword_1002986C; }
// ref: 0x1000744D // ref: 0x1000744D
signed int Fade_1000744D() { return 0; } void __cdecl Fade_cpp_init()
/* { {
signed int result; // eax fade_cpp_float = fade_cpp_float_value;
}
result = 2139095040; // 1001F428: using guessed type int fade_cpp_float_value;
dword_10029868 = 2139095040; // 10029868: using guessed type int fade_cpp_float;
return result;
} */
// 10029868: using guessed type int dword_10029868;

Loading…
Cancel
Save