sc2ad / il2cpp-modding-codegen Goto Github PK
View Code? Open in Web Editor NEWGenerates code that can be built into a shared library for Il2Cpp modding
License: The Unlicense
Generates code that can be built into a shared library for Il2Cpp modding
License: The Unlicense
Drag and drop your dump.cs file (or a partial of it of the correct format) then press enter...
dump.cs
Parsing...
Unhandled exception. System.InvalidOperationException: Line 442: Method cannot be created from: ""
at Il2CppModdingCodegen.Data.DumpHandling.DumpMethod..ctor(TypeRef declaring, PeekableStreamReader fs) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Data\DumpHandling\DumpMethod.cs:line 47
at Il2CppModdingCodegen.Data.DumpHandling.DumpTypeData.ParseMethods(PeekableStreamReader fs) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Data\DumpHandling\DumpTypeData.cs:line 184
at Il2CppModdingCodegen.Data.DumpHandling.DumpTypeData..ctor(PeekableStreamReader fs, DumpConfig config) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Data\DumpHandling\DumpTypeData.cs:line 220
at Il2CppModdingCodegen.Data.DumpHandling.DumpData.ParseTypes(PeekableStreamReader fs) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Data\DumpHandling\DumpData.cs:line 43
at Il2CppModdingCodegen.Data.DumpHandling.DumpData.Parse(PeekableStreamReader fs) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Data\DumpHandling\DumpData.cs:line 61
at Il2CppModdingCodegen.Data.DumpHandling.DumpData..ctor(Stream stream, DumpConfig config) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Data\DumpHandling\DumpData.cs:line 74
at Il2CppModdingCodegen.DumpParser.Parse(Stream stream) in D:\games\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Parsers\DumpParser.cs:line 17
at Codegen_CLI.Program.Main(String[] args) in D:\games\Il2Cpp-Modding-Codegen\Codegen-CLI\Program.cs:line 46
Eg: Skip the following:
System.IO.IOException: The filename, directory name, or volume label syntax is incorrect. : 'D:\Il2Cpp-Modding-Codegen\Codegen-CLI\bin\Debug\netcoreapp3.1\output\include\<PrivateImplementationDetails>{FF33C43E-3513-4C16-A62D-5F1EFE332B71}'
at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)
at System.IO.Directory.CreateDirectory(String path)
at Il2CppModdingCodegen.Serialization.CppHeaderCreator.Serialize(CppTypeContext context) in D:\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Serialization\CppHeaderCreator.cs:line 34
at Il2CppModdingCodegen.Serialization.CppDataSerializer.Serialize(CppStreamWriter writer, IParsedData data, Boolean _unused_) in D:\Il2Cpp-Modding-Codegen\Il2Cpp-Modding-Codegen\Serialization\CppDataSerializer.cs:line 146
at Codegen_CLI.Program.Main(String[] args) in D:\Il2Cpp-Modding-Codegen\Codegen-CLI\Program.cs:line 169
[op_Implicit, 208], [op_Equality, 122], [op_Inequality, 101], [op_Explicit, 136], [op_Addition, 60], [op_Subtraction, 57], [op_UnaryNegation, 27], [op_Multiply, 77], [op_Division, 37], [op_LessThan, 27], [op_LessThanOrEqual, 13], [op_GreaterThan, 25], [op_GreaterThanOrEqual, 10], [op_Increment, 1], [op_Modulus, 5], [op_LeftShift, 2], [op_RightShift, 2], [op_BitwiseAnd, 17], [op_BitwiseOr, 15], [op_OnesComplement, 10], [op_UnaryPlus, 8], [op_ExclusiveOr, 5], [op_True, 1]
As demonstrated in this file Unions still cause issues,
here the issue is that the union of MapType and the 4 quants is seperated out into fields, causing it to mess up the size check for the object. This means that the generated project does not compile due to the size checks there.
A hacky fix is of course removing the size checks there, but eventually properly having unions is the expection (I assume)
Just putting this in so it's an issue that can be tested on
if the base class of a type is generic, and that is the type that a vtable slot needs to be resolved for, the generic parameter is lost in the source file, example:
// header
class A : B<float> {
void thing();
}
// source
void A::thing() {
...
___internal__method = resolveVtableSlot(this, classof(B<T>*));
...
}
obviously this is very simplified but I hope this makes the issue clear enough to understand.
the B<T>*
should obviously be B<float>*
there.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.