Eight bits should be enough for anyone..
RSS icon Email icon Home icon
  • C64 Sprite Converter

    A simple .BMP image to C64 sprite data converter for Windows

    V1.01 – By Phil / Retroleum – Download Latest Version

    • Allows images drawn with standard PC paint programs to be converted into raw Commodore 64 sprite data.
    • Input: A 256 colour mode, uncompressed, Windows format .BMP image file.
    • Output: Raw binary sprite data, 64 bytes per sprite (zeroes are placed in the unused 64th byte of each sprite definition.)

    The source image is scanned in 24×21 pixel blocks from left to right, top to bottom. Width must be
    a multiple of 8 pixels and any space which is not big enough for a sprite block (24×21 pixels) is skipped.

    Options:

    1) “Multicolour mode” – Selects how the source data is interpreted. If this option is NOT ticked, the conversion is in simple hi-res mode, IE: each source pixel (IE: colour index byte from the .bmp file) produces a single bit in the C64 sprite.  Please select the the colour index (in the source image) which is required to be treated as transparent. Colour indexes 0-15 can be  selected from the drop-down list or any value from 0-255 can be manually entered. Any pixel that does not match this index is treated as a binary 1 for the sprite image. Naturally, each hi-res sprite block should have only one unique colour.

    When the multicolour mode box is ticked, the transparent colour index needs to be set as above and additionally the two common multicolour register values need to be chosen.

    As the converter scans the image:

    • Source pixels that match the transparent value are written as a sprite bitpair 00b.
    • Source pixels that match multicolour 0 are  written  as a bitpair 01b
    • Source pixels that match multicolour 1 are written as a bitpair 11b.
    • Any other colour index is treated as the sprite’s unique colour and written as a bitpair 10b.

    When preparing a source image for multicolour mode conversion, sprites should be drawn with double-width pixels (see the test pic included in the zip)  The converter looks at the left pixel of each 2 pixel pair in the source image to determine which bitpair (00b,01b,10b,11b) to use in the destination.

    2) “Save colours” – If desired, the colour index used for the non-transparent pixels of each sprite can be saved. This is really only useful if the source image has the C64’s original colours in indexes 0-15.

    IE:

    00 – Black
    01 – White
    02 – Red
    03 – Cyan
    04 – Purple
    05 – Green
    06 – Blue
    07 – Yellow
    08 – Orange
    09 – Brown
    10 – Pink
    11 – Grey 1 (darkest)
    12 – Grey 2
    13 – Light Green
    14 – Light Blue”
    15 – Grey 3 (lightest)

    3) “Skip empty sprites” – Simply skips any sprite definition blocks that contain nothing but transparent pixels. Most of the time you will want this ticked.

    Notes:

    The converter works from the palette index values of the source image (0-255) and is oblivious to the actual colours in the palette. Therefore, the source image does NOT need to have the original C64 colours in indexes 0-15 (these are just suggested by the drop-down menus for when the C64 colours in the  correct order HAVE been used in the source image). If desired, the higher indexes (16-255) can be used in the source image EG: for multicolour0 and multicolour1 to avoid any ambiguity when the converter selects bitpairs, or for the transparent background colour so that the entire range of colours can be saved when “save colours” is ticked.

    This program has been tested on Windows XP (32bit) and Windows 7 (64 bit)