- The interim cue tables and their opt-outs are gone; the native runtime is the only audio path. Old
settings/audio.json files still load ("interim" / "native" ignored). Missing native data logs an error
instead of falling back.
- Water splash from retail's mechanism (SFXObj_OffBoard start / update): Skate_Collisions 1187 / 1197 once
per water stay, 1198 when the board is in water.
- The random interim riding bed is removed; riding collision and cloth sounds compared with the recomp
(doc 11). Native output otherwise byte-identical (13 scenarios + 5 sessions).
- Published tools under tools/ (one folder per tool with a README; the recomp ones labelled for use with the
research hooks), doc 14 and PR plan bucket L.
- Docs: doc 11 (retirement, bail density measured against the recomp, collision posts), doc 13 (usage guide).
2.6 KiB
Recomp code search
For use with the Skate 3 recomp's research hooks:
Hailey-Ross/skate3recomp, branch research-hooks
(described in docs/hails-additions/13-recomp-research-hooks.md).
Reference only. These scripts search the recompiled sources and the game's memory image that you generate from your own legally owned copy of the game. You must build the recomp yourself and set up the paths below for your machine; nothing from the game is included here. Use what you find as a reference for re-implementing behaviour, never copy game code into the engine.
Finding the code behind a behaviour is the first step before hooking it (see the research-hooks branch for the hooks themselves).
| Script | What it does |
|---|---|
fn.sh ADDR |
Prints the disassembly comments of the recompiled function sub_ADDR. |
grepfn.sh 'ERE' |
Prints sub_XXXXXXXX: <asm line> for every disassembly line matching the pattern, with its function. |
callctx.sh ADDR [before] [after] |
Every call site of sub_ADDR (first 20), with the surrounding disassembly and the calling function. |
ppcxref.py |
Cross-references in a big-endian PowerPC memory image: code that builds an address (lis + addi / load / store), strings and their users, callers of a function, the function containing an address, and data words pointing at an address (vtables, tables). |
Inputs
RECOMP_GENERATED: your skate3recomp build'sgenerated/folder (the code generator's output,skate3_recomp.*.cpp), for the shell scripts.- For
ppcxref.py:--image(orPPC_IMAGE), a dump of the executable's loaded memory image from your own copy, base0x82000000by default (--base);--funcs(orPPC_FUNCS), a list of function starts built from your generated sources (the command is in the script's help); optional--code LO-HIto scan only the code section.
Usage
export RECOMP_GENERATED=/path/to/skate3recomp/generated
sh tools/recomp-code-search/fn.sh 82XXXXXX
sh tools/recomp-code-search/grepfn.sh 'lfs .*,-?[0-9]+\(r31\)'
sh tools/recomp-code-search/callctx.sh 82XXXXXX 6 14
py -3.13 tools/recomp-code-search/ppcxref.py --image image.bin --funcs funcs.txt str some_string
py -3.13 tools/recomp-code-search/ppcxref.py --image image.bin --funcs funcs.txt calls 82XXXXXX
Example output
ppcxref.py calls (made-up addresses):
82123450 in sub_82123400
82345670 in sub_82345600
Requirements
Git Bash or any POSIX shell with grep / awk for the shell scripts; Python 3.13 (standard library)
for ppcxref.py.