FrostyCmd is a command-line interface tool for performing Frosty operations without the GUI. It’s designed for automation, batch processing, and integration into build pipelines.
Overview
FrostyCmd provides command-line access to:
Profile generation and management
Shader database dumping and analysis
Asset database operations
Batch processing workflows
FrostyCmd is primarily used by developers and advanced users. Most modding tasks can be accomplished with Frosty Editor or Mod Manager.
Installation
FrostyCmd is included with Frosty Editor:
FrostyEditor/
├── FrostyCmd.exe # CLI executable
├── FrostySdk.dll # SDK library
├── ThirdParty/ # Dependencies
│ ├── libfbxsdk.dll
│ ├── libzstd.dll
│ └── zlibwapi.dll
└── Banners/ # Game profile banners
Usage
Run FrostyCmd from the command line:
FrostyCmd.exe [command] [arguments]
Basic Syntax
FrostyCmd.exe < GamePat h > < Comman d > [Options]
GamePath : Path to the game executable or data directory
Command : Operation to perform
Options : Command-specific parameters
Profile Management
Creating Game Profiles
Generate profile data for Frostbite games:
This command:
Scans for supported game profiles
Creates binary profile files (.bin)
Generates game-specific metadata
Outputs profiles to the Profiles/ directory
Prepare Banners
Place game banner images in Banners/ directory:
Format: PNG
Naming: <GameProfile>.png
Examples: SWBF2.png, DAI.png, FIFA20.png
Run Profile Creator
Execute the profile command:
Verify Output
Check Profiles/ for generated .bin files.
Profile Structure
Generated profiles contain:
Game metadata : Display name, cache name
Source paths : Game data locations
Deobfuscators : String decryption methods
SDK filename : Associated class library
Flags : Game-specific settings
MustAddChunks: Chunk handling requirement
EbxVersion: EBX format version
RequiresKey: Encryption key needed
ReadOnly: Profile allows viewing only
ContainsEAC: Anti-cheat present
Shader Operations
Shader Database Dump
Extract shader information from Frostbite’s shader database:
FrostyCmd.exe < GamePat h > shaderdump [OutputPath]
Parameters:
GamePath: Path to game executable
OutputPath: Where to save shader data (optional)
Output:
Shader bytecode files
Shader metadata JSON
Material shader mappings
Shader Block Depot Dump
Extract shader block depot data:
FrostyCmd.exe < GamePat h > shaderblockdump [OutputPath]
This extracts:
Shader block definitions
Parameter layouts
Constant buffer structures
Shader permutations
Shader dumps can be very large (several GB) depending on the game.
Asset Database Operations
Asset Enumeration
List all assets in a game:
FrostyCmd.exe < GamePat h > list [Options]
Options:
--type <AssetType>: Filter by asset type (ebx, res, chunk)
--output <File>: Save list to file
--verbose: Include detailed information
Example:
# List all EBX assets
FrostyCmd.exe "C:/Games/BF1/bf1.exe" list --type ebx
# Export asset list to file
FrostyCmd.exe "C:/Games/BF1/bf1.exe" list --output assets.txt
Extract specific assets:
FrostyCmd.exe < GamePat h > extract < AssetNam e > [OutputPath]
Example:
FrostyCmd.exe "C:/Games/SWBF2/starwarsbattlefrontii.exe" extract "Weapons/Blasters/DL-44" "./exported/"
Encryption Keys
Some games require encryption keys:
Keys should be provided as .key files:
[16 bytes] - Primary encryption key (Key1)
[16 bytes] - Secondary encryption key (Key2) [optional]
[16384 bytes] - Tertiary encryption key (Key3) [optional]
Using Keys
Place the key file in the same directory as the game executable:
Game/
├── game.exe
├── game.key # Encryption key
└── Data/
Or specify explicitly:
FrostyCmd.exe < GamePat h > < Comman d > --key "path/to/game.key"
Automation Examples
Batch Profile Generation
Create profiles for multiple games:
@ echo off
echo Generating Frosty Profiles...
FrostyCmd.exe profile
if %ERRORLEVEL% EQU 0 (
echo Profile generation successful!
) else (
echo Profile generation failed!
exit /b 1
)
echo Copying profiles to distribution folder...
copy /Y Profiles\*.bin ..\Distribution\Profiles\
echo Done!
Asset Export Pipeline
Extract assets from multiple games:
#!/bin/bash
GAMES = ( "BF1" "SWBF2" "BFV" )
OUTPUT_DIR = "./exported_assets"
for game in "${ GAMES [ @ ]}" ; do
echo "Processing $game ..."
FrostyCmd.exe "C:/Games/ $game " extract-all --output " $OUTPUT_DIR / $game "
done
echo "Export complete!"
Shader Analysis
Dump shaders and generate reports:
$GamePath = "C:\Games\BFV\bfv.exe"
$OutputDir = "./shader_analysis"
Write-Host "Dumping shader database..."
& FrostyCmd.exe $GamePath shaderdump $OutputDir \shaders
Write-Host "Dumping shader blocks..."
& FrostyCmd.exe $GamePath shaderblockdump $OutputDir \blocks
Write-Host "Generating report..."
# Custom analysis script
& python analyze_shaders.py $OutputDir
Write-Host "Analysis complete!"
Advanced Usage
Custom Logging
FrostyCmd uses a console logger that outputs to stdout:
# Redirect to log file
FrostyCmd.exe profile > profile_generation.log 2>&1
# Timestamp logs
FrostyCmd.exe profile | ForEach-Object { "$( Get-Date -Format 'yyyy-MM-dd HH:mm:ss'): $_ " }
Integration with Build Systems
MSBuild Integration
< Target Name = "GenerateProfiles" BeforeTargets = "Build" >
< Exec Command = "FrostyCmd.exe profile" />
</ Target >
CI/CD Pipeline (GitHub Actions)
name : Generate Profiles
on : [ push ]
jobs :
build :
runs-on : windows-latest
steps :
- uses : actions/checkout@v2
- name : Generate Frosty Profiles
run : |
cd FrostyCmd
.\FrostyCmd.exe profile
- name : Upload Profiles
uses : actions/upload-artifact@v2
with :
name : frosty-profiles
path : Profiles/*.bin
Environment Variables
Configure FrostyCmd behavior:
# Set Frosty data directory
export FROSTY_DATA_DIR = "/path/to/frosty/data"
# Set default game path
export FROSTY_GAME_PATH = "C:/Games/BF1/bf1.exe"
# Enable verbose logging
export FROSTY_VERBOSE = 1
Exit Codes
FrostyCmd returns standard exit codes:
Code Meaning 0Success 1General error 2Invalid arguments 3File not found 4Permission denied 5Unsupported operation
Troubleshooting
DLL Dependencies
Ensure required DLLs are present:
# Check dependencies
dumpbin /dependents FrostyCmd.exe
# Required DLLs:
# - FrostySdk.dll
# - FrostyHash.dll
# - libfbxsdk.dll
# - libzstd.dll
# - zlibwapi.dll
Profile Generation Issues
Verify Banner Files
Ensure all banner images exist in Banners/ directory.
Check Permissions
Run as administrator if profile generation fails.
Clear Existing Profiles
Delete old profiles from Profiles/ before regenerating.
Encryption Key Missing : Provide correct .key file
Asset Not Found : Verify asset name and path
Insufficient Disk Space : Ensure adequate storage for extraction
Large-Scale Operations
For processing many assets:
# Use parallel processing
FrostyCmd.exe < GamePat h > extract-batch --parallel 4 assets.txt
# Limit memory usage
FrostyCmd.exe < GamePat h > export --max-memory 4096
Caching
FrostyCmd caches asset database:
Profiles/
├── <GameName>.cache # Asset database cache
└── <GameName>.bin # Profile data
Delete cache to force rebuild:
Development Integration
Using FrostySdk in Code
FrostyCmd demonstrates FrostySdk usage:
using FrostySdk ;
using FrostySdk . IO ;
using FrostySdk . Managers ;
// Initialize file system
FileSystem fs = new FileSystem ( basePath );
fs . Initialize ( encryptionKey );
// Create resource manager
ResourceManager rm = new ResourceManager ( fs );
rm . SetLogger ( logger );
rm . Initialize ();
// Create asset manager
AssetManager am = new AssetManager ( fs , rm );
am . SetLogger ( logger );
am . Initialize ( false );
Next Steps
SDK Reference Learn to use FrostySdk in your projects
Frosty Editor Use the visual editor for most tasks