A tool for generating NES graphics from pixel art images.
Windows exe - 1.3.1
md5: 26383d15365608c19b3ffbe8074007f9 | sha1: 929e1b8753baa17723030f91498c7b2f4cdb1c00
How to build homebrew - Blog post
Source - Github
Python package - PyPi
Makechr takes 256x240 pixel images, and creates the necessary component files (chr, nametable, attribute, palette) to recreate those images on the NES. Additionally, it can create views to help visualize how NES graphics work.
For example, here's a graphic used in the homebrew game
makechr can automatically detect the palette it needs to use:
as well as collect all the necessary CHR data:
or produce a visualization of which blocks use which palettes:
There's lot of options for makechr, many of which can be used to precisely control the memory layout of the data that makechr produces. For example, the "-s" option treats the image as sprite data, which changes how the palette is laid out, where CHR data gets stored, and how restrictive the colors need to be. See the README file for full documentation.
For a more detailed explanation of how NES graphics work, see my blog series on the subject.
Running GUI on OSX using virtualenv
Running makechr's gui on OSX takes a little bit of work. Installing wx the normal way, using pip inside of virtualenv, doesn't quite work. Instead, wxpython needs to be installed globally, and hacked a bit.
Get the source for makechr, using git
git clone https://github.com/dustmop/makechr
Use brew to isntall wx, globally:
brew install wxpython
Change directory into the virtualenv:
And link the global wx library here:
ln -s /usr/local/lib/python2.7/site-packages/wx.pth wx.pth ln -s /usr/local/lib/python2.7/site-packages/wx-3.0-osx_cocoa wx-3.0-osx_cocoa
Create a script at venv/bin/wxpy, with the following contents:
#!/bin/bash # what real Python executable to use PYVER=2.7 PYTHON=/System/Library/Frameworks/Python.framework/Versions/$PYVER/bin/python$PYVER # find the root of the virtualenv, it should be the parent of the dir this script is in ENV=`$PYTHON -c "import os; print os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..'))"` # now run Python with the virtualenv set as Python's HOME export PYTHONHOME=$ENV exec $PYTHON "$@"
Set the script to be executable:
chmod a+x wxpy
Then the gui can be run using