Python I/O toolkit for Bully: Scholarship Edition PC assets
Project description
bullyfury
bullyfury is a Python toolkit for reading and rebuilding Bully: Scholarship Edition
PC asset formats.
Current scope:
IMGv1 archives (.img+.dir)IDBbinary tables with lossless roundtrip supportIPBbinary map chunks with lossless roundtrip supportGRIDS.DATpedestrian/vehicle route networksNFT/NIFparsing with Bully texture extraction toDDS
The package is intentionally modular so each file format can evolve on its own.
Current API
from bullyfury import BullyColFile, GridsDat, IdbFile, ImgArchive, IpbFile, NifFile, NFTFile
from bullyfury import load_bully_collectibles, load_bully_text_keys
ImgArchive.read(...)reads.img/.dirpairs and can rebuild archives.IdbFile.read(...)parsesIDBheaders and keeps binary roundtrip stable.IpbFile.read(...)parsesIPBchunk layout and keeps binary roundtrip stable.GridsDat.read(...)parsesGRIDS.DATpedestrian and car navigation graphs and can serialize them back to text.grids_to_dict(...),grids_to_json(...), andwrite_grids_json(...)export a normalized node/link document with explicitnode_idandlink_idvalues for downstream tools.BullyColFile.read(...)enumerates Bully.colsubmodels, exposes stableobject_id, bounds, box collisions, compressed mesh geometry, and preserves the remaining payload losslessly.NifFile.read(...)parses the Gamebryo header, block table, BullyNiSourceTexture/NiPixelDatablocks, and extracts supported textures toDDS.NifFile.material_bindingsexposes geometry-to-material bindings withbase_texture,normal_texture,gloss_texture,specular_color, andglossinesswhen present inNiTexturingProperty/NiMaterialProperty/NiSpecularProperty.NFTFile.read(...)is the texture-oriented Bully alias/subtype overNifFile.load_bully_collectibles()andload_bully_text_keys()expose bundled Bully text resources copied fromfastman92_processor.
Notes
IMG v1stores sizes in sectors, so exact unpadded file size is not always recoverable from existing archives.IDBandIPBparsing currently focuses on stable binary roundtrip and conservative structure discovery.- Bully
.colentries useCOL3magic but do not match the stock GTA SA header layout exactly;BullyColFilehandles the Bully-specific container shape while the copied genericColparser remains available for classic GTA-era files. - The Bully
.colparser currently covers:- per-submodel
object_id - local bounds
- AABB box blocks
- compressed mesh vertices and triangle faces
- material IDs mapped to readable names for parsed face and box surfaces
LIMKface adjacency when present- unparsed tail records as raw bytes for future reverse engineering
- per-submodel
NFTextraction now supports Bully/GamebryoNiPixelDatatextures inRGB8,RGBA8,DXT1,DXT3, andDXT5_ALTform.- Palettised
NiPixelData(PX_FMT_PAL8) is parsed, butDDSexport is still pending for that variant.
GRIDS Export
from bullyfury import GridsDat, grids_to_json
grids = GridsDat.read(r"C:\Program Files (x86)\Steam\steamapps\common\Bully Scholarship Edition\Config\GRIDS.DAT")
json_text = grids_to_json(grids)
The normalized export includes:
- top-level header counts
- every section (
PEDGRID,CARGRID) - every node with explicit
node_id - every link with explicit
link_id - node flags, width, speed, density, and attached
link_ids - link
src,dest,dist, lanes, and width
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
bullyfury-0.1.2.tar.gz
(121.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
bullyfury-0.1.2-py3-none-any.whl
(128.0 kB
view details)
File details
Details for the file bullyfury-0.1.2.tar.gz.
File metadata
- Download URL: bullyfury-0.1.2.tar.gz
- Upload date:
- Size: 121.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f07dbdf5ad607ddad3f6a657335bc081b8e8bc7e336b2fd914f4b7e637959130
|
|
| MD5 |
2ee297ea5dee5d7d24f17e4ee45706c7
|
|
| BLAKE2b-256 |
8d0b5d91e24d7ebba379e0ca0e481be368d28c61ac5c01bd9b813964eded55b2
|
File details
Details for the file bullyfury-0.1.2-py3-none-any.whl.
File metadata
- Download URL: bullyfury-0.1.2-py3-none-any.whl
- Upload date:
- Size: 128.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b4512bb6e8ae1603cd851be8fd5ea027303115e0496b2d40a73f43f730b0e77
|
|
| MD5 |
eb472bca6fc3cb516e93edf6ca19896a
|
|
| BLAKE2b-256 |
080f008eb9773e4f7957f149757101641c1e5618bad10875103fa53e58319014
|