Post by emoose on Dec 7, 2021 0:51:53 GMT 10
Hi all, not sure how well known this is, but a debug build of the Gamecube version was released a little while ago.
The debug stuff is pretty interesting itself, has a huge amount of things that were missing in the PC debug release, like a "LIGHT TOOL" debugger for the games lighting/filter system, etc.
One of the things included in that build comes in very handy for those reversing the game though - near complete .SYM symbol files, naming almost all functions used in the games executable + REL files!
Of course those files are only for the GC version, not the PC version that people mostly use now, but the PC version still shares a lot in common with that GC build, just takes a little guesswork (and a lot of time comparing things), and those names can be ported over
I've been doing this while helping with the re4_tweaks project, so far I'd say around 60% of the IDB is named (based on how many functions are named in the IDB vs unnamed), these names come in very handy when trying to look into how some part of the game works
Though the PC version includes a lot of new code for handling PC related stuff/new fixes/etc that the GC version wouldn't be able to help with - fortunately RE4VR also had symbols included too, although a lot of things have been removed to use UE4 equivalents instead, it's still come in useful for naming a few things.
(the PS2 version also included partial symbols too, but nowhere near as many as this debug build, PS2 version had a lot changed internally compared to GC too which PC didn't make any use of, it's still helped a little bit though)
My latest IDA 7.7 database can be found at github.com/emoose/re4-research/issues/3 (the pc-1.1.0_enum file - remove the .zip extension from it though, since github wouldn't allow 7z files...), I'll update this post if I post up any new one.
Like mentioned above this was mostly done by guesswork/comparisons between PC & Gamecube, so there's a good chance of some things being misnamed here, hopefully it should come in useful for anyone that wants to study the games internals though
Please feel free to reply here or on github if you have any adds/changes to make to it! (recently I've started looking into the internal structs the game uses too, sadly none of the released symbols include much info about them, if any of the masters here have already done any work on them I'd appreciate any help!)
(E: if anyone wants to look into the GC symbols, also made a tool to convert them into a IDA/Ghidra script format here: github.com/emoose/re4-research/releases/tag/0.1)
E2: small update to the database, named a few more funcs and made a start on the `pG` / `GLOBALS` struct: github.com/emoose/re4-research/issues/1
That struct is huge though (0x8000+ bytes), so would take a lot of work to name all the fields inside it properly... If anyone has done any work on naming any vars between bio4.exe+0x85A760 - bio4.exe+0x862E00 (1.1.0), eg. made a trainer that acts on that range or anything like that, please consider posting what you have, that range holds the GLOBALS struct, so any info would be appreciated!
The debug stuff is pretty interesting itself, has a huge amount of things that were missing in the PC debug release, like a "LIGHT TOOL" debugger for the games lighting/filter system, etc.
One of the things included in that build comes in very handy for those reversing the game though - near complete .SYM symbol files, naming almost all functions used in the games executable + REL files!
Of course those files are only for the GC version, not the PC version that people mostly use now, but the PC version still shares a lot in common with that GC build, just takes a little guesswork (and a lot of time comparing things), and those names can be ported over
I've been doing this while helping with the re4_tweaks project, so far I'd say around 60% of the IDB is named (based on how many functions are named in the IDB vs unnamed), these names come in very handy when trying to look into how some part of the game works
Though the PC version includes a lot of new code for handling PC related stuff/new fixes/etc that the GC version wouldn't be able to help with - fortunately RE4VR also had symbols included too, although a lot of things have been removed to use UE4 equivalents instead, it's still come in useful for naming a few things.
(the PS2 version also included partial symbols too, but nowhere near as many as this debug build, PS2 version had a lot changed internally compared to GC too which PC didn't make any use of, it's still helped a little bit though)
My latest IDA 7.7 database can be found at github.com/emoose/re4-research/issues/3 (the pc-1.1.0_enum file - remove the .zip extension from it though, since github wouldn't allow 7z files...), I'll update this post if I post up any new one.
Like mentioned above this was mostly done by guesswork/comparisons between PC & Gamecube, so there's a good chance of some things being misnamed here, hopefully it should come in useful for anyone that wants to study the games internals though
Please feel free to reply here or on github if you have any adds/changes to make to it! (recently I've started looking into the internal structs the game uses too, sadly none of the released symbols include much info about them, if any of the masters here have already done any work on them I'd appreciate any help!)
(E: if anyone wants to look into the GC symbols, also made a tool to convert them into a IDA/Ghidra script format here: github.com/emoose/re4-research/releases/tag/0.1)
E2: small update to the database, named a few more funcs and made a start on the `pG` / `GLOBALS` struct: github.com/emoose/re4-research/issues/1
That struct is huge though (0x8000+ bytes), so would take a lot of work to name all the fields inside it properly... If anyone has done any work on naming any vars between bio4.exe+0x85A760 - bio4.exe+0x862E00 (1.1.0), eg. made a trainer that acts on that range or anything like that, please consider posting what you have, that range holds the GLOBALS struct, so any info would be appreciated!