Kisekae Set System implementation for the web
Haskell JavaScript C HTML Smarty CSS Shell
Latest commit 678e547 Nov 1, 2017 @emhoracek emhoracek Merge pull request #54 from wuworkshop/add-pr-steps
Add fork, clone, and pull request instructions to

Here for Hacktoberfest?

Please comment on the issue you want to work on to claim it before you start work. That way you can take your time working instead of racing to get the first pull request in.

Don't see an interesting issue, or all the issues are claimed? Check out the CONTRIBUTING file for ideas and more ways to contribute! If a feature idea there looks interesting, please create an issue for it so we can discuss different approaches and so other people can know that you're working on it.

I'll be on Twitch working on this project most Sundays. Please feel free to ask questions in the chat there and let me know if you need any help getting the project running!

Thank you!!


Smooch is a set of tools for viewing, converting, and eventually creating KiSS dolls. KiSS stands for Kisekae (Japanese for "dress up") Set System.

KiSS dolls have been around for a long time, but there's only one modern viewer (and it has some drawbacks) and no way to play with these dolls online. Many very talented artists spent countless hours making these fun digital toys. Some are wonderful examples of pixel artistry. It would be a shame for them to be lost just because technology has moved on.

A typical KiSS doll: Spark by Kimiki

Playing with a KiSS doll

Check out Smooch's GitHub wiki if you want to learn more about KiSS.

cel2pnm is a tool for converting KiSS cells (the individual graphics) to pnm format (which is then simple to convert to lots of other formats). It should work with all cel formats.

Now, we're making a KiSS doll viewer for the browser -- and you can help! Check out the file for details.

Checkout the static Smooch demo!



  • Get a whole bunch of non-FKiSS, single-palette dolls to work correctly.
    • Lots of dolls are not quite working still, especially multi-palette dolls.
  • Figure out how NOT to use shell commands to unzip LHAs or convert cels.
    • Serve cels as binary blobs and let JavaScript display them?
    • Inline the C code for cel2pnm?
    • Write a Haskell library for decompressing LHAs? (O.O)
  • Support multiple palettes (dependent on how the above situation with cels as blobs vs pngs turns out)
  • Figure out how users view dolls, whether dolls are stored on server, etc.
  • Release a usable vanilla KiSS viewer.
  • Allow users to edit sets.
  • Allow users to create sets from scratch.
  • Add FKiSS1, FKiSS2, FKiSS3, CherryKiSS, Enhanced Palettes, FKiSS4, FKiSS5...


I (Libby/emhoracek/horrorcheck) started and maintain this project but it wouldn't have gotten where it is now without the efforts of many other people! That includes:

  • the international KiSS community
    • the Japanese KiSS community that developed KiSS as an open standard in the first place
    • Dov Sherman, who maintained the Big KiSS Page (an incredible resource) for many years
    • Stephan Lepisto, who has kept the Big KiSS Page going even after the community died out
    • Nick Lamb, who wrote GnomeKiSS, which I learned and copied a lot from for cel2pnm
    • William Miles, who wrote UltraKiSS, the Java app that I use as a benchmark for compatibility
    • all the incredible artists who made over 4,500 sets for this system
  • Github contributors
    • ear/bpaf helped with Haskell refactoring
    • Darius improved cel2pnm and added tests
    • huggablemonad has helped debug several sets
    • lisaychuang improved documentation for contributors
  • mentors
    • Daniel Patterson (dbp) taught me about monad transformers and error handling in Haskell
    • Mark Dominus helped me write cel2pmn


I would very much appreciate input on how to make this program better.

Please let me know if cel2pnm doesn't convert a cell correctly and I will attempt to fix it.

Smooch should display any plain KiSS/GS doll correctly. FKiSS and Cherry KiSS aren't supported yet. If you find a plain KiSS doll that Smooch doesn't display right, please submit an issue along with an error message, so we can figure out why!

If you would like to help with this or other tools for KiSS, please let me know! Email me at, submit an issue, or send a pull request. THANKS!! :D