Repflez / AzureFlare

Drop in DLL mod for Phantasy Star Online Blue Burst for modifications
MIT License
4 stars 0 forks source link

Brainstorming to make it work on SteamDeck/Wine #1

Open nolrinale opened 3 months ago

nolrinale commented 3 months ago

Creating this small thread as an area where we can brainstorm different approaches to make the original untouched PsoBB.exe and the AzureFlare patch work under the Steam Deck and/or any linux with Wine installed.

In the meantime I also want to share some findings attempting to debug via winedbg didnt allowed me to attack to the PsoBB.exe process with info process and the attach command.

I also tried with WINEDEBUG=+relay,+loaddll,+winsock wine 'C:\SEGA\PHANTASY STAR ONLINE Blue Burst\online.exe' 2>&1 as a nuclear option and managed to make the game run but then it cannot find the required files to start such as the PsoBB.exe

tried also grep'ing the strings wsock, sock, dll, user32 and whatnot to see if I can find some clue on where the DLL is failing to patch the gameguard with the packed exe to no avail either.

I've been unable to build and compile my own AzureFlare under linux yet I guess i will need to install all the dotnet packages for that but again I have no clue exactly at which point the patch is failing in the PatchPackedGameGuard() function under gameguard.cpp

Does anyone knows the best way to debug dll overrides like these on linux/wine? I think wine has too many hidden options one of them must be the correct one for a comfortable debugging experience!

nolrinale commented 3 months ago

btw not really related to this but figured would be interesting to add, playing with the Unpacked Exe on both Windows and Linux I can tell the game audio subsystem gets screwed up, if you go to the shopping area and attempt to sell something the "blingblingblingbling!" sound of money making gets cut midway whereas with the original packed exe this doesnt happen and all the sounds play properly.

The SFX of the Gi's in Episode 2 areas also gets cut midway in the unpacked exe, all these sound bugs are also present in the Tethealla client because they all use the same extraction method to unpack the exe

So I guess the extractor is not flawless and might mess with more game internal logic we might think about at first...

Repflez commented 2 months ago

During my initial testing I found that the BB memory is not decompressed by the time AzureFlare tries to patch the process memory, leading to not finding any memory pointers for patching GameGuard. I may need to do some alternate ways to be able to read the memory under Linux as I doubt this is a Wine issue.

So I guess the extractor is not flawless and might mess with more game internal logic we might think about at first...

This is already known as the currently available unpacked EXE is not properly unpacked. It does need to be unpacked via a debugger (OllyDbg, x64dbg, etc) and the instructions are in the clear web. Relevant data is in this newserv issue.