Emulate old Steam.dll library (experimental)#315
Emulate old Steam.dll library (experimental)#315Detanup01 merged 5 commits intoDetanup01:devfrom otavepto:patch/lib-sold
Steam.dll library (experimental)#315Conversation
|
I just tested it on Ricochet Infinity and Ricochet Lost Worlds, works perfectly fine! |
|
Steam.dll is an original from a very old Steam installation (version). |
|
As mentioned in the new readme file for this stub dll, you should be able to inject it alongside the extra dll No need to merge these 2 dll files and complicate the code further.
|
|
I see, so the proper way to use these is to place them where the games executable is, not inside of the extra_dlls directory. Fair enough. Thank you, as always, for providing these fixes and updates! |
|
Hmmmmm you should be able to place it inside extra_dlls folder, that's what I did during testing, and let ColdClientLoader inject both dlls (steam_extra.dll + the new Steam.dll). Did that not work in your tests? If so just let me know the appid only. |
|
Here's what I did, downloaded Plants Vs Zombies from Steam (AppID 3590), added ColdClientLoader to it, put the new Steam.dll that I got from here into extra_dlls directory and enabled it in ColdClientLoader.ini. Ran steamclient_loader_x32.exe and got "Unable to load Steam.dll" error. Naturally since it's an old game, using steamclient_extra_x32/64.dll does nothing. Then I added the old steam.dll that I had, but I also tried the new from directly from my Steam installation directory like LuKeSt0rm suggested, replaced the Steam.dll from here inside of extra_dlls since they share the same name. Ran steamclient_loader_x32.exe and it worked. Adding the games executable just in case. I also tried this with Zuma Deluxe (AppID 3330), Zuma's Revenge (AppID 3620), Peggle Deluxe (AppID 3480), Peggle Extreme (AppID 3483) and Peggle Nights (AppID 3540). Those are the games I specifically remember that require me to use the old steam.dll in order for them to work. |
|
Thanks @LuKeSt0rm and @UroshUchiha for your input, I definitely completely misunderstood the purpose of that old library, it seems more or less an older alternative/proxy to the steamclient. I did this:
The original Steam.dll seems to always call functions from steamclient.dll, I assumed it had more functionality, so this PR was a total waste of time 😄 I'll close this for now, sorry for the confusion/waste of time. |
It totally wasn't, as @UroshUchiha mentioned - it works with apps 7450 and 7400. From my testing, app 7450 can only be played using this PR. It could potentially benefit other older games as well, we just haven’t tested enough yet. So I humbly ask you to consider reopening it. |
|
Actually 7450 can be played if you use ForceInjectSteamClient=1 and put steam.dll from the legit steam directory either where the games executable is or where ColdClientLoader.ini is. I wasn't aware of that "option". But I do prefer the extra_dlls option more. |
|
@otavepto |
|
I don't have that game for now but what happens if you copy the original Steam.dll beside the .exe and force inject steamclient.dll via cold client loader, similar to appid 7450 and 3590 ? If that didn't work and this stub is absolutely needed, I guess I can reopen this PR and try implementing that old dll more accurately. |
|
CoD 1 and 2 (steam version) work with the older Steam.dll beside game exe posted by UroshUchiha. (without force inject steamclient.dll via coldclientloader) Don't work with newer Steam.dll beside game exe or with force inject steamclient.dll via coldclientloader These games use |
|
Didn't know they had different versions, this is very interesting since the one I used was from their official compatibility layer for Linux ( This leads me to believe that the interface version doesn't really matter in the context of that dll, because games like Call of Duty 1 & 2, or appid 7450 and 3590, are too old to know about that interface version, yet that dll (newer and older ones) must ensure that these old games are still working. I'll keep this as a draft for now until I implement it more properly. |
Steam.dll librarySteam.dll library
Steam.dll librarySteam.dll library (experimental)
|
I've added a more proper implementation, file-related functions are still not implemented since they need way more time but for now they're not necessary. |
|
I have a Steam.dll emulator forked from RevEmu, perhaps parts of it could be integrated into Goldberg: https://github.com/NicknineTheEagle/ReviveEmu |
- add log messages for errors
Lost Planet: Extreme Condition (not Colonies), the only one still available in Steam opens fine with latest goldberg fork experimental and this steam dll, the steam dll in the release also opens the game but you get user auth error, single player appears to work fine but the online mp crashes after you try to create a lobby, goldberg crash txt says this: Unhandled exception: |
Mainly to bypass checks in older games.