From 3976fdea370b35375045d2967cf92ec945e404db Mon Sep 17 00:00:00 2001 From: Daniel Seiller Date: Sun, 3 Mar 2019 22:38:12 +0000 Subject: [PATCH] Update NOTES.md --- NOTES.md | 70 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 61 insertions(+), 9 deletions(-) diff --git a/NOTES.md b/NOTES.md index 4f63556..2ac61ba 100644 --- a/NOTES.md +++ b/NOTES.md @@ -2,7 +2,9 @@ - Engine: ScrapEngine - Ingame Scripting Language: Python 1.5.2 -# Ingame-Console (Ctrl+\^ or right click on titlebar and select "switch console") (Handler@0x402190): +# Functions identified: + +## Ingame-Console (Ctrl+\^ or right click on titlebar and select "switch console") (Handler@0x402190): * ``: Try to evaluate Command as Python expression * `:`: Get Game Engine Global Variable * `: `: Set Game Engine Global Variable @@ -11,27 +13,77 @@ * `/`: Run Command defined in QuickConsole.py(c) 'import quickconsole;quickconsole.%s()' * `/ ,`: Run function in QuickConsole.py(c) with argument(s) 'import quickconsole;quickconsole.%s(%s)' -# External Console (Scenegraph Debugging?) (Handler@0x5f9520): +## External Console (Scenegraph Debugging?) (Handler@0x5f9520): * `listar luces` * `listar` * `arbol` (Patch Scrap.exe@offset 0x314bc9 replace 0x20 with 0x00 (or just type `arbol ` with the space at the end)) * `mem` * `ver uniones` * Easter Eggs: - - `imbecil` - - `idiota` - - `capullo` + * `imbecil` + * `idiota` + * `capullo` -# Python Stuff +## Python Stuff - Modules List @ 0x79C698 (Module Name as `char*` followed by Pointer to Init Function) - InitPyMod @ 0x5A8FB0 - PyExec @ 0x5A8390 -## m3d.ini loader @ 0x05f7000 +# Other Functions: -## SM3 Scene Loader @ 0x650f80 (?) +- FindEntity @ 0x404a50 +- HashTable hashfunc @ 0x404bb0 +- Register C Callback @ 0x404460 +- Load Game @ 0x417470 +- File opening functions @ 0x5e3800 and 0x419950 +- Scrap_Debug_Init @ 0x403370 +- Scrap_Init @ 0x401770 +- Scrap_InitPy @ 0x4026d0 +- Scrap_OpenPak @ 0x41ab50 +- PyExec @ 0x5a8390 +- Setup_Game_Var @ 0x414570 +- Throw_Assertion @ 0x5fbc50 +- m3d.ini loader @ 0x5f7000 +- SM3 Scene Loader @ 0x650f80 (?) +- M3D Model Loader @ 0x6665a0 (??) +- World_Init @ 0x479b20 (???) -## M3D File Loader @ 0x6665a0 (??) +# Data Structures + +## Game World/State Pointer @ 0x7fe944 + +Points to GameState struct + +| Offset | Type | Description | +| ------ | -------- | --------------------------- | +| 0x0 | void** | Virtual Method Table | +| 0x4 | uint32_t | Size of Entity Hashtable | +| 0x8 | void** | Pointer to Entity Hashtable | +| 0x330 | float[3] | Time (why 3 times?) | +| 0x1c6c | float | Alarm level | +| 0x1C68 | float | Alarm Grow Level | + +## Entity Hash Table + +Hashfunction used: [strhash](http://www.cs.ecu.edu/karl/3300/spr16/Notes/DataStructure/hashtable.html) + +Entry format: + +| Offset | Type | Description | +| ------ | ----------- | ------------------------------ | +| 0x0 | void* | Pointer to data | +| 0x4 | const char* | key as string | +| 0x8 | void* | Pointer to next entry in chain | + +Data format: + +| Offset | Type | Description | +| ------ | ----------- | -------------------- | +| 0x0 | void** | Virtual Method Table | +| 0x4 | const char* | name as string | +| 0x28 | float[3] | Position | + +# File Formats ## *.packed File Format: ```