Skip to content

Releases: xunilrj/sandbox

telltale converter (v0.2.0)

02 Dec 14:37
Compare
Choose a tag to compare
Pre-release

Export d3dmesh, skl from Telltale games.
Tested on "Tales of Monkey Island".
Source Code: https://github.com/xunilrj/sandbox/tree/master/sources/rust/telltaled3dmesh

Linux: telltaleconv
Windows: telltaleconv.exe

Convert help:

$ telltaleconv.exe -h
telltaleconv 0.2.0
Telltale Games converters

USAGE:
    telltaleconv.exe <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

SUBCOMMANDS:
    anm-convert     Anm converter
    help            Prints this message or the help of the given subcommand(s)
    mesh-convert    D3DMesh converter
    skl-convert     SKL converter

D3D Mesh

$ .\target\release\telltaleconv.exe mesh-convert -h
telltaleconv.exe-mesh-convert 0.2.0
D3DMesh converter

USAGE:
    telltaleconv.exe mesh-convert [FLAGS] [OPTIONS] --path <path>

FLAGS:
        --buffer-as-base64
        --detach-index-buffer
    -h, --help                   Prints help information
        --pretty-print
    -V, --version                Prints version information

OPTIONS:
    -o, --output <output>    Relative or absolute path of the file that will be generated. Supported formats: .json,
                             .obj
    -p, --path <path>  

Examples:

$ telltaleconv.exe mesh-convert -p sk20_guybrush.d3dmesh -o sk20_guybrush.obj

image

$ telltaleconv.exe mesh-convert -p obj_shipguybrush.d3dmesh -o obj_shipguybrush.obj

image

Skeleton

$ telltaleconv.exe skl-convert -p sk20_guybrush.skl

image

Animation

WIP

milkdbg 0.0.1

23 Oct 13:43
Compare
Choose a tag to compare
milkdbg 0.0.1 Pre-release
Pre-release

Javascript powered debugger

REPL Mode:

PS > ./milkdbg.exe
> addBreakpoint("CreateFileA")
> init("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\MonkeyIsland101.exe")
> go()
 DEBUG debugger > Breakpoint hit at 0x75B63130
 DEBUG debugger > Know Call: KnownCall { name: "CreateFileA", args: [String("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\Pack\\0_shaders.ttarch")] }
>

Run Script Mode:

PS > ./milkdbg.exe --path "all.createfilea.js" --verbose
Args {
    path: Some(
        ".\\all.createfilea.js",
    ),
    verbose: true,
}
async function f() {
    await addBreakpoint("CreateFileA")
    await init("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\MonkeyIsland101.exe")

    while (true) {
        await go();
        const api = await currentStackFrame();
        print(api);
    }
}
f();
Some(KnownCall { name: "CreateFileA", args: [String("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\Pack\\0_shaders.ttarch")] })
Some(KnownCall { name: "CreateFileA", args: [String("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\Pack\\1_MonkeyIsland101_pc_data.ttarch")] })
Some(KnownCall { name: "CreateFileA", args: [String("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\Pack\\2_MonkeyIsland101_pc_voice.ttarch")] })
Some(KnownCall { name: "CreateFileA", args: [String("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\Pack\\3_MonkeyIsland101_pc_ms.ttarch")] })
Some(KnownCall { name: "CreateFileA", args: [String("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\Pack\\4_MonkeyIsland101_pc_tx.ttarch")] })
Some(KnownCall { name: "CreateFileA", args: [String("C:\\ProgramData\\NVIDIA Corporation\\ShadowPlay\\CaptureCore.log")] })
Some(KnownCall { name: "CreateFileA", args: [String("C:\\Users\\xunil\\Documents\\Telltale Games\\Launch of the Screaming Narwhal\\prefs.prop")] })
...

Supported JS function:

await addBreakpoint("CreateFileA");
await addBreakpoint(addr, { once: true });
await init("C:\\Program Files (x86)\\Telltale Games\\Tales of Monkey Island\\Launch of the Screaming Narwhal\\MonkeyIsland101.exe");
const frame= await currentStackFrame();
const ctx = await getThreadContext();
const lpNumberOfBytesRead = await read("u32", frame.args.lpNumberOfBytesRead);
 await go();

This allows you to build very interesting debug helpers such as:

async function goUntil(f) {
    while (true) {
        await go();
        const api = await currentStackFrame();
        const ctx = await getThreadContext();
        if (f && f.then && (await f(api, ctx))) {
            break;
        } else if (f(api, ctx)) {
            break;
        }
    }
}
await goUntil(x => x.name == "CreateFileA" && x.args.lpFileName.endsWith(".d3dmesh"));

telltaled3dmesh (v0.0.1)

13 Sep 09:06
Compare
Choose a tag to compare
Pre-release

Export d3dmesh from telltale games.
Tested on "Tales of Monkey Island".
Source Code: https://github.com/xunilrj/sandbox/tree/master/sources/rust/telltaled3dmesh

Linux: telltaled3dmesh
Windows: telltaled3dmesh.exe

Convert help:

telltaled3dmesh-convert 0.1.0

USAGE:
    telltaled3dmesh convert [FLAGS] --path <path>    

FLAGS:
        --buffer-as-base64
    -h, --help                Prints help information
        --pretty-print
    -V, --version             Prints version information

OPTIONS:
    -p, --path <path>