27 lines
938 B
Markdown
27 lines
938 B
Markdown
# Ghidra helpers
|
|
|
|
OpenRA3's retail facts are recovered through the Ghidra MCP bridge. The retail
|
|
module is loaded as `ra3_1.12.game` (image base `0x400000`, x86 32-bit).
|
|
|
|
## Quick queries
|
|
|
|
```text
|
|
decompile_function(address=0x00623e40) # GameLogic::startNewGame
|
|
decompile_function(address=0x0060c4a0) # MessageStream::appendMessage
|
|
get_function_by_address(address=0x00cd8ce4) # TheGameLogic global
|
|
get_xrefs_to(address=0x00ce3a78) # who touches the skirmish setup
|
|
search_strings(search_term="SkirmishGameInfo")
|
|
```
|
|
|
|
## Recording a finding
|
|
|
|
When a layout or constant is recovered:
|
|
|
|
1. Add it to [`../../docs/REVERSE_ENGINEERING.md`](../../docs/REVERSE_ENGINEERING.md)
|
|
with its retail address.
|
|
2. Cite the address in the OpenRA3 source comment that depends on it.
|
|
3. Add a test that pins the behaviour.
|
|
|
|
The goal is that every assertion in the code can be re-derived from the binary
|
|
by someone who has never seen this repo.
|