img2gb generates GameBoy Tilesets and Tilemaps from standard image (PNG, JPEG,...). It converts the images into the GameBoy image format and generates C code (.c
and.h
files) that can be used in GameBoy projects.
- Documentation: https://flozz.github.io/img2gb/
- HowTo: https://flozz.github.io/img2gb/howto.html
- Python >= 3.9
- Pillow >= 5.0
To work on img2gb first create a virtualenv:
python3 -m venv __env__
and activate it:
source __env__/bin/activate
Then install the project with all dev dependencies:
pip install -e .[dev]
You can lint the code and check coding style with:
nox -s lint
You can fix coding style using Black with:
nox -s black_fix
You can run test on all supported Python versions or on a specific Python version with:
nox -s test # Run on all Python version nox -s test-3.9 # Run on Python 3.9 nox -s test-3.10 # Run on Python 3.10 nox -s test-3.11 # Run on Python 3.11 nox -s test-3.12 # Run on Python 3.12 nox -s test-3.12 # Run on Python 3.13
And you can build the documentation with (result in build/html/
):
nox -s gendoc
- Examples of GameBoy programs that uses img2gb for graphics: * https://github.com/flozz/gameboy-examples/tree/master/05-graphics2 * https://github.com/flozz/gameboy-examples/tree/master/06-graphics3-background
- Article about the tile encoding and img2gb: https://blog.flozz.fr/2018/11/19/developpement-gameboy-5-creer-des-tilesets/ (French)
Want to support this project?
- [NEXT] (changes on
master
, but not released yet):- Nothing yet ;)
- v1.3.0:
- feat: Added binary export of tilesets and tilemaps (@duysqubix, #44)
- misc: Added Python 3.13 support (@flozz)
- misc!: Removed Python 3.8 support (@flozz)
- v1.2.0:
- fix: Fixed wrong version displayed (@flozz, #3)
- chore: Added Python 3.11 and 3.12 support
- chore!: Removed Python 2.7 and 3.7 support
- v1.1.0:
- Removes arbitrary size limit for tilmaps
- Implements
offset
option (#2)
- v1.0.0:
- Refacto of the Python API, with new high-level fuction to be easier to use
- Refacto of the CLI: now tileset and tilemap are generated separately, this allow more options for both and covers more usecases.
- New option to handle alternative palette
- New option to handle 8x16px sprites
- Documentation
- Unit test (everything is not coverd but it is better than nothing :))
- v0.10.0: Adds non-RGB image support (indexed images,...)
- v0.9.1: Fixes an issue with Python 3
- v0.9.0: Initial release (generates tiles, tilesets and tilemaps)