#454 PGR compatiblity

Açık
Yukimana tarafından 6 ay önce kere açıldı · 9 yorum
Yukimana 6 ay önce olarak yorumlandı

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 6 ay önce olarak yorumlandı
Sahibi

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 6 ay önce olarak yorumlandı

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 6 ay önce olarak yorumlandı
Poster

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 6 ay önce olarak yorumlandı

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 6 ay önce olarak yorumlandı
Poster

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 6 ay önce yeniden açtı
Krock 6 ay önce olarak yorumlandı
Sahibi

@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 6 ay önce olarak yorumlandı

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 6 ay önce olarak yorumlandı
Sahibi

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 2 gün önce olarak yorumlandı

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)
Giriş yap bu konuşmaya katılmak için.
Kilometre Taşı Yok
Atanan Kişi Yok
5 Katılımcı
Yükleniyor...
İptal
Kaydet
Henüz bir içerik yok.