104 lines
3.1 KiB
Markdown
104 lines
3.1 KiB
Markdown
# ScrapEngine
|
|
|
|
- Based on Mercury Engine
|
|
- Ingame Scripting Language: Python 1.5.2
|
|
|
|
## Launch options
|
|
|
|
Checked in `0x00401010`
|
|
|
|
- `-console`: open external console window on start
|
|
- `-inifile`: *unknown* some kind of `.ini` file, seems to be related to `m3d.ini` in `Data.packed`
|
|
|
|
Checked in `0x004039b0`
|
|
|
|
- `-build`: Rebuild `Data.packed` (needs a `filelist.2Bpack`)
|
|
- `-dedicated`: start in multiplayer dedicated server mode (needs to be used with `-server`)
|
|
- `-server`: start in multiplayer server mode
|
|
- `-<var_name>:<var_value>`: override engine variable (example: `-debug:10`)
|
|
|
|
Checked in `0x00401180`
|
|
|
|
- `-wideWindow`: start game in widescreen mode
|
|
|
|
|
|
## Files
|
|
|
|
- `engine.txt`: Contains engine commands? Lexer/Parser @ `0x6168a0`
|
|
- Errors get printed to Scene graph debugging console
|
|
- Command buffer @ `0x8c1b30`
|
|
- Commands:
|
|
- `Load`: Load Model?
|
|
- `AddAnim`: Load Animation data?
|
|
- `PlayAnim`: Play Animation?
|
|
- `PivotPos`: ?
|
|
- `FUNDIR_NODOS`: ?
|
|
- `EFEC_MALLA`: ?
|
|
- Values:
|
|
- `true`
|
|
- `false`
|
|
- `engine.log`: Created when `engine.txt` exists
|
|
|
|
`engine.txt` containing `Load("Models/Vehicles/Ships/SBoss1/SBoss1.SM3", 1)` results in error `D:\Games\Deep Silver\Scrapland\engine.txt (1): Error: missing a ( character`
|
|
|
|
|
|
## Ingame-Console
|
|
|
|
(Ctrl+\^ or right click on window title bar and select "switch console") (Handler @ `0x402190`)
|
|
|
|
* `<Code>`: Evaluate Python code
|
|
* `:<Var>`: Get Game Engine Variable
|
|
* `:<Var> <Val>`: Set Game Engine Variable
|
|
* `?`: Show all Game Engine Variables
|
|
* `?<String>`: Show all Game Engine Variables matching `<String>`
|
|
* `/<command>`: Run Command defined in `QuickConsole.py`
|
|
* Expands to `import quickconsole;quickconsole.%s()`
|
|
* `/<command> <arg>,<arg>`: Run function in `QuickConsole.py` with argument(s)
|
|
* Expands to `import quickconsole;quickconsole.%s(%s)`
|
|
|
|
## External Console
|
|
|
|
(Scene graph debugging?) (Handler @ `0x5f9520`)
|
|
|
|
* `listar luces` List lights in scene
|
|
* `listar` list models in scene
|
|
* `arbol <model_name>` show details for model
|
|
* `mem` (doesn't do anything?)
|
|
* `ver uniones`
|
|
* Easter Eggs:
|
|
* `imbecil`
|
|
* `idiota`
|
|
* `capullo`
|
|
|
|
## Keyboard Shortcuts
|
|
|
|
Resource ID 200 (0xc8)
|
|
|
|
Shift+Esc: Exit game
|
|
Ctrl+Alt+Shift+F10: Change graphics device
|
|
Ctrl+F11: Focus Console Window
|
|
F10: Pause game
|
|
F12: Nothing?
|
|
Ctrl+F12: Show FPS
|
|
Ctrl+Alt+Shift+F7: Wireframe
|
|
Ctrl+Alt+Shift+F8: Texture Filtering Mode
|
|
Ctrl+Alt+Shift+F9: Cycle Rendering Info
|
|
Ctrl+Alt+Shift+Enter: Toggle fullscreen
|
|
|
|
## Window Messages
|
|
|
|
**TODO**
|
|
|
|
## Other interesting Memory Addresses
|
|
|
|
- `0x852914`: D3D8-Device pointer
|
|
- `0x7FCC00`: number of opened `.packed` files
|
|
- `0x84cb64`: pointer to console command handler
|
|
- `0x7fac84`: pointer to C++ callback list structure
|
|
- `0x80b2cc`: pointer to ActionClassList (???)
|
|
- `0x807a20`: pointer to SScorer (ingame GUI/Menu/Text system) structure (???)
|
|
- `0x80a398`: pointer to SoundSystem (???)
|
|
- `0x8b18f0`: pointer to Models Data (can be dumped using scene graph debugging console)
|
|
- `0x8b18f4`: pointer to Scenes Data (can be dumped using scene graph debugging console)
|
|
- `0x8b18f8`: pointer to active Models Data (can be dumped using scene graph debugging console)
|
|
- for more see `config.yml`
|