Releases: xunilrj/sandbox
Releases · xunilrj/sandbox
telltale converter (v0.2.0)
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
$ telltaleconv.exe mesh-convert -p obj_shipguybrush.d3dmesh -o obj_shipguybrush.obj
Skeleton
$ telltaleconv.exe skl-convert -p sk20_guybrush.skl
Animation
WIP
milkdbg 0.0.1
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)
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>