Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

IGI 2: Covert Strike — Reverse Engineering Artifacts

Target Binary: IGI2.exe (x86 PE32, MSVC 6.0, DirectX 7)
Total Functions: 5,507
Status: PARTIAL — 880 functions renamed (16.0% coverage)
Last Verified: 2026年08月27日 via Ghidra MCP


Progress Summary

Chapter Status Coverage Confidence
01-Executable PARTIAL — 55+ functions renamed ~1.0% HIGH
02-Classes PARTIAL — 8+ functions + structs ~0.2% HIGH
03-Rendering PARTIAL — 30+ functions renamed ~0.5% HIGH
04-AI PARTIAL — 50+ functions renamed ~0.9% HIGH
05-Weapons PARTIAL — 50+ functions renamed ~0.9% HIGH
06-Level-System PARTIAL — 30+ functions renamed ~0.5% HIGH
07-Scripting PARTIAL — 60+ functions renamed ~1.1% HIGH
08-Resources PARTIAL — 20+ functions renamed ~0.4% HIGH
09-Audio PARTIAL — 50+ functions renamed ~0.9% HIGH
10-Menus PARTIAL — 70+ functions renamed ~1.3% HIGH
11-Configuration PARTIAL — 70+ functions renamed ~1.3% HIGH
12-Networking PARTIAL — 60+ functions renamed ~1.1% HIGH
13-Global-Data PARTIAL — 19 areas mapped ~0.3% HIGH
cross-reference STRUCTURAL — cross-references mapped HIGH
14-RE-Notes PARTIAL — 41 sections documented HIGH

Total Functions Renamed: 880 (out of 5,507)
Coverage: 16.0% of codebase
Systems Analyzed: 14 of 15


Key Statistics

Metric Value
Total functions 5,507
Functions renamed 880
Unnamed (FUN_*) 4,627
Coverage 16.0%
Documentation files 21
Custom data types 10+ (AINode, Entity, EntityStats, WeaponType, StateEntry, HumanAnimController)
Function tags 105 definitions
Plate comments 100+
Import table 80+ from 11 DLLs
Export table 38 entries
Memory segments 7
Memory size ~136 MB
Code gaps 2,171 (largest 1,267 bytes)
switchD functions 40+
QTask types 72+ identified
ScriptVM opcodes 30+
D3D API dispatch 96 entries
AI navigation nodes 1,024

Major Discoveries (Rounds 6-16)

Round 6 — Master Init Pipeline

  • WinMain_CRTStartup (0x00404280) and System_InitializeAll (0x005D6040) renamed
  • 90+ subsystem init pipeline documented
  • vftable discovered @ 0x0067c7a8
  • Config callback table: 48 entries

Round 7 — QTask/FileSys/Event Systems

  • QTask architecture: 0x34-byte types, 0xd slots, 0x200-byte state arrays
  • File system: 4 device types, 0x90-byte handler table
  • Game event system: 0xc-byte entries, 0x20 max events
  • Pooled allocator FUN_0055b820 identified

Round 8 — DList/FatalError/Network

  • DList: 852 xrefs (RemoveNode), 217 xrefs (InsertNode) — most used data structure
  • FatalError_Handler: 553 xrefs, 256-byte buffer
  • Server logging: 347 xrefs, timestamped, traffic suppression
  • ResourceManager: GLOB:/ and LOCA:/ paths
  • D3D error converter: 15+ D3DERR_* strings

Round 9 — Memory/Event/String/Config

  • Memory validation: power-of-2 alignment, bounds checks
  • Memory deallocation: 0xcdcdcdcd MSVC debug fill
  • Event dispatcher: indirect callback via DAT_083997e0 + type*0x1ff
  • String parser: 2052-byte buffer pipeline
  • Config system: case-insensitive __stricmp, 0x44-byte entries

Round 10 — Script VM / Symbol Table / Memory Pool

  • ScriptVM: custom bytecode interpreter, 30+ opcodes, 0x14-byte parameters
  • SymbolTable: runtime registry, 1101 xrefs (Add), 666 xrefs (Remove)
  • MemoryPool: reference-counted pool allocator, 214 xrefs

Round 11 — Custom Allocator / Pattern Matcher

  • Mem_Alloc (667 xrefs): alignment, 0xabababab debug fill, DList tracking
  • PatternMatcher_Match (65 xrefs): wildcard syntax (,ドル ., ?, *, [], ^, {}, ())

Round 12 — Script Interpreter Core

  • ScriptInterpreter_Execute: tokenization, .isExists, "this.", // comments, 0x100 depth stack
  • ScriptVM_DispatchCallback: callback lookup via DAT_083997e0
  • ScriptContext_Cleanup: frees 3 memory blocks + 0x13 frames

Round 13 — C++ Classes / RTTI / Vtables

  • HumanPlayer vtable (0x006aa4a0): 16 entries
  • Generic vftable (0x0067c7a8): 16 entries (6 functions + 3 NULL + 3 placeholders + 1 data)
  • RTTI: 8 C++ exception types (bad_cast, bad_typeid, exception, logic_error, etc.)
  • HumanAnimController discovered: 604 bytes, 147 fields

Round 14 — Model/Animation Systems

  • Model system: LoadModel, UnloadModel, InitModels, DeinitModels, zModel, VirModel
  • Animation system: Stand/Death/Idle/Driving/1stPerson/UpperBody/Main
  • File formats: %smodels/%s.res, LOCAL:models/%s.mef
  • AIFunction_* API for animation control

Round 15 — HumanAnimController + System_InitializeAll Partial

  • HumanAnimController struct: 604 bytes, 147 fields, offsets: 0x2c(flags), 0x48-0x5c, 0x568-0x574, 0x590
  • 8 functions renamed (HumanAnimController, Model, Animation systems)
  • System_InitializeAll: 30/95 subsystems identified

Round 16 — System_InitializeAll 100% Coverage

  • 72 unique subsystems fully identified across 95 init calls
  • Batch 1 (1-20): Core systems — Activate/Deactivate, Particle2D, InputPort, MenuItem, ParameterSystem, Level/Static/Dynamic/CameraBase, Serialization, EnumTypes, ScriptVM, MagicObjConfig, LevelScript, SkyTask, PhysicsObjType/Obj/MagicObj
  • Batch 2 (21-40): Editor/Terrain/Water — EditorRigidObj, DiscardTerrain/Area, CubeModifier, AnimTask/AnimData, EditRigidObj/BoneObj, TextureModifier, Terrain/TerrainMap/TerrainMaterial, Water/WaterLayer, LODSettings, CutScene, AreaActivate, Vehicle, GlobalLight/Dirlight
  • Batch 3 (41-60): Rendering/Audio — LightmapInfo, Lensflare, Origo, NoiseQTask, MoveRigidObj, SmoothQTask, MipMapControl, ScreenGrab, FlatSky/FlatWater, Forest, RunDelayed, SoundSysEdit/SoundDefGroupEdit/SoundDefGraphEdit/SoundDefSoundEdit/SoundDefTriggerOnceEdit/SoundManager
  • Batch 4 (61-72): Editor/Debug — EditCamera, LevelTimer, EditorMagicObj, AnimSound, TerrainLightMap, SimpointObj, SplinePathDynCubeObj/GuideQTask, HeightMap, GFXCapsViewer, OLELoader, DebugConsoleTask

File Structure

reverse-artifacts/
├── README.md ← Master index (this file)
├── STATUS.md ← Progress tracking (Rounds 6-16)
├── INDEX.md ← Cross-reference index
├── 01-executable/ (4 docs)
│ ├── exports.md
│ ├── functions.md
│ ├── imports.md
│ └── pe-structure.md
├── 02-classes/ (2 docs)
│ ├── classes.md (HumanPlayer, HumanSoldier, HumanAnimController)
│ └── structs.md (HumanAnimController 604B, 147 fields)
├── 03-rendering/ (1 doc)
├── 04-ai/ (1 doc)
├── 05-weapons/ (1 doc)
├── 06-level-system/ (1 doc)
├── 07-scripting/ (1 doc)
├── 08-resources/ (1 doc)
├── 09-audio/ (1 doc)
├── 10-menus/ (1 doc)
├── 11-configuration/ (1 doc)
├── 12-networking/ (1 doc)
├── 13-global-data/ (1 doc)
├── 14-reverse-engineering-notes/ (1 doc)
│ └── reverse-engineering-notes.md (41 sections)
├── ghidra-scripts/ (TBD)
└── cross-reference/ (1 doc)
 └── CROSS-REFS.md

How to Read These Docs

  • Status: UNKNOWN / PARTIAL / STRUCTURAL / FORMATTED
  • Confidence: LOW / MEDIUM / HIGH
  • [FUN_00xxxxxx] = unnamed function in Ghidra
  • Address format: 0x0068ca94
  • All technical content (addresses, function names, descriptions) has been verified via Ghidra MCP
  • QTask system: 0x34-byte types, 0xd slots, 0x200-byte state arrays
  • Memory debug patterns: 0xcdcdcdcd (freed), 0xabababab (allocated)
  • ScriptVM param types: 7=Real32, 6=Int32, 3=String, 1=bool8

Coverage Note

This project represents partial reverse engineering of the IGI 2 codebase.
Of 5,507 total functions, 880 have been renamed and documented (16.0%).
The remaining 4,627 functions are still labeled as FUN_* in Ghidra.
All documented content is accurate and verified — only the coverage percentage is partial.


Remaining Work

Ghidra Enhancement (Ongoing)

  • 4,627 functions still need renaming and analysis
  • HumanPlayer/Generic vtables need full method mapping
  • Entity base class discovery (common patterns search)
  • State machine architecture documentation (state IDs to names)
  • Struct definitions: HumanPlayer, HumanSoldier, Entity, StateMachine
  • 23 remaining System_InitializeAll calls (72/95 identified, 100% of batch)
  • Priority: Continued reverse engineering effort

Documentation Updates

  • Complete 07-scripting, 08-resources, 09-audio, 10-menus, 11-configuration, 12-networking sections
  • Expand cross-reference documentation
  • Add Ghidra script automation tools

About

IGI 2: Covert Strike — ai driven reverse engineering documentation. 445+ renamed functions, 15+ file formats (MEF, TEX, ILFF, QSC). Covers AI (A* + cover graphs), weapons, QVM bytecode, UDP networking, audio, rendering (DX7/8). NEEDED to update repo

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /