The Charset Editor draws the character set a Commodore 64-family program uses for text and, with the Tile Workshop, for character-mode graphics. It edits all 256 glyphs of character memory, each 8 × 8 pixels, and exports either an editable project or a crustyBASIC include your program can install.
This guide covers the editor on its own. For building a level out of those glyphs, see Help → Tile Workshop Guide.
.64c binary or .c64charset.json project.Charsets live in the project's charsets/ folder and are listed in the manifest's assets.charsets array. The editor is a C64-family tool: the palette it writes names VIC-II colour registers, so the same asset is expected on a C128 or Plus/4 as on a C64. There is no charset editor for NES (its characters are CHR patterns inside the NES Tile Workshop), for Apple II, or for the other targets, and the Tools menu disables the entry when the target does not match.
Choose the mode before you draw, because the two are different shapes and converting between them loses information:
| Standard | Multicolour | |
|---|---|---|
| Shape | 8 × 8 pixels | 4 × 8 fat pixels |
| Colours | Two: glyph colour and background | Four: background, colour 1, colour 2, and the cell colour |
| Brush values | Lit or clear | Background, colour 1, colour 2, cell colour |
| Palette editor | Not needed — the two colours come from the screen registers | Screen palette, saved with the project |
Switching mode converts all 256 glyphs at once, and there is no undo. Standard to multicolour keeps only whether each pixel pair was lit; multicolour to standard loses which of colours 1, 2, or 3 a cell used. Decide first, then draw.
$hex, or 0x values separated by commas or spaces and leave the field to apply them. Copy glyph bytes puts the same text on the clipboard for use in source..c64charset.json in charsets/.The defaults are glyphs 64 to 127, and that default exists for a reason: a charset include overwrites what it installs, and exporting all 256 glyphs would replace the letters and digits the ROM font still supplies. Exporting only the range you actually redrew keeps the ROM font for everything else, which is usually both smaller and safer.
The generated include starts with the asset marker, then one CONST C64_CHARSET_<NAME>_GLYPH_<n>(7) AS U8 line per glyph in range, then C64_CHARSET_<NAME>_INSTALL_CHARSET, which:
CHARSET_COPY_DEFAULT to start from the machine's own font, andCHARSET_DEFINE.A multicolour charset also gets _COLOR_BACKGROUND, _COLOR_1, _COLOR_2, and _COLOR_CELL constants plus palette and colour-RAM routines, because those colours have to be written to the VIC-II as well. A standard charset emits no palette block — its two colours come from the screen registers your program already sets.
Include the generated .cbi from your game source and call the install routine during setup.
| What | How it is handled |
|---|---|
.64c binary dump |
The two-byte load address is read and shown, then eight bytes per glyph are decoded. A shorter set is padded to 256 glyphs with blanks. |
.c64charset.json, .c64charset, .charset.json, .charset |
An editable project; it must contain exactly 256 glyphs. |
A binary is converted into an editable project rather than being edited in place, and the load address is not kept in the project. Importing from the Explorer or by dropping a file always decodes a binary as standard, while the editor's own Open charset decodes it in the mode you are currently in — so if you are importing a multicolour dump, set the mode first.
The parser reports three specific problems rather than failing silently: a file with no room for even one glyph, data that is not a whole number of eight-byte records, and more than 256 glyphs. A project that does not match the expected shape is reported as an invalid charset project.
There is no image import here. Glyphs are drawn, converted from a .64c, or generated as data.
| Target | Charset Editor |
|---|---|
c64, c128, plus4 |
Available. All three use the same C64-addressed output. |
vic20, mega65 |
Not offered, even though both are Commodore machines with their own character memory. |
nes |
Not offered. NES characters are 2bpp CHR patterns, edited in the NES Tile Workshop. |
apple2 and the rest |
Not offered. |
Opening an existing charset asset from the Explorer works regardless of the current target, because the saved asset records its own platform. The asset itself stays C64-family data.
Standard-mode glyph values are shown through the project's palette, and a neutral default maps the lit colour to a dark grey. The brush swatch beside the tool list is a fixed amber for legibility. Switch to Multicolour, choose a brighter colour 1, and switch back if you want a different standard-mode appearance; the palette is kept across the mode change.
Check the warning under the Screen palette. A cell colour below 8 is stored by colour RAM but the VIC-II only shows it from 8 upwards; below that the cell is drawn as two-colour hi-res. Pick a colour from 8 to 15.
That is the generated-include check. Crusty Studio only replaces a .cbi that carries the @crusty-asset marker line with a matching kind; anything else is treated as hand-written source and left alone. Export to a different name, or remove the file yourself. The refusal is reported in Output, not in the editor.
A .64c decoded in the wrong mode is the usual cause. The editor's Open dialog decodes in the mode you are currently in; importing from the Explorer or by dropping always decodes as standard. Set the mode first, then import.
The project must contain exactly 256 glyphs, each 8 rows of 8 (standard) or 4 (multicolour) values in range. A hand-edited file with fewer glyphs will not load.
Draw a replacement for the glyphs your game actually uses — a cursor, a border, a HUD icon, or a set of tiles for the Tile Workshop — export only that range, include the result from main.cbs, and call the install routine at start-up.