{"id":3895,"date":"2026-08-07T00:31:31","date_gmt":"2026-08-07T04:31:31","guid":{"rendered":"https:\/\/patorjk.com\/blog\/?p=3895"},"modified":"2026-08-17T22:18:25","modified_gmt":"2026-08-18T02:18:25","slug":"adding-custom-filters-to-old-school-gaming-filters","status":"publish","type":"post","link":"https:\/\/patorjk.com\/blog\/2026\/08\/07\/adding-custom-filters-to-old-school-gaming-filters\/","title":{"rendered":"Adding Custom Filters to Old School Gaming Filters"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I&#8217;ve updated my <a href=\"https:\/\/patorjk.com\/old-school-gaming-filters\/\">Old School Gaming Filters<\/a> app to allow you to create your own filter. You simply select a reference image, a dithering algorithm, a number of colors, a resolution, and voila, a retro looking image:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"641\" src=\"https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled-1024x641.png\" alt=\"\" class=\"wp-image-3910\" srcset=\"https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled-1024x641.png 1024w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled-300x188.png 300w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-768x481.png 768w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled-1536x962.png 1536w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled-2048x1282.png 2048w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/image-scaled-600x376.png 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you follow this site closely, you may know that this is actually exactly how the <a href=\"https:\/\/patorjk.com\/old-school-gaming-filters\/palette-swap.htm\">Palette Swap<\/a> app I made a decade ago works. And somewhat amusingly, the Old School Gaming Filters app is built on-top of that old app. It&#8217;s just using presets instead of letting you pick your own inputs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So why wasn&#8217;t this feature in the original app? Well, according to my <a href=\"https:\/\/patorjk.com\/blog\/2017\/06\/02\/using-dithering-to-create-old-school-gaming-filters\/\">original write-up<\/a> on the app, I felt it would be too complicated and that premade filters would be easier to understand. I mentioned the Palette Swap app in passing at the bottom of the post and then promptly forgot about it. And when I say forgot about it, I genuinely forgot it existed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When I did the UI update to the Old School Game Filters app last year I simply renamed the old folder and uploaded a new one, one that didn&#8217;t include Palette Swap. To my surprise, a week after I did this I got an email from someone asking me to please restore the Palette Swap app. I was confused, and it wasn&#8217;t until I checked the old folder that I found it and realized what they were talking about. I hadn&#8217;t thought about that app since I&#8217;d posted the original blog entry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I restored Palette Swap, but I made a note to myself that I wanted to add its features to the main app. If someone had bookmarked it a decade ago and was still using it, maybe there was something to this custom filter idea that I&#8217;d just causally discarded.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And then, because I have a really short attention span, I kept forgetting to do the update &#8211; until today! And I think the app with this feature is waaaay better. This is really how it should have been released. It&#8217;s much more fun to create your own filters from reference images and dithering algorithms than it is to use a preset.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled-1024x551.png\" alt=\"\" class=\"wp-image-3897\" srcset=\"https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled-1024x551.png 1024w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled-300x161.png 300w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-768x413.png 768w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled-1536x827.png 1536w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled-2048x1102.png 2048w, https:\/\/patorjk.com\/blog\/wp-content\/uploads\/2026\/08\/osgf_example2-scaled-600x323.png 600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The outputs don&#8217;t always make sense, but they have a wonderful retro charm to them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyway, if you have a moment <a href=\"https:\/\/patorjk.com\/old-school-gaming-filters\/\">check out the app<\/a> and let me know what you think!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve updated my Old School Gaming Filters app to allow you to create your own filter. You simply select a reference image, a dithering algorithm, a number of colors, a resolution, and voila, a retro looking image: If you follow this site closely, you may know that this is actually exactly how the Palette Swap &hellip; <a href=\"https:\/\/patorjk.com\/blog\/2026\/08\/07\/adding-custom-filters-to-old-school-gaming-filters\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Adding Custom Filters to Old School Gaming Filters<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3895","post","type-post","status-publish","format-standard","hentry","category-web-apps"],"_links":{"self":[{"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/posts\/3895","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/comments?post=3895"}],"version-history":[{"count":5,"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/posts\/3895\/revisions"}],"predecessor-version":[{"id":3911,"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/posts\/3895\/revisions\/3911"}],"wp:attachment":[{"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/media?parent=3895"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/categories?post=3895"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/patorjk.com\/blog\/wp-json\/wp\/v2\/tags?post=3895"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}