aboutsummaryrefslogtreecommitdiff
path: root/docs/reference
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-07-18 07:54:52 +0300
committerValentin Popov <valentin@popov.link>2026-07-18 07:54:52 +0300
commitb500e32ca2b35fbefbdd5c94a1cf782e309ed20a (patch)
treef6edcad955c0e4adc8571e03e3ddffe5b8be1914 /docs/reference
parente7d869d8d04e8137ad68c0c82ab1908568c80f72 (diff)
downloadfparkan-b500e32ca2b35fbefbdd5c94a1cf782e309ed20a.tar.xz
fparkan-b500e32ca2b35fbefbdd5c94a1cf782e309ed20a.zip
docs(evidence): correct Terrain camera receiver
Diffstat (limited to 'docs/reference')
-rw-r--r--docs/reference/render-frame.md7
1 files changed, 7 insertions, 0 deletions
diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md
index 32abc6d..54bcf9a 100644
--- a/docs/reference/render-frame.md
+++ b/docs/reference/render-frame.md
@@ -50,6 +50,13 @@ the frame, and clears it before return. `sendEndOfRender` is a separate export
at RVA `0x13D90`. This is frame-order evidence only: the camera ABI, matrices
and viewport values still require dynamic capture or further decompilation.
+Receiver-side GOG Terrain evidence refines this contract. `stdSetCurrentCamera2`
+(RVA `0x4FD40` in Terrain SHA-256
+`af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead`) queries
+selector `18` on the supplied object and invokes slot `+12` on that result. It
+does not store the supplied pointer in `stdGetCurrentCamera2`; that getter
+returns a Terrain global populated by selector `8` during Terrain initialization.
+
## Parity risks
- x87 precision and rounding;