From b1fcb56017759c973f22dd053e290ea1eb515e7b Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 7 Sep 2026 22:29:05 -0400 Subject: [PATCH] generated address header: verified RNG signatures --- include/generated/sots_addresses.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/generated/sots_addresses.h b/include/generated/sots_addresses.h index 0380869..e575f92 100644 --- a/include/generated/sots_addresses.h +++ b/include/generated/sots_addresses.h @@ -1,5 +1,5 @@ // GENERATED — do not edit. Facts about Sword of the Stars.exe (GOG 1.8.1). -// Source: sots-re ghidra/addresses.json @ b24f13c, generated 2026-09-07 by tools/gen_addresses.py +// Source: sots-re ghidra/addresses.json @ 87a39b6, generated 2026-09-07 by tools/gen_addresses.py // Runtime address = (uintptr_t)GetModuleHandle(NULL) + RVA (the exe is ASLR-relocated). #pragma once #include @@ -49,11 +49,11 @@ constexpr uint32_t StrategyServer_Read = 0x003d27a0; constexpr uint32_t StrategyServer_Write = 0x0039fa70; // thiscall void (Stream* this, const char* tag, NetworkObject* obj) [unverified] constexpr uint32_t Stream_WriteNetworkObjectId = 0x00416490; -// thiscall void (RNG* this) [unverified] +// thiscall void (RNG* this) // this in ECX, no stack args, RET 0; 227/396 split [verified] constexpr uint32_t RNG_Twist = 0x00026e00; -// thiscall void (RNG* this, uint32_t seed) [unverified] +// thiscall RNG* (RNG* this, uint32_t seed) // RET 4; MT19937 init mt[i]=(mt[i-1]^(mt[i-1]>>30))*0x6c078965+i for i=1..623, then twists. this: vftable@0, mt[624]@+4, left@+0x9c4 [verified] constexpr uint32_t RNG_Seed = 0x0009fdf0; -// thiscall float (RNG* this) [unverified] +// thiscall float (RNG* this) // returns via x87 (float10 in decompile) -- FLOAT PARITY RISK; lazy twist: if (left==0) Twist() [verified] constexpr uint32_t RNG_NextFloat = 0x0007d830; // thiscall uint32_t (RNG* this) [unverified] constexpr uint32_t RNG_NextInt = 0x000271c0;