{"id":3440,"date":"2011-06-16T00:01:43","date_gmt":"2011-06-16T07:01:43","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=3440"},"modified":"2011-06-16T08:25:34","modified_gmt":"2011-06-16T15:25:34","slug":"snes-hardware-compression","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/","title":{"rendered":"SNES Hardware Compression"},"content":{"rendered":"<p>I was browsing the source code for some <a href=\"http:\/\/en.wikipedia.org\/wiki\/Super_Nintendo_Entertainment_System\">Super Nintendo Entertainment System (SNES)<\/a> emulators recently. I learned some interesting things about compression hardware. I had previously uncovered <a href=\"http:\/\/multimedia.cx\/eggs\/nes-compression\/\">one compression algorithm used in an SNES title<\/a> but that was implemented in software.<\/p>\n<p>SNES game cartridges &#8212; being all hardware &#8212; were at liberty to expand the hardware capabilities of the base system by adding new processors. The most well-known of these processors was the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Super_FX\">Super FX<\/a> which allows for basic polygon graphical rendering, powering such games as <a href=\"http:\/\/www.mobygames.com\/game\/star-fox_\">Star Fox<\/a>. It was by no means the only such add-on processor, though. <a href=\"http:\/\/en.wikipedia.org\/wiki\/List_of_Super_NES_enhancement_chips\">Here is a Wikipedia page of all the enhancement chips used in assorted SNES games.<\/a> A number of them mention compression and so I delved into the emulators to find the details:<\/p>\n<ul>\n<li>The Super FX is listed in Wikipedia vaguely as being able to decompress graphics. I see no reference to decompression in emulator source code.<\/li>\n<li>DSP-3 emulation source code makes reference to LZ-type compression as well as tree\/symbol decoding. I&#8217;m not sure if the latter is a component of the former. Wikipedia lists the chip as supporting &#8220;Shannon-Fano bitstream decompression.&#8221;<\/li>\n<li>Similar to Super FX, the SA-1 chip is listed in Wikipedia as having some compression capabilities. Again, either that&#8217;s not true or none of the games that use the chip (notably <a href=\"http:\/\/www.mobygames.com\/game\/super-mario-rpg-legend-of-the-seven-stars\">Super Mario RPG<\/a>) make use of the feature.<\/li>\n<li>The S-DD1 chip uses arithmetic and Golomb encoding for compressing graphics. Wikipedia refers to this as the ABS Lossless Entropy Algorithm. Googling for further details on that algorithm name yields no results, but I suspect it&#8217;s unrelated to anti-lock brakes. The algorithm is alleged to allow <a href=\"http:\/\/www.mobygames.com\/game\/snes\/star-ocean\">Star Ocean<\/a> to smash 13 MB of graphics into a 4 MB cartridge ROM (largest size of an SNES cartridge).<\/li>\n<li>The SPC7110 can decompress data using a combination of arithmetic coding and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Z-order_curve\">Z-curve\/Morton curve<\/a> reordering.<\/li>\n<\/ul>\n<p>No, I don&#8217;t plan to implement codecs for these schemes. But it&#8217;s always comforting to know that I <em>could<\/em>.<\/p>\n<p>Not directly a compression scheme, but still a curious item is <a href=\"http:\/\/byuu.org\/snes\/msu1\/\">the MSU1 concept<\/a> put forth by the <a href=\"http:\/\/byuu.org\/bsnes\/\">bsnes<\/a> emulator. This is a hypothetical coprocessor implemented by bsnes that gives an emulated cartridge access to a 4 GB address space. What to do with all this space? Allow for the playback of uncompressed PCM audio as well as uncompressed video at 240x144x256 colors @ 30 fps. According to the docs and the source code, the latter feature doesn&#8217;t appear to be implemented, though; only the raw PCM playback.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A survey of hardware compression schemes supported by various SNES coprocessors<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-3440","post","type-post","status-publish","format-standard","hentry","category-game-hacking"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"A survey of hardware compression schemes supported by various SNES coprocessors\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Multimedia Mike\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"SNES Hardware Compression | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta property=\"og:description\" content=\"A survey of hardware compression schemes supported by various SNES coprocessors\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-06-16T07:01:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-06-16T15:25:34+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"SNES Hardware Compression | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta name=\"twitter:description\" content=\"A survey of hardware compression schemes supported by various SNES coprocessors\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#article\",\"name\":\"SNES Hardware Compression | Breaking Eggs And Making Omelettes\",\"headline\":\"SNES Hardware Compression\",\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"},\"datePublished\":\"2011-06-16T00:01:43-07:00\",\"dateModified\":\"2011-06-16T08:25:34-07:00\",\"inLanguage\":\"en-US\",\"commentCount\":8,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#webpage\"},\"articleSection\":\"Game Hacking\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/game-hacking\\\/#listItem\",\"name\":\"Game Hacking\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/game-hacking\\\/#listItem\",\"position\":2,\"name\":\"Game Hacking\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/game-hacking\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#listItem\",\"name\":\"SNES Hardware Compression\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#listItem\",\"position\":3,\"name\":\"SNES Hardware Compression\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/game-hacking\\\/#listItem\",\"name\":\"Game Hacking\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/\",\"name\":\"Multimedia Mike\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Multimedia Mike\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#webpage\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/\",\"name\":\"SNES Hardware Compression | Breaking Eggs And Making Omelettes\",\"description\":\"A survey of hardware compression schemes supported by various SNES coprocessors\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/snes-hardware-compression\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"datePublished\":\"2011-06-16T00:01:43-07:00\",\"dateModified\":\"2011-06-16T08:25:34-07:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"SNES Hardware Compression | Breaking Eggs And Making Omelettes","description":"A survey of hardware compression schemes supported by various SNES coprocessors","canonical_url":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#article","name":"SNES Hardware Compression | Breaking Eggs And Making Omelettes","headline":"SNES Hardware Compression","author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"},"datePublished":"2011-06-16T00:01:43-07:00","dateModified":"2011-06-16T08:25:34-07:00","inLanguage":"en-US","commentCount":8,"mainEntityOfPage":{"@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#webpage"},"isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#webpage"},"articleSection":"Game Hacking"},{"@type":"BreadcrumbList","@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","position":1,"name":"Home","item":"https:\/\/multimedia.cx\/eggs","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/game-hacking\/#listItem","name":"Game Hacking"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/game-hacking\/#listItem","position":2,"name":"Game Hacking","item":"https:\/\/multimedia.cx\/eggs\/category\/game-hacking\/","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#listItem","name":"SNES Hardware Compression"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#listItem","position":3,"name":"SNES Hardware Compression","previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/game-hacking\/#listItem","name":"Game Hacking"}}]},{"@type":"Organization","@id":"https:\/\/multimedia.cx\/eggs\/#organization","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","url":"https:\/\/multimedia.cx\/eggs\/"},{"@type":"Person","@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author","url":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/","name":"Multimedia Mike","image":{"@type":"ImageObject","@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Multimedia Mike"}},{"@type":"WebPage","@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#webpage","url":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/","name":"SNES Hardware Compression | Breaking Eggs And Making Omelettes","description":"A survey of hardware compression schemes supported by various SNES coprocessors","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/#website"},"breadcrumb":{"@id":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/#breadcrumblist"},"author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"creator":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"datePublished":"2011-06-16T00:01:43-07:00","dateModified":"2011-06-16T08:25:34-07:00"},{"@type":"WebSite","@id":"https:\/\/multimedia.cx\/eggs\/#website","url":"https:\/\/multimedia.cx\/eggs\/","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","inLanguage":"en-US","publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"}}]},"og:locale":"en_US","og:site_name":"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering","og:type":"article","og:title":"SNES Hardware Compression | Breaking Eggs And Making Omelettes","og:description":"A survey of hardware compression schemes supported by various SNES coprocessors","og:url":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/","article:published_time":"2011-06-16T07:01:43+00:00","article:modified_time":"2011-06-16T15:25:34+00:00","twitter:card":"summary","twitter:title":"SNES Hardware Compression | Breaking Eggs And Making Omelettes","twitter:description":"A survey of hardware compression schemes supported by various SNES coprocessors"},"aioseo_meta_data":{"post_id":"3440","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-31 21:46:35","updated":"2025-12-31 19:39:49","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\/category\/game-hacking\/\" title=\"Game Hacking\">Game Hacking<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tSNES Hardware Compression\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/multimedia.cx\/eggs"},{"label":"Game Hacking","link":"https:\/\/multimedia.cx\/eggs\/category\/game-hacking\/"},{"label":"SNES Hardware Compression","link":"https:\/\/multimedia.cx\/eggs\/snes-hardware-compression\/"}],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/3440","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=3440"}],"version-history":[{"count":7,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/3440\/revisions"}],"predecessor-version":[{"id":3447,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/3440\/revisions\/3447"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=3440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=3440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=3440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}