{"id":478,"date":"2007-11-08T23:25:35","date_gmt":"2007-11-09T06:25:35","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/sofdec-support\/"},"modified":"2011-02-17T22:41:22","modified_gmt":"2011-02-18T06:41:22","slug":"sofdec-support","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/sofdec-support\/","title":{"rendered":"Sofdec Support"},"content":{"rendered":"<p><a href=\"http:\/\/ffmpeg.org\/\">FFmpeg<\/a> now includes support for the <a href=\"http:\/\/wiki.multimedia.cx\/index.php?title=Sofdec\">Sofdec middleware format<\/a> thanks to Aurel Jacobs and Mans Rullgard, as well as everyone who has made FFmpeg&#8217;s MPEG video decoding what it is today. Sonic the Hedgehog salutes you:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.mobygames.com\/game\/gamecube\/sonic-adventure-2-battle\"><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/ffplay-sonic-battle.jpg\" alt=\"Sonic Adventure 2: Battle\" \/><br \/>\n<em>Sonic Adventure 2: Battle<\/em><\/a><br \/>\n<\/center><\/p>\n<p>Sofdec is a multimedia middleware format that was used heavily on the Sega Dreamcast. Indeed, if you booted a DC game, there might have been a 50\/50 chance that you would see Sofdec&#8217;s technology insignias among the many obligatory corporate logos. Sofdec still survives to this day and is seen on various GameCube games (often developed by Sega&#8217;s subsidiary houses). It probably runs on all the other consoles as well. In fact, I see that MobyGames maintains a game group for <a href=\"http:\/\/www.mobygames.com\/game-group\/middleware-cri\">CRI-using games<\/a>.<\/p>\n<p>The thing about Sofdec files is that they are fundamentally MPEG files with MPEG-1 video. The only thing special about them is that they are packaged with a custom ADPCM format called <a href=\"http:\/\/wiki.multimedia.cx\/index.php?title=CRI_ADX_ADPCM\">CRI ADX<\/a>. I checked out the new FFmpeg support with files from a variety of games. One of the biggest problems is blocky output. On files from certain games (for example, <em><a href=\"http:\/\/www.mobygames.com\/game\/gamecube\/f-zero-gx\">F-Zero GX<\/a><\/em>, <em><a href=\"http:\/\/www.mobygames.com\/game\/gamecube\/resident-evil-4\">Resident Evil 4<\/a><\/em>, and <em><a href=\"http:\/\/www.mobygames.com\/game\/gamecube\/star-fox-assault\">Starfox Assault<\/a><\/em>), it almost appears that only DC data is being decoded. FFmpeg does not report any decoding problems. The result is something like this:<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/gamecube-logo-blocky.png\" alt=\"Blocky GameCube logo\" \/><br \/>\n<\/center><\/p>\n<p>I am pretty sure that the above is supposed to be the official GameCube logo, which looks like this:<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/nintendo-gamecube-logo.gif\" alt=\"Nintendo GameCube Logo\" \/><br \/>\n<\/center><\/p>\n<p>There are also a few videos from <em><a href=\"http:\/\/www.mobygames.com\/game\/gamecube\/resident-evil-code-veronica-x\">Resident Evil: Code Veronica X<\/a><\/em> on the GameCube that display as a square 320&#215;320 frame, which is not correct:<\/p>\n<p><center><br \/>\n<a href=\"http:\/\/www.mobygames.com\/game\/gamecube\/resident-evil-code-veronica-x\"><img decoding=\"async\" src=\"\/eggs\/images\/ffplay-resident-evil-claire-square-ratio.jpg\" alt=\"Resident Evil: Code Veronica X-- Claire Redfield, square aspect ratio\" \/><\/a><br \/>\n<\/center><\/p>\n<p>I wonder if aspect ratio information is stored inside this file format, or if perhaps the data is in some other place in the game&#8217;s data. Not all of the videos in the game are like this, though.<\/p>\n<p>Many new samples are available in <a href=\"http:\/\/samples.mplayerhq.hu\/game-formats\/sfd\/\">the usual place<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FFmpeg now includes support for the Sofdec middleware format thanks to Aurel Jacobs and Mans Rullgard, as well as everyone who has made FFmpeg&#8217;s MPEG video decoding what it is today. Sonic the Hedgehog salutes you: Sonic Adventure 2: Battle Sofdec is a multimedia middleware format that was used heavily on the Sega Dreamcast. Indeed, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29,3,221],"tags":[69,68,282,283,67,66],"class_list":["post-478","post","type-post","status-publish","format-standard","hentry","category-game-hacking","category-open-source-multimedia","category-sega-dreamcast","tag-dreamcast","tag-ffmpeg","tag-game-hacking","tag-nintendo","tag-sega","tag-sofdec"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/478","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=478"}],"version-history":[{"count":2,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/478\/revisions"}],"predecessor-version":[{"id":3157,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/478\/revisions\/3157"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}