Add PyGhidra Crusader Toolkit and patch scripts

- Introduced README.md for the PyGhidra Crusader Toolkit, detailing setup and usage instructions.
- Added bootstrap_env.ps1 script to create and refresh the Python virtual environment with necessary packages.
- Implemented _tmp_patch_hidden_cheat_menu.py and _tmp_patch_hidden_cheat_menu_deferred.py scripts for patching specific memory addresses in Ghidra.
This commit is contained in:
MaddoScientisto 2026-03-25 08:15:21 +01:00
commit ad6ebd0b86
132 changed files with 41758 additions and 99 deletions

View file

@ -4,14 +4,15 @@ applyTo: "**"
# Crusader Ghidra Workflow # Crusader Ghidra Workflow
- Active target is the raw full-EXE Ghidra program `CRUSADER-RAW.EXE` unless explicitly stated otherwise. - Active target is the NE Ghidra program `CRUSADER.EXE` unless explicitly stated otherwise.
- Use Ghidra MCP tools for analysis, decompilation, renaming, comments, and xref work. - Use Ghidra MCP tools for analysis, decompilation, renaming, comments, and xref work.
- Treat the verified `CRUSADER-RAW.EXE` work already captured in `docs/` and notes as a cross-reference evidence base for the live `CRUSADER.EXE` session, not as the default active program.
- Avoid speculative renames. Prefer names that are supported by one of these: - Avoid speculative renames. Prefer names that are supported by one of these:
- verified raw mapping from standalone segment work - verified raw mapping from standalone segment work
- direct string evidence - direct string evidence
- clear call/field behavior in decompiler or disassembly - clear call/field behavior in decompiler or disassembly
- xref relationships to already-named functions - xref relationships to already-named functions
- When porting names from standalone segment extracts into `CRUSADER-RAW.EXE`, use only verified base mappings. - When porting names from standalone segment extracts or prior raw full-EXE work into `CRUSADER.EXE`, use only verified base mappings and keep the older raw address evidence with the live NE address where practical.
# Verified Raw Mapping Rules # Verified Raw Mapping Rules
@ -25,6 +26,7 @@ applyTo: "**"
- Prefer a single decompile call first. - Prefer a single decompile call first.
- If the decompiler collapses to thunk-heavy output, use one disassembly lookup to confirm the wrapper or parameter setup. - 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. - **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.
- Cross-reference new `CRUSADER.EXE` findings against the old raw notes before promoting a rename or behavioral claim. If the two differ, keep both addresses and explain the mismatch instead of silently preferring one.
- Add a short decompiler comment when a rename is mapped from verified notes so the provenance stays visible in Ghidra. - 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. 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_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 `crusader_segment_coverage_ledger.csv` updated after each verified batch whenever a segment can be promoted or reclassified.
@ -36,19 +38,32 @@ applyTo: "**"
- 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. - 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. - 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.
# Executable Write Safety
- Normal Ghidra database work on `CRUSADER.EXE` remains in scope: renames, comments, prototypes, local-variable/type cleanup, function creation/deletion, and boundary repair are allowed unless the user says otherwise.
- Treat only actual program-byte changes as destructive actions: byte patching, write-back flows that alter loaded memory bytes, or any operation that would make the executable differ from the original program bytes.
- Never run destructive byte-write operations against the main reference executable in the project.
- Only use byte-patching or other byte-diverging executable write flows when the target program is an explicitly writable patch target, normally a program in the `/Writable` folder.
- Treat `CRUSADER.EXE`, `CRUSADER-RAW.EXE`, and other main reference executables as read-only with respect to program bytes unless the user explicitly says otherwise.
- Before running write endpoints such as `patch_bytes_and_reanalyze` or any PyGhidra byte-write script, verify that the selected program is the intended writable copy, not the reference executable.
- If the target program is not clearly a writable patch copy in `/Writable`, stop and ask the user before performing the byte write.
# PyGhidra Fallback # PyGhidra Fallback
- Use the local PyGhidra toolkit in `tools/pyghidra_crusader` when MCP is missing an operation such as function creation, deletion, or batched scripted edits. - Use the local PyGhidra toolkit in `tools/pyghidra_crusader` when MCP is missing an operation such as function creation, deletion, or batched scripted edits.
- When PyGhidra is needed because MCP lacks a required operation, append a note to `ghidra_mcp_wishlist.md` in the same batch if the gap is not already documented. - When PyGhidra is needed because MCP lacks a required operation, append a note to `ghidra_mcp_wishlist.md` in the same batch if the gap is not already documented.
- The workspace-local Python environment for this toolkit is `.venv-pyghidra311`, created from `C:\Users\Maddo\.pyenv\pyenv-win\versions\3.11.6\python.exe` and installed from the bundled Ghidra 11.3.2 offline packages. - The workspace-local Python environment for this toolkit is `.venv-pyghidra311`, created from `C:\Users\Maddo\.pyenv\pyenv-win\versions\3.11.6\python.exe` and installed from the bundled Ghidra 12.0.4 offline packages.
- Default install dir for the toolkit is `I:\Apps\ghidra_11.3.2_PUBLIC`. - Default install dir for the toolkit is `I:\Apps\ghidra_12.0.4_PUBLIC`.
- Invoke the toolkit with `\.venv-pyghidra311\Scripts\python.exe -m tools.pyghidra_crusader ...` from the repo root. - Invoke the toolkit with `\.venv-pyghidra311\Scripts\python.exe -m tools.pyghidra_crusader ...` from the repo root.
- Rebuild or refresh that environment with `powershell -ExecutionPolicy Bypass -File .\tools\pyghidra_crusader\bootstrap_env.ps1` from the repo root when the local PyGhidra packages drift or a Ghidra upgrade lands.
- Keep PyGhidra batches small too: prefer one focused repair plan or 1-5 direct edits at a time. - Keep PyGhidra batches small too: prefer one focused repair plan or 1-5 direct edits at a time.
- Write operations require the Ghidra project to open successfully. If `Crusader.lock` is present because the GUI owns the project, close Ghidra first or operate on a project copy. - Write operations require the Ghidra project to open successfully. If `Crusader.lock` is present because the GUI owns the project, close Ghidra first or operate on a project copy.
- If the workflow needs the user to change Ghidra state, use the ask-questions tool with a yes/no confirmation prompt instead of plain text. Ask the user to close Ghidra before PyGhidra write commands, and ask the user to open the Ghidra project before MCP server commands. The prompt should briefly describe exactly what to do and instruct the user to answer `Yes` only after the action is complete. - If the workflow needs the user to change Ghidra state, use the ask-questions tool with a yes/no confirmation prompt instead of plain text. Ask the user to close Ghidra before PyGhidra write commands, and ask the user to open the Ghidra project before MCP server commands. The prompt should briefly describe exactly what to do and instruct the user to answer `Yes` only after the action is complete.
# Current Verified Raw-Import Ports # Current Verified Raw-Import Ports
These remain valid cross-reference anchors for `CRUSADER.EXE` work. Keep the old raw-import addresses and original segment-relative offsets in notes/comments when using them to support live NE renames.
- `0006:e5d0` = `cursor_update_hover` from seg001 `0x0060` - `0006:e5d0` = `cursor_update_hover` from seg001 `0x0060`
- `0008:7377` = `entity_count_by_type_a` from seg021 `0x0207` - `0008:7377` = `entity_count_by_type_a` from seg021 `0x0207`
- `0007:28ce` = `shot_entity_alloc` from seg001 `0x435e` - `0007:28ce` = `shot_entity_alloc` from seg001 `0x435e`
@ -88,7 +103,7 @@ applyTo: "**"
# Documentation Structure # Documentation Structure
Detailed RE notes live in the `docs/` folder. `crusader_decompilation_notes.md` is a short index. Detailed RE notes live in the `docs/` folder. `crusader_decompilation_notes.md` is a short index. Unless a doc says otherwise, read raw-focused docs as evidence sources to be cross-checked against the live `CRUSADER.EXE` session.
| File | Topic | | File | Topic |
|------|-------| |------|-------|

View file

@ -1,3 +1,8 @@
---
name: pyghidra-ghidra-ops
description: Local PyGhidra fallback workflow for Crusader Ghidra edits and queries
---
# PyGhidra Ghidra Ops # PyGhidra Ghidra Ops
Use this skill when Ghidra MCP is missing a needed operation and you need native CPython access to the Ghidra API for the local Crusader project. Use this skill when Ghidra MCP is missing a needed operation and you need native CPython access to the Ghidra API for the local Crusader project.
@ -13,12 +18,13 @@ Use this skill when Ghidra MCP is missing a needed operation and you need native
## Workspace Defaults ## Workspace Defaults
- Ghidra install dir: `I:\Apps\ghidra_11.3.2_PUBLIC` - Ghidra install dir: `I:\Apps\ghidra_12.0.4_PUBLIC`
- Ghidra project dir: repo root - Ghidra project dir: repo root
- Ghidra project name: `Crusader` - Ghidra project name: `Crusader`
- Default program: `CRUSADER-RAW.EXE` - Default program: `CRUSADER-RAW.EXE`
- Local Python env: `.venv-pyghidra311` - Local Python env: `.venv-pyghidra311`
- CLI entrypoint: `.\.venv-pyghidra311\Scripts\python.exe -m tools.pyghidra_crusader` - CLI entrypoint: `.\.venv-pyghidra311\Scripts\python.exe -m tools.pyghidra_crusader`
- Bootstrap script: `.\tools\pyghidra_crusader\bootstrap_env.ps1`
## Constraints ## Constraints
@ -27,6 +33,12 @@ Use this skill when Ghidra MCP is missing a needed operation and you need native
- Write operations require the project to be openable for modification. If `Crusader.lock` is present because the GUI owns the project, close Ghidra first or work on a copy. - Write operations require the project to be openable for modification. If `Crusader.lock` is present because the GUI owns the project, close Ghidra first or work on a copy.
- Keep `crusader_decompilation_notes.md` updated after verified repair batches. - Keep `crusader_decompilation_notes.md` updated after verified repair batches.
Refresh the local PyGhidra environment when the bundled Ghidra version changes:
```powershell
powershell -ExecutionPolicy Bypass -File .\tools\pyghidra_crusader\bootstrap_env.ps1
```
## Commands ## Commands
List root project files: List root project files:

BIN
CRUSADER-RAW.EXE.bytes Normal file

Binary file not shown.

38496
CRUSADER-RAW.EXE.xml Normal file

File diff suppressed because it is too large Load diff

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bf0178892741854800" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bf0178892741854800" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647beb3812826386895600" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647beb3812826386895600" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bf4b212984786819600" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bf4b212984786819600" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bd82013090643707800" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bd82013090643707800" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bfe7615910786193500" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bfe7615910786193500" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bdaf715949048416300" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bdaf715949048416300" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bdba516037949612600" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bdba516037949612600" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="157" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER-RAW.EXE" /> <STATE NAME="NAME" TYPE="string" VALUE="CRUSADER-RAW.EXE" />
</BASIC_INFO> </BASIC_INFO>
</FILE_INFO> </FILE_INFO>

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451fc492611033559300" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451fc492611033559300" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -2,7 +2,7 @@
<FILE_INFO> <FILE_INFO>
<BASIC_INFO> <BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" /> <STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" /> <STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451f2583322595358500" /> <STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451f2583322595358500" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" /> <STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" /> <STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/regret" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c280202637798314100" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="ASYLUM.DLL" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="2" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/regret" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c281202637836837200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="4" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="REGRET.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c282202637894958200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="XANDRV32.DLL" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c283202637930887000" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="DOSCALLS.DLL" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/ja" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c284202637978076200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="U8.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/ja" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c285202638031072100" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/demo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c286202638089729400" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="REGRET.DAT" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/demo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c287202638146478500" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c288202638203322400" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="ASYLUM" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c289202638239150700" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="xanlib.dll" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/fr" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28a202638282132500" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/orig_cd" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28b202638339220200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="2" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28c202638381579400" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="9" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/es" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28d202638453201100" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="U8.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/es" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28e202638509414500" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28f202638566649200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="U8.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="EXCLUSIVE" TYPE="boolean" VALUE="true" />
<STATE NAME="CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/Writable" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451f6e9206725659389900" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="LOCAL_CHECKOUT_VERSION" TYPE="int" VALUE="1" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="CHECKOUT_ID" TYPE="long" VALUE="2" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER-PATCHED.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451f7f8217044453944100" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE.1" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,5 +1,13 @@
VERSION=1 VERSION=1
/ /
00000011:ASYLUM:c0a86451c288202638203322400
00000015:CRUSADER.EXE:c0a86451c28c202638381579400
0000001a:CRUSADER.EXE.1:c0a86451f7f8217044453944100
0000000c:DOSCALLS.DLL:c0a86451c283202637930887000
00000018:U8.EXE:c0a86451c28f202638566649200
0000000b:XANDRV32.DLL:c0a86451c282202637894958200
00000012:xanlib.dll:c0a86451c289202638239150700
/Maddo
00000007:ASYLUM.DLL:c0a86451fc492611033559300 00000007:ASYLUM.DLL:c0a86451fc492611033559300
00000006:CRUSADER-RAW.EXE:c0a8647bdba516037949612600 00000006:CRUSADER-RAW.EXE:c0a8647bdba516037949612600
00000000:CRUSADER.EXE:c0a8647bf0178892741854800 00000000:CRUSADER.EXE:c0a8647bf0178892741854800
@ -9,5 +17,23 @@ VERSION=1
00000003:seg021_code_off_50200_len_4486.bin:c0a8647bd82013090643707800 00000003:seg021_code_off_50200_len_4486.bin:c0a8647bd82013090643707800
00000004:seg030_code_off_5E000_len_5071.bin:c0a8647bfe7615910786193500 00000004:seg030_code_off_5E000_len_5071.bin:c0a8647bfe7615910786193500
00000005:seg059_code_off_86A00_len_4288.bin:c0a8647bdaf715949048416300 00000005:seg059_code_off_86A00_len_4288.bin:c0a8647bdaf715949048416300
NEXT-ID:9 /Writable
00000019:CRUSADER-PATCHED.EXE:c0a86451f6e9206725659389900
/demo
00000010:CRUSADER.EXE:c0a86451c287202638146478500
0000000f:REGRET.DAT:c0a86451c286202638089729400
/es
00000017:CRUSADER.EXE:c0a86451c28e202638509414500
00000016:U8.EXE:c0a86451c28d202638453201100
/fr
00000013:CRUSADER.EXE:c0a86451c28a202638282132500
/ja
0000000e:CRUSADER.EXE:c0a86451c285202638031072100
0000000d:U8.EXE:c0a86451c284202637978076200
/orig_cd
00000014:CRUSADER.EXE:c0a86451c28b202638339220200
/regret
00000009:ASYLUM.DLL:c0a86451c280202637798314100
0000000a:REGRET.EXE:c0a86451c281202637836837200
NEXT-ID:1b
MD5:d41d8cd98f00b204e9800998ecf8427e MD5:d41d8cd98f00b204e9800998ecf8427e

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451f608205075819887000" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_c0a86451c28c202638381579400" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451ed04206884877489100" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_c0a86451f6e9206725659389900" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="ProgramUserData" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c652220429919955700" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="udf_c0a86451c281202637836837200" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,6 +1,9 @@
VERSION=1 VERSION=1
/ /
0000000a:udf_c0a86451c281202637836837200:c0a86451c652220429919955700
00000008:udf_c0a86451c28c202638381579400:c0a86451f608205075819887000
00000006:udf_c0a86451f2583322595358500:c0a86451c1883616844258300 00000006:udf_c0a86451f2583322595358500:c0a86451c1883616844258300
00000009:udf_c0a86451f6e9206725659389900:c0a86451ed04206884877489100
00000007:udf_c0a86451fc492611033559300:c0a86451cb1215992032385300 00000007:udf_c0a86451fc492611033559300:c0a86451cb1215992032385300
00000002:udf_c0a8647bd82013090643707800:c0a8647bd36436342237796300 00000002:udf_c0a8647bd82013090643707800:c0a8647bd36436342237796300
00000004:udf_c0a8647bdaf715949048416300:c0a8647bd36636342258818700 00000004:udf_c0a8647bdaf715949048416300:c0a8647bd36636342258818700
@ -8,5 +11,5 @@ VERSION=1
00000000:udf_c0a8647bf0178892741854800:c0a8647bd36236342207469100 00000000:udf_c0a8647bf0178892741854800:c0a8647bd36236342207469100
00000001:udf_c0a8647bf4b212984786819600:c0a8647bd36336342224113900 00000001:udf_c0a8647bf4b212984786819600:c0a8647bd36336342224113900
00000003:udf_c0a8647bfe7615910786193500:c0a8647bd36536342248279100 00000003:udf_c0a8647bfe7615910786193500:c0a8647bd36536342248279100
NEXT-ID:8 NEXT-ID:b
MD5:d41d8cd98f00b204e9800998ecf8427e MD5:d41d8cd98f00b204e9800998ecf8427e

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28c202638381579400" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/Writable" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451f6e9206725659389900" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER-PATCHED.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c288202638203322400" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="ASYLUM" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c283202637930887000" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="DOSCALLS.DLL" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28f202638566649200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="U8.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c282202637894958200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="XANDRV32.DLL" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c289202638239150700" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="xanlib.dll" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/regret" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c280202637798314100" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="ASYLUM.DLL" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/regret" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c281202637836837200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="REGRET.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/orig_cd" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a86451c28b202638339220200" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER.EXE" />
</BASIC_INFO>
</FILE_INFO>

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<FILE_INFO>
<BASIC_INFO>
<STATE NAME="CONTENT_TYPE" TYPE="string" VALUE="Program" />
<STATE NAME="PARENT" TYPE="string" VALUE="/Maddo" />
<STATE NAME="FILE_ID" TYPE="string" VALUE="c0a8647bdba516037949612600" />
<STATE NAME="FILE_TYPE" TYPE="int" VALUE="0" />
<STATE NAME="READ_ONLY" TYPE="boolean" VALUE="false" />
<STATE NAME="NAME" TYPE="string" VALUE="CRUSADER-RAW.EXE" />
</BASIC_INFO>
</FILE_INFO>

Binary file not shown.

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHECKOUT_LIST NEXT_ID="3">
<CHECKOUT ID="2" USER="Maddo" VERSION="2" TIME="1774389005832" PROJECT="Cirno-PC::K:/ghidra/Crusader_Decomp/Crusader" EXCLUSIVE="true" />
</CHECKOUT_LIST>

Binary file not shown.

View file

@ -0,0 +1,2 @@
1;Maddo;1774376667876;Base before edits
2;Maddo;1774389005800;Computer Gump

Binary file not shown.

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHECKOUT_LIST NEXT_ID="3">
<CHECKOUT ID="2" USER="Maddo" VERSION="1" TIME="1774376742817" PROJECT="Cirno-PC::K:/ghidra/Crusader_Decomp/Crusader" EXCLUSIVE="true" />
</CHECKOUT_LIST>

Binary file not shown.

View file

@ -0,0 +1 @@
1;Maddo;1774376742808;before patch

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHECKOUT_LIST NEXT_ID="3">
<CHECKOUT ID="2" USER="Maddo" VERSION="1" TIME="1774376753905" PROJECT="Cirno-PC::K:/ghidra/Crusader_Decomp/Crusader" EXCLUSIVE="true" />
</CHECKOUT_LIST>

Binary file not shown.

View file

@ -0,0 +1 @@
1;Maddo;1774376753897;

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHECKOUT_LIST NEXT_ID="3">
<CHECKOUT ID="2" USER="Maddo" VERSION="1" TIME="1774376755842" PROJECT="Cirno-PC::K:/ghidra/Crusader_Decomp/Crusader" EXCLUSIVE="true" />
</CHECKOUT_LIST>

Binary file not shown.

View file

@ -0,0 +1 @@
1;Maddo;1774376755834;

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHECKOUT_LIST NEXT_ID="3">
<CHECKOUT ID="2" USER="Maddo" VERSION="1" TIME="1774376755919" PROJECT="Cirno-PC::K:/ghidra/Crusader_Decomp/Crusader" EXCLUSIVE="true" />
</CHECKOUT_LIST>

Binary file not shown.

View file

@ -0,0 +1 @@
1;Maddo;1774376755910;

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHECKOUT_LIST NEXT_ID="3">
<CHECKOUT ID="2" USER="Maddo" VERSION="1" TIME="1774376755947" PROJECT="Cirno-PC::K:/ghidra/Crusader_Decomp/Crusader" EXCLUSIVE="true" />
</CHECKOUT_LIST>

Some files were not shown because too many files have changed in this diff Show more