mirror of
https://github.com/DxWnd/DxWnd.reloaded
synced 2024-12-30 09:25:35 +01:00
v2_04_17_src
Former-commit-id: 6a3d3573af5c0d9f8c8d22835f869431439fbd4a
This commit is contained in:
parent
1f153bb853
commit
de4d2e231d
@ -277,6 +277,11 @@
|
||||
#define OFFSCREENZBUFFER 0x02000000 // Allow building plain surfaces and ZBuffer on offscreen videomemory surfaces
|
||||
#define VIRTUALHEAP 0x04000000 // Remap heap calls to C library memory allocation routines
|
||||
#define ZBUFFERHARDCLEAN 0x08000000 // Clean ZBUFFER the hard way (memset 0xFF on whole surface buffer ....)
|
||||
#define LOADLIBRARYERR 0x10000000 // When LoadLibrary* fail for missing file returns ... instead of ....
|
||||
#define SHAREDDCHYBRID 0x20000000 // Hybrid mode for shared dc GDI emulation - blits both on ddraw surface and window surface
|
||||
|
||||
// 9th flags DWORD dxw.dwFlags9:
|
||||
// 10th flags DWORD dxw.dwFlags10:
|
||||
|
||||
// logging Tflags DWORD:
|
||||
#define OUTTRACE 0x00000001 // enables tracing to dxwnd.log in general
|
||||
@ -321,6 +326,8 @@ typedef struct TARGETMAP
|
||||
int flags6;
|
||||
int flags7;
|
||||
int flags8;
|
||||
int flags9;
|
||||
int flags10;
|
||||
int tflags; // trace flags (cleared when exported/imported)
|
||||
int dflags; // debug flags (cleared when exported/imported)
|
||||
int monitorid;
|
||||
@ -348,6 +355,11 @@ typedef struct TARGETMAP
|
||||
#define INVERTXAXIS 0x00000010 // Invert virtual joystick X axis
|
||||
#define B1AUTOFIRE 0x00000020 // Button 1 auto fire
|
||||
#define B2AUTOFIRE 0x00000040 // Button 2 auto fire
|
||||
#define VJAUTOCENTER 0x00000080 // auto-center feature
|
||||
#define VJKEYBOARDMAP 0x00000100 // mapvirtual joystick lever & buttons to keyboard
|
||||
#define VJMOUSEMAP 0x00000200 // mapvirtual joystick lever & buttons to mouse
|
||||
#define VJSENSIVITY 0x00000400 // tune sensibility through mouse wheel
|
||||
#define VJMOUSEWHEEL 0x00000800 // tune sensibility through mouse wheel
|
||||
|
||||
typedef struct
|
||||
{
|
||||
@ -368,6 +380,7 @@ typedef struct
|
||||
PALETTEENTRY Palette[256];
|
||||
BOOL AllowMultiTask;
|
||||
DWORD VJoyStatus;
|
||||
DWORD VJoySensivity;
|
||||
short joyposx;
|
||||
short joyposy;
|
||||
} DXWNDSTATUS;
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7b2007119a0075012b9c97e2f0532e9c00393cd639510b97d7984683ad53776d
|
||||
size 793088
|
||||
oid sha256:66c9cb4107758dceb3b65f8f4c1422c950197c50f039e41ff421489b1e5128ac
|
||||
size 794112
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2708b771a49673ae154fffa2cadaaefe2eab5b1fb497f35c84f14d1a4bde1701
|
||||
size 681472
|
||||
oid sha256:f46151918909f2ce7b12958e32290a0173cd6e56e3471c371f4f3db4d9eecc67
|
||||
size 707584
|
||||
|
36
build/exports/Nightmare Creatures demo (sw mode).dxw
Normal file
36
build/exports/Nightmare Creatures demo (sw mode).dxw
Normal file
@ -0,0 +1,36 @@
|
||||
[target]
|
||||
title0=Nightmare Creatures demo (sw mode)
|
||||
path0=D:\Games\nc_demo\nc.exe
|
||||
startfolder0=
|
||||
launchpath0=D:\Games\nc_demo\nc.exe -pc
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
registry0=
|
||||
ver0=0
|
||||
monitorid0=-1
|
||||
coord0=0
|
||||
flag0=673185826
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=138412036
|
||||
flagj0=5248
|
||||
flagk0=65536
|
||||
flagl0=0
|
||||
flagm0=268435456
|
||||
tflag0=0
|
||||
dflag0=0
|
||||
posx0=50
|
||||
posy0=50
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=0
|
||||
swapeffect0=0
|
||||
maxddinterface0=7
|
||||
slowratio0=2
|
||||
scanline0=0
|
||||
initresw0=800
|
||||
initresh0=600
|
36
build/exports/Nightmare Creatures demo.dxw
Normal file
36
build/exports/Nightmare Creatures demo.dxw
Normal file
@ -0,0 +1,36 @@
|
||||
[target]
|
||||
title0=Nightmare Creatures demo
|
||||
path0=D:\Games\nc_demo\nc.exe
|
||||
startfolder0=
|
||||
launchpath0=
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
registry0=
|
||||
ver0=0
|
||||
monitorid0=-1
|
||||
coord0=0
|
||||
flag0=673185826
|
||||
flagg0=1207959552
|
||||
flagh0=20
|
||||
flagi0=138412036
|
||||
flagj0=4224
|
||||
flagk0=65536
|
||||
flagl0=0
|
||||
flagm0=301989888
|
||||
tflag0=0
|
||||
dflag0=0
|
||||
posx0=50
|
||||
posy0=50
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
initts0=0
|
||||
winver0=0
|
||||
maxres0=0
|
||||
swapeffect0=0
|
||||
maxddinterface0=7
|
||||
slowratio0=2
|
||||
scanline0=0
|
||||
initresw0=800
|
||||
initresh0=600
|
@ -4,15 +4,15 @@ path0=D:\Games\Star Trek Armada\Armada.exe
|
||||
launchpath0=
|
||||
module0=
|
||||
opengllib0=
|
||||
notes0=
|
||||
notes0=Side effect (to be known):\nDo not notify on task switch: inhibits the game cursor
|
||||
registry0=
|
||||
ver0=0
|
||||
coord0=0
|
||||
flag0=-2011168669
|
||||
flagg0=1543503872
|
||||
flagh0=98320
|
||||
flagi0=136314884
|
||||
flagj0=4224
|
||||
flag0=-1474297822
|
||||
flagg0=1476395008
|
||||
flagh0=8208
|
||||
flagi0=138412036
|
||||
flagj0=128
|
||||
flagk0=327680
|
||||
tflag0=0
|
||||
initx0=0
|
||||
@ -21,8 +21,8 @@ minx0=0
|
||||
miny0=0
|
||||
maxx0=0
|
||||
maxy0=0
|
||||
posx0=100
|
||||
posy0=100
|
||||
posx0=50
|
||||
posy0=50
|
||||
sizx0=800
|
||||
sizy0=600
|
||||
maxfps0=0
|
||||
@ -30,3 +30,13 @@ initts0=0
|
||||
winver0=0
|
||||
maxres0=-1
|
||||
swapeffect0=0
|
||||
startfolder0=
|
||||
monitorid0=0
|
||||
flagl0=0
|
||||
flagm0=536870912
|
||||
dflag0=0
|
||||
maxddinterface0=7
|
||||
slowratio0=1
|
||||
scanline0=1
|
||||
initresw0=0
|
||||
initresh0=0
|
||||
|
233
build/exports/dxwnd.reg
Normal file
233
build/exports/dxwnd.reg
Normal file
@ -0,0 +1,233 @@
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness]
|
||||
"1.0"=".\\"
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0]
|
||||
"InstalledFrom"=".\\"
|
||||
"HardDriveRootPath"=".\\"
|
||||
"InstallType"="Full"
|
||||
"version"="1.0"
|
||||
"Launched"="1"
|
||||
"PID"="87799-442-0210567-79960"
|
||||
"Path"=".\\"
|
||||
"VersionType"="RetailVersion"
|
||||
"InstalledGroup"="15"
|
||||
"LangID"=dword:00000009
|
||||
"OmitDriverCheck"=dword:00000000
|
||||
"LocalDriverInfo"=hex:4e,56,33,44,44,33,32,2e,44,4c,4c,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,34,2e,31,30,2e,30,2e,31,37,31,33,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,44,69,61,6d,6f,6e,64,20,56,69,70,65,72,20,\
|
||||
56,33,33,30,20,28,4e,76,69,64,69,61,20,52,69,76,61,20,31,32,38,29,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,44,69,61,6d,\
|
||||
6f,6e,64,20,56,69,70,65,72,20,56,33,33,30,20,28,4e,76,69,64,69,61,20,52,69,\
|
||||
76,61,20,31,32,38,29,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,44,69,61,6d,6f,6e,64,20,4d,75,6c,74,69,6d,65,64,69,61,20,\
|
||||
53,79,73,74,65,6d,73,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,08,6d,6d,33,64,66,78,33,32,2e,64,6c,6c,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,34,2e,31,\
|
||||
30,2e,30,2e,31,35,39,38,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,33,44,66,78,20,56,6f,6f,64,6f,6f,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,33,44,66,78,20,56,6f,6f,\
|
||||
64,6f,6f,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,33,44,66,78,20,49,6e,74,65,72,61,63,74,69,76,65,2c,20,49,6e,63,2e,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,08
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo]
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo\{00000000-0000-0000-0000-000000000000}]
|
||||
"Driver"="NV3DD32.DLL"
|
||||
"Version"="4.10.0.1713"
|
||||
"Description"="Diamond Viper V330 (Nvidia Riva 128)"
|
||||
"DeviceID"="PCI\\VEN_12D2&DEV_0018&SUBSYS_10921092&REV_10\\000800"
|
||||
"NumberOfModes"=dword:00000025
|
||||
"Modes"=hex:40,01,00,00,c8,00,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,40,01,00,00,f0,00,00,00,08,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,90,01,00,00,2c,01,00,00,08,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,e0,01,00,00,68,01,00,00,08,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,80,01,00,00,08,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,02,00,00,90,01,00,\
|
||||
00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,02,00,00,\
|
||||
e0,01,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,20,\
|
||||
03,00,00,58,02,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,c0,03,00,00,d0,02,00,00,08,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,04,00,00,00,03,00,00,08,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,80,04,00,00,60,03,00,00,08,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,05,00,00,00,04,00,00,08,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,06,00,00,b0,04,00,00,08,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,01,00,00,c8,00,00,00,\
|
||||
10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,40,01,00,00,f0,\
|
||||
00,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,e0,fd,ff,01,90,01,\
|
||||
00,00,2c,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,e0,fd,ff,\
|
||||
01,e0,01,00,00,68,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,\
|
||||
e0,fd,ff,01,00,02,00,00,80,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,00,\
|
||||
00,00,00,e0,fd,ff,01,80,02,00,00,90,01,00,00,10,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,80,02,00,00,e0,01,00,00,10,00,00,00,00,00,00,\
|
||||
00,01,00,00,00,00,00,00,00,e0,fd,ff,01,20,03,00,00,58,02,00,00,10,00,00,00,\
|
||||
00,00,00,00,01,00,00,00,00,00,00,00,e0,fd,ff,01,c0,03,00,00,d0,02,00,00,10,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,04,00,00,00,03,\
|
||||
00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,04,00,\
|
||||
00,60,03,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,05,00,00,00,04,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,40,06,00,00,b0,04,00,00,10,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,40,01,00,00,c8,00,00,00,20,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,40,01,00,00,f0,00,00,00,20,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,00,2c,01,00,00,20,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,e0,01,00,00,68,01,00,00,20,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,02,00,00,80,01,00,\
|
||||
00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,02,00,00,\
|
||||
90,01,00,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,80,\
|
||||
02,00,00,e0,01,00,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,20,03,00,00,58,02,00,00,20,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,c0,03,00,00,d0,02,00,00,20,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,04,00,00,00,03,00,00,20,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,80,04,00,00,60,03,00,00,20,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00
|
||||
"TextureSizes"=hex:00,00,02,00,aa,aa,02,00,00,80,00,00,aa,aa,00,00,00,20,00,00,\
|
||||
aa,2a,00,00,00,08,00,00,a0,0d,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00
|
||||
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft Games\Motocross Madness\1.0\DriverInfo\{3A0CFD01-9320-11CF-ACA1-00A02413C2E2}]
|
||||
"Driver"="mm3dfx32.dll"
|
||||
"Version"="4.10.0.1598"
|
||||
"Description"="3Dfx Voodoo"
|
||||
"DeviceID"="PCI\\VEN_121A&DEV_0001&SUBSYS_00000000&REV_02\\BUS_00&DEV_0E&FUNC_00"
|
||||
"NumberOfModes"=dword:00000004
|
||||
"Modes"=hex:00,02,00,00,80,01,00,00,10,00,00,00,00,00,00,00,01,00,00,00,01,00,\
|
||||
00,00,00,00,40,00,80,02,00,00,90,01,00,00,10,00,00,00,00,00,00,00,00,00,00,\
|
||||
00,01,00,00,00,00,00,00,00,80,02,00,00,e0,01,00,00,10,00,00,00,00,00,00,00,\
|
||||
01,00,00,00,01,00,00,00,00,00,40,00,20,03,00,00,58,02,00,00,10,00,00,00,00,\
|
||||
00,00,00,01,00,00,00,00,00,00,00,00,00,40,00
|
||||
"TextureSizes"=hex:00,00,02,00,33,ab,02,00,00,80,00,00,33,ab,00,00,00,20,00,00,\
|
||||
33,2b,00,00,00,08,00,00,33,0b,00,00,00,04,01,00,55,59,01,00,00,44,00,00,55,\
|
||||
59,00,00,00,14,00,00,55,19,00,00,00,08,00,00,55,09,00,00
|
||||
|
||||
|
@ -1563,3 +1563,11 @@ fix: error messages on LoadLibrary errors
|
||||
v2.04.16
|
||||
add: improved virtual joystick with configuration and monitoring panel, invert axis options, show crossfire.
|
||||
fix: GetAttachedSurface now simulates also the primary surface as attach to backbuffer. Fixes GTA first episode windows version.
|
||||
|
||||
v2.04.17
|
||||
add: 2 more DWORD flags, unused for now
|
||||
add: virtual joystick sensivity control
|
||||
fix: check on ZBUFFER capability attribution in case the capsdb holds a wrong capability belonging to a different surface that was deleted
|
||||
add: "Fix LoadLibrary error" flag (LOADLIBRARYERR) to return ERROR_DLL_NOT_FOUND instead of ERROR_MOD_NOT_FOUND error code. Fixes "Nightmare Creatures".
|
||||
add: "Hybrid" flag for "Shared ddraw & GDI DC" mode - reduces "Star Treck: Armada" problems.
|
||||
|
||||
|
@ -2568,7 +2568,10 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet
|
||||
DWORD dwCaps;
|
||||
lpDDZBuffer = *lplpddas;
|
||||
dwCaps = dxwcdb.GetCaps(*lplpddas);
|
||||
if(!dwCaps){
|
||||
// v2.04.17 - beware: the caps db is not properly cleaned on surface destruction, so it may happen
|
||||
// that you get a fake-known case where the caps are referred to some other surface type.
|
||||
// Happened in "Star Treck: Armada" where the ZBUFFER collects an old PRIMARY caps entry.
|
||||
if(!dwCaps || !(dwCaps & DDSCAPS_ZBUFFER)){
|
||||
dwCaps = dxwcdb.GetCaps(lpdds);
|
||||
if(dwCaps){
|
||||
dwCaps &= ~(DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_BACKBUFFER|DDSCAPS_3DDEVICE|DDSCAPS_COMPLEX);
|
||||
|
@ -176,6 +176,8 @@ public: // simple data variables
|
||||
DWORD dwFlags6;
|
||||
DWORD dwFlags7;
|
||||
DWORD dwFlags8;
|
||||
DWORD dwFlags9;
|
||||
DWORD dwFlags10;
|
||||
DWORD dwTFlags;
|
||||
HWND hParentWnd;
|
||||
HWND hChildWnd;
|
||||
|
BIN
dll/dxwnd.aps
BIN
dll/dxwnd.aps
Binary file not shown.
@ -27,7 +27,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#include "TlHelp32.h"
|
||||
|
||||
#define VERSION "2.04.16"
|
||||
#define VERSION "2.04.17"
|
||||
|
||||
#define DDTHREADLOCK 1
|
||||
|
||||
@ -123,7 +123,10 @@ int SetTarget(DXWNDSTATUS *statusmap, TARGETMAP *targets){
|
||||
pStatus->DXVersion = 0;
|
||||
pStatus->AllowMultiTask=GetMultiTaskEnabling();
|
||||
//pStatus->VJoyStatus=VJOYENABLED|CROSSENABLED|INVERTYAXIS;
|
||||
if(statusmap) pStatus->VJoyStatus=statusmap->VJoyStatus;
|
||||
if(statusmap) {
|
||||
pStatus->VJoyStatus=statusmap->VJoyStatus;
|
||||
pStatus->VJoySensivity=statusmap->VJoySensivity;
|
||||
}
|
||||
for(i = 0; targets[i].path[0]; i ++){
|
||||
char *c;
|
||||
pMapping[i] = targets[i];
|
||||
@ -362,7 +365,7 @@ static char *FlagNames[9][32] ={{
|
||||
"MARKWING32", "DYNAMICZCLEAN", "MARKGDI32", "DUMPDIBSECTION",
|
||||
"DUMPDEVCONTEXT", "QUALITYFONTS", "ALLOWSYSMEMON3DDEV", "CLIPMENU",
|
||||
"BACKGROUNDPRIORITY", "OFFSCREENZBUFFER", "VIRTUALHEAP", "ZBUFFERHARDCLEAN",
|
||||
"", "", "", "",
|
||||
"LOADLIBRARYERR", "SHAREDDCHYBRID", "", "",
|
||||
},{
|
||||
// TFlags
|
||||
"OUTTRACE", "OUTDDRAWTRACE", "OUTWINMESSAGES", "OUTCURSORTRACE",
|
||||
|
Binary file not shown.
@ -980,7 +980,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH
|
||||
case 1: // memory to screen
|
||||
case 3: // screen to screen
|
||||
dxw.HandleFPS(); // handle refresh delays
|
||||
sdc.GetPrimaryDC(hdcDest);
|
||||
sdc.GetPrimaryDC(hdcDest, hdcSrc);
|
||||
res=(*pGDIBitBlt)(sdc.GetHdc(), nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, dwRop);
|
||||
sdc.PutPrimaryDC(hdcDest, TRUE, nXDest, nYDest, nWidth, nHeight);
|
||||
break;
|
||||
@ -1027,7 +1027,7 @@ BOOL WINAPI extGDIBitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nH
|
||||
if (hdcDest==dxw.RealHDC) {
|
||||
hdcDest=dxw.VirtualHDC;
|
||||
dxw.HandleFPS(); // handle refresh delays
|
||||
}
|
||||
}
|
||||
res=(*pGDIBitBlt)(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, dwRop);
|
||||
OutTraceB("GDI.BitBlt: DEBUG emulated hdc dest=%x->%x\n", dxw.RealHDC, hdcDest);
|
||||
break;
|
||||
@ -1097,7 +1097,7 @@ BOOL WINAPI extGDIStretchBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, in
|
||||
break;
|
||||
case 1: // memory to screen
|
||||
case 3: // screen to screen
|
||||
sdc.GetPrimaryDC(hdcDest);
|
||||
sdc.GetPrimaryDC(hdcDest, hdcSrc);
|
||||
res=(*pGDIStretchBlt)(sdc.GetHdc(), nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, nWSrc, nHSrc, dwRop);
|
||||
sdc.PutPrimaryDC(hdcDest, TRUE, nXDest, nYDest, nWidth, nHeight);
|
||||
break;
|
||||
|
@ -599,6 +599,10 @@ HMODULE WINAPI LoadLibraryExWrapper(LPVOID lpFileName, BOOL IsWidechar, HANDLE h
|
||||
if(!libhandle){
|
||||
OutTraceE("%s: ERROR FileName=%s err=%d\n", api, lpFileName, GetLastError());
|
||||
Recursed = FALSE;
|
||||
|
||||
// compatibility issue: some games (Nightmare Creatures) check for the ERROR_DLL_NOT_FOUND
|
||||
// errorcode or assume the library is there, hence the dialog box about a SDL.DLL file to delete.
|
||||
if((dxw.dwFlags8 & LOADLIBRARYERR) && (GetLastError()==ERROR_MOD_NOT_FOUND)) SetLastError(ERROR_DLL_NOT_FOUND);
|
||||
return libhandle;
|
||||
}
|
||||
|
||||
|
@ -52,6 +52,11 @@ dxwSDC::~dxwSDC()
|
||||
static IDirect3DSurface9 *pDestSurface = NULL;
|
||||
|
||||
HDC dxwSDC::GetPrimaryDC(HDC hdc)
|
||||
{
|
||||
return GetPrimaryDC(hdc, NULL);
|
||||
}
|
||||
|
||||
HDC dxwSDC::GetPrimaryDC(HDC hdc, HDC hdcsrc)
|
||||
{
|
||||
HRESULT res;
|
||||
extern HandleDDThreadLock_Type pReleaseDDThreadLock;
|
||||
@ -59,10 +64,13 @@ HDC dxwSDC::GetPrimaryDC(HDC hdc)
|
||||
|
||||
OutTraceB("dxwSDC::GetPrimaryDC: hdc=%x\n", hdc);
|
||||
|
||||
CurrentHDCSrc = hdcsrc;
|
||||
CurrentHDC = hdc;
|
||||
|
||||
// look for ddraw first
|
||||
//if(pReleaseDDThreadLock)(*pReleaseDDThreadLock)();
|
||||
lpDDSPrimary = dxwss.GetPrimarySurface();
|
||||
if (lpDDSPrimary) {
|
||||
if (lpDDSPrimary) {
|
||||
if(pReleaseDDThreadLock)(*pReleaseDDThreadLock)();
|
||||
res=((*pGetDCMethod())(lpDDSPrimary, &PrimaryDC));
|
||||
while((PrimaryDC == NULL) && lpDDSPrimary) {
|
||||
@ -242,6 +250,7 @@ BOOL dxwSDC::PutPrimaryDC(HDC hdc, BOOL UpdateScreen, int XDest, int YDest, int
|
||||
if(UpdateScreen){
|
||||
switch(VirtualSurfaceType){
|
||||
case VIRTUAL_ON_DDRAW:
|
||||
|
||||
ret=(*pGDIBitBlt)(PrimaryDC, XDest+VirtualOffset.x, YDest+VirtualOffset.y, nDestWidth, nDestHeight, VirtualHDC, XDest, YDest, SRCCOPY);
|
||||
if(!ret || (ret==GDI_ERROR)) {
|
||||
OutTraceE("dxwSDC::PutPrimaryDC: BitBlt ERROR ret=%x err=%d\n", ret, GetLastError());
|
||||
@ -251,8 +260,28 @@ BOOL dxwSDC::PutPrimaryDC(HDC hdc, BOOL UpdateScreen, int XDest, int YDest, int
|
||||
OutTraceE("dxwSDC::PutPrimaryDC: ReleaseDC ERROR res=%x\n", res);
|
||||
}
|
||||
dxw.ScreenRefresh();
|
||||
|
||||
// trick: duplicate the operation using the stretched mode to blit over clipped areas.
|
||||
// good for "Star Treck: Armada".
|
||||
if((dxw.dwFlags8 & SHAREDDCHYBRID) && CurrentHDCSrc && (WindowFromDC(CurrentHDC)!=dxw.GethWnd())){
|
||||
int nWDest, nHDest, nXDest, nYDest;
|
||||
OutTraceB("dxwSDC::PutPrimaryDC: StretchBlt over ddraw\n");
|
||||
nXDest= XDest;
|
||||
nYDest= YDest;
|
||||
nWDest= nDestWidth;
|
||||
nHDest= nDestHeight;
|
||||
dxw.MapClient(&nXDest, &nYDest, &nWDest, &nHDest);
|
||||
res=(*pGDIStretchBlt)(
|
||||
CurrentHDC, nXDest, nYDest, nWDest, nHDest,
|
||||
CurrentHDCSrc, XDest, YDest, nDestWidth, nDestHeight, SRCCOPY);
|
||||
if(!res) OutTraceE("dxwSDC::PutPrimaryDC: StretchBlt ERROR err=%d\n", GetLastError());
|
||||
//res=(*pGDIReleaseDC)(WindowFromDC(CurrentHDC), CurrentHDC);
|
||||
//if(!res) OutTraceE("dxwSDC::PutPrimaryDC: ReleaseDC ERROR err=%d\n", GetLastError());
|
||||
}
|
||||
|
||||
break;
|
||||
case VIRTUAL_ON_WINDOW:
|
||||
|
||||
SetStretchBltMode(PrimaryDC, HALFTONE);
|
||||
RECT RealArea, VirtualArea;
|
||||
// some fullscreen games ("Imperialism II") blitted from negative coordinates -2,-2 !!
|
||||
@ -275,6 +304,7 @@ BOOL dxwSDC::PutPrimaryDC(HDC hdc, BOOL UpdateScreen, int XDest, int YDest, int
|
||||
if(PrimaryDC)ret=(*pGDIStretchBlt)(PrimaryDC, RealArea.left, RealArea.top, RealArea.right, RealArea.bottom, VirtualHDC, VirtualArea.left, VirtualArea.top, VirtualArea.right, VirtualArea.bottom, SRCCOPY);
|
||||
ret=(*pGDIReleaseDC)(dxw.GethWnd(), PrimaryDC);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -20,6 +20,7 @@ public:
|
||||
// Operations
|
||||
public: // methods
|
||||
HDC GetPrimaryDC(HDC);
|
||||
HDC GetPrimaryDC(HDC, HDC);
|
||||
HDC GetHdc(void);
|
||||
BOOL PutPrimaryDC(HDC, BOOL, int, int, int, int);
|
||||
BOOL PutPrimaryDC(HDC, BOOL);
|
||||
@ -31,6 +32,7 @@ private:
|
||||
HDC PrimaryDC;
|
||||
HDC VirtualHDC;
|
||||
HDC CurrentHDC;
|
||||
HDC CurrentHDCSrc;
|
||||
HWND CurrenthWnd;
|
||||
LPDIRECTDRAWSURFACE lpDDSPrimary;
|
||||
HBITMAP VirtualPic;
|
||||
|
@ -2918,8 +2918,9 @@ int WINAPI extDrawTextA(HDC hdc, LPCTSTR lpchText, int nCount, LPRECT lpRect, UI
|
||||
ret=(*pDrawTextA)(sdc.GetHdc(), lpchText, nCount, lpRect, uFormat);
|
||||
if(nCount)
|
||||
sdc.PutPrimaryDC(hdc, TRUE, lpRect->left, lpRect->top, lpRect->right-lpRect->left, lpRect->bottom-lpRect->top);
|
||||
else
|
||||
sdc.PutPrimaryDC(hdc, FALSE); // Diablo makes a DrawText of nuull string in the intro ...
|
||||
else {
|
||||
sdc.PutPrimaryDC(hdc, FALSE); // Diablo makes a DrawText of null string in the intro ...
|
||||
}
|
||||
return ret;
|
||||
break;
|
||||
case GDIMODE_STRETCHED:
|
||||
@ -2949,14 +2950,14 @@ int WINAPI extDrawTextExA(HDC hdc, LPTSTR lpchText, int nCount, LPRECT lpRect, U
|
||||
int ret;
|
||||
OutTraceDW("DrawTextExA: hdc=%x rect=(%d,%d)-(%d,%d) DTFormat=%x Text=(%d)\"%s\"\n",
|
||||
hdc, lpRect->left, lpRect->top, lpRect->right, lpRect->bottom, dwDTFormat, nCount, lpchText);
|
||||
if (IsDebug){
|
||||
if(lpDTParams)
|
||||
OutTrace("DTParams: size=%d (L,R)margins=(%d,%d) TabLength=%d lDrawn=%d\n",
|
||||
lpDTParams->cbSize, lpDTParams->iLeftMargin, lpDTParams->iRightMargin,
|
||||
lpDTParams->iTabLength, lpDTParams->uiLengthDrawn);
|
||||
else
|
||||
OutTrace("DTParams: NULL\n");
|
||||
}
|
||||
if (IsDebug){
|
||||
if(lpDTParams)
|
||||
OutTrace("DTParams: size=%d (L,R)margins=(%d,%d) TabLength=%d lDrawn=%d\n",
|
||||
lpDTParams->cbSize, lpDTParams->iLeftMargin, lpDTParams->iRightMargin,
|
||||
lpDTParams->iTabLength, lpDTParams->uiLengthDrawn);
|
||||
else
|
||||
OutTrace("DTParams: NULL\n");
|
||||
}
|
||||
|
||||
gFixed = TRUE; // semaphore to avoid multiple scaling with HOT patching
|
||||
if(dxw.IsToRemap(hdc)){
|
||||
@ -2964,7 +2965,10 @@ int WINAPI extDrawTextExA(HDC hdc, LPTSTR lpchText, int nCount, LPRECT lpRect, U
|
||||
case GDIMODE_SHAREDDC:
|
||||
sdc.GetPrimaryDC(hdc);
|
||||
ret=(*pDrawTextExA)(sdc.GetHdc(), lpchText, nCount, lpRect, dwDTFormat, lpDTParams);
|
||||
sdc.PutPrimaryDC(hdc, TRUE, lpRect->left, lpRect->top, lpRect->right-lpRect->left, lpRect->bottom-lpRect->top);
|
||||
if(nCount)
|
||||
sdc.PutPrimaryDC(hdc, TRUE, lpRect->left, lpRect->top, lpRect->right-lpRect->left, lpRect->bottom-lpRect->top);
|
||||
else
|
||||
sdc.PutPrimaryDC(hdc, FALSE); // in cases like Diablo that makes a DrawText of null string in the intro ...
|
||||
return ret;
|
||||
break;
|
||||
case GDIMODE_STRETCHED:
|
||||
|
@ -540,6 +540,27 @@ MMRESULT WINAPI extjoyGetDevCapsA(DWORD uJoyID, LPJOYCAPS pjc, UINT cbjc)
|
||||
return JOYERR_NOERROR;
|
||||
}
|
||||
|
||||
BOOL JoyProcessMouseWheelMessage(WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
int zDelta;
|
||||
DWORD dwSensivity = GetHookInfo()->VJoySensivity;
|
||||
DWORD dwJoyStatus = GetHookInfo()->VJoyStatus;
|
||||
|
||||
if(!(dwJoyStatus & VJMOUSEWHEEL)) return FALSE;
|
||||
|
||||
if(!dwSensivity) dwSensivity=100;
|
||||
//fwKeys = GET_KEYSTATE_WPARAM(wParam);
|
||||
zDelta = GET_WHEEL_DELTA_WPARAM(wParam);
|
||||
if(zDelta > 4 * WHEEL_DELTA) zDelta = 4 * WHEEL_DELTA;
|
||||
if(zDelta < -4 * WHEEL_DELTA) zDelta = -4 * WHEEL_DELTA;
|
||||
if(zDelta > 0) dwSensivity = (dwSensivity * 110 * zDelta) / (100 * WHEEL_DELTA);
|
||||
if(zDelta < 0) dwSensivity = (dwSensivity * 100 * -zDelta) / (110 * WHEEL_DELTA);
|
||||
if(dwSensivity < 32) dwSensivity = 32;
|
||||
if(dwSensivity > 250) dwSensivity = 250;
|
||||
GetHookInfo()->VJoySensivity = dwSensivity;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static MMRESULT GetJoy(char *apiname, DWORD uJoyID, LPJOYINFO lpj)
|
||||
{
|
||||
OutTraceC("%s: joyid=%d\n", apiname, uJoyID);
|
||||
@ -601,19 +622,58 @@ static MMRESULT GetJoy(char *apiname, DWORD uJoyID, LPJOYINFO lpj)
|
||||
}
|
||||
else{
|
||||
OutTraceB("%s: ACTIVE mouse=(%d,%d)\n", apiname, pt.x, pt.y);
|
||||
if(pt.x < client.left) pt.x = client.left;
|
||||
if(pt.x > client.right) pt.x = client.right;
|
||||
if(pt.y < client.top) pt.y = client.top;
|
||||
if(pt.y > client.bottom) pt.y = client.bottom;
|
||||
CenterX = (client.right - client.left) >> 1;
|
||||
CenterY = (client.bottom - client.top) >> 1;
|
||||
|
||||
x = ((pt.x - CenterX) * XSPAN) / client.right;
|
||||
y = ((pt.y - CenterY) * YSPAN) / client.bottom;
|
||||
if(dwVJoyStatus & VJMOUSEMAP){
|
||||
if(pt.x < client.left) pt.x = client.left;
|
||||
if(pt.x > client.right) pt.x = client.right;
|
||||
if(pt.y < client.top) pt.y = client.top;
|
||||
if(pt.y > client.bottom) pt.y = client.bottom;
|
||||
|
||||
x = ((pt.x - CenterX) * XSPAN) / client.right;
|
||||
y = ((pt.y - CenterY) * YSPAN) / client.bottom;
|
||||
|
||||
if(dwVJoyStatus & VJAUTOCENTER) {
|
||||
// autocenter: each time, moves 1/20 distance toward centered 0,0 position
|
||||
// 1/20 = 0.05, changing value changes the autocenter speed (must be >0.0 and <1.0)
|
||||
int x1, y1;
|
||||
x1 = (int)(pt.x + upleft.x - ((pt.x - CenterX) * 0.05));
|
||||
y1 = (int)(pt.y + upleft.y - ((pt.y - CenterY) * 0.05));
|
||||
if((x1 != pt.x+upleft.x) || (y1 != pt.y+upleft.y)) (*pSetCursorPos)(x1, y1);
|
||||
}
|
||||
}
|
||||
|
||||
if(dwVJoyStatus & VJKEYBOARDMAP){
|
||||
if (GetKeyState(VK_LEFT) < 0) x = -XSPAN/2;
|
||||
if (GetKeyState(VK_RIGHT) < 0) x = +XSPAN/2;
|
||||
if (GetKeyState(VK_UP) < 0) y = -YSPAN/2;
|
||||
if (GetKeyState(VK_DOWN) < 0) y = +YSPAN/2;
|
||||
if (GetKeyState(VK_SPACE) < 0) dwButtons |= JOY_BUTTON1;
|
||||
if (GetKeyState(VK_LCONTROL) < 0) dwButtons |= JOY_BUTTON2;
|
||||
}
|
||||
|
||||
if(dwVJoyStatus & INVERTXAXIS) x = -x;
|
||||
if(dwVJoyStatus & INVERTYAXIS) y = -y;
|
||||
//if(dwVJoyStatus & VJSENSIVITY){
|
||||
{
|
||||
DWORD dwSensivity = GetHookInfo()->VJoySensivity;
|
||||
if(dwSensivity){
|
||||
x = (x * (LONG)dwSensivity) / 100;
|
||||
y = (y * (LONG)dwSensivity) / 100;
|
||||
if(x > +XSPAN) x = +XSPAN;
|
||||
if(x < -XSPAN) x = -XSPAN;
|
||||
if(y > +YSPAN) y = +YSPAN;
|
||||
if(y < -YSPAN) y = -YSPAN;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (dwVJoyStatus & CROSSENABLED) {
|
||||
int jx, jy;
|
||||
jx = CenterX + (x * client.right) / XSPAN;
|
||||
jy = CenterY + (y * client.bottom) / YSPAN;
|
||||
ShowJoystick(jx, jy, dwButtons);
|
||||
}
|
||||
if (dwVJoyStatus & CROSSENABLED) ShowJoystick(pt.x, pt.y, dwButtons);
|
||||
}
|
||||
lpj->wXpos = x;
|
||||
lpj->wYpos = y;
|
||||
|
@ -13,6 +13,7 @@ extern void SuppressIMEWindow();
|
||||
extern void RecoverScreenMode();
|
||||
extern void dx_FullScreenToggle(HWND);
|
||||
extern void dx_DesktopToggle(HWND, BOOL);
|
||||
extern BOOL JoyProcessMouseWheelMessage(WPARAM, LPARAM);
|
||||
|
||||
static void dx_ToggleLogging()
|
||||
{
|
||||
@ -494,6 +495,10 @@ LRESULT CALLBACK extWindowProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lp
|
||||
break;
|
||||
// fall through cases:
|
||||
case WM_MOUSEWHEEL:
|
||||
if(dxw.dwFlags6 & VIRTUALJOYSTICK) {
|
||||
if(dxw.Windowize && (dxw.dwFlags1 & CLIPCURSOR) && !dxw.IsClipCursorActive()) dxw.SetClipCursor();
|
||||
if (JoyProcessMouseWheelMessage(wparam, lparam)) return 0;
|
||||
} // fall through
|
||||
case WM_LBUTTONDOWN:
|
||||
case WM_LBUTTONUP:
|
||||
case WM_LBUTTONDBLCLK:
|
||||
|
@ -13,7 +13,6 @@ public:
|
||||
|
||||
// Dialog Data
|
||||
enum { IDD = IDD_STATUS };
|
||||
int iTimeSlider;
|
||||
|
||||
protected:
|
||||
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
||||
|
@ -50,12 +50,9 @@ void CTabCompat::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Check(pDX, IDC_COLORFIX, cTarget->m_ColorFix);
|
||||
DDX_Check(pDX, IDC_FIXGLOBALUNLOCK, cTarget->m_FixGlobalUnlock);
|
||||
DDX_Check(pDX, IDC_FIXFREELIBRARY, cTarget->m_FixFreeLibrary);
|
||||
|
||||
// Registry management
|
||||
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
|
||||
DDX_Check(pDX, IDC_OVERRIDEREGISTRY, cTarget->m_OverrideRegistry);
|
||||
DDX_Check(pDX, IDC_WOW64REGISTRY, cTarget->m_Wow64Registry);
|
||||
DDX_Check(pDX, IDC_WOW32REGISTRY, cTarget->m_Wow32Registry);
|
||||
DDX_Check(pDX, IDC_LOADLIBRARYERR, cTarget->m_LoadLibraryErr);
|
||||
DDX_Check(pDX, IDC_PRETENDVISIBLE, cTarget->m_PretendVisible);
|
||||
DDX_Check(pDX, IDC_WININSULATION, cTarget->m_WinInsulation);
|
||||
|
||||
// GOG patches
|
||||
DDX_Check(pDX, IDC_HOOKGOGLIBS, cTarget->m_HookGOGLibs);
|
||||
|
@ -27,7 +27,14 @@ void CTabRegistry::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
CTargetDlg *cTarget = ((CTargetDlg *)(this->GetParent()->GetParent()));
|
||||
|
||||
// Registry management
|
||||
DDX_Check(pDX, IDC_EMULATEREGISTRY, cTarget->m_EmulateRegistry);
|
||||
DDX_Check(pDX, IDC_OVERRIDEREGISTRY, cTarget->m_OverrideRegistry);
|
||||
DDX_Check(pDX, IDC_WOW64REGISTRY, cTarget->m_Wow64Registry);
|
||||
DDX_Check(pDX, IDC_WOW32REGISTRY, cTarget->m_Wow32Registry);
|
||||
DDX_Text(pDX, IDC_REGISTRY, cTarget->m_Registry);
|
||||
|
||||
}
|
||||
|
||||
BEGIN_MESSAGE_MAP(CTabRegistry, CDialog)
|
||||
|
@ -34,10 +34,9 @@ void CTabSysLibs::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Check(pDX, IDC_QUALITYFONTS, cTarget->m_QualityFonts);
|
||||
DDX_Check(pDX, IDC_NOFILLRECT, cTarget->m_NoFillRect);
|
||||
DDX_Check(pDX, IDC_FIXCLIPPERAREA, cTarget->m_FixClipperArea);
|
||||
DDX_Check(pDX, IDC_SHAREDDCHYBRID, cTarget->m_SharedDCHybrid);
|
||||
DDX_Check(pDX, IDC_SYNCPALETTE, cTarget->m_SyncPalette);
|
||||
DDX_Check(pDX, IDC_NOWINERRORS, cTarget->m_NoWinErrors);
|
||||
DDX_Check(pDX, IDC_PRETENDVISIBLE, cTarget->m_PretendVisible);
|
||||
DDX_Check(pDX, IDC_WININSULATION, cTarget->m_WinInsulation);
|
||||
|
||||
// OpenGL
|
||||
DDX_Check(pDX, IDC_HOOKOPENGL, cTarget->m_HookOpenGL); // duplicated
|
||||
|
@ -89,6 +89,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_ColorFix = FALSE;
|
||||
m_FixGlobalUnlock = FALSE;
|
||||
m_FixFreeLibrary = FALSE;
|
||||
m_LoadLibraryErr = FALSE;
|
||||
m_NoPixelFormat = FALSE;
|
||||
m_NoAlphaChannel = FALSE;
|
||||
m_FixRefCounter = TRUE; // default true !!
|
||||
@ -251,6 +252,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/)
|
||||
m_NoGDIBlt = FALSE;
|
||||
m_NoFillRect = FALSE;
|
||||
m_FixClipperArea = FALSE; // ??
|
||||
m_SharedDCHybrid = FALSE; // ??
|
||||
m_SyncPalette = FALSE;
|
||||
m_NoWinErrors = FALSE;
|
||||
m_PretendVisible = FALSE;
|
||||
|
@ -201,6 +201,7 @@ public:
|
||||
BOOL m_NoGDIBlt;
|
||||
BOOL m_NoFillRect;
|
||||
BOOL m_FixClipperArea;
|
||||
BOOL m_SharedDCHybrid;
|
||||
BOOL m_SyncPalette;
|
||||
BOOL m_NoWinErrors;
|
||||
BOOL m_PretendVisible;
|
||||
@ -251,6 +252,7 @@ public:
|
||||
BOOL m_ColorFix;
|
||||
BOOL m_FixGlobalUnlock;
|
||||
BOOL m_FixFreeLibrary;
|
||||
BOOL m_LoadLibraryErr;
|
||||
BOOL m_NoPixelFormat;
|
||||
BOOL m_NoAlphaChannel;
|
||||
BOOL m_FixRefCounter;
|
||||
|
@ -4,11 +4,53 @@
|
||||
#include "stdafx.h"
|
||||
#include "dxwndhost.h"
|
||||
#include "VJoyDialog.h"
|
||||
#include <math.h>
|
||||
|
||||
#define XSPAN 128
|
||||
#define YSPAN 128
|
||||
#define PICWIDTH 140
|
||||
#define PICHEIGHT 140
|
||||
|
||||
/*
|
||||
// calculates the closest m_Slider value
|
||||
int pos, delta, lastdelta;
|
||||
lastdelta=200;
|
||||
for(pos=-10; pos<=10; pos++){
|
||||
int s;
|
||||
s = (int)(100 * pow(TICKMULTIPLIER, (float)pos));
|
||||
delta = abs(s - this->m_VJoySensivity);
|
||||
if(delta > lastdelta) break;
|
||||
lastdelta = delta;
|
||||
}
|
||||
this->m_Slider = pos-1;
|
||||
*/
|
||||
|
||||
int CVJoyDialog::GetSliderPos(int sensivity)
|
||||
{
|
||||
int pos;
|
||||
int delta, lastdelta;
|
||||
lastdelta = 400; // initial value big enough ...
|
||||
for(pos=-20; pos<=20; pos++){
|
||||
delta = abs(Multipliers[20+pos] - sensivity);
|
||||
if(delta > lastdelta) break;
|
||||
lastdelta = delta;
|
||||
}
|
||||
return pos-1;
|
||||
}
|
||||
|
||||
int CVJoyDialog::SetSensivity(int slider)
|
||||
{
|
||||
if(slider < -20) slider = -20;
|
||||
if(slider > 20) slider = 20;
|
||||
return Multipliers[20+slider];
|
||||
}
|
||||
|
||||
void CVJoyDialog::InitSensivity(void)
|
||||
{
|
||||
int Multiplier;
|
||||
int pos;
|
||||
for(Multiplier = 100, pos=-1; pos>=-20; pos--) Multipliers[20+pos] = Multiplier = (Multiplier * 100) / 105;
|
||||
for(Multiplier = 100, pos= 1; pos<= 20; pos++) Multipliers[20+pos] = Multiplier = (Multiplier * 105) / 100;
|
||||
Multipliers[20] = 100;
|
||||
}
|
||||
|
||||
// CVJoyDialog dialog
|
||||
|
||||
@ -36,6 +78,10 @@ void CVJoyDialog::DoDataExchange(CDataExchange* pDX)
|
||||
DDX_Check(pDX, IDC_INVERTYAXIS, this->m_InvertYAxis);
|
||||
DDX_Check(pDX, IDC_B1AUTOFIRE, this->m_B1AutoFire);
|
||||
DDX_Check(pDX, IDC_B2AUTOFIRE, this->m_B2AutoFire);
|
||||
DDX_Check(pDX, IDC_VJAUTOCENTER, this->m_VJAutoCenter);
|
||||
DDX_Check(pDX, IDC_VJMOUSEWHEEL, this->m_VJMouseWheel);
|
||||
DDX_Radio(pDX, IDC_VJ_USEMOUSE, this->m_UseMode);
|
||||
DDX_Slider(pDX, IDC_SENSIVITY_SLIDER, this->m_Slider);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
@ -47,6 +93,7 @@ END_MESSAGE_MAP()
|
||||
#define IDVJoyTIMER 3
|
||||
#define FINDERSIZE 5
|
||||
#define CROSSSIZE 20
|
||||
#define TICKMULTIPLIER 1.05f
|
||||
|
||||
// CVJoyDialog message handlers
|
||||
|
||||
@ -55,7 +102,23 @@ void CVJoyDialog::OnTimer(UINT_PTR nIDEvent)
|
||||
// IDC_VJOYPOSITION
|
||||
int x, y;
|
||||
DWORD dwVJoyStatus;
|
||||
DWORD dwSensivity;
|
||||
CString text;
|
||||
static DWORD dwLastSensivity = 0;
|
||||
|
||||
// takes care of external updates of sensivity by mouse wheel
|
||||
dwSensivity = GetHookInfo()->VJoySensivity;
|
||||
if(dwLastSensivity && (dwSensivity != dwLastSensivity)){
|
||||
CSliderCtrl *Slider;
|
||||
this->m_Slider = this->GetSliderPos(dwSensivity);
|
||||
Slider=(CSliderCtrl *)this->GetDlgItem(IDC_SENSIVITY_SLIDER);
|
||||
Slider->SetPos(this->m_Slider);
|
||||
}
|
||||
|
||||
CDialog::UpdateData(); // calls DoDataExchange
|
||||
this->m_VJoySensivity = this->SetSensivity(m_Slider);
|
||||
dwLastSensivity = this->m_VJoySensivity;
|
||||
|
||||
dwVJoyStatus = GetHookInfo()->VJoyStatus;
|
||||
this->m_VJoyPresent = (dwVJoyStatus & VJOYPRESENT) ? 1 : 0;
|
||||
dwVJoyStatus &= VJOYPRESENT; // clear all BUT VJOYPRESENT!
|
||||
@ -65,22 +128,43 @@ void CVJoyDialog::OnTimer(UINT_PTR nIDEvent)
|
||||
if(this->m_InvertXAxis) dwVJoyStatus |= INVERTXAXIS;
|
||||
if(this->m_B1AutoFire) dwVJoyStatus |= B1AUTOFIRE;
|
||||
if(this->m_B2AutoFire) dwVJoyStatus |= B2AUTOFIRE;
|
||||
if(this->m_VJAutoCenter) dwVJoyStatus |= VJAUTOCENTER;
|
||||
if(this->m_VJMouseWheel) dwVJoyStatus |= VJMOUSEWHEEL;
|
||||
switch(this->m_UseMode){
|
||||
case 0: dwVJoyStatus |= VJMOUSEMAP; break;
|
||||
case 1: dwVJoyStatus |= VJKEYBOARDMAP; break;
|
||||
case 2: dwVJoyStatus |= (VJKEYBOARDMAP|VJMOUSEMAP); break;
|
||||
}
|
||||
|
||||
if(this->m_VJoyEnabled && this->m_VJoyPresent){
|
||||
CWnd *JoyPos = this->GetDlgItem(IDC_VJOYPOSITION);
|
||||
CDC *dc = JoyPos->GetDC();
|
||||
RECT client;
|
||||
CString coord;
|
||||
JoyPos->GetClientRect(&client);
|
||||
x = (client.right/2) + ((GetHookInfo()->joyposx * client.right) / XSPAN);
|
||||
y = (client.bottom/2) + ((GetHookInfo()->joyposy * client.bottom) / YSPAN);
|
||||
// clear whole square area
|
||||
dc->FillRect(&client, Background);
|
||||
// draw sensivity circle
|
||||
dc->SelectObject(SensivityPen);
|
||||
dc->Ellipse(
|
||||
(client.right)*(250-dwSensivity)/500,
|
||||
(client.bottom)*(250-dwSensivity)/500,
|
||||
(client.right)*(250+dwSensivity)/500,
|
||||
(client.bottom)*(250+dwSensivity)/500);
|
||||
// draw center crossfinder
|
||||
dc->SelectObject(CenterPen);
|
||||
dc->MoveTo((client.right/2)-CROSSSIZE,(client.bottom/2));
|
||||
dc->LineTo((client.right/2)+CROSSSIZE,(client.bottom/2));
|
||||
dc->MoveTo((client.right/2),(client.bottom/2)-CROSSSIZE);
|
||||
dc->LineTo((client.right/2),(client.bottom/2)+CROSSSIZE);
|
||||
// draw joystick crossfinder
|
||||
dc->SelectObject(FinderPen);
|
||||
int x0, y0;
|
||||
if(x<client.left) x = client.left;
|
||||
if(x>client.right) x = client.right;
|
||||
if(y<client.top) y = client.top;
|
||||
if(y>client.bottom) y = client.bottom;
|
||||
x0 = (x-FINDERSIZE)<client.left ? client.left : x-FINDERSIZE;
|
||||
dc->MoveTo(x0,y);
|
||||
x0 = (x+FINDERSIZE)>client.right ? client.right : x+FINDERSIZE;
|
||||
@ -89,34 +173,53 @@ void CVJoyDialog::OnTimer(UINT_PTR nIDEvent)
|
||||
dc->MoveTo(x,y0);
|
||||
y0 = (y+FINDERSIZE)>client.bottom ? client.bottom : y+FINDERSIZE;
|
||||
dc->LineTo(x,y0);
|
||||
dc->MoveTo(20,20);
|
||||
coord.Format("%d,%d", GetHookInfo()->joyposx, GetHookInfo()->joyposy);
|
||||
dc->TextOutA(5, 5, coord);
|
||||
//dc->MoveTo(20,20);
|
||||
text.Format("%d,%d", GetHookInfo()->joyposx, GetHookInfo()->joyposy);
|
||||
dc->TextOutA(5, 5, text);
|
||||
text.Format("x%d%%", GetHookInfo()->VJoySensivity);
|
||||
dc->TextOutA(5, 200, text);
|
||||
dc->DeleteDC();
|
||||
}
|
||||
GetHookInfo()->VJoyStatus = dwVJoyStatus;
|
||||
GetHookInfo()->VJoySensivity = this->m_VJoySensivity;
|
||||
dwLastSensivity = this->m_VJoySensivity;
|
||||
}
|
||||
|
||||
BOOL CVJoyDialog::OnInitDialog()
|
||||
{
|
||||
DWORD dwVJoyStatus;
|
||||
CSliderCtrl *Slider;
|
||||
|
||||
// TODO: Add extra initialization here
|
||||
Background = new(CBrush);
|
||||
Background->CreateSolidBrush(RGB(255, 255, 255)); // white
|
||||
CenterPen = new(CPen);
|
||||
CenterPen->CreatePen(PS_DOT, 1, RGB(255, 0, 0));
|
||||
CenterPen->CreatePen(PS_DOT, 1, RGB(255, 0, 0)); // red
|
||||
FinderPen = new(CPen);
|
||||
FinderPen->CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
|
||||
FinderPen->CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); // black
|
||||
SensivityPen = new(CPen);
|
||||
SensivityPen->CreatePen(PS_DOT, 1, RGB(127, 127, 255)); // clear blue
|
||||
|
||||
dwVJoyStatus = GetHookInfo()->VJoyStatus;
|
||||
this->m_VJoyPresent = (dwVJoyStatus & VJOYPRESENT) ? 1 : 0;
|
||||
this->m_VJoyEnabled = (dwVJoyStatus & VJOYENABLED) ? 1 : 0;
|
||||
this->m_CrossEnabled= (dwVJoyStatus & CROSSENABLED) ? 1 : 0;
|
||||
this->m_InvertYAxis = (dwVJoyStatus & INVERTYAXIS) ? 1 : 0;
|
||||
this->m_InvertXAxis = (dwVJoyStatus & INVERTXAXIS) ? 1 : 0;
|
||||
this->m_B1AutoFire = (dwVJoyStatus & B1AUTOFIRE) ? 1 : 0;
|
||||
this->m_B2AutoFire = (dwVJoyStatus & B2AUTOFIRE) ? 1 : 0;
|
||||
this->m_VJoyPresent = (dwVJoyStatus & VJOYPRESENT) ? 1 : 0;
|
||||
this->m_VJoyEnabled = (dwVJoyStatus & VJOYENABLED) ? 1 : 0;
|
||||
this->m_CrossEnabled = (dwVJoyStatus & CROSSENABLED) ? 1 : 0;
|
||||
this->m_InvertYAxis = (dwVJoyStatus & INVERTYAXIS) ? 1 : 0;
|
||||
this->m_InvertXAxis = (dwVJoyStatus & INVERTXAXIS) ? 1 : 0;
|
||||
this->m_B1AutoFire = (dwVJoyStatus & B1AUTOFIRE) ? 1 : 0;
|
||||
this->m_B2AutoFire = (dwVJoyStatus & B2AUTOFIRE) ? 1 : 0;
|
||||
this->m_VJAutoCenter = (dwVJoyStatus & VJAUTOCENTER) ? 1 : 0;
|
||||
this->m_VJMouseWheel = (dwVJoyStatus & VJMOUSEWHEEL) ? 1 : 0;
|
||||
this->m_UseMode = (dwVJoyStatus & VJKEYBOARDMAP) ? ((dwVJoyStatus & VJMOUSEMAP) ? 2 : 1) : 0;
|
||||
this->m_VJoySensivity = GetHookInfo()->VJoySensivity;
|
||||
// calculates the m_Slider values
|
||||
this->InitSensivity();
|
||||
this->m_Slider = this->GetSliderPos(this->m_VJoySensivity);
|
||||
Slider=(CSliderCtrl *)this->GetDlgItem(IDC_SENSIVITY_SLIDER);
|
||||
Slider->SetRange(-20, 20, 1);
|
||||
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
SetTimer(IDVJoyTIMER, 40, NULL);
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
@ -138,8 +241,18 @@ void CVJoyDialog::OnOK()
|
||||
if(this->m_InvertXAxis) dwVJoyStatus |= INVERTXAXIS;
|
||||
if(this->m_B1AutoFire) dwVJoyStatus |= B1AUTOFIRE;
|
||||
if(this->m_B2AutoFire) dwVJoyStatus |= B2AUTOFIRE;
|
||||
if(this->m_VJAutoCenter) dwVJoyStatus |= VJAUTOCENTER;
|
||||
if(this->m_VJMouseWheel) dwVJoyStatus |= VJMOUSEWHEEL;
|
||||
switch(this->m_UseMode){
|
||||
case 0: dwVJoyStatus |= VJMOUSEMAP; break;
|
||||
case 1: dwVJoyStatus |= VJKEYBOARDMAP; break;
|
||||
case 2: dwVJoyStatus |= (VJKEYBOARDMAP|VJMOUSEMAP); break;
|
||||
}
|
||||
this->m_VJoySensivity = (int)(100 * pow(TICKMULTIPLIER, (float)this->m_Slider));
|
||||
sprintf_s(val, sizeof(val), "%i", dwVJoyStatus);
|
||||
WritePrivateProfileString("joystick", "flags", val, gInitPath);
|
||||
sprintf_s(val, sizeof(val), "%i", this->m_VJoySensivity);
|
||||
WritePrivateProfileString("joystick", "sensivity", val, gInitPath);
|
||||
GetHookInfo()->VJoyStatus = dwVJoyStatus;
|
||||
CDialog::OnOK();
|
||||
}
|
@ -27,6 +27,9 @@ protected:
|
||||
virtual void OnOK();
|
||||
//virtual void OnCancel();
|
||||
private:
|
||||
int GetSliderPos(int);
|
||||
int SetSensivity(int);
|
||||
void InitSensivity(void);
|
||||
BOOL m_VJoyPresent;
|
||||
BOOL m_VJoyEnabled;
|
||||
BOOL m_CrossEnabled;
|
||||
@ -34,7 +37,14 @@ private:
|
||||
BOOL m_InvertXAxis;
|
||||
BOOL m_B1AutoFire;
|
||||
BOOL m_B2AutoFire;
|
||||
BOOL m_VJAutoCenter;
|
||||
BOOL m_VJMouseWheel;
|
||||
int m_UseMode;
|
||||
int m_VJoySensivity;
|
||||
int m_Slider;
|
||||
CBrush *Background;
|
||||
CPen *CenterPen;
|
||||
CPen *FinderPen;
|
||||
CPen *SensivityPen;
|
||||
int Multipliers[41];
|
||||
};
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -427,6 +427,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_ColorFix) t->flags3 |= COLORFIX;
|
||||
if(dlg->m_FixGlobalUnlock) t->flags7 |= FIXGLOBALUNLOCK;
|
||||
if(dlg->m_FixFreeLibrary) t->flags7 |= FIXFREELIBRARY;
|
||||
if(dlg->m_LoadLibraryErr) t->flags8 |= LOADLIBRARYERR;
|
||||
if(dlg->m_NoPixelFormat) t->flags3 |= NOPIXELFORMAT;
|
||||
if(dlg->m_NoAlphaChannel) t->flags4 |= NOALPHACHANNEL;
|
||||
if(dlg->m_FixRefCounter) t->flags4 |= FIXREFCOUNTER;
|
||||
@ -538,6 +539,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg)
|
||||
if(dlg->m_NoGDIBlt) t->flags3 |= NOGDIBLT;
|
||||
if(dlg->m_NoFillRect) t->flags4 |= NOFILLRECT;
|
||||
if(dlg->m_FixClipperArea) t->flags7 |= FIXCLIPPERAREA;
|
||||
if(dlg->m_SharedDCHybrid) t->flags8 |= SHAREDDCHYBRID;
|
||||
if(dlg->m_SyncPalette) t->flags6 |= SYNCPALETTE;
|
||||
if(dlg->m_NoWinErrors) t->flags7 |= NOWINERRORS;
|
||||
if(dlg->m_PretendVisible) t->flags8 |= PRETENDVISIBLE;
|
||||
@ -737,6 +739,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_ColorFix = t->flags3 & COLORFIX ? 1 : 0;
|
||||
dlg->m_FixGlobalUnlock = t->flags7 & FIXGLOBALUNLOCK ? 1 : 0;
|
||||
dlg->m_FixFreeLibrary = t->flags7 & FIXFREELIBRARY ? 1 : 0;
|
||||
dlg->m_LoadLibraryErr = t->flags8 & LOADLIBRARYERR ? 1 : 0;
|
||||
dlg->m_NoPixelFormat = t->flags3 & NOPIXELFORMAT ? 1 : 0;
|
||||
dlg->m_NoAlphaChannel = t->flags4 & NOALPHACHANNEL ? 1 : 0;
|
||||
dlg->m_FixRefCounter = t->flags4 & FIXREFCOUNTER ? 1 : 0;
|
||||
@ -870,6 +873,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg)
|
||||
dlg->m_NoGDIBlt = t->flags3 & NOGDIBLT ? 1 : 0;
|
||||
dlg->m_NoFillRect = t->flags4 & NOFILLRECT ? 1 : 0;
|
||||
dlg->m_FixClipperArea = t->flags7 & FIXCLIPPERAREA ? 1 : 0;
|
||||
dlg->m_SharedDCHybrid = t->flags8 & SHAREDDCHYBRID ? 1 : 0;
|
||||
dlg->m_SyncPalette = t->flags6 & SYNCPALETTE ? 1 : 0;
|
||||
dlg->m_NoWinErrors = t->flags7 & NOWINERRORS ? 1 : 0;
|
||||
dlg->m_PretendVisible = t->flags8 & PRETENDVISIBLE ? 1 : 0;
|
||||
@ -1401,7 +1405,8 @@ void CDxwndhostView::OnInitialUpdate()
|
||||
strcat_s(gInitPath, sizeof(gInitPath), m_ConfigFileName);
|
||||
listctrl.InsertColumn(0, &listcol);
|
||||
|
||||
StatusMap.VJoyStatus = GetPrivateProfileInt("joystick", "flags", VJOYENABLED|CROSSENABLED|INVERTYAXIS, gInitPath);
|
||||
StatusMap.VJoyStatus = GetPrivateProfileInt("joystick", "flags", VJOYENABLED|CROSSENABLED|INVERTYAXIS|VJMOUSEMAP|VJKEYBOARDMAP, gInitPath);
|
||||
StatusMap.VJoySensivity = GetPrivateProfileInt("joystick", "sensivity", 100, gInitPath);
|
||||
|
||||
for(i = 0; i < MAXTARGETS; i ++){
|
||||
if (!LoadConfigItem(&TargetMaps[i], &PrivateMaps[i], i, gInitPath)) break;
|
||||
|
BIN
host/resource
BIN
host/resource
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user