Crysis 3 DirectX 9 and DirectX 10 Running

Русская версия » English Version » Articles » Crysis 3 DirectX 9 and DirectX 10 Running

Crysis 3 DX9 DX10

A Few Days Ago, CryTek was released a new part of game Crysis 3. German developers everybody dropped support for all DX9 and DX10 Cards and Gamers. Say Hallo From Russia!
In This Article i try (YURBAN) to solve problems like "How To Run Crysis 3 on DX9-DX10 Cards".

CryEngine 3 - Comparison with CryEngine 2 from previous Game

Yeah Yeah! The CryEngine 3 based on previous version CryEngine 2, The Game Crysis 2 have full support for DX9-DX11 Graphics Cards.
Crysis 3 also released on consoles like PS3 and XboX 360. These Consoles have APU with max DirectX Support Level 9 (DX 9.0c).

Differents of Crysis 2 and Crysis 3!

Common Folders: Bin32, Engine, Patch located in Root Game Directory (ex. Crysis2 and Crysis3).
Different Folders: Localization, Localized, gamecrysis2 and C3

Making Crysis 2.5 ))

To Mod, i (YURBAN) used Games: Crysis 2 v. 1.9 and Crysis 3 v. 1.2

  • Rename folder Crysis 3\Bin32 to Crysis3\Bin32_BACK
  • Rename file Crysis 3\system.cfg to Crysis3\system.cfg_BACK
  • Copy folder Crysis 2\bin32 to crysis3\bin32
  • Copy file Crysis 2\system.cfg to crysis3\system.cfg
  • Run Crysis3\bin32\crysis2.exe and Getting Error:
    Crysis 3 DX9 DX10
  • Now Rename Crysis3\C3 to Crysis3\gamecrysis2
  • Rename Crysis3\gamecrysis2\_FastLoad\startup.pak to startup.pak_BACK
  • Copy/Move Crysis2\gamecrysis2\_FastLoad\startup.pak to Crysis3\gamecrysis2\_FastLoad\startup.pak
  • Copy/Move folder Crysis3\Localization в Crysis3\gamecrysis2\Localized
  • Run Execuatable Crysis3\Crysis2.exe: we found a Black Screen with Green Cursor (move freely) and after few seconds Application has been stopped!
  • Das ist Gut!
  • Now Read Again Crysis3\Game.log, we showing strings like:
    Initializing AI System
    [Error] Unable to find any Localization Data!
    [Error] Failed to load anim pair file! scripts/animPairs.xml No 3P animations will play!
    [Profile] Warning: Could not open configuration file
    [Game Version]: RELEASE PURE CLIENT
    [Error] Unable to load 'Scripts/Progression/ProgressionTokens.xml'
    [Error] Unable to load 'Scripts/Progression/PersistantStatMapParams.xml'
The Problem called [Error] Unable to find any Localization Data! comes from: in Crysis 2 have only one folder gamecrysis2\Localized\English.pak for English or any other Language, Crysis 3 have two folders for each Language - Localization\English.pak и Localization\English_xml.pak

Working at "Hard" scheme

Now We Needed a PAK Manager (Pak Manager Tool) from CryTek official website, comes with Crysis 2 Mod SDK for Extract Encrypted *.PAK Files of Crysis 2 and Crysis 3.

Crysis 3 DX9 Project

After many experiments with parameters and Game Execuatable, we founded some interesting parameters, like sys_spec (0-6). First Five values from 0 to 4 is able to config Crysis3 for PC, another 5 and 6 values configures CryEngine3 for XboX360 and PlayStation (in order to read). But Some Graphic Bugs Detected Immediately. Show Video and Screens Below!

Crysis3.exe FAR Crysis3.exe #2 FAR

HardWare Masters Team now working on Crysis 3 DX9 Project, content comes soon!

Crysis 2 MOD SDK - Installing

If You Try Install This DevKit and Get a Error Like "The Crysis 2 MOD SDK requires a full installation of the game Crysis 2, updated to Patch 1.9", check Registry Keys!
For x86 systems: HKEY_LOCAL_MACHINE\SOFTWARE\Crytek\Crysis 2 Value Install Dir - Create REG_SZ and Write The Right Path to your Crysis 2 Game Folder.
For x64 systems: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Crytek\Crysis 2

Crysis 2 SDK MOD


CryENGINE Documentation
Crysis 3 X360 Image
DirectX SDK

DX11 Hook/Hack

After some Things about making "hybrid" mod, we found nice old Application called "3D Analyze". This Software Can Control Older 3D Appliactions to Emulate Shaders, Textures and many other DirectX Tweaks. We Send VIA Mail to Author of 3D Analyze. We Want Make DXGI Hack Directly (.dll file) or "On Fly" (in Memory API Calls Control). This Way is the best choice of this Problem.

In Case With Analyzing The Game Execuatable we making Now a "right" d3d11.dll, to replace some functions calls and its returning data.

Preparing to Hack and Few Things

DirectX 11. Alternative Library - concept

DirectX 11 Alternative

After Inspecting a Game Execuatable for DirectX Calls I Found Few Calls Named D3D11CreateDevice and D3D11CreateDeviceAndSwapChain. Then i Compared This Functions with previous versions (DX10, MSDN).

Declaration of D3D11CreateDevice.

HRESULT D3D11CreateDevice( _In_ IDXGIAdapter *pAdapter, _In_ D3D_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ const D3D_FEATURE_LEVEL *pFeatureLevels, _In_ UINT FeatureLevels, _In_ UINT SDKVersion, _Out_ ID3D11Device **ppDevice, _Out_ D3D_FEATURE_LEVEL *pFeatureLevel, _Out_ ID3D11DeviceContext **ppImmediateContext );

Declaration of D3D10CreateDevice.

HRESULT D3D10CreateDevice( _In_ IDXGIAdapter *pAdapter, _In_ D3D10_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ UINT SDKVersion, _Out_ ID3D10Device **ppDevice );

Declaration of D3D11CreateDeviceAndSwapChain.

HRESULT D3D11CreateDeviceAndSwapChain( _In_ IDXGIAdapter *pAdapter, _In_ D3D_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ const D3D_FEATURE_LEVEL *pFeatureLevels, _In_ UINT FeatureLevels, _In_ UINT SDKVersion, _In_ const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, _Out_ IDXGISwapChain **ppSwapChain, _Out_ ID3D11Device **ppDevice, _Out_ D3D_FEATURE_LEVEL *pFeatureLevel, _Out_ ID3D11DeviceContext **ppImmediateContext );

Declaration of D3D10CreateDeviceAndSwapChain.

HRESULT D3D10CreateDeviceAndSwapChain( _In_ IDXGIAdapter *pAdapter, _In_ D3D10_DRIVER_TYPE DriverType, _In_ HMODULE Software, _In_ UINT Flags, _In_ UINT SDKVersion, _In_ DXGI_SWAP_CHAIN_DESC *pSwapChainDesc, _Out_ IDXGISwapChain **ppSwapChain, _Out_ ID3D10Device **ppDevice );

This Lines You Can Found on MSDN WebSite. The Function D3D11CreateDeviceAndSwapChain called Two Times before Game Launching. Looks Like, This is what I need. I Writed in VS 2010 Dynamic Link Library, called the same name "d3d11.dll" and placed it to crysis3.exe folder (bin32\). This Library Hooking All Functions Calls from Crysis3.exe to and Writing Some Data to Log Files. I Think The Hack Comes in Few Days!

The Screen Below, it shows no differents with DX9 and DX11 (Dragon Age 2), DX it is just API Interface for Driver, Driver Converting These Calls and Sending Instructions to GPU. The DirectX API Features it is only advanced effects on DX9, DX10/DX11 - Just Marketing to Selling Windows Vista and above Versions by Microsoft. If You Have Documentation for Any GPU, for example GeForce 6600, you may make the Alternative Driver, that knows how to Render DX11 Effects on 6600 GPU other any Graphics Cheap!

DX9 and DX11


Notice: to unpack archives below, you must use 7z-format compatible Archiver, like 7-zip (7-zip.org) or WinRAR (rarlab.com).

Mirror #1: Crysis3_PakDecrypt.7z (6,1 MB)