[info] [changes] [download] [dump strings] [tile definitions] [project] [forums] [faq] [screenshots]



  • And after more errors, it turns out to be DWORD. UGH!
  • Fixed an error in fontfile.php that allowed color images to be used (this will ALWAYS result in broken output).
  • Fixed an error in bcr.php that was causing color images to read as monochrome, which made BCR completely break.


  • FINALLY fixed the bitmap glitch. Previously MadMalkav and I thought it was a image width issue, hence the option in settings to force valid width. This turned out to be incorrect. The bitmap specification I was working on failed to mention all image data has to be stored in WORDs, not BYTEs. All files have been updated for this fix. FEIDIAN should finally work with all possible widths in Bitmap and XPM formats.
  • Fixed numerous spelling errors in this change log that have accumulated the last 8 months.


  • Added support for Tile Layer Pro color palettes. This should make it easier to get the colors you want in FEIDIAN output. In Tile Layer Pro, you can drag around the sliders to change colors. When you get all the colors how you want, this can be saved to a .TPL. You can include these .TPL files in FEIDIAN by adding them AFTER the output file in -cr ripping. It is only supported in -cr since -cr is the only non-monochrome ripping function.


  • If you need to interleave every pixel (like GBA does), just add "$interleave=1;" to your tile definition. This would transform 01234567 into 10325476, which some systems do. The interleave is performed AFTER all planes have been merged, so if you needed to interleave only certain planes (which would be absolutely psychotic from a development standpoint) you would still need to make a custom dump/insert routine in the tile definition.
  • Changed the copyright tag


  • Fixed a glitch with tile padding which appears to have been present for several versions. Padding by an odd integer width will break. The reason is yet unknown (it SHOULD be making valid bitmap widths and appears to expand the tiles properly...). For now, FEIDIAN just blocks you from using odd integers. There were also some other fixes and speed-ups to the pad code.
  • Not directly included, but there's now a tile definition for Game Boy Advance on the website made thanks to some information on the format provided by Kojiro Sasaki.


  • Fixed an severe error (set $bit2 twice) that was causing all 3bpp insertion to break.
  • Fixed a glitch with linear insertion. Genesis/Megadrive seems to work properly now. Can anyone verify if this holds true for NeoGeo Pocket Color?
  • Added CRC32 as an option for tile data in BCR. If you want to use CRC32, uncomment the line in settings.php.
  • Changed the MD5 and SHA1 for BCR to use raw output instead of alpha-numeric. This means the output will be half the length, making tile search even quicker.
  • Optimized 60 lines in both custominj.php and customrip.php. But this is pointless since full XPM support required adding a ton more.
  • Full support for XPM reading and writing in all functions. Hopefully this proves useful to someone. On the upside of things, with XPM support GDLIB 2.0 should now be at my disposal.
  • Added a line to start muting notices. There's this minor annoyance about declaring a color depth twice when working with custom tiles. It's because the tile definition gets included twice. I've updated the tile definition template to check if a color depth has been defined and updated all tile definitions which people have submitted to the website, but this is just in case you have some creeping around your computer based on the old format.
  • 8width.php has been completely phased out.


  • Copyright.php has been renamed to settings.php (since it now has more settings than just the default font copyright).
  • BCR improved to allow you to compare tiles by MD5sum or SHA1 hashes, as well as gzipping the data. Options for this are in settings.php. Please read the notes in settings.php before attempting any kind of BCR.
  • European characters at ASCII 0xa0-0xef can be used in tile definitions, IF you enable them. Since Asian language systems cannot process these characters, it is disabled by default. If you create a tile definition dependant on these characters, please include a note that it requires EXTEND_LETTERS==TRUE.
  • A new value, FORCE_PROPER_WIDTH, has been added to the settings. This addresses an issue MadMalkav discovered where color graphics corrupt if (columns*tile_width)%8!=0. This only affects tile widths that are not a multiple of 8. If you are using such a tile width, consider dumping in a multiple of 8 columns (8, 16, 24, 32, etc). If you forget, FEIDIAN will print a notice and terminate. You can disable this in settings.php.
  • Custom insert and extract broken into two separate files to cut down on the size and make it easier to edit (less to load, too).
  • Fixed a glitch that was breaking monochrome custom definitions since color had been added. I don't know how the hell this slipped by testing.


  • Major fix to the custom tile routine. The new hierarchy for custom tile letters is: [A-Z] [a-z] [2-9] [!?@*]


  • COLOR! COLOR! AND THEN MORE COLOR! I finally got around to it. This means there are a few changes to the tile definition format. You can download any of the sample definitions (they've all been edited for compatibility) from the page and have a look, or check out the definition template that comes with FEIDIAN now. Currently, all formats, 16 colors or under, in Klarth's console graphics document are supported, as well as some others. This means:
    -   8x8 2bpp NES
    - 16x16 2bpp NES
    - 8x8 2bpp SNES/Gameboy/GBC
    - 8x8 2bpp NeoGeo Pocket Color
    - 8x8 2bpp Virtual Boy
    - 8x8 3bpp SNES
    - 8x8 4bpp SNES/PC-Engine
    - 8x8 4bpp Game Gear/SMS/Wonderswan Color
    - 8x8 4bpp Megadrive/X68000
    There's also a few other tile definitions in development (I hear Kitsune is doing an MSX definition, which apparently NOTHING supports).
  • Tile definitions can now include their own dump and insert functions (for any adventurous programmers out there). This probably isn't necessary, but it's nice to have available.
  • Tile definitions support planar or linear byte arrangement (compatibility with Virtual Boy and NeoGeo Pocket Color)
  • Speed-up to tile padding.


  • Fixed some of the existing code for compatibility with 16-color bitmaps in preparation for v0.8.


  • Tile padding has been added. You can now increase a tile's size by any x,y pixels without scaling the tile contents. 0 is assumed as the transparent bit (if this is really a problem, just invert your bitmap colors first). This function has many uses, notably preparation of a font for Optical Character Recognition (OCR), where an 8-10px spacing is needed for good results.
  • Binary Character Recognition (BCR) added (invented?). This method allows a user to supply a known game font and text representation of it as a source. This can vastly reduce the amount of characters one needs to fill in for a table, if you have a similar font already done. This can be very useful since companies often recycle their fonts between games.
  • BDF font output APPEARS to be working, but I don't have a setup available to test BDF fonts on. If you use it, and it works, let me know.


  • FD font output support has been added. FD fonts can be compiled into Windows 3.0/3.11/NT/95/98/Me/2000/XP compatible .FON files using the excellent mkwinfont by Simon Tatham, available from his page at http://www.chiark.greenend.org.uk/~sgtatham/fonts/ I would like to make .FON output automatic from FEIDIAN, but I don't know Python. If anyone can give me a nice file format map based off his source, I can add it to FEIDIAN. NOTE: Source bitmaps for FD output should be 256 tiles in ASCII order.
  • Fixed a glitch that caused dual-tile generation to break when the tiles did not end evenly on a multiple of 8 bits.


  • What wonderful luck. When uploading the bug fix release of 0.45, I broke the directory structure, rendering the bug fix release EVEN MORE BUGGED! Here's a correct version, and I'm very sorry for that mistake. 0.45 has been pulled from distribution.


  • Bug fix release: Added much needed input checking to keep users from glitching FEIDIAN with malformed command strings. Also corrected an error in the insertion routine for custom tiles using the new 62-byte format.


  • Expanded tile definitions to 62 bytes. This should cover most any 24x24 tile (assuming not EVERY byte needs to be defined, just the pattern). The new letter hierarchy is A-Z a-z 0-9. 0-9 was put last instead of first to ensure backwards compatibility with older definitions.
  • Added support for color inversion in the dumps. Inversion is supported in all insertion and ripping functions (you have no need for it in dual-tile building, even if you think you do). To invert, simply add an "i" to the command line. Example: feidian.php -cr i mrsaturn,16,6,0x2015b9 eb.smc mrsaturn The Mr. Saturn font is stored in Earthbound with its colors reversed. This will dump it in the standard 0=transparent 1=color format most games use. You could similarly add an "i" to the command line in insertion to flip the colors back.


  • Complete rewrite of the source code.
  • Added support for creating dual-tile sets.
  • Added support for custom tile definitions.
  • Added support for non-8* width fonts.

v0.2 L31

  • Initial release

SourceForge.net Logo
FEIDIAN written by Derrick Sobodash ©2003–2006
Zero Wing Commander and Operator property of Toaplan ©1991