Skip to main content

DOOM 3 BFG Edition Profile

DOOM 3 BFG Edition includes a profile.bin file in the users save data. This file includes (presumably) default console variable (CVar) settings, along with some additional data which appears to be default input mappings.

The file contains two checksums calculated from the contents of the data, so you cannot simply edit the file without knowing how to re-calculate the checksums otherwise the game will detect the file as corrupt on start-up and create a new profile.bin.

This Python package allows you to open a profile.bin file, make changes to it, and then write it back to disk with the correct checksums.

But why?

I wanted to experiment with changing settings on console versions of the game, where access to the in-game console is not readily available. In the PlayStation 4 version of the game the profile.bin file is located within the users encrypted PS4 save data. With a jailbroken PS4 you can decrypt the save, edit the profile.bin file with this Python package and then re-encrypt the save data. The modified settings are now loaded by the game.

Installation

pip install doom3-bfg-profile

Typical Usage

  • Create a BFG_Profile object by loading and parsing an existing profile.bin
  • Add/change/remove console variable settings
  • Save the new profile.bin by calling generate_profile()

Limitations

I was only interested in editing the console variables section of the profile.bin file. I have not investigated the section which appears to be default input mappings, so any profile.bin which contains such a section will have it re-created in the updated file as it originally was (identified as 'Extra Data' in the profile.bin data structure).

Usage Examples

Create a BFG_Profile object and add the com_showFPS = 1 console variable

import doom3_bfg_profile as d3

profile = d3.BFG_Profile('profile.bin')
profile.add_config_item(d3.Config_Item('com_showFPS', '1'))
profile.generate_profile()

A demo application is included in src/demo.py.

Reference

Profile.bin Structure

Data Size Description
Checksum 1 4 bytes MD5 based checksum of all subsequent data (written big endian)
Checksum 2 4 bytes MD5 based checksum of all subsequent data (written big endian)
Header 5 bytes 80 94 CC A1 04
Config Data Count 1 byte Total number of key pair values in Config Data
Config Data Variable NULL terminated key pair values
com_showFPS\x00 1\x00
Config Footer 19 bytes 17x 00 + C8 01
Padding 206 bytes 205x 00 + 01
Extra Data Variable Possibly default key bindings

Development

All commands after step 1 should be run from the root of the git repo

1. Clone the repo

git clone git@github.com:andshrew/DOOM3-BFG-Profile.git

2. Create and load a virtual python environment

python -m venv .venv
source .venv/bin/activate

3. Upgrade pip

pip install --upgrade pip

4. Install the package in editable mode

pip install -e ".[test]"

5. Build the final package

pip install build
python -m build

Metadata

Release files for doom3-bfg-profile 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for doom3-bfg-profile 1.0.0
File Size Uploaded Provenance Actions
doom3_bfg_profile-1.0.0.tar.gz 7.8 kB With provenance Details for doom3_bfg_profile-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for doom3-bfg-profile 1.0.0
File Interpreter ABI Platform Actions
doom3_bfg_profile-1.0.0-py3-none-any.whl Python 3 none any Details for doom3_bfg_profile-1.0.0-py3-none-any.whl

Total release size: 15.9 kB

Release files / doom3_bfg_profile-1.0.0.tar.gz

Download URL doom3_bfg_profile-1.0.0.tar.gz
Size 7.8 kB
Tags Source
SHA-256 checksum
How to use checksums
c9e8619631da04dc0179fbd8463c5f83c0d7f52642a2201ded78a96d26d35f7d
BLAKE2b-256 checksum
How to use checksums
6694d02ad5f25eb9f25e66b1891b54a98cb242402391e1ac473f5d74ff3f0cff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 18, 2026.

Transparency log

Release files / doom3_bfg_profile-1.0.0-py3-none-any.whl

Download URL doom3_bfg_profile-1.0.0-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a405af255b4a1b02a1b6feb48df6b91c436a6dfad57d8553d6f09188b61098f
BLAKE2b-256 checksum
How to use checksums
ad8959a5bd04db46652924906dc96b3578aedf83b229ce0ec5a06d655be8737e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 18, 2026.

Transparency log

Security for doom3-bfg-profile 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for doom3_bfg_profile-1.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page