From 45b65b96112601548906567fb964483e6f35ff1b Mon Sep 17 00:00:00 2001 From: gho tik Date: Tue, 15 Dec 2015 11:42:37 -0500 Subject: [PATCH] v2_03_49_src Former-commit-id: 90f614b5617e748378a42e0ebe443a20cd48d8c4 --- Include/dxwnd.h | 3 +- build/dxwnd.dll | 2 +- build/dxwnd.exe | 2 +- build/exports/Enemy Zero.dxw | 32 +++++++++ .../exports/One Must Fall - Battlegrounds.dxw | 32 +++++++++ build/exports/Paladin 3 RIP.dxw | 32 +++++++++ ...rince of Persia - Warrior Within (GOG).dxw | 32 +++++++++ build/exports/Star Wars Rogue Squadron 3D.dxw | 32 +++++++++ build/exports/Tomb Raider - Underworld.dxw | 11 +-- build/exports/Typing of the Dead, the.dxw | 6 +- build/exports/Unreal Tournament.dxw | 3 + build/exports/V2000.dxw | 3 + build/exports/Vangers.dxw | 12 +++- build/exports/Virtua Cop 2.dxw | 3 + build/exports/Virtua Cop.dxw | 3 + build/exports/Wargasm.dxw | 5 +- build/exports/X-COM Interceptor.dxw | 5 +- build/exports/X-Files, the.dxw | 2 +- build/exports/ZPC Zero Population Count.dxw | 3 +- build/readme-relnotes.txt | 8 ++- dll/ddblit.cpp | 18 ++--- dll/ddraw.cpp | 10 +-- dll/dxhook.cpp | 12 +++- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 214528 -> 233472 bytes dll/dxwnd.vs2008.vcproj | 6 +- dll/hd3d.cpp | 2 +- dll/hd3d8.cpp | 4 +- dll/hd3d9.cpp | 4 +- dll/user32.cpp | 8 +++ dll/winproc.cpp | 1 + host/TabLogs.cpp | 1 + host/TargetDlg.cpp | 1 + host/TargetDlg.h | 1 + host/dxwndhost.aps | Bin 162156 -> 134268 bytes host/dxwndhost.rc | Bin 107698 -> 107926 bytes host/dxwndhost.vs2008.suo | Bin 46080 -> 50176 bytes .../dxwndhost.vs2008.vcproj.User-PC.User.user | 65 ------------------ host/dxwndhostView.cpp | 2 + host/resource | Bin 38092 -> 38184 bytes 40 files changed, 262 insertions(+), 106 deletions(-) create mode 100644 build/exports/Enemy Zero.dxw create mode 100644 build/exports/One Must Fall - Battlegrounds.dxw create mode 100644 build/exports/Paladin 3 RIP.dxw create mode 100644 build/exports/Prince of Persia - Warrior Within (GOG).dxw create mode 100644 build/exports/Star Wars Rogue Squadron 3D.dxw delete mode 100644 host/dxwndhost.vs2008.vcproj.User-PC.User.user diff --git a/Include/dxwnd.h b/Include/dxwnd.h index ecca996..863e955 100644 --- a/Include/dxwnd.h +++ b/Include/dxwnd.h @@ -227,8 +227,9 @@ #define TRACEHOOKS 0x00000400 // log hook operations #define OUTD3DTRACE 0x00000800 // traces DxWnd direct3d screen handling #define OUTDXWINTRACE 0x00001000 // traces DxWnd internal operations +#define ADDRELATIVETIME 0x08000000 // log timestamp is relative to previous line #define NOLOGCLOSE 0x10000000 // avoid closing the log file handle ("Riven, during CD changes ...) -#define ADDTIMESTAMP 0x20000000 // att timestamp (GetTickCount) to log file +#define ADDTIMESTAMP 0x20000000 // add timestamp (GetTickCount) to log file #define OUTDEBUGSTRING 0x40000000 // duplicate logs through OutputDebugString() #define ERASELOGFILE 0x80000000 // clears old trace file before writing new logs diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 80d28ca..5559888 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b4a56c750b4f879d9a6bf014e56fa028e80775f98c19db9213fcbf8567169193 +oid sha256:60fd77705e2eacd38c4bc60177d1f90e73b8a19e6bcd615465449f5b59eec3e5 size 622592 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index f250f67..a30e56e 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b1fae4424d81cb9fc6c32e8a30525dc678480e1bc9c40784d2b528a6d736f9bb +oid sha256:49ce540832a013e5fe01bbacfdbbeb19232c1205a8ac94ba391ba85cfb2b6b13 size 546816 diff --git a/build/exports/Enemy Zero.dxw b/build/exports/Enemy Zero.dxw new file mode 100644 index 0000000..aeab71e --- /dev/null +++ b/build/exports/Enemy Zero.dxw @@ -0,0 +1,32 @@ +[target] +title0=Enemy Zero +path0=F:\EZERO\EZERO.EXE +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=681574434 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=65536 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/One Must Fall - Battlegrounds.dxw b/build/exports/One Must Fall - Battlegrounds.dxw new file mode 100644 index 0000000..8d61745 --- /dev/null +++ b/build/exports/One Must Fall - Battlegrounds.dxw @@ -0,0 +1,32 @@ +[target] +title0=One Must Fall - Battlegrounds +path0=D:\Games\One Must Fall - Battlegrounds\Engine\OMFBG.exe +launchpath0= +module0=core_module.dll +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314915 +flagg0=1275068416 +flagh0=20 +flagi0=138412036 +flagj0=4736 +flagk0=327680 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Paladin 3 RIP.dxw b/build/exports/Paladin 3 RIP.dxw new file mode 100644 index 0000000..2262c6d --- /dev/null +++ b/build/exports/Paladin 3 RIP.dxw @@ -0,0 +1,32 @@ +[target] +title0=Paladin 3 RIP +path0=D:\Games\QGPAL3\rungame.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=205520900 +flagj0=4224 +flagk0=65536 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Prince of Persia - Warrior Within (GOG).dxw b/build/exports/Prince of Persia - Warrior Within (GOG).dxw new file mode 100644 index 0000000..39ee2dc --- /dev/null +++ b/build/exports/Prince of Persia - Warrior Within (GOG).dxw @@ -0,0 +1,32 @@ +[target] +title0=Prince of Persia - Warrior Within (GOG) +path0=D:\Games\Prince of Persia - Warrior Within\pop2.exe +launchpath0=D:\Games\Prince of Persia - Warrior Within\PrinceOfPersia.exe +module0= +opengllib0= +notes0= +registry0= +ver0=9 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=138412038 +flagj0=4224 +flagk0=65536 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Star Wars Rogue Squadron 3D.dxw b/build/exports/Star Wars Rogue Squadron 3D.dxw new file mode 100644 index 0000000..4b718e5 --- /dev/null +++ b/build/exports/Star Wars Rogue Squadron 3D.dxw @@ -0,0 +1,32 @@ +[target] +title0=Star Wars Rogue Squadron 3D +path0=D:\Games\rogue\Rogue Squadron.EXE +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314918 +flagg0=1207959552 +flagh0=20 +flagi0=138412038 +flagj0=4224 +flagk0=134283264 +tflag0=0 +initx0=0 +inity0=0 +minx0=0 +miny0=0 +maxx0=0 +maxy0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 diff --git a/build/exports/Tomb Raider - Underworld.dxw b/build/exports/Tomb Raider - Underworld.dxw index 2efd48e..87b842a 100644 --- a/build/exports/Tomb Raider - Underworld.dxw +++ b/build/exports/Tomb Raider - Underworld.dxw @@ -4,12 +4,16 @@ path0=D:\Games\Tomb Raider - Underworld\tru.exe launchpath0= module0= opengllib0= +notes0= +registry0= ver0=0 coord0=0 -flag0=679477282 +flag0=-1468006366 flagg0=1207959552 -flagh0=20 +flagh0=65556 flagi0=205520900 +flagj0=0 +flagk0=0 tflag0=0 initx0=0 inity0=0 @@ -25,7 +29,4 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 -notes0= -flagj0=0 -flagk0=0 swapeffect0=0 diff --git a/build/exports/Typing of the Dead, the.dxw b/build/exports/Typing of the Dead, the.dxw index 8cdcf03..5920074 100644 --- a/build/exports/Typing of the Dead, the.dxw +++ b/build/exports/Typing of the Dead, the.dxw @@ -11,7 +11,7 @@ flagg0=1207959552 flagh0=20 flagi0=138412036 flagj0=4224 -tflag0=1 +tflag0=0 initx0=0 inity0=0 minx0=0 @@ -26,3 +26,7 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +notes0= +registry0= +flagk0=65536 +swapeffect0=0 diff --git a/build/exports/Unreal Tournament.dxw b/build/exports/Unreal Tournament.dxw index f57b635..a64f39c 100644 --- a/build/exports/Unreal Tournament.dxw +++ b/build/exports/Unreal Tournament.dxw @@ -27,3 +27,6 @@ notes0= flagj0=128 winver0=0 maxres0=0 +registry0= +flagk0=65536 +swapeffect0=0 diff --git a/build/exports/V2000.dxw b/build/exports/V2000.dxw index 1488319..a3ff17e 100644 --- a/build/exports/V2000.dxw +++ b/build/exports/V2000.dxw @@ -27,3 +27,6 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +registry0= +flagk0=65536 +swapeffect0=0 diff --git a/build/exports/Vangers.dxw b/build/exports/Vangers.dxw index e1db5cd..8ceb025 100644 --- a/build/exports/Vangers.dxw +++ b/build/exports/Vangers.dxw @@ -5,10 +5,10 @@ module0= opengllib0= ver0=1 coord0=0 -flag0=136315424 +flag0=136315426 flagg0=1207959552 -flagh0=20 -flagi0=524288 +flagh0=8212 +flagi0=4726784 tflag0=0 initx0=0 inity0=0 @@ -24,3 +24,9 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +launchpath0= +notes0= +registry0= +flagj0=0 +flagk0=0 +swapeffect0=0 diff --git a/build/exports/Virtua Cop 2.dxw b/build/exports/Virtua Cop 2.dxw index 7eb88a2..cb743e6 100644 --- a/build/exports/Virtua Cop 2.dxw +++ b/build/exports/Virtua Cop 2.dxw @@ -27,3 +27,6 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +registry0= +flagk0=262144 +swapeffect0=0 diff --git a/build/exports/Virtua Cop.dxw b/build/exports/Virtua Cop.dxw index 2ad7338..c4618f1 100644 --- a/build/exports/Virtua Cop.dxw +++ b/build/exports/Virtua Cop.dxw @@ -27,3 +27,6 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +registry0= +flagk0=262144 +swapeffect0=0 diff --git a/build/exports/Wargasm.dxw b/build/exports/Wargasm.dxw index 61e04c5..5ddbf93 100644 --- a/build/exports/Wargasm.dxw +++ b/build/exports/Wargasm.dxw @@ -9,8 +9,8 @@ ver0=0 coord0=0 flag0=681574434 flagg0=1207959552 -flagh0=20 -flagi0=138412036 +flagh0=1044 +flagi0=1212153860 flagj0=4224 flagk0=0 tflag0=0 @@ -29,3 +29,4 @@ initts0=0 winver0=0 maxres0=-1 swapeffect0=0 +registry0=[HKEY_LOCAL_MACHINE\SOFTWARE\Digital Image Design]\n[HKEY_LOCAL_MACHINE\SOFTWARE\Digital Image Design\Default Config]\n"Configurable"=dword:00000000\n"Bilinear Filter"=dword:00000001\n"Fog"=dword:00000001\n"Windowed"=dword:00000000\n"Preferred Width"=dword:00000280\n"Preferred Height"=dword:000001e0\n\n diff --git a/build/exports/X-COM Interceptor.dxw b/build/exports/X-COM Interceptor.dxw index 0e9b3c3..e549a02 100644 --- a/build/exports/X-COM Interceptor.dxw +++ b/build/exports/X-COM Interceptor.dxw @@ -12,7 +12,7 @@ flagg0=1207959552 flagh0=20 flagi0=138543110 flagj0=4224 -tflag0=536870912 +tflag0=0 initx0=0 inity0=0 minx0=0 @@ -27,3 +27,6 @@ maxfps0=0 initts0=0 winver0=0 maxres0=-1 +registry0= +flagk0=65536 +swapeffect0=0 diff --git a/build/exports/X-Files, the.dxw b/build/exports/X-Files, the.dxw index 0d19694..09f9d17 100644 --- a/build/exports/X-Files, the.dxw +++ b/build/exports/X-Files, the.dxw @@ -13,7 +13,7 @@ flagg0=1209008128 flagh0=16 flagi0=138412036 flagj0=67113088 -flagk0=327680 +flagk0=65536 tflag0=0 initx0=0 inity0=0 diff --git a/build/exports/ZPC Zero Population Count.dxw b/build/exports/ZPC Zero Population Count.dxw index 55efbd7..13a3f62 100644 --- a/build/exports/ZPC Zero Population Count.dxw +++ b/build/exports/ZPC Zero Population Count.dxw @@ -25,7 +25,8 @@ initts0=0 launchpath0= notes0= flagj0=128 -flagk0=0 +flagk0=65536 winver0=0 maxres0=0 swapeffect0=0 +registry0= diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index ab8f15a..688214e 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -987,4 +987,10 @@ add: "force clipper" flag to redirect clipper definition to main window and prim fix: better handling of surfaces on minimize / restore events, mainly on WinXP fix: proper default values for"Share ddraw and GDI DC" and "Lock/Unlock Pitch Fix" flags - +v2.03.49 +fix: a few improvements in handling NULL lpDDSSource in Blit/Flip operations +optimization: avoid applying palette to primarty surface when emulated +add: option to print relative timing to log +fix: avoid handling textures at level greater than 0 since this seems to cause application crash +fix: restore cursor clipping through WM_SETFOCUS and DefWindowProc when focus is gained +fix: "One Must Fall Battlegrounds" keyboard fix - can't SetWindowsHookEx with WH_KEYBOARD and NULL thread \ No newline at end of file diff --git a/dll/ddblit.cpp b/dll/ddblit.cpp index 423214d..1619a66 100644 --- a/dll/ddblit.cpp +++ b/dll/ddblit.cpp @@ -168,13 +168,9 @@ static HRESULT sBltToPrimary(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdest // any blit operation! if(destrect.left == -32000) return DD_OK; // no blit on invisible window - if(!lpddssrc) { - if (isFlipping){ - // handle the flipping chain ... - //lpddssrc=lpDDSBack; - lpddssrc = dxwss.GetBackBufferSurface(); - OutTraceDW("Flip: setting flip chain to lpdds=%x\n", lpddssrc); - } + if(!(lpddssrc || (dwflags & DDBLT_COLORFILL))) { + lpddssrc = dxwss.GetBackBufferSurface(); + OutTraceDW("Flip: setting flip chain to lpdds=%x\n", lpddssrc); } // ========================= @@ -199,6 +195,7 @@ static HRESULT sBltToPrimary(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdest // Try to handle HDC lock concurrency.... if(res==DDERR_SURFACEBUSY){ (*pUnlockMethod(lpdds))(lpdds, NULL); + if(lpddssrc) (*pUnlockMethod(lpdds))(lpdds, NULL); if (IsDebug) BlitTrace("BUSY", lpsrcrect, &destrect, __LINE__); res= (*pBlt)(lpdds, &destrect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); @@ -291,12 +288,15 @@ static HRESULT sBltToPrimary(char *api, LPDIRECTDRAWSURFACE lpdds, LPRECT lpdest // Try to handle HDC lock concurrency.... if(res==DDERR_SURFACEBUSY){ if (bFlippedDC) (*pReleaseDC)(lpdds, hFlippedDC); -#if 0 + + // v2.03.49: resumed because if fixes locked surfaces on "Red Alert 1" on WinXP as reported by cloudstr + if(lpddssrc) { // lpddssrc could be NULL!!! res=(*pUnlockMethod(lpddssrc))(lpddssrc, NULL); if(res && (res!=DDERR_NOTLOCKED)) OutTraceE("Unlock ERROR: lpdds=%x err=%x(%s)\n", lpddssrc, res, ExplainDDError(res)); + } res=(*pUnlockMethod(lpdds))(lpdds, NULL); // v2.03.24 reintroduced because of "Virtua Cop" if(res && (res!=DDERR_NOTLOCKED)) OutTraceE("Unlock ERROR: lpdds=%x err=%x(%s)\n", lpdds, res, ExplainDDError(res)); -#endif + if (IsDebug) BlitTrace("BUSY", &emurect, &destrect, __LINE__); res=(*pBlt)(lpdds, &emurect, lpddssrc, lpsrcrect, dwflags, lpddbltfx); if (res) BlitError(res, lpsrcrect, &destrect, __LINE__); diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 62ce43b..76003df 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -3844,11 +3844,8 @@ HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dws lpddp, dwflags, dwstart, dwcount, lpentries); if(IsDebug) dxw.DumpPalette(dwcount, &lpentries[dwstart]); - res = (*pSetEntries)(lpddp, dwflags, dwstart, dwcount, lpentries); - if(res) OutTraceE("SetEntries: ERROR res=%x(%s)\n", res, ExplainDDError(res)); - else OutTraceDDRAW("SetEntries: OK\n"); - if((dxw.dwFlags1 & EMULATESURFACE) && (lpDDP == lpddp)){ + res = DD_OK; OutTraceDW("SetEntries: update PRIMARY palette lpDDP=%x\n", lpddp); if ((dwstart + dwcount > 256) || (dwstart<0)){ dwcount=256; @@ -3865,6 +3862,11 @@ HRESULT WINAPI extSetEntries(LPDIRECTDRAWPALETTE lpddp, DWORD dwflags, DWORD dws // v2.03.10: do not blit also in case of GDI mode if ((dxw.dwFlags1 & EMULATESURFACE) && !(dxw.dwFlags2 & NOPALETTEUPDATE) && !(dxw.dwFlags5 & GDIMODE)) dxw.ScreenRefresh(); } + else { + res = (*pSetEntries)(lpddp, dwflags, dwstart, dwcount, lpentries); + if(res) OutTraceE("SetEntries: ERROR res=%x(%s)\n", res, ExplainDDError(res)); + else OutTraceDDRAW("SetEntries: OK\n"); + } return res; } diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index dd565e2..6249cbd 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -209,7 +209,17 @@ void OutTrace(const char *format, ...) sBuf[DXWMAXLOGSIZE]=0; // just in case of log truncation va_end(al); if(tFlags & OUTTRACE) { - if(tFlags & ADDTIMESTAMP) fprintf(fp, "%08.8d: ", (*pGetTick)()); + if(tFlags & ADDTIMESTAMP) { + DWORD tCount = (*pGetTick)(); + if (tFlags & ADDRELATIVETIME){ + static DWORD tLastCount = 0; + DWORD tNow; + tNow = tCount; + tCount = tLastCount ? (tCount - tLastCount) : 0; + tLastCount = tNow; + } + fprintf(fp, "%08.8d: ", tCount); + } fputs(sBuf, fp); fflush(fp); } diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index e2fb9d6..4c9cb01 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -27,7 +27,7 @@ along with this program. If not, see . #include "TlHelp32.h" -#define VERSION "2.03.48" +#define VERSION "2.03.49" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 98895f4a3a7b96f1e601869d77a9325690c564ab..16184da77a428310401b544f206955c7d42d90b7 100644 GIT binary patch delta 15836 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 delta 4411 zcmb_ge{fXQ6@KTw-OUD;W!Y?&&1T&!NeDq8ZX#lYCD}lT2nZoTL`*SMtN{fPQ6olJ z{DC?XLf}GX;7DjBxe+GDBHtP#6L zq-i%=HSIPa0+}EDa-#cm;#9xte+PIM82%sqlkj}K)}C-y2)pC5b*vpRkEg##MMF|F z?d%W?VL9{NSF{J*?-^_H@~)F2uRS|Gk7%geIwp;qX9%A)4euRpf5`hgtI9HA`O#y-tMv8qp|>bch9ct;b&vA!U(>Dp(l$}d;rq!V zqX`#XeB34(!So~~uJR{ungfcH;s*$|1C*hL|5(|u|Lw5RLN)I320&g_e z>A9vMy}YN4=B1cwZdMPYIaUV$RW3(VUdZ#p;)v3lx!^Rsy!xmJ^RrR7x=RW_NAiV- zeg-uL?El)G6r?4*(N3^;Bfgvig{>;r7s>9a)d3l?G|mq9^(lY)>vMZD-ir1cxMx{Y0Fx|1VMV4;<2ic-1$NjI%k!ErT* z-xb;P6rTx*LauxgQ|^3|g1n%EB1qmTs{bZ)p-4C{_Xdy-@MVM>CI~+*SJO@5(Dfp~ z+bhHZTBL$y2HR}p>^wkUPPZsZiud-D%Rdm4Wu{#azc9cuvCyzfiOeFdR^9T69kAjm zysW6EijZCDBir4}dqljaPBe@(tymiqwJF2y&{kSl5#zWKy5;FBbabHg54s^dtFou3QrQ1ohy$*hVeP_C!2$(g+qTH+fn~)x`BUd zLv%+6SkLF7LgQOl*VWk~V%9R7QCw($Gpd$!EtaxhN5=Q}4-*=S3gar?yb#=AUZF;# zoqX0VZdaDLZ>M;bWZtO6=M0> zQWdp*C`8o#+`#>7-2Vxj2fhKm1^xwG0KNkfKtG__H9oUi{67BSYoaJszIl(2$_Jy@ z;1N9)W+;6|{Dd|nqt?L%IpCg^Dxapxri53|K+RJ6=Nqi!ATh?>FH>3DKH=epl~e+& zq?vgR&!7@f8z>pO(x8KU(CO`+;x<}u&S3Nh({!&%!3J4>=+-^sXKKr|$y$v@s0#$3 z0~Wvv*nkwk4x|E{`=Q7$^P-gnDASC@-3Md)U(=pecQe z*oF*sxk(-wp1YeqM*1Cf=O<$tM2gy$Gy&dcgO8 zTAU}T?U)~^EpK>E6w0L!XUSjf7@@W=3$Loiks!KNEaq^nZj>cPU^#fz3PjgOwR)ae zx!hf=2Mk`5tMgp!SgLnjR#RBGrcQU8#D}6Sz|DU}4R6rpvnI`-uR~cmSha=CH;w#^ zw4%7Gf*(|IHMZrC0$K36_*9oQ!*i3)$TxH?DlEEs;x!1TbZv>XO?*E$Lc!T5#4C#Q zRN3e>q?G(G@mEZ8Qreu11|0ov!~yX>?RKpK_q(+_&@Ry$BxU7nfHHnSo%AlL)bMoi z`fvUBU3?9#azHVRO1Rm8LAJPO5A>3>|`;zCr)U#mlOWp~6h0;JIhk5N+qSD$45pO5^93_}*g%XR4C!Z9B z=g@zT#{kqpGMUY zty-_-BYnbdHAs!SD@4wv=LuJQ)M?b|Wu?E}t6j_pR)4l3|Rmz|App-?d7jQ|vp35sD`p5BUQ}hJE z7a - - diff --git a/dll/hd3d.cpp b/dll/hd3d.cpp index bdc788c..bb75bcb 100644 --- a/dll/hd3d.cpp +++ b/dll/hd3d.cpp @@ -1826,7 +1826,7 @@ ULONG WINAPI extSetTexture9(void *lpd3dd, DWORD Stage, void* pTexture) } ret = (*pSetTexture9)(lpd3dd, Stage, pTexture); OutTraceD3D("Device::SetTexture(9): d3dd=%x stage=%x texture=%x ret=%x\n", lpd3dd, Stage, pTexture, ret); - if(pTexture) D3D9TextureHandling((void *)pTexture, Stage); + if(pTexture) D3D9TextureHandling((void *)pTexture, (int)Stage); return ret; } diff --git a/dll/hd3d8.cpp b/dll/hd3d8.cpp index 43de20c..e641791 100644 --- a/dll/hd3d8.cpp +++ b/dll/hd3d8.cpp @@ -27,7 +27,9 @@ void D3D8TextureHandling(void *arg, int Level) IDirect3DSurface8 *pSurfaceLevel; D3DSURFACE_DESC Desc; D3DLOCKED_RECT LockedRect; - //OutTrace("D3D8TextureHandling: arg=%x level=%d\n", (DWORD)arg, Level); + OutTraceB("D3D8TextureHandling: arg=%x level=%d\n", (DWORD)arg, Level); + // Beware: attempts to dump surfaces at level > 0 result in stack corruption!!! + if(Level > 0) return; if(res=lpd3dtex->GetSurfaceLevel(Level, &pSurfaceLevel)){ OutTraceE("Texture::GetSurfaceLevel ERROR: res=%d(%s)\n", res, ExplainDDError(res)); return; diff --git a/dll/hd3d9.cpp b/dll/hd3d9.cpp index 12ca359..2a031b4 100644 --- a/dll/hd3d9.cpp +++ b/dll/hd3d9.cpp @@ -27,7 +27,9 @@ void D3D9TextureHandling(void *arg, int Level) IDirect3DSurface9 *pSurfaceLevel; D3DSURFACE_DESC Desc; D3DLOCKED_RECT LockedRect; - //OutTrace("D3D9TextureHandling: arg=%x level=%d\n", (DWORD)arg, Level); + OutTraceB("D3D9TextureHandling: arg=%x level=%d\n", (DWORD)arg, Level); + // Beware: attempts to dump surfaces at level > 0 result in stack corruption!!! + if(Level > 0) return; if(res=lpd3dtex->GetSurfaceLevel(Level, &pSurfaceLevel)){ OutTraceE("Texture::GetSurfaceLevel ERROR: res=%d(%s)\n", res, ExplainDDError(res)); return; diff --git a/dll/user32.cpp b/dll/user32.cpp index f836c2d..6fc1c26 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -1676,6 +1676,8 @@ LRESULT WINAPI extDefWindowProcA(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPar res = (HRESULT)-1; if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProcA", hwnd, Msg, wParam, &lParam); + if((Msg == WM_SETFOCUS) && (dxw.dwFlags1 & CLIPCURSOR)) dxw.SetClipCursor(); + if (res==(HRESULT)-1) return (*pDefWindowProcA)(hwnd, Msg, wParam, lParam); else @@ -1690,6 +1692,8 @@ LRESULT WINAPI extDefWindowProcW(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lPar res = (HRESULT)-1; if(hwnd == dxw.GethWnd()) res=FixWindowProc("DefWindowProcW", hwnd, Msg, wParam, &lParam); + if((Msg == WM_SETFOCUS) && (dxw.dwFlags1 & CLIPCURSOR)) dxw.SetClipCursor(); + if (res==(HRESULT)-1) return (*pDefWindowProcW)(hwnd, Msg, wParam, lParam); else @@ -2950,7 +2954,11 @@ HHOOK WINAPI extSetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWOR lpfn=extMessageHookProc; } } + // v2.03.39: "One Must Fall Battlegrounds" keyboard fix + if((idHook == WH_KEYBOARD) && (dwThreadId == NULL)) dwThreadId = GetCurrentThreadId(); + ret=(*pSetWindowsHookEx)(idHook, lpfn, hMod, dwThreadId); + return ret; } diff --git a/dll/winproc.cpp b/dll/winproc.cpp index b75e146..6212ada 100644 --- a/dll/winproc.cpp +++ b/dll/winproc.cpp @@ -465,6 +465,7 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp break; case WM_SETFOCUS: OutTraceDW("WindowProc: hwnd=%x GOT FOCUS\n", hwnd); + if(dxw.dwFlags1 & CLIPCURSOR) dxw.SetClipCursor(); if (dxw.dwFlags1 & ENABLECLIPPING) extClipCursor(lpClipRegion); break; case WM_KILLFOCUS: diff --git a/host/TabLogs.cpp b/host/TabLogs.cpp index 5d618ba..dab1eab 100644 --- a/host/TabLogs.cpp +++ b/host/TabLogs.cpp @@ -45,6 +45,7 @@ void CTabLogs::DoDataExchange(CDataExchange* pDX) DDX_Check(pDX, IDC_OUTDEBUGSTRING, cTarget->m_OutDebugString); DDX_Check(pDX, IDC_ERASELOGFILE, cTarget->m_EraseLogFile); DDX_Check(pDX, IDC_ADDTIMESTAMP, cTarget->m_AddTimeStamp); + DDX_Check(pDX, IDC_ADDRELATIVETIME, cTarget->m_AddRelativeTime); DDX_Check(pDX, IDC_OUTWINMESSAGES, cTarget->m_OutWinMessages); DDX_Check(pDX, IDC_OUTDWTRACE, cTarget->m_OutDWTrace); DDX_Check(pDX, IDC_IMPORTTABLE, cTarget->m_ImportTable); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index c0d6bd4..47c73ae 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -44,6 +44,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_OutDebugString = FALSE; m_EraseLogFile = FALSE; m_AddTimeStamp = FALSE; + m_AddRelativeTime = FALSE; m_ImportTable = FALSE; m_TraceHooks = FALSE; m_DXProxed = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index b6f6983..b3dd9b4 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -43,6 +43,7 @@ public: BOOL m_LogEnabled; BOOL m_EraseLogFile; BOOL m_AddTimeStamp; + BOOL m_AddRelativeTime; BOOL m_OutDebugString; BOOL m_OutWinMessages; BOOL m_OutDWTrace; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index 4fbf6db92e83bf61a15af5bb881dc21de10afee8..0319b046fbe39e8f6d2236e4e7a05127ecce3bfb 100644 GIT binary patch delta 3691 zcmZu!3s6+&6+Y*J3j$SQSQhrpOO2+uuqcZ!T-jAtklpM<&|+39AU+`hmH0+eBZvn5 zHNUSYTBmWW6SbQT&NMNmleA)eb+nBNVy5FvJJyNX8E0%YZqL1Y7u5C6-20#NecyTf zkG)*(|7Y;CJ+U1&hYDf=JI9Ll`C@nCbK`UfaSEPx}p{MZL%;jnqSajHm{hB z7H-mE9QybK9X=T3hZbn#WAtdo?R>r-i*OPDOpp1vkKYl&-|#mLDmBxerFUayRtKI9umhpGVz|MS(AkqqC}(k zEj+s!p)2MTUenRoa|wS+r154SJ{8BmJ&?xV|5cFOOK*h6?)1?3ojEjqV+)O6`GopZ zJh$UL4GO2XJ=d%+@>^{-x4qQrb3g5N(Ksftsb$E#bkz32^9gq%j)xpt7S2bg_#JfYLT*9^zxxBBywA4``vcx zL|Rmf$pTJ^5Zj;ztzMr;3NHYcgxe~tE|=e4;qZ!ZjtSn8V2^c{U7W83=75_$&}))C zazuHVjix10X7DnjAw}>ZJN=g=oW-05Rcg7Ula|Xd)8%wasdG(G!PXm6N6eO37wtrt z$%Q!~ti(}TDyGdf!!Ov^h7_!1Hw@`aZ%ko^MT$Wplh3TiRMvel0sYKiRIxe61e_;X z>x}VO#oCN&^)CnNmpjUAPI3J$<~*2>tm={)tJwy6*04jDQm~f&EGA*@wP_Th|GFhgPT}!rgqYYuXI*qcX=Jo zGO@kfeE8K%tfOp(y{MnHz-D$hQ;Q$5v-I4;dNOrFE3(mjI#pXJ%xj(MpJ{bS$;@Wh z%CfVPQ`-kPN14kfErfY2Y@|tM$YR3Rw z>X_;g$vhM6WS6s40z)?CjuLmVpR!Vf-N>5nXj48J(3d&A_E5lB;H+eLYRVo2zt!dO zn{ECgXPMXSEcHMR9Hb-PsmDWX|8OIAvM+}lgu}=leX7ADf&UIKEEKLrvGKL)VS@ap zKzxadS7J2l;6^N9r}1OO{7Trix#+F z*C>QcwsP^GWXreYnruy3`fu4PTK0`>Y3qw+Yfb$`*}7Wa9kK$a8=B>W0c)ckl@43v z`~ER|w`p`pkC}lZO}FI;!GmnaGJT+H zT1JHk;i;I!68Ns=d046s^lr)uOKk!5=EGrTKD++W1UcbiHgZeYZe(k=*kyb*yR~JS zY`3z4*0Akids^k1=w&^vBV>(_Y1(9*ecBe!>e_T6hTU$9W1qF@Wly^`p8cy$D|>Uu z8?jYGUdz^WRwG%oK{%i7-I^8B&@1Qre!GS#+hv?}w8yi#?P4rNu*>ZV_DQ>VG{pG2 zz?Js>al)y=JiA^S3rJJ}wsE*^qE99-$pcy?9mpvX->5aR3K2VeP&M?On?CZ5IFED4Nd@(w@)e&&_1N zPdT1gc=lwP+dl>av`-4>I2e&*3LzcS!~CHL{zweK!+!p71RqB|eBtExyi`k1+8@fp zxqcm?T|q!{+`-@w zK2(9qm}3b5iQ9mynn-qIFCTJ~hq--Vc<>thoyT`fu6s0sZ3DM~%xh3XvbO$(0X~vvRqhi>h`Z-|wTO4_64$ zQ76c|;uC%zL)#7a$r(C}93?rK?;!WD6ml{u>3c00RM1Vwo~{>9&qVTL-N*~esm#0N zRFkt`bm*fM?vkUa5K>3PkyGjor%}>R_2o1`XQjIWGF1 z3pJ1w5!pw5U+m}KjNms?{Kd*}d`kqsg*t1P8|ELq%E!V6N|545?yRQP#?wpS3^@-( z=O8&r)yPX0lB1wJ*XxkSFC*t%4FxSizPet}#ayMi-MxaWuvV9OHJg4^*HHRzZ7OMk P!3*@HwV*ezWYFXP<+9`J delta 22195 zcmaKU37nioweMFw2_ealJ+o#H0l@^Pd$u0-p6+iZZF;(!UNV`mG`WHTDgjh>n1tm* zAdq-RD3L8eP?SJ|AcG*Q0Rln@Pk+~o8}NSDcex6JPXT`qH1B_w`ugihxF~de=bSoq z>QvP^r%qMPC*MBso&P&=b87a|wGr>MBTq_QIC%DHC!HUww6#|{;`W69FpcJJ`@1tu zt6f?jIq;FQ%tx)mm4RF;-8ba5$GW?tUYGIGsY=Sv_$8k~F|V6JiByWe+r2n{`>XPq zTtR3$ydH)X%2}rA_KxK5yaU9&qXZCYtH(QYY&K zQA!W^&{fJWFfQg57hzasKtnpa8x4PP5K7q-~vo#*; z^iH&=ZZM0?N%p-BrqO<9gQ>SyY%opsNtDbf3_Ykl)|+PuV?ADlK#S&_DlN!p^p^W| z7~}0xZ;f4cooSr=FHA8ADRYCBfpj)KkY3IGXz%pCVAot{TFhzo((6o9%jrzXQ;xda zn_%U&$GtDw2MGTq#w)5)T%Mx|6YpsA&aiKyrLHrL2mNCF3h8WrWiV05;@9hHYio;o zXVu`+*}fbjV&0eSvg=KA%U5dfg9(f@RqXJ-YEQl1%rR%%%jjpV{SJQSpHoBaW)fA1 zd*@|(W%uk$OL(LPI`b)AzJG={O zuvyGrniBy*r+1;bX>O!3Nz`55MPsOG76i22-o-WO8f4tN#O{SS=2AQV1~b=OW{)r+07%s!B3V}G1D&Zh7h7X#lUXw#wrjC zUMCyo>!vEa9xJ2BTg!D$=pCb!EJX$y??W3Z!!%nBZAghoKC^KpkE#B z-nZ->n_$9js#eeDNtaM?B>veh7c$GxHSZPmHFb<_cE>rZP-t7v_ z`m0K03v=Z{(yy#cWXir5?ds`BXdWudd;*&COme8fGPml|M-PD*oX@ro%Kue zwTOP$JOAB0@5-0`%KXB_N8zU<#=*Y)x_QQxQ@=LLUHR@`o1;;F>(}N@1&zM`8*`!K zJ9_5tF?a0kZ2IdbeO+rW2z?dozyB=|!W3=u2j);vnh(red&&o9iK}(8 zy-hF_1=(9aFq7^70ga;VZ$2=S?2-?wfYuK|ar%d*)lsY_z;^`z=@;3zsz~z%JNu(* zTc_D#=<9U*&FYuk{1Mo^{!x|h?vKm?qci?)Zk}|A=fQ~3H1d{vgI+Iw_wM~1AfDGY zZQ3~crGM<7Uo{IL)zm%aF#Gl%bDe#8kC{QG+va%Q=DM*QmMI6j`xj>3><%y59z)z! zs0{eoawVV3m-C)I_E)BHxW|jaa4{+Y&w?d61}-{sW-QZK(Ji|LLAiZ zmk7|&!vGCA0O(YTYWzUJs8;K(XdFg$J4qZcn*h@WE92R%Z!p%Ai(@fGPrN7l#n<^cI=4J>Z%0 z5fd=1gJCY_ASvU+403@FK=6uA7%^=GtF{~1H8{7Zx3XAS=@*LWT(-jQ9DLIK@c8iT z{bgACOganW=*7?-lBc)Qo9-t^RAf*WK*NxFAd$%g&@O5pI@Z7l9(Uh?C186u=+YGg z8x$ungw#k7w$}tfSRxRL}jNCg1JUe+EPaKq}&I$V?n)(D=JuzDZ{OCM5nZ zQh*^wg1$ute0O;zSoL%^nJK4WZoQh%_TY1v(J{~K@_Oh$?Va&X{_X1NmR}fZf_EW+ zmR}~ucb9&5=r5Rpt~)Bf6i?E3JSKGAn81w3l$Br5%|3H@?20=gShMg7{LgS5c2z|` zpC}{{tb1)9DAFlxE~1{P!^e31djS4DaG&V_0s}A$h#f{0yB`s`G7uObnz`OM zz=x@MD$K>dpQVmf2KrXf1R2VsJ%sYCj=(CBkpd;@m1q;mQhFum5Lhu?jr}8&$g~mR zOO_FafPz8Pz#xOquvZ6Ub+useaFuxql@)`iiJ|iqDyv2%S-?PArnE9t5MBwilvIR; zOoV#0nxtuO5n#i?lEP%Ael2!{w5%{u33jl9(K^DUCD;-NqvfSSAL3xJKv-`~cPL<( zq_S%yi_Xvq3`JOYlG_N9ZD-Vhf`ZX>)|@Onqb3F@vgl;u89WK#kO3o$#_$&V%$MB^ zn;cXX6Hi8;i4Nk*AxjtS)E>45RWy8!c4|MT1Q_)SQZXhzdmJVhJ~oo zscx&BX*0FL$5bXRYSNRsWI190Sk*oukiU$)N`ayXs-%`b>0%CoVHF)fsvPgxW1dDj zMtfM!B6y+9AV_qWCfZ}pHmylkkc_xLP|hSuh>rUD*n+zu5^N@yT;ZpR>_ znV}@Ysxa$ z4<^e6x+GBt!b`=M4&8Fn6RcNoKPs`$m96~1O5OwIp-srFJ(g~u>o@K^fT(m-OBq|iXC{gXbG(j{J4*qSqM z8N^}+X|iY=!qHHJ$xJ#Qbe_ah?Hh2@_P9k zlh?=s7>%)Wr6LM|G{(-Cs(k6yOsNwm05WAwPbi0+w6~sX4oa~QLJIp*O!WKkq%`@R zACJY82A>ugc31l<5q8fGpJxtS%_w1t3J82L6``US?VFL4?md1kyorhE2=x3HH*GrHPk z1{ceD%)4TdW=x(kTp-Z?2?5la$gtHWly*%-q^>85d1TQLy{B`)cL%;GtG9}3Oyxbz59}J;m<$x@l--Qc)4~)0^X^ zOWQcC-92xaSs2iG&43Oh3M+b{L1Lvnleta%5~;1-6HO4fFR_A_PF(vY%^|wTC$iW; zMcaCGSZT+QtVpV#lKj97YcFN7W^=uXY?d7!4vbiKUGQ`?B*_9)3jDmVBa2Qs6<~B! z>$#y+x=0J4KY`>V2xwLI)L5auT*1EZ4KsaVNYQ{LeYaF;pG&rFs{PA1s&?+6^G(w+ zA>op_Tp^Xt!d+vM!l^sK-9C&{)0N&#B8hz|;f+1^eA99qv#1Z^2_YNA97R{)KY`|M z^p!Iiiv4;s7!>#-VPEgrO$aKCvFD!eLi_{A@aiYKMs;+{3crSFl*&+o7k2j3ud$aOfBPotagS>N=?q75?LCB;}0VbG~U@samVmOmZl}Qo4-`OP~`I>^}c2PRNXX^#aqJ zW%0$h!dPT;6q`n)x-7-a0A5TYfdx+!r4UQznD#LR9~pHq)(m_2g{EbpQqU|EN14lJ zNbxusZDHLnnL`e z#?^E{NI321OnbsbrWt!#UX+P!A~S@5T8wqnMOxC)WFkL6r*f$5Iw~ufY)cWjAHwJe zinP4;rN=JQA^O11FI7kk%GyWdCP9caqqsh}UNCeKoWo(DrIw4|93qc6BLg#s4FOft zNiW_yn@eQ!%M+ArV$&UDN?g2ZQx}`*2Z!_w$5t+6vuvaKh@bWtd&!GU)A39xEw7fb zZA)f+UhghHA{xl%^0`635ECW1EJ?k60$ij$nF5q=DCAZRY4{RkMkd+6Tx=SKxIGz0 zP^Jb0G95)hrB)FSUIU$K21Q2HfqM!~8kZ!QWb>Dpruk#obM`tK|ZV&S1a7pci&rEQ4YyaT6wkePu!E5#IKD+@G-T_z)7 zifJLs8YytX>ssWIv>lh4>0)W%NY?)eJ7rKfZzq!#(Pf&0mH;6mMIlE`P!n|#pETWv zEiv#M3`SkVCn$;*kwPu5>`y=<7wvI>&ZsDId1`=+G49N;9(5TYKtzbc4z^ootY9eq zPPN>WSHjsW z1$9vu)J?RPU1pk2V!2&)AxdNh6GJ41i|X8BME(WR}ALV6}VF^Mqf>_2zOEi$`5N=S)y~ z02{XDNRR`it5f=VLK!0a1?8t*onk+^+_aXoHH!YT=vg16qWUVgux3*#K7?@UI|Nst zTLJ?~Oud+k;AYs$uxXa%JUs}lu%7djwjx5rX!fFE(<&?JAkVIQ7T2BBXHyEjjO`hF z;h0NKRpUKL&l4Mj4fg(F)0E+{t5Wb75kU}(foG~rk!;MxVKRpSht-G{bIMXBs4tD60izw3LWO$1Q-Tv!6$FOBh{wGwf^Y%$y@b;=-4y ztkIeQO=9zleK<{5s;>iDZ(G-!mPMiZE(sv2a{d( z8e0q655-&{BuE%6Hl#Y}8U`)W0F3uA#X)Q)kv(M9y0lZhJ^l*QILLCUH3wNmLWr0P zgF={OE{|X@=7OLQCfIVua9u_i+B>c=4Wf4;q|Fzi`wV(QOmuvw+uc`~7V)KO-g5&v z+zf-IiMjA+hTVIGX?CflmMhJiu+^hoDyat*YQq}|A_mi`5)5<91verMc~iX|Mz|Vx z!N*wG!Qmbs;j~9iI%Mz${8pMq3}Ws`NGxU; zq5YNQy+#j#+FckVOnZlrm?uQm2}A}ZVx>rbV{Yyp~9Dz)asG6sdSuLQ_m@K z@XF&{7%y5E7)=hm2c5YnTd(ax91H1@H67^YGeZ@qL*TmoN48{jFIjdb*8L>`>F`&8 z>Kq7&&?}A9Hq-Kngx&m@X`Ty*Bs=aDP82aJsSNJ+wsj+G4vc;NF*6Uhg9DOumU5f9 zUbf0a#tk?I5)*J(LO5w<;p3)(x7p)NWE1JyN1{OI=U~x;_%4K8j)6*-`1WaA4{lZygL8hWCtuh9)HHuNL`?gS z6Hy^sXaQ|6>fBe2V7ydBYx*eM9e{V(m2*j zRR(Z1pL2%o?Ayj*tEiArw03g&JVH}UBD!nZ9*ZH#A5;zD>1319ff|SD7&fS%PbVod zWRlR->aCOtWl0#d!w+)XxZZ-ur}~Zn?a}|nz9p!FtM3V_Fn`r>_)$R>LANOAeS+FB z<{Nrkz=U*lqmmB^p;4B=gB$qWSP3Ee>N^7l4hwbdV}mL=-3sUB$`20M#^TCZ?Slg^ z!t{o(i&V&Z?Em3`iotzhDvF}*$-guc6Y>s0*`Qa9=CG77@cES6;T$QQ{nAw*fZ^$b zmhGw6m|4eEzlj`jhaV?Yxf3E#4?R#|6hBgs7)f+8hD>)!5xWOX;oc!N!Kw(qRuE47 zVxig|jK4#YntgwRY2XJDblHrAp$8K5EF$zhJ^VBxAX~JAi?Zxw z9@IXOV06SDah+*cC>@Z)ldKo@x}8lLwcGJ1LUOO+o7gxe za(B6dtK3!f!|jD%R!GD2xwHn0K>TcsxughJqJm7LR?}F7)}Zgfu=5{~i%w`AP|+5hYd8cJ0k(_Tk)Gm6m3% zu!8%kV|g7rd&kYDarGE_HtqbW;QQAO`kH{-_y5A_P(PWiTJ{*r!-CGHSn=y(6jIt34Zwtsw=;Gt=4 z>~b`A#-|X+g%}FnKeHae!}IPR4}Gv&;CHpP_r7gfWRA9Zw*D5=a@MC+ZI`N0`={_$ zO{6}RKvm&80=o|F1&!Z+3s$X+76s0dqvJMdn?P;0wKIcgIJRk#g#c|wDWHxow8ZsoerbiSZTVhQpLDY;tR!eXwSTG9Tln-V;Lne>4Fi3^NJ4H zUPjB2QiX$GG&q4yJ0OGIcALcC;E;pfc&f;r5LBE)WkCZRwrEK8^E`>Uo6FUjviFm` zIM-+Ghj~+&jrx>MVggdhT#}z!0O#JSb)+OGiMZx=HPq{F*B#Q<+jTUba)sYHnon-m z&BvTO%)B+CWeia|NmtPE%#tPVrel6uq|2z~DjG+FELJz=j`xGlmIp}cZtA$8?LWSS ztkV8yb1QM#fp5mgF?aCwfi?dyvkw8AxRZ#U8A!ZX@M)LJ zIGI-)@4%Ha=`qJf!KGm)3S152uz&9NIZr?gkT(w1qeC01;#L+{q4ZoDmlL>x8&_e5 zq`vsvcn^Zb5UbuHPR4T;=d0;nSAjg5I>8N`>JF}Tqm!t?10Uf{Wl8Qu1X>rK<*eF;O4Mg?itTyI(>!`W>w50!64`OtkCAoArG z$<&yp5xeCr>0t!YeOZlgq4%WPX8p!$n}>zUeH+a@xlCNcVC)mqeWlvZGgBd=r>1!b z=Fc^VwC0JqlP!_ zm4X+in(VD1potq0XtFnMUkh>mGg_CRH!crU>(N)2rH|XgZ#1o6VMWyN9rIFkUxKl( zRrjU9+{3=zy8o=7L8${H~gVUm(}mFYw;#lR+Dfm%Jc2e!&hZ^=O%YXP;EB+ z0(MMWL28^@(~}AOSp$BBQ>+w|MY^E|v(o1*d1nYoSvEnc8CRrDZZWeZp6m4NiCbK7 zhmQ-lm^paz2`R#i$frugA?(yvhe_nWjP42q zMVbqD9y1)?^+o&8c7UR@;Y1SGQEQ!B8;a!7H!2K7BnFCv$EAR;V)1GJP@CO z1WA4&Vq5MMSkCf&V`>`pB}95~tGd}eTh)cW4+!1Ea<%A)hHHqwu!r1b7V!pg#a-r5 zE_}m5zH^sZz>p{IQlI_%yUdbm7Plz5?i}tPb1>0Icbr2_;aHaTdfXbtT<{Oae%CZI z%T?c1K`;2OZdq?}g~uK0*Wc9$;qQPf3^C?SVu>zwD09h|cHV8~pBy6NIEca#mH_tx zLO6FC#o>zJYm}=&kjCMCbm^1ifADUkj6!U%k1um14hr^-_N}{dMP z`~@Lu++0E!$rqGZES|V_>i2ZgeC~T@Aw?kp^MPKx9S>E&-O&)5wZ6BcCT5&kg_XWcCWU%bXn4(wjh}ttNo(_ymeB;vleuQA_GE9BE4q z1nh^~RI=v#wQ%(P+RjN1GJL-ZefRxpHh14|7S;#s^Ob%({{ho5Ub^4#fXa8|1FGB; zA5h+xyTVpi*oi`Q_2KRSZHD=h3kjJB*;vKl9fDuL(<4UL%n7Yp!t%m~UI;=6K zaMOy8HNjsj-50iN2d{O7`?qT!UfZri_|bM%OXCjwS&UHMxmld2V_!yD0x%7EK5euJ zylkq0u9-nxo9-S2XjY!qs1Q#Gg3S;)j(_?qRKd>BBm_cRg$lru6%+hjrlJdDtvvHmyHa#=Sq*+GqdR ze3ntS{aEMCGe1`SzU3eXJYqh>G|@*)8y8M{M4P(q5v`6w%Tjk29y2G_6B_%Xp7!uW zj`h%}d-k7?s0fFT>d2-?mFwD3wXxrHg@;B}HNP2Ev-fvbtMO6Q_CO%-{4;4Yh@Z@!$!+ADviRqsU&*2~X-rn>u+ zD@@+0vMk-HeR^Z3X>8-<0T_kWPf-p}_1QQb#nU?Q+r$u|R)f87r+UuEc52H2izhtb zIc?|A=Tw%@Kc}*s^_;f6(LuI7r`2C`g%2G~)AKq8$3AZw!|`Wtj)UbsKguS-u6^D# zRDDaaLiltkfj#2yVUiA0fv`WHmFVM!nd9JsVW=81AhEV9P0J73f({`QNyRHnV8OJ&(h+R(sDs)Tc1Qdw?# zNo)P&C9U<=OJ*Maj9g%peR9QQy7`(R=_nD3ck!p)*v%#I4kwWs(&H!4NYvZ+bM43( zKUXc>_;a&xK@Iz`M*t5VwpT%gKYzEc5Sr0K1EDP&2?3QLrXM0fIb!#FWn zW$p6t%Q_{tysTZ`&%!@!tr4O$Main}R2*b@*?cHx=L0y$Rk7lxITM4fwYahnNqp zeXb$$pLHW$jYpViBYzn@W_+Eu-aBFB`;G67KN+QsBeyoSo9jkiZAzLij?8TCHaCx~ zXl^%mjSQpwz{n{6``E~P&7U>TkF>UQoBuUZZ26qIeB{cOqs)0DPqkb$a%t=NnA;Ei zt#!A-TgAP5*LnWPrX{l<`u*HfkxchSj-UTW!Y^I$QXT#Neesk3YRp5UKm5g9{9M25 zAJg!&;q{N{=juQ5&-#z)XY{gq!@n2JmEUh1A;0GyC%<3Ko3+hz=1dy!dHrAK2nQt+nF}&(fdP8omm;-)#TqznMgT6)Ap8 zn8y88q-o<^%d^k)ymxL3)9m|qT$a;cSHffYy?e*8(jc;Z;eg0Nc3NFzT;0ZrX5@{! zX4^&|4^J|-yDl=fZs%lU2dR*$HzRi*&}=soddoCpEkQR2W*GY`Ko@VG zMU9NdzvvnMX`9AB{Gb1X5O2>hBS$r&sd1?F&H^+w4!mZ4){NY@q}iTB(54PEvi%4& zM<2_NMJw@UyMsP{+iUD7(Z88Nb5uBfz}SzdFs^JyZq0%3c+j<-48G$5J?AuZ0fqW{ z{B1)KtHan+$46$>J$kws$(;(uRN=HQnvsw3v4=iB^CdI#)S71dK7C9(3k{5qBpkz(e>3(s1pLgM;Bt!qJ9eP%1OPwz zDe6v$01CAnxEpHSCFOB%K>XLG?7eSn>w!x2i5Iaax{tq4kJwH1NK8@nzb%T`>*wmn z`|T0iI#KJqlR}+|Xl^NldHeuC7eW8;ZwFgyn?82FVn$9x+p|#K^LtPcf<9h;&)ARM z$1X22Qu$aAJJI%u)HYE)jkX^rsp#XUX!~RL@hIBP9j9aumm~HP666yUhVy3G1e&u) zuZ-ANCq|-mUq=DZRy%J}q@ivbzPcxYc-3IUzIOr)-8qvm01xA9MFC%%>8oQ^#QvPV zcF@;tLlHYlRd%h8*h(4T_X+&=$>6&RU(+VzYs)DS+c+6Sb1G#L#2cM0epJAH+Kh~0}v;Y7A diff --git a/host/dxwndhost.rc b/host/dxwndhost.rc index b960bf7f6356b95bc441b3182f9828c79f96913c..dda6bbc72bd966479a9fe65356163cc1217feac1 100644 GIT binary patch delta 314 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 C(v$U)Nf#L)gL!wz`Y?eX{ zT$W&b0Ac&#gP34pLy3^B?cIa04T&s@M6*eJGCs%~PqK%`AP=qIxwCbTp5%A#_x--_ zeCPXfuJ*A>dmx?d=5o4cS&HQH`TP#Xn4i#32oQpVHwePEeuasP5Oxs;2~omsg7Diz z-@QVfhhJ-c6enOkK_TfphakWqP0MCn(?9HS8PN& zaDTr87ql8^mE@{K%_6!0qN*1Iex zxyn>BSpJJ@p{S)nl{<+pDblIuWhBZ56bhC%7unTzS$|Y^S2|9U$0?5yq9vyRot`p#RilwbqLM7S=r7zCc(c&~x0RyPli2BX_y`l3(I+Z2#)` zlosHaOEv0$T))I2ry8-EEJtoWgzk_Zzt7kao;BC`&Kzu_5XS5ni?K1*!G@TZJxlvm zeS64K$IA*$*5mJ1xzo`E&z$lr{M7=D_(WKtE-CUBJDxAEOt|ICk^yS_zqQjGV6LO~_As z^tWy$O-O#HVzjef5r0h#4JTjVoA7eyprHq7s!m9$*#GFYe&w6rq(Yzc+zur%p>1|E#umQD_~JEv*R7di7HB^I4nKqw;r&M1fzS8hP-mNoa>KW+uk#YT Sf5T%;`PfG;-i&lgXzD-2@6c)h diff --git a/host/dxwndhost.vs2008.vcproj.User-PC.User.user b/host/dxwndhost.vs2008.vcproj.User-PC.User.user deleted file mode 100644 index b907e0c..0000000 --- a/host/dxwndhost.vs2008.vcproj.User-PC.User.user +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - - - diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index 906054b..43b3779 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -258,6 +258,7 @@ static void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_OutDebugString) t->tflags |= OUTDEBUGSTRING; if(dlg->m_EraseLogFile) t->tflags |= ERASELOGFILE; if(dlg->m_AddTimeStamp) t->tflags |= ADDTIMESTAMP; + if(dlg->m_AddRelativeTime) t->tflags |= ADDRELATIVETIME; if(dlg->m_OutWinMessages) t->tflags |= OUTWINMESSAGES; if(dlg->m_OutDWTrace) t->tflags |= OUTDXWINTRACE; if(dlg->m_OutDDRAWTrace) t->tflags |= OUTDDRAWTRACE; @@ -504,6 +505,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_OutDebugString = t->tflags & OUTDEBUGSTRING ? 1 : 0; dlg->m_EraseLogFile = t->tflags & ERASELOGFILE ? 1 : 0; dlg->m_AddTimeStamp = t->tflags & ADDTIMESTAMP ? 1 : 0; + dlg->m_AddRelativeTime = t->tflags & ADDRELATIVETIME ? 1 : 0; dlg->m_OutWinMessages = t->tflags & OUTWINMESSAGES ? 1 : 0; dlg->m_OutDWTrace = t->tflags & OUTDXWINTRACE ? 1 : 0; dlg->m_OutD3DTrace = t->tflags & OUTD3DTRACE ? 1 : 0; diff --git a/host/resource b/host/resource index 1e6ee5683acce2d264c861560d8810702360cd3b..bc9a140416c2859858c77123f8cb568a44305fab 100644 GIT binary patch delta 50 zcmX@Jl4->%rVR>tlLOqjgo7Ad8GINV8A2F58Nz^UAU)a9Mt-tFHrwPyB{G|p@>Zz< E0CgM=bpQYW delta 14 WcmZ3nis{TsrVR>tn``pcr~v>nlLmPJ