Browse Source

Merge remote-tracking branch 'devilution/master'

pull/4/head
Dennis Duda 8 years ago
parent
commit
27b1fea2f7
  1. 2
      3rdParty/Storm/Source/storm.cpp
  2. 2
      3rdParty/Storm/Source/storm.def
  3. 2
      3rdParty/Storm/Source/storm.h
  4. 4
      3rdParty/Storm/Source/storm_gcc.def
  5. 2
      Diablo.dsp
  6. 6
      Diablo.vcxproj
  7. 8
      Diablo.vcxproj.filters
  8. 67
      DiabloUI/diabloui.h
  9. 4
      Source/capture.cpp
  10. 8
      Source/dx.cpp
  11. 8
      Source/dx.h
  12. 4
      Source/gamemenu.cpp
  13. 4
      Source/gamemenu.h
  14. 6
      Source/interfac.cpp
  15. 2
      Source/movie.cpp
  16. 2
      Source/mpqapi.cpp
  17. 2
      Source/msgcmd.cpp
  18. 14
      Source/objects.cpp
  19. 38
      Source/player.cpp
  20. 2
      Source/player.h
  21. 1
      Source/render.cpp
  22. 6
      Source/render.h
  23. 24
      Source/scrollrt.cpp
  24. 10
      defs.h
  25. 6
      types.h

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

@ -36,7 +36,7 @@ BOOL STORMAPI SNetSendTurn(char *data, size_t databytes) rBool;
BOOL STORMAPI SNetSetGameMode(DWORD modeFlags, bool makePublic) rBool;
BOOL STORMAPI SNetEnumGamesEx(int a1, int a2, int (__fastcall *callback)(DWORD, DWORD, DWORD), int *hintnextcall) rBool;
BOOL STORMAPI SNetSetServerChatCommand(const char *command) rBool;
BOOL STORMAPI SNetSendServerChatCommand(const char *command) rBool;
BOOL STORMAPI SNetDisconnectAll(DWORD flags) rBool;
BOOL STORMAPI SNetCreateLadderGame(const char *pszGameName, const char *pszGamePassword, const char *pszGameStatString, DWORD dwGameType, DWORD dwGameLadderType, DWORD dwGameModeFlags, char *GameTemplateData, int GameTemplateSize, int playerCount, char *creatorName, char *a11, int *playerID) rBool;

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

@ -34,7 +34,7 @@ EXPORTS
SNetUnregisterEventHandler @131 NONAME
SNetEnumGamesEx @133 NONAME
SNetSetServerChatCommand @134 NONAME
SNetSendServerChatCommand @134 NONAME
;SNetSendDatagram @135 NONAME
;SNetReceiveDatagram @136 NONAME
SNetDisconnectAll @137 NONAME

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

@ -432,7 +432,7 @@ SNetSetGameMode(
#define SNMakeGamePublic() SNetSetGameMode( (DWORD mode, SNetGetGameInfo(GAMEINFO_MODEFLAGS, &mode, 4), mode), true)
BOOL STORMAPI SNetEnumGamesEx(int a1, int a2, int (__fastcall *callback)(DWORD, DWORD, DWORD), int *hintnextcall);
BOOL STORMAPI SNetSetServerChatCommand(const char *command);
BOOL STORMAPI SNetSendServerChatCommand(const char *command);
BOOL STORMAPI SNetDisconnectAll(DWORD flags);
BOOL STORMAPI SNetCreateLadderGame(const char *pszGameName, const char *pszGamePassword, const char *pszGameStatString, DWORD dwGameType, DWORD dwGameLadderType, DWORD dwGameModeFlags, char *GameTemplateData, int GameTemplateSize, int playerCount, char *creatorName, char *a11, int *playerID);

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

@ -51,8 +51,8 @@ EXPORTS
SNetUnregisterEventHandler@8 @131 NONAME
SNetEnumGamesEx @133 NONAME
SNetSetServerChatCommand @134 NONAME
SNetSetServerChatCommand@4 @134 NONAME
SNetSendServerChatCommand @134 NONAME
SNetSendServerChatCommand@4 @134 NONAME
;SNetSendDatagram @135 NONAME
;SNetReceiveDatagram @136 NONAME
SNetDisconnectAll @137 NONAME

2
Diablo.dsp

@ -391,7 +391,7 @@ SOURCE=.\Source\wave.cpp
# End Source File
# Begin Source File
SOURCE=.\Source\world.cpp
SOURCE=.\Source\render.cpp
# End Source File
# End Group
# Begin Group "Resource Files"

6
Diablo.vcxproj

@ -190,7 +190,7 @@
<ClCompile Include="Source\track.cpp" />
<ClCompile Include="Source\trigs.cpp" />
<ClCompile Include="Source\wave.cpp" />
<ClCompile Include="Source\world.cpp" />
<ClCompile Include="Source\render.cpp" />
</ItemGroup>
<ItemGroup>
<Image Include="Diablo.ico" />
@ -270,7 +270,7 @@
<ClInclude Include="Source\track.h" />
<ClInclude Include="Source\trigs.h" />
<ClInclude Include="Source\wave.h" />
<ClInclude Include="Source\world.h" />
<ClInclude Include="Source\render.h" />
<ClInclude Include="structs.h" />
<ClInclude Include="types.h" />
</ItemGroup>
@ -287,4 +287,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

8
Diablo.vcxproj.filters

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
@ -220,7 +220,7 @@
<ClCompile Include="Source\wave.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="Source\world.cpp">
<ClCompile Include="Source\render.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="3rdParty\PKWare\explode.cpp">
@ -445,7 +445,7 @@
<ClInclude Include="Source\wave.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Source\world.h">
<ClInclude Include="Source\render.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="defs.h">
@ -464,4 +464,4 @@
<Filter>PKWare</Filter>
</ClInclude>
</ItemGroup>
</Project>
</Project>

67
DiabloUI/diabloui.h

@ -1,45 +1,40 @@
/*
* Diablo(TM)
*
* Copyright (C) 1996 Blizzard Entertainment
* All Rights Reserved.
*
* DiabloUI.h
* definitions for DiabloUI
*/
//HEADER_GOES_HERE
#ifndef __DIABLOUI_H__
#define __DIABLOUI_H__
#ifdef __GNUC__
extern "C" {
#endif
void __cdecl UiDestroy(); // { return; }
void __stdcall UiTitleDialog(int a1); // { return; }
void __cdecl UiInitialize(); // { return; }
void __stdcall UiCopyProtError(int a1); // { return; }
void __stdcall UiAppActivate(int a1); // { return; }
int __stdcall UiValidPlayerName(char *a1); // { return 0; }
int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name); // { return 0; }
int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty); // { return 0; }
void __stdcall UiCreditsDialog(int a1); // { return; }
int __stdcall UiMainMenuDialog(char *name, int *a2, void *fnSound, int a4); // { return 0; }
int __stdcall UiProgressDialog(HWND window, char *msg, int a3, void *fnfunc, int a5); // { return 0; }
int __cdecl UiProfileGetString(); // { return; }
void __cdecl UiProfileCallback(); // { return; }
void __cdecl UiProfileDraw(); // { return; }
void __cdecl UiCategoryCallback(); // { return; }
void __cdecl UiGetDataCallback(); // { return; }
void __cdecl UiAuthCallback(); // { return; }
void __cdecl UiSoundCallback(); // { return; }
void __cdecl UiMessageBoxCallback(); // { return; }
void __cdecl UiDrawDescCallback(); // { return; }
void __cdecl UiCreateGameCallback(); // { return; }
void __cdecl UiArtCallback(); // { return; }
int __stdcall UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *a6); // { return 0; }
int __stdcall UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *type); // { return 0; }
int __stdcall UiCreatePlayerDescription(_uiheroinfo *info, int mode, char *desc); // { return 0; }
int __stdcall UiSetupPlayerInfo(char *str, _uiheroinfo *info, int mode); // { return 0; }
void __cdecl UiDestroy();
void __stdcall UiTitleDialog(int a1);
void __cdecl UiInitialize();
void __stdcall UiCopyProtError(int a1);
void __stdcall UiAppActivate(int a1);
int __stdcall UiValidPlayerName(char *a1);
int __stdcall UiSelHeroMultDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, int *a6, char *name);
int __stdcall UiSelHeroSingDialog(void *fninfo, void *fncreate, void *fnremove, void *fnstats, int *a5, char *name, int *difficulty);
void __stdcall UiCreditsDialog(int a1);
int __stdcall UiMainMenuDialog(char *name, int *a2, void *fnSound, int a4);
int __stdcall UiProgressDialog(HWND window, char *msg, int a3, void *fnfunc, int a5);
int __cdecl UiProfileGetString();
void __cdecl UiProfileCallback();
void __cdecl UiProfileDraw();
void __cdecl UiCategoryCallback();
void __cdecl UiGetDataCallback();
void __cdecl UiAuthCallback();
void __cdecl UiSoundCallback();
void __cdecl UiMessageBoxCallback();
void __cdecl UiDrawDescCallback();
void __cdecl UiCreateGameCallback();
void __cdecl UiArtCallback();
int __stdcall UiSelectGame(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *a6);
int __stdcall UiSelectProvider(int a1, _SNETPROGRAMDATA *client_info, _SNETPLAYERDATA *user_info, _SNETUIDATA *ui_info, _SNETVERSIONDATA *file_info, int *type);
int __stdcall UiCreatePlayerDescription(_uiheroinfo *info, int mode, char *desc);
int __stdcall UiSetupPlayerInfo(char *str, _uiheroinfo *info, int mode);
#ifdef __GNUC__
}
#endif
#endif /* __DIABLOUI_H__ */

4
Source/capture.cpp

@ -14,7 +14,7 @@ void __cdecl CaptureScreen()
lpDDPalette->GetEntries(0, 0, 256, palette);
RedPalette(palette);
dx_lock_mutex();
lock_buf_priv();
bool success = CaptureHdr(hObject, 640, 480);
if (success)
{
@ -24,7 +24,7 @@ void __cdecl CaptureScreen()
success = CapturePal(hObject, palette);
}
}
dx_unlock_mutex();
unlock_buf_priv();
CloseHandle(hObject);
if (!success)

8
Source/dx.cpp

@ -184,7 +184,7 @@ HRESULT __fastcall dx_DirectDrawCreate(GUID *guid, IDirectDraw **DD, void *unkno
return ((int (__stdcall *)(GUID *, IDirectDraw **, void *))v5)(v8, v3, unknown);
}
void __cdecl dx_lock_mutex()
void __cdecl lock_buf_priv()
{
Screen *v0; // eax
int v1; // eax
@ -215,7 +215,7 @@ LABEL_9:
}
// 69CF0C: using guessed type int screen_buf_end;
void __cdecl dx_unlock_mutex()
void __cdecl unlock_buf_priv()
{
Screen *v0; // eax
int v1; // eax
@ -287,12 +287,12 @@ void __cdecl dx_reinit()
ClearCursor();
v0 = sgdwLockCount;
while ( sgdwLockCount )
dx_unlock_mutex();
unlock_buf_priv();
dx_cleanup();
drawpanflag = 255;
dx_init(ghMainWnd);
for ( ; v0; --v0 )
dx_lock_mutex();
lock_buf_priv();
LeaveCriticalSection(&sgMemCrit);
}
// 52571C: using guessed type int drawpanflag;

8
Source/dx.h

@ -23,10 +23,10 @@ void __fastcall dx_init(HWND hWnd);
void __cdecl dx_create_back_buffer();
void __cdecl dx_create_primary_surface();
HRESULT __fastcall dx_DirectDrawCreate(GUID *guid, IDirectDraw **DD, void *unknown);
void __cdecl j_dx_lock_mutex();
void __cdecl dx_lock_mutex();
void __cdecl j_dx_unlock_mutex();
void __cdecl dx_unlock_mutex();
void __cdecl j_lock_buf_priv();
void __cdecl lock_buf_priv();
void __cdecl j_unlock_buf_priv();
void __cdecl unlock_buf_priv();
void __cdecl dx_cleanup();
void __cdecl dx_reinit();
void __cdecl j_dx_reinit();

4
Source/gamemenu.cpp

@ -109,7 +109,7 @@ void __cdecl gamemenu_quit_game()
void __cdecl gamemenu_load_game()
{
LRESULT (__stdcall *saveProc)(HWND, UINT, WPARAM, LPARAM); // edi
WNDPROC saveProc; // edi
saveProc = SetWindowProc(DisableInputWndProc);
gamemenu_off();
@ -132,7 +132,7 @@ void __cdecl gamemenu_load_game()
void __cdecl gamemenu_save_game()
{
LRESULT (__stdcall *saveProc)(HWND, UINT, WPARAM, LPARAM); // edi
WNDPROC saveProc; // edi
if ( pcurs == CURSOR_HAND )
{

4
Source/gamemenu.h

@ -9,8 +9,8 @@ void __cdecl gamemenu_off();
void __cdecl gamemenu_handle_previous();
void __cdecl gamemenu_new_game();
void __cdecl gamemenu_quit_game();
void __cdecl gamemenu_load_game();
void __cdecl gamemenu_save_game();
void __cdecl gamemenu_load_game(); // should have 1-2 args
void __cdecl gamemenu_save_game(); // should have 1-2 args
void __cdecl gamemenu_restart_town();
void __cdecl gamemenu_options();
void __cdecl gamemenu_get_music();

6
Source/interfac.cpp

@ -49,7 +49,7 @@ void __cdecl DrawCutscene()
{
unsigned int v0; // esi
dx_lock_mutex();
lock_buf_priv();
CelDecodeOnly(64, 639, sgpBackCel, 1, 640);
v0 = 0;
if ( sgdwProgress )
@ -61,7 +61,7 @@ void __cdecl DrawCutscene()
progress_id);
while ( v0 < sgdwProgress );
}
dx_unlock_mutex();
unlock_buf_priv();
drawpanflag = 255;
scrollrt_draw_game_screen(0);
}
@ -85,7 +85,7 @@ void __fastcall DrawProgress(int screen_x, int screen_y, int progress_id)
void __fastcall ShowProgress(int uMsg)
{
LRESULT (__stdcall *saveProc)(HWND, UINT, WPARAM, LPARAM); // edi
WNDPROC saveProc; // edi
bool v3; // cl
int v4; // eax
int v5; // edx

2
Source/movie.cpp

@ -21,7 +21,7 @@ struct movie_cpp_init
void __fastcall play_movie(char *pszMovie, bool user_can_close)
{
char *v2; // esi
LRESULT (__stdcall *saveProc)(HWND, UINT, WPARAM, LPARAM); // edi
WNDPROC saveProc; // edi
//int v4; // eax
MSG Msg; // [esp+8h] [ebp-24h]
BOOL v6; // [esp+24h] [ebp-8h]

2
Source/mpqapi.cpp

@ -12,6 +12,8 @@ bool save_archive_open; // weak
int mpqapi_inf = 0x7F800000; // weak
//note: 32872 = 32768 + 104 (sizeof(TMPQHEADER))
/* rdata */
HANDLE sghArchive = (HANDLE)0xFFFFFFFF; // idb

2
Source/msgcmd.cpp

@ -62,7 +62,7 @@ void __cdecl msgcmd_send_chat()
if ( (unsigned int)(v1 - sgdwMsgCmdTimer) >= 2000 )
{
sgdwMsgCmdTimer = v1;
SNetSetServerChatCommand(v0->command);
SNetSendServerChatCommand(v0->command);
msgcmd_delete_server_cmd_W(&sgChat_Cmd, v0);
}
}

14
Source/objects.cpp

@ -2838,24 +2838,24 @@ void __fastcall Obj_BCrossDamage(int i)
int v4; // edx
char v5; // al
int v6; // ecx
int damage[5]; // [esp+4h] [ebp-18h]
int damage[4]; // [esp+4h] [ebp-18h]
int v8; // [esp+18h] [ebp-4h]
v1 = myplr;
v8 = i;
v2 = plr[myplr]._pmode == PM_DEATH;
damage[1] = 6;
damage[2] = 8;
damage[3] = 10;
damage[4] = 12;
damage[0] = 6;
damage[1] = 8;
damage[2] = 10;
damage[3] = 12;
if ( !v2 )
{
v3 = plr[v1]._pFireResist;
if ( v3 > 0 )
damage[(unsigned char)leveltype] -= v3 * damage[(unsigned char)leveltype] / 100;
damage[(unsigned char)leveltype-1] -= v3 * damage[(unsigned char)leveltype-1] / 100;
if ( plr[v1].WorldX == object[v8]._ox && plr[v1].WorldY == object[v8]._oy - 1 )
{
v4 = damage[(unsigned char)leveltype];
v4 = damage[(unsigned char)leveltype-1];
plr[v1]._pHitPoints -= v4;
plr[v1]._pHPBase -= v4;
if ( (signed int)(plr[v1]._pHitPoints & 0xFFFFFFC0) <= 0 )

38
Source/player.cpp

@ -663,26 +663,26 @@ LABEL_11:
}
// 5BB1ED: using guessed type char leveltype;
void __fastcall ClearPlrRVars(PlayerStruct *pPlayer)
void __fastcall ClearPlrRVars(PlayerStruct *p)
{
pPlayer->bReserved[0] = 0;
pPlayer->bReserved[1] = 0;
pPlayer->bReserved[2] = 0;
pPlayer->wReserved[0] = 0;
pPlayer->wReserved[1] = 0;
pPlayer->wReserved[2] = 0;
pPlayer->wReserved[3] = 0;
pPlayer->wReserved[4] = 0;
pPlayer->wReserved[5] = 0;
pPlayer->wReserved[6] = 0;
pPlayer->wReserved[7] = 0;
pPlayer->dwReserved[0] = 0;
pPlayer->dwReserved[1] = 0;
pPlayer->dwReserved[2] = 0;
pPlayer->dwReserved[3] = 0;
pPlayer->dwReserved[4] = 0;
pPlayer->dwReserved[5] = 0;
pPlayer->dwReserved[6] = 0;
p->bReserved[0] = 0;
p->bReserved[1] = 0;
p->bReserved[2] = 0;
p->wReserved[0] = 0;
p->wReserved[1] = 0;
p->wReserved[2] = 0;
p->wReserved[3] = 0;
p->wReserved[4] = 0;
p->wReserved[5] = 0;
p->wReserved[6] = 0;
p->wReserved[7] = 0;
p->dwReserved[0] = 0;
p->dwReserved[1] = 0;
p->dwReserved[2] = 0;
p->dwReserved[3] = 0;
p->dwReserved[4] = 0;
p->dwReserved[5] = 0;
p->dwReserved[6] = 0;
}
void __fastcall CreatePlayer(int pnum, char c)

2
Source/player.h

@ -29,7 +29,7 @@ void __fastcall FreePlayerGFX(int pnum);
void __fastcall NewPlrAnim(int pnum, int Peq, int numFrames, int Delay, int width);
void __fastcall ClearPlrPVars(int pnum);
void __fastcall SetPlrAnims(int pnum);
void __fastcall ClearPlrRVars(PlayerStruct *pPlayer);
void __fastcall ClearPlrRVars(PlayerStruct *p);
void __fastcall CreatePlayer(int pnum, char c);
int __fastcall CalcStatDiff(int pnum);
void __fastcall NextPlrLevel(int pnum);

1
Source/world.cpp → Source/render.cpp

@ -53,6 +53,7 @@ int WorldTbl3x16[48] =
60, 60, 60
};
// slope/angle tables, left and right
int WorldTbl17_1[17] = { 0, 4, 8, 16, 24, 36, 48, 64, 80, 100, 120, 144, 168, 196, 224, 256, 288 };
int WorldTbl17_2[17] = { 0, 32, 60, 88, 112, 136, 156, 176, 192, 208, 220, 232, 240, 248, 252, 256, 288 };

6
Source/world.h → Source/render.h

@ -1,6 +1,6 @@
//HEADER_GOES_HERE
#ifndef __WORLD_H__
#define __WORLD_H__
#ifndef __RENDER_H__
#define __RENDER_H__
void __fastcall drawTopArchesUpperScreen(unsigned char *pbDst);
void __fastcall drawBottomArchesUpperScreen(unsigned char *pbDst, unsigned int *pMask);
@ -25,4 +25,4 @@ extern int WorldTbl3x16[48];
extern int WorldTbl17_1[17];
extern int WorldTbl17_2[17];
#endif /* __WORLD_H__ */
#endif /* __RENDER_H__ */

24
Source/scrollrt.cpp

@ -2828,12 +2828,12 @@ void __cdecl ClearScreenBuffer()
{
int i; // edx
dx_lock_mutex();
lock_buf_priv();
for(i = 0; i < 480; i++)
memset(gpBuffer->row[i].pixels, 0, 640);
dx_unlock_mutex();
unlock_buf_priv();
}
#ifdef _DEBUG
@ -2973,16 +2973,16 @@ void __fastcall scrollrt_draw_game_screen(bool draw_cursor)
}
if ( draw_cursor )
{
dx_lock_mutex();
lock_buf_priv();
scrollrt_draw_cursor_item();
dx_unlock_mutex();
unlock_buf_priv();
}
DrawMain(dwHgt, 0, 0, 0, 0, 0);
if ( draw_cursor )
{
dx_lock_mutex();
lock_buf_priv();
scrollrt_draw_cursor_back_buffer();
dx_unlock_mutex();
unlock_buf_priv();
}
}
// 52571C: using guessed type int drawpanflag;
@ -3312,7 +3312,7 @@ void __fastcall DoBlitScreen(int dwX, int dwY, int dwWdt, int dwHgt)
v6 = 768 - dwWdt;
error_codea = (unsigned int)dwWdt >> 2;
v16 = v6;
dx_lock_mutex();
lock_buf_priv();
v7 = (char *)gpBuffer + v14;
v8 = (char *)DDS_desc.lpSurface + v15;
v9 = dwHgt;
@ -3324,7 +3324,7 @@ void __fastcall DoBlitScreen(int dwX, int dwY, int dwWdt, int dwHgt)
--v9;
}
while ( v9 );
dx_unlock_mutex();
unlock_buf_priv();
}
}
@ -3355,7 +3355,7 @@ void __cdecl DrawAndBlit()
dwHgt = 352;
}
drawpanflag = 0;
dx_lock_mutex();
lock_buf_priv();
if ( leveltype )
DrawView(ViewX, ViewY);
else
@ -3376,11 +3376,11 @@ void __cdecl DrawAndBlit()
dwHgt = 480;
}
scrollrt_draw_cursor_item();
dx_unlock_mutex();
unlock_buf_priv();
DrawMain(dwHgt, ddsdesc, drawhpflag, drawmanaflag, drawsbarflag, drawbtnflag);
dx_lock_mutex();
lock_buf_priv();
scrollrt_draw_cursor_back_buffer();
dx_unlock_mutex();
unlock_buf_priv();
drawhpflag = 0;
drawmanaflag = 0;
drawbtnflag = 0;

10
defs.h

@ -140,12 +140,9 @@ typedef ull uint64;
#ifdef __cplusplus
// memcpy() with determined behavoir: it always copies
// from the start to the end of the buffer
// note: it copies byte by byte, so it is not equivalent to, for example, rep movsd
#ifdef FAST_MEMCPY
#define qmemcpy memcpy
/*
#else
inline void *qmemcpy(void *dst, const void *src, size_t cnt)
{
char *out = (char *)dst;
@ -156,7 +153,8 @@ inline void *qmemcpy(void *dst, const void *src, size_t cnt)
--cnt;
}
return dst;
} */
}
#endif
// Generate a reference to pair of operands
template<class T> int16 __PAIR__( int8 high, T low) { return ((( int16)high) << sizeof(high)*8) | uint8(low); }

6
types.h

@ -53,6 +53,10 @@
#endif
// If defined, don't fry the CPU [Default -> Undefined]
#define SLEEP
// If defined, use standard memcpy() in place of qmemcpy() [Default -> Undefined]
// Will be replaced with [rep movsd] if optimization is used
#define FAST_MEMCPY
/* temp macro for asm XLAT */
#define ASM_XLAT(eax,ebx) eax = (eax & 0xFFFFFF00) + LOBYTE(ebx[LOBYTE(eax)])
@ -125,6 +129,6 @@
#include "Source/track.h"
#include "Source/trigs.h"
#include "Source/wave.h"
#include "Source/world.h"
#include "Source/render.h" // linked last, likely .s/.asm
#endif

Loading…
Cancel
Save