ItsMods

Full Version: GDec v1.2 (GSC Decompiler for BO2)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5 6
(07-28-2014, 21:33)Nukem Wrote: [ -> ]
(07-28-2014, 21:11)probaddie Wrote: [ -> ]Eh, am I missing something? The topic says there's a "release" here but I can't find the download link.

Attachments randomly disappear on this forum for some reason.

That's unfortunate Confused. Is there another way to get a copy of the program?
alrady neeeeeed
Hey buddy could you update your links?
Nice man
can you please provide me with link i have menus in zombies i have to edit that freeze my xbox and i want to add more options please PM me
any 1
thinks men it will help to mutch
If you know how to compile visual studio solutions, and know how to use google properly. You should be able to git it.
Get it?
wheres the download?
(02-28-2014, 14:39)master131 Wrote: [ -> ][Image: elf7Jti.png]

Started working on this ages ago, only start polishing and refining the code/features recently. Thought it was about time I actually released it. Picture explains it all, pretty simple to get GSCs decompiled. If no output directory is specified (eg. because you drag-and-dropped), it defaults to a "Decompiled" folder.

Features:
- Decompiles all GSCs from @kokole GSC rip.
- Optimizes expressions to make them more readable. Example: if ( !( !isDefined( level.usingscorestreaks ) ) ) --> if ( isDefined( level.usingscorestreaks ) )
- Can print out the raw instructions of every GSC, similar to IL in .NET
- Automatic detection of undiscovered DVARs in hash form as well as detection of infinite loops.

Example of "instructions" (--out-instr):

Code:
getrankxpstat()
{
    /* I_0000: OP_CreateLocalVariable () { rankxp, rankxpcapped } */
    /* I_0006: OP_PreScriptCall */
    /* I_0007: OP_GetString "StatValue" */
    /* I_000A: OP_GetString "RANKXP" */
    /* I_000E: OP_GetString "playerstatslist" */
    /* I_0012: OP_GetSelf */
    /* I_0013: OP_ScriptMethodCall getdstat */
    /* I_001C: OP_EvalLocalVariableRefCached 1 */
    /* I_001E: OP_SetVariableField */
    rankxp = self getdstat( "playerstatslist", "RANKXP", "StatValue" );
    /* I_001F: OP_PreScriptCall */
    /* I_0020: OP_EvalLocalVariableCached 1 */
    /* I_0022: OP_ScriptFunctionCall getrankxpcapped */
    /* I_0028: OP_EvalLocalVariableRefCached 0 */
    /* I_002A: OP_SetVariableField */
    rankxpcapped = getrankxpcapped( rankxp );
    /* I_002B: OP_EvalLocalVariableCached 1 */
    /* I_002D: OP_EvalLocalVariableCached 0 */
    /* I_002F: OP_greater */
    /* I_0030: OP_JumpOnFalse I_004D */
    if ( rankxp > rankxpcapped )
    {
        /* I_0034: OP_PreScriptCall */
        /* I_0035: OP_EvalLocalVariableCached 0 */
        /* I_0037: OP_GetString "StatValue" */
        /* I_003A: OP_GetString "RANKXP" */
        /* I_003E: OP_GetString "playerstatslist" */
        /* I_0042: OP_GetSelf */
        /* I_0043: OP_ScriptMethodCall setdstat */
        /* I_004C: OP_DecTop */
        self setdstat( "playerstatslist", "RANKXP", "StatValue", rankxpcapped );
    }
    /* I_004D: OP_EvalLocalVariableCached 0 */
    /* I_004F: OP_Return */
    return rankxpcapped;
}

Known bugs:
- Some if statements might be slightly inaccurate if they combine different logical operators (&& and ||) in the same statement.

Changes in v1.1: (1st March 2014)
- Improved detection of infinite loops.
- Added proper continue and return support for while loops.
- Added else block detection.
- Fixed the calls to getDvarColorXXXX.
- Fixed developer code blocks.

Changes in v1.2: (1st March 2014)
- Fixed bug with "Object reference not set to instance of an object" message on DLC.
- Added support for compound assingments (+=, -=, *=, /=)

Credits:
Thanks to @kokole and @Nukem for their reversing efforts.

I've attached an archive containing @kokole 's entire GSC rip in decompiled form.
<3
Pages: 1 2 3 4 5 6