diff --git a/3rdParty/Storm/Source/storm.cpp b/3rdParty/Storm/Source/storm.cpp index 5ba8cf4a2..2802af22a 100644 --- a/3rdParty/Storm/Source/storm.cpp +++ b/3rdParty/Storm/Source/storm.cpp @@ -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; diff --git a/3rdParty/Storm/Source/storm.def b/3rdParty/Storm/Source/storm.def index 240ce501d..fde2f7b9a 100644 --- a/3rdParty/Storm/Source/storm.def +++ b/3rdParty/Storm/Source/storm.def @@ -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 diff --git a/3rdParty/Storm/Source/storm.h b/3rdParty/Storm/Source/storm.h index 39b69942e..541b410f3 100644 --- a/3rdParty/Storm/Source/storm.h +++ b/3rdParty/Storm/Source/storm.h @@ -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); diff --git a/3rdParty/Storm/Source/storm_gcc.def b/3rdParty/Storm/Source/storm_gcc.def index 96812125f..d6b10a925 100644 --- a/3rdParty/Storm/Source/storm_gcc.def +++ b/3rdParty/Storm/Source/storm_gcc.def @@ -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 diff --git a/Diablo.dsp b/Diablo.dsp index ebddb788a..d0eb23b86 100644 --- a/Diablo.dsp +++ b/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" diff --git a/Diablo.vcxproj b/Diablo.vcxproj index 5c8043519..6378ca9e0 100644 --- a/Diablo.vcxproj +++ b/Diablo.vcxproj @@ -190,7 +190,7 @@ - + @@ -270,7 +270,7 @@ - + @@ -287,4 +287,4 @@ - \ No newline at end of file + diff --git a/Diablo.vcxproj.filters b/Diablo.vcxproj.filters index 1e55ea38d..5fb895af3 100644 --- a/Diablo.vcxproj.filters +++ b/Diablo.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -220,7 +220,7 @@ Source Files - + Source Files @@ -445,7 +445,7 @@ Header Files - + Header Files @@ -464,4 +464,4 @@ PKWare - \ No newline at end of file + diff --git a/DiabloUI/diabloui.h b/DiabloUI/diabloui.h index 86228f70e..7a130adab 100644 --- a/DiabloUI/diabloui.h +++ b/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__ */ diff --git a/Source/capture.cpp b/Source/capture.cpp index f46a7de64..ee8f64057 100644 --- a/Source/capture.cpp +++ b/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) diff --git a/Source/dx.cpp b/Source/dx.cpp index 54db8528f..e531673b9 100644 --- a/Source/dx.cpp +++ b/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; diff --git a/Source/dx.h b/Source/dx.h index 35bf00c3e..ddf5e5be2 100644 --- a/Source/dx.h +++ b/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(); diff --git a/Source/gamemenu.cpp b/Source/gamemenu.cpp index 1fceffed8..bec5fc602 100644 --- a/Source/gamemenu.cpp +++ b/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 ) { diff --git a/Source/gamemenu.h b/Source/gamemenu.h index 2470e42cb..192a09308 100644 --- a/Source/gamemenu.h +++ b/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(); diff --git a/Source/interfac.cpp b/Source/interfac.cpp index 0c10b2ccc..0f46236c6 100644 --- a/Source/interfac.cpp +++ b/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 diff --git a/Source/movie.cpp b/Source/movie.cpp index 0718b4a9c..a518ae391 100644 --- a/Source/movie.cpp +++ b/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] diff --git a/Source/mpqapi.cpp b/Source/mpqapi.cpp index c27728096..09a771681 100644 --- a/Source/mpqapi.cpp +++ b/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 diff --git a/Source/msgcmd.cpp b/Source/msgcmd.cpp index 44dbb915f..eb48db683 100644 --- a/Source/msgcmd.cpp +++ b/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); } } diff --git a/Source/objects.cpp b/Source/objects.cpp index 696c41ef4..236fafadd 100644 --- a/Source/objects.cpp +++ b/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 ) diff --git a/Source/player.cpp b/Source/player.cpp index 35cd2adf3..daa00a0dd 100644 --- a/Source/player.cpp +++ b/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) diff --git a/Source/player.h b/Source/player.h index 09820bbc3..9e655b1a2 100644 --- a/Source/player.h +++ b/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); diff --git a/Source/world.cpp b/Source/render.cpp similarity index 96% rename from Source/world.cpp rename to Source/render.cpp index 5e3dc3706..e44f7fd12 100644 --- a/Source/world.cpp +++ b/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 }; diff --git a/Source/world.h b/Source/render.h similarity index 90% rename from Source/world.h rename to Source/render.h index 428f09480..bdc08b316 100644 --- a/Source/world.h +++ b/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__ */ diff --git a/Source/scrollrt.cpp b/Source/scrollrt.cpp index e78044f15..8453dc580 100644 --- a/Source/scrollrt.cpp +++ b/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; diff --git a/defs.h b/defs.h index 97323ea63..033d2b162 100644 --- a/defs.h +++ b/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 int16 __PAIR__( int8 high, T low) { return ((( int16)high) << sizeof(high)*8) | uint8(low); } diff --git a/types.h b/types.h index 027771f2b..952405d6f 100644 --- a/types.h +++ b/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