-
-
Notifications
You must be signed in to change notification settings - Fork 256
Description
Context
Currently, the development branch only supporting empty method filling, whilst the legacy branch supports some platform-specific method body recovery.
Motivation for posting this issue
I needed a good place to point people who ask about it in the AssetRipper community. Do not interpret this as a request from me to do any work.
ISIL
ISIL (instruction set independent language) is a custom framework on the development branch designed to abstract over differences between game platforms.
Challenges
Porting the method body conversion is far from a simple copy-paste:
- ISIL didn't exist in legacy code, so legacy code was platform specific.
- ISIL is not fully implemented.
- The development branch uses AsmResolver for assembly creation, but legacy code used Mono.Cecil.
This is a massive feature, so users should either be patient or give @SamboyCoding lots of money.
Workaround for impatient users
It's amazing that Cpp2IL supported method body recovery at one point. Hopefully, it will again someday, but there's no timescale on that implementation.
Legacy releases are the only releases that support method body recovery. They have names of the form 2022.0.X where X is any number from 0 to infinity.
- Download the appropriate file for your operating system.
- Extract the contents to a new folder.
- Open a command prompt or terminal.
- Use
cd path/to/Cpp2IL.exe - Use appropriate command line options. You'll likely want
--just-give-me-dlls-asap-dammitto be one of the arguments. - Load the Cpp2IL output into ILSpy.
- If desirable, ILSpy supports saving decompiled text files to the disk.