5 ms·
Can you give some more details how the reverse engineering was done exactly? (And maybe put that also in the README or somewhere, because I think this is probab
by albertzeyer 6y ago
Can you give some more details how the reverse engineering was done exactly? (And maybe put that also in the README or somewhere, because I think this is probably interesting to some.)
You write:
> re3 was started sometime in the spring of 2018, initially as a way to test reversed collision and physics code inside the game. This was done by replacing single functions of the game with their reversed counterparts using a dll.
How exactly? So the game EXE exported all the function symbol names? How did you know the function signature (arguments, return type)? And then it is enough to preload a DLL to replace the function? There is no global state or so which must be accessed?
- aap_ 6y agoMaybe you'll find the first commit instructive: https://github.com/GTAmodding/re3/tree/600bf0351476a5a21aabb5429132ddf7f52ac0b9 https://github.com/GTAmodding/re3/tree/600bf0351476a5a21aabb... We were very lucky that we had symbols for global things, which inludes function names and signatures but not return types. We then replaced the first instruction of a function with a jump to our own. global variables can be done with a reference to a raw address. virtual methods are a bit of a challenge but we found way to handle them.
- dom96 6y agoWow, that's cool, so you replaced each of the game's functions individually until you had the majority replaced and working stand-alone?
- aap_ 6y agoNot the majority. every single one!
- deleted 6y ago[deleted]
- d26900 6y agoWow, impressive! Can the assets be "reverse engineered" as well? Also, can R* shut this project down? Is there a legal basis for them?
- softwhale 6y agoApparently, this project requires the game assets to work - so you have to own a (legitimate) PC version of the game. https://github.com/GTAmodding/re3#intro https://github.com/GTAmodding/re3#intro Of course, R*/Take-Two could always make a case.
- aap_ 6y agoNot sure what reverse engineering assets means. There is source code for them so they are what they are.
- d26900 6y agoWith "asset reverse engineering" I meant: recreating the assets from scratch. Just like a painter reproducing another painting.
- kmeisthax 6y agoAssets are typically "reverse engineered" by writing tools that convert them to and from whatever proprietary formats the game uses. Other than that, there's not much else to do with them once they're in standard format. As for the legality of the whole project: there's several different legal objections one could raise under copyright law: 1. That the EULA prohibits reverse-engineering 2. That the resulting reverse-engineering project is infringing the copyright on GTA3's program code (which it kind of has to in order to be a faithful disassembly)
- breakingcups 6y ago(Except libraries like Renderware and Miles Sound System, because there'd be almost no point in wasting time on that. Only R* code was reversed.)
- aap_ 6y agoThat's true, though I did write a replacement for RW. It's not an exact copy but it does the job.