{"id":100,"date":"2010-04-29T01:01:15","date_gmt":"2010-04-29T08:01:15","guid":{"rendered":"http:\/\/peterwong.net\/blog\/?p=100"},"modified":"2010-04-29T01:01:15","modified_gmt":"2010-04-29T08:01:15","slug":"demystifying-the-bandai-pippin-developer-dongle","status":"publish","type":"post","link":"https:\/\/peterwong.net\/blog\/demystifying-the-bandai-pippin-developer-dongle\/","title":{"rendered":"Demystifying the Bandai Pippin Developer Dongle"},"content":{"rendered":"<p>I\u2019ve had my Bandai Pippin @World for years.&#160; The Pippins were game consoles manufactured by Bandai based on the PowerPC Macintosh.&#160; It runs a special version of Mac OS 7.x.&#160; Pippin CDs can actually be played on PowerPC-based Macs (I\u2019ve played Mr. Potato Head on my iBook G3).&#160; The Pippins were initially released in the Japanese market labeled as AtMark, and subsequently released in the U.S. labeled as @World.<\/p>\n<p><a href=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinAtWorld9.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"Bandai Pippin AtWorld-9\" border=\"0\" alt=\"Bandai Pippin AtWorld-9\" src=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinAtWorld9_thumb.jpg\" width=\"244\" height=\"164\" \/><\/a> <\/p>\n<p>Pippin CDs contain a regular HFS file system.&#160; The CDs contain a hidden file under the root folder, named \u201cPippinAuthenticationFile\u201d.&#160; If this file is invalid or not present, then the Pippin does not boot.&#160; This mechanism serves as Apple\u2019s approach to prevent homebrew development of applications for the console.&#160; Of course, it does not prevent piracy, because a copied CD would still have the same authentication file.<\/p>\n<p>There is an interesting write-up of the authentication mechanism at <a href=\"http:\/\/www.vintagemacworld.com\/pip1.html\" target=\"_blank\" rel=\"noopener\">Hacking the Pippin<\/a>.&#160; From my reading of the SDK documentation, a developer would write the application, and once ready for production, the application is sent to Apple.&#160; Apple would create the corresponding authentication file and send it back to the developer, which then gets included into the CD master for mass production.&#160; Each authentication file is different \u2013 perhaps some hash calculated from other contents of the CD (if anyone knows how, please contact me).<\/p>\n<p>Aside from testing on PowerPC Macintosh systems, how would the developers have tested their applications on the console itself?&#160; It seems that the newer 1.3 ROMs do not perform the same authentication process, but I think these ROMs were only present in the units supposedly available in Europe, prototyped for release by Katz Media.&#160; The common AtMark and @World units I\u2019ve seen all have the 1.0 or 1.2 ROM.<\/p>\n<p>The special dongle, which previously has been suspected to be needed to generate the authentication file, seems to actually be another mechanism to disable the authentication process.&#160; Developers were provided these dongles so that they could test the application on the Pippin even before they send the application to Apple to create the authentication file.<\/p>\n<p><a href=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinDongle.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"BandaiPippinDongle\" border=\"0\" alt=\"BandaiPippinDongle\" src=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinDongle_thumb.jpg\" width=\"244\" height=\"164\" \/><\/a> <a href=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinADBConverter.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"BandaiPippinADBConverter\" border=\"0\" alt=\"BandaiPippinADBConverter\" src=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinADBConverter_thumb.jpg\" width=\"244\" height=\"164\" \/><\/a> <a href=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinADBController.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"BandaiPippinADBController\" border=\"0\" alt=\"BandaiPippinADBController\" src=\"\/\/peterwong.net\/blog\/wp-content\/uploads\/2010\/04\/BandaiPippinADBController_thumb.jpg\" width=\"244\" height=\"164\" \/><\/a> <\/p>\n<p>The dongle has a standard ADB connector, so an ADB adapter is needed to convert from the Pippin\u2019s flat \u201cADB\u201d port to the standard ADB port.&#160; I have what I think is a developer controller that has a standard ADB connector.&#160; This controller chains to the dongle and behaves like a regular Pippin controller.<\/p>\n<p>I took a regular Pippin CD, made an ISO image of it, and edited the HFS file system in the image to remove the authentication file.&#160; I burned the updated image back to a CD, and tried to boot the Pippin from that.&#160; Sure enough, without the dongle, the Pippin rejects the CD.&#160; But with the dongle attached, the Pippin merrily loads and runs the application from the CD.<\/p>\n<p>The Pippin platform has been out of support from Apple for so many years now.&#160; I just wish that the algorithm that produces the authentication file could be publicly documented, so that retro-computing enthusiasts can continue making homebrew applications for the platform.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve had my Bandai Pippin @World for years.&#160; The Pippins were game consoles manufactured by Bandai based on the PowerPC Macintosh.&#160; It runs a special version of Mac OS 7.x.&#160; Pippin CDs can actually be played on PowerPC-based Macs (I\u2019ve &hellip; <a href=\"https:\/\/peterwong.net\/blog\/demystifying-the-bandai-pippin-developer-dongle\/\">Continue reading <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":[5],"tags":[20,23],"class_list":["post-100","post","type-post","status-publish","format-standard","hentry","category-retrocomputing","tag-mac","tag-pippin"],"_links":{"self":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/posts\/100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/comments?post=100"}],"version-history":[{"count":0,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/posts\/100\/revisions"}],"wp:attachment":[{"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/media?parent=100"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/categories?post=100"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/peterwong.net\/blog\/wp-json\/wp\/v2\/tags?post=100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}