Skip to content

call_trace ​

Tool tools/emu/call_trace.py (library, Emulators). Record the calls an emulated function makes to chosen functions, in order, with call sites.

A library: other tools and your own scripts import it. Source on GitHub.

Its own help ​

This is the help text in the tool itself, as ./gameframe tool call_trace prints it.

text
Record the calls an emulated function makes to chosen functions, in order, with call sites.

The usual use is the game's random number generator: most "almost right" reimplementations of
a simulation draw random numbers in a different order or count. Record the original's draws
here, record the port's draws the same way, and compare with tools/verify/seqdiff.py.

    from call_trace import CallTrace
    trace = CallTrace(emu, {emu.export('engine.dll', 'rng_next'): 'rng_next',
                            emu.export('engine.dll', 'rng_float'): 'rng_float'})
    emu.call(simulate, 1234, 600, out)
    trace.write('orig.trace')   # one line per call: "label<TAB>module+offset" of the return address

Only outermost calls are recorded: rng_float calling rng_next logs one line, as the port would
count one draw. Pass `args=N` to record the first N integer arguments too (`label(a, b)`).

Named by ​

Skills: re-observe, re-emulate.

Agents: re-measurer, re-randomiser.

Code: Apache 2.0. Content: CC0 1.0. No game material: bring your own copy.