#454 PGR compatiblity

Offen
vor 1 Jahr geöffnet von Yukimana · 9 Kommentare
Yukimana kommentierte vor 1 Jahr

Well, shit, it seems like Punishing: Gray Raven is going to be another game where you'll need to add (Broken: Anticheat) to. All these companies really love that Tencent anti-cheat.

Well, shit, it seems like Punishing: Gray Raven is going to be another game where you'll need to add (Broken: Anticheat) to. All these companies really love that Tencent anti-cheat.
Krock kommentierte vor 1 Jahr
Besitzer

Is there yet any definitive (i.e. confirmed) information about this matter? To my knowledge, the necessary setup and workaround steps are implemented in the Borb Launcher to get the game running.

Is there yet any definitive (i.e. confirmed) information about this matter? To my knowledge, the necessary setup and workaround steps are implemented in the [Borb Launcher](https://github.com/an-anime-team/an-anime-borb-launcher/issues) to get the game running.
demicorn kommentierte vor 1 Jahr

Borb is not being updated. Just use the official launcher

winetricks corefonts vcrun2022

This game does not require any patch to work in linux

Borb is not being updated. Just use the official launcher ``` winetricks corefonts vcrun2022 ``` This game does not require any patch to work in linux
Yukimana kommentierte vor 1 Jahr
Ersteller

They seem to have implemented an anti-cheat in this update. The game just refuses to start, even Windows users are getting crashes with false warnings like this now. I have had the game runnning pefectly for months now.

They seem to have implemented an anti-cheat in this update. The game just refuses to start, even Windows users are getting crashes with false warnings like this now. I have had the game runnning pefectly for months now.
mkrsym1 kommentierte vor 1 Jahr

Looks like it's the same amazing ACE implementation as #451 , unfortunately the two-line workaround will not work, because the string UnityPlayer.dll is longer than PGRBase.dll and won't fit. Patching it would be a little more involved, but still absolutely trivial. I'm not interested in this game either though.

Edit: yes, you can just take the patched exe from Reverse 1999 and rename it to PGR.exe, it will probably work.

Note: I did not verify any of this (except the fact that it's the same great implementation), merely a guess.

Looks like it's the same amazing ACE implementation as #451 , unfortunately the two-line workaround will not work, because the string `UnityPlayer.dll` is longer than `PGRBase.dll` and won't fit. Patching it would be a little more involved, but still absolutely trivial. I'm not interested in this game either though. Edit: yes, you can just take the patched exe from Reverse 1999 and rename it to PGR.exe, it will probably work. Note: I did not verify any of this (except the fact that it's the same great implementation), merely a guess.
Yukimana kommentierte vor 1 Jahr
Ersteller

I hope it doesn't have a way to detect that it's a different exe. It'd be great if it's dumb in that as well. Using the patched Reverse1999.exe as PGR.exe works perfectly for now.

I hope it doesn't have a way to detect that it's a different exe. It'd be great if it's dumb in that as well. Using the patched Reverse1999.exe as PGR.exe works perfectly for now.
Yukimana hat vor 1 Jahr geschlossen
Yukimana hat vor 1 Jahr wieder geöffnet
Krock kommentierte vor 1 Jahr
Besitzer

@mkrsym1 Might it also work to copy or rename UnityPlayer.dll and do the binary patch in reverse?


Is there any official direct link to the Reverse1999 executable for those who would only like to play PGR?

@mkrsym1 Might it also work to copy or rename UnityPlayer.dll and do the binary patch in reverse? --- Is there any official direct link to the Reverse1999 executable for those who would only like to play PGR?
mkrsym1 kommentierte vor 1 Jahr

The only thing you have to do for the game to start is to somehow call UnityMain. You can do that, for example, with this piece of C code:

void *GetProcAddress(void *module, char *name);
void *LoadLibraryA(char *name);

int wWinMain(void *instance, void *prevInstance, void *cmdLine, int showCmd) {
  return ((int (*)())GetProcAddress(LoadLibraryA("UnityPlayer.dll"), "UnityMain"))(instance, prevInstance, cmdLine, showCmd);
}

You can use any cross-compiler of your liking, e.g. MinGW:

x86_64-w64-mingw32-gcc the_file.c -municode -Wl,--subsystem,windows -o PGR.exe

The compiled binary should then be able to launch both of the games (this might even be more stable than the two-line workaround I provided in #451 ).

Don't bother trying to use this on HI3/HSR/most other ACE games. Most likely they will either crash or exit immediately, or crash at some later point when something will call into the TVM section (which is missing from both PGR and R1999).

The only thing you have to do for the game to start is to somehow call UnityMain. You can do that, for example, with this piece of C code: ```c void *GetProcAddress(void *module, char *name); void *LoadLibraryA(char *name); int wWinMain(void *instance, void *prevInstance, void *cmdLine, int showCmd) { return ((int (*)())GetProcAddress(LoadLibraryA("UnityPlayer.dll"), "UnityMain"))(instance, prevInstance, cmdLine, showCmd); } ``` You can use any cross-compiler of your liking, e.g. MinGW: ``` x86_64-w64-mingw32-gcc the_file.c -municode -Wl,--subsystem,windows -o PGR.exe ``` The compiled binary should then be able to launch both of the games (this might even be more stable than the two-line workaround I provided in #451 ). Don't bother trying to use this on HI3/HSR/most other ACE games. Most likely they will either crash or exit immediately, or crash at some later point when something will call into the TVM section (which is missing from both PGR and R1999).
Krock kommentierte vor 1 Jahr
Besitzer

Thank you very much for this code. For convenience, I compiled your code with the Tiny C Compiler 0.9.27. Use at your own risk.

md5sum:  cd39b70d27f06a9cdec40ba099bca297
sha1sum: 30664fadb9707e9d43a2b92465a86b39c47b03af

Download link: https://drive.google.com/file/d/1NBUOXD3UMGI66GLq_Of0_XsiBGUHXEEO/view?usp=drive_link

Source code for completeness' sake (by mkrsym1):

void *GetProcAddress(void *module, char *name);
void *LoadLibraryA(char *name);

int wWinMain(void *instance, void *prevInstance, void *cmdLine, int showCmd) {
  return ((int (*)())GetProcAddress(LoadLibraryA("UnityPlayer.dll"), "UnityMain"))(instance, prevInstance, cmdLine, showCmd);
}
Thank you very much for this code. For convenience, I compiled your code with the Tiny C Compiler 0.9.27. **Use at your own risk.** ``` md5sum: cd39b70d27f06a9cdec40ba099bca297 sha1sum: 30664fadb9707e9d43a2b92465a86b39c47b03af ``` Download link: https://drive.google.com/file/d/1NBUOXD3UMGI66GLq_Of0_XsiBGUHXEEO/view?usp=drive_link Source code for completeness' sake (by mkrsym1): ```C++ void *GetProcAddress(void *module, char *name); void *LoadLibraryA(char *name); int wWinMain(void *instance, void *prevInstance, void *cmdLine, int showCmd) { return ((int (*)())GetProcAddress(LoadLibraryA("UnityPlayer.dll"), "UnityMain"))(instance, prevInstance, cmdLine, showCmd); } ```
ALEZ-DEV kommentierte vor 6 Monaten

For people who are passing by, the anime borb launcher is no longer maintained, so I made one from scratch for people who don't want to pass through the all process of configuring and patching the game, there is the link

For people who are passing by, the anime borb launcher is no longer maintained, so I made one from scratch for people who don't want to pass through the all process of configuring and patching the game, [there is the link](https://github.com/ALEZ-DEV/Babylonia-terminal)
Anmelden, um an der Diskussion teilzunehmen.
Kein Meilenstein
Niemand zuständig
5 Beteiligte
Laden…
Abbrechen
Speichern
Hier gibt es bis jetzt noch keinen Inhalt.