Add extractor for Crusader's EUSECODE.FLX container
- Implemented a Python script to extract data from the EUSECODE.FLX file format. - Defined data structures for candidate entries and extracted chunks using dataclasses. - Added functions to read and parse the FLX table, extract candidate data, and generate human-readable output files. - Included functionality for analyzing extracted data, including generating summaries, descriptors, and event family reports. - Implemented utilities for calculating printable ratios, zero ratios, and identifying text-like data. - Added support for writing various output formats, including JSON, TSV, and Markdown.
This commit is contained in:
parent
3d4c4933ec
commit
3daffbf113
58 changed files with 30295 additions and 2504 deletions
20
.github/instructions/ghidra.instructions.md
vendored
20
.github/instructions/ghidra.instructions.md
vendored
|
|
@ -26,13 +26,15 @@ applyTo: "**"
|
|||
- If the decompiler collapses to thunk-heavy output, use one disassembly lookup to confirm the wrapper or parameter setup.
|
||||
- **When `decompile_function` output is too large** (>~50KB), the result is written to a temp JSON file that `read_file` returns as empty `{}`. Use `disassemble_function` instead — it returns inline assembly directly and is fully navigable for large functions.
|
||||
- Add a short decompiler comment when a rename is mapped from verified notes so the provenance stays visible in Ghidra.
|
||||
- Keep `crusader_decompilation_notes.md` updated after each verified batch.
|
||||
- Keep `crusader_decompilation_notes.md` updated after each verified batch. That file is now a short index — append new analysis to the appropriate file in `docs/` and add a row to the index table if a new file is created.
|
||||
- Keep `crusader_segment_coverage_ledger.csv` updated after each verified batch whenever a segment can be promoted or reclassified.
|
||||
- Keep the progress section in `plan-mid.md` updated after each verified batch so the next pass can resume from the exact stopping point.
|
||||
- Keep `ghidra_mcp_wishlist.md` updated whenever the workflow hits a missing MCP capability and has to fall back to PyGhidra or another local-only path.
|
||||
- Each wishlist entry should be short and concrete: what MCP lacked, what command/script/tool had to replace it, and what a useful MCP endpoint or behavior would look like.
|
||||
- Record raw-import addresses alongside original segment-relative offsets when porting names.
|
||||
- **Always use `rename_function_by_address`** — `rename_function` (by name) fails with "must have required property 'old_name'" and is broken. Use `"function_address": "000c:XXXX"` format.
|
||||
- For substantive RE batches, end with at least 6 concrete future steps unless the task is fully closed and there are genuinely fewer defensible next actions.
|
||||
- When a batch analyzes currently unnamed Ghidra functions and the behavior is clear enough, rename them in Ghidra instead of leaving them as positional `FUN_xxxx_xxxx` placeholders.
|
||||
|
||||
# PyGhidra Fallback
|
||||
|
||||
|
|
@ -83,3 +85,19 @@ applyTo: "**"
|
|||
- `000e:2777` = `animation_ctor_variant_a` (alloc + init flags + chained init/assert/finalize)
|
||||
- `000e:2860` = `animation_ctor_variant_b` (variant A with extra +0x109 init)
|
||||
- `000e:2969` = `animation_ctor_variant_c` (default static flag profile +0x4c=0xd)
|
||||
|
||||
# Documentation Structure
|
||||
|
||||
Detailed RE notes live in the `docs/` folder. `crusader_decompilation_notes.md` is a short index.
|
||||
|
||||
| File | Topic |
|
||||
|------|-------|
|
||||
| `docs/overview.md` | Binary overview, address layout, segment map, next steps |
|
||||
| `docs/phar-lap-extender.md` | DOS extender functions and string references |
|
||||
| `docs/ne-segment1.md` | NE Segment 1: entity system, cheat system, full game logic analysis |
|
||||
| `docs/raw-porting-progress.md` | seg091 RNG, 0x4588 callbacks, 0007 gameplay batches, `snap_entity_to_ground` |
|
||||
| `docs/raw-000e.md` | 000e parser cluster and RIFF/animation subsystem |
|
||||
| `docs/raw-0007-rendering.md` | Draw list, scroll/camera, coordinate transforms, tile visibility |
|
||||
| `docs/raw-0008-000c.md` | 0008 dispatch helpers and 000c state machine |
|
||||
| `docs/raw-000a-000d.md` | Tracked handles, cache manager, seg082 allocator, palette helpers, seg004/005 startup |
|
||||
| `docs/far-call-targets.md` | Top-104 far-call targets (Tiers 1–5), supporting functions, analysis gaps |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue