I have a first working version of my new project.
It's a compatiblity tool that fixes problems with 32 bit windows games, makes them run on newer windows systems.
It's designed to be integrated in other software like application launchers. So it comes without a GUI, just a console app you need to configure by command line parameters.
Everyone can expand it by developing plugins. Actualy the core itself does nothing else than offer functionality for plugins. Currently the core exports a very reliable procedure hooking system enabling you to hook StdCall procedures, like Win32 API. Other calling conventions like FastCall will be supported in the future. It also exports a working disassembler (BeaEngine), because the one in PB just not works reliable. It's the cheetah version that dont constructs a text string of the disassembled instruction but its very fast and perfect to use for automatic code analysis. It's used by the procedure hooking system.
Next functionalty i will implement is DirectDraw hooking.
This first release comes with just one plugin: MemoryFix
It hooks GlobalMemoryStatus to make games running that calculate free memory wrong or just refuse to run if the page file is deactivated.
One game i tested it with is Battle Isle 3 and yes it runs it under Win 7 x64.
I have a lot of ideas for core functionalities and plugins there will be upcoming some more generic plugins and some plugins for specific games but i guess the project will live from other people making plugins. If you are interessted about making a plugin: I will open up the plugin interface with the next version and will post some examples to use it. It's perfect for people that allways was been interessted in that kind of stuff but be scared off by DLL injection and hooking. Thats the good thing about the GameFixer, it will take care about all that complicated stuff for you.
So finaly: How to use it
It's a console program, you tell it what to do via command line parameters, it launches the game and does the magic.Syntax
: GameFixer.exe Game.exe [-Params Gameparameters] [-DontAsk] [-Silent] [-Auto] [-Update] [-Plugin1 Config] [-Plugin2 Config]Game.exe
The game you want to launch with complete path.
If the path includes spaces enclose it in double quotes.-Params or -p
Specifies that you want to get a parameter line to the game. The parameter line comes after a space.
If it includes spaces enclose it in double quotes. If it includes double quotes replace them with /#DQ/.-DontAsk or -da
Activates the DontAsk mode.
That means the GameFixer will not wait for user input or offers any decision possiblities to the user.-Silent or -s
Activates the Silent mode.
That means the GameFixer will not output anything it even will not open the console.
If Silent mode is active, DontAsk mode is automaticly active as well.-Auto or -a
Tells the GameFixer to configure itself, decide what plugins to use, etc.
Not implemented just yet!-Update or -u
Does a online update.
Not implemented just yet!-Plugin
Loads and configures a plugin.
Replace Plugin with the name of the plugin.
The config line comes after a space. If the config line includes spaces enclose it in double quotes.
You can specify any number of plugins.MemoryFix Plugin
I dont think i need to write much about that on a coder board. It's just a hook on GlobalMemoryStatus that changes the values of the members of the MEMORYSTATUS structure.
Specify in the config line which members of the MEMORYSTATUS structure you want to change.
Names: MemoryLoad, TotalPhys, AvailPhys, TotalPageFile, AvailPageFile, TotalVirtual, AvailVirtualExample
for Battle Isle 3:
GameFixer.exe C:\Games\BI3\BIN\SDI_1C.EXE -MemoryFix "TotalPageFile=67108864 AvailPageFile=67108864"Download: GameFixer v0.03 (107KB)Download: GameFixer SDK v0.03 (18KB)