{"id":22617,"date":"2026-10-01T22:17:47","date_gmt":"2026-10-01T22:17:47","guid":{"rendered":"https:\/\/8657085.xyz\/?p=22617"},"modified":"2026-10-01T22:17:47","modified_gmt":"2026-10-01T22:17:47","slug":"emmet-built-a-from-scratch-game-console-that-plays-retro-games-off-custom-cds","status":"publish","type":"post","link":"https:\/\/8657085.xyz\/?p=22617","title":{"rendered":"Emmet Built a From Scratch Game Console That Plays Retro Games Off Custom CDs"},"content":{"rendered":"<p> <div style=\"display: grid; grid-template-columns: 300px 160px; gap: 2px; width: 460px; background: #eee; padding: 2px;\">\r\n\r\n  <!-- \u6574\u884c\u5bbd\u5e7f\u544a -->\r\n  <div style=\"grid-column: 1\/-1; width: 460px; height: 250px; background: #ccc; display: grid; place-items: center;\">\r\n  <script async type=\"application\/javascript\" src=\"https:\/\/a.magsrv.com\/ad-provider.js\"><\/script> \r\n <ins class=\"eas6a97888e2\" data-zoneid=\"5876674\"><\/ins> \r\n <script>(AdProvider = window.AdProvider || []).push({\"serve\": {}});<\/script>\r\n  <\/div>\r\n  <div style=\"grid-column: 1\/-1; width: 460px; height: 90px; background: #ccc; display: grid; place-items: center;\">\r\n  <script async type=\"application\/javascript\" src=\"https:\/\/a.magsrv.com\/ad-provider.js\"><\/script> \r\n <ins class=\"eas6a97888e2\" data-zoneid=\"5876676\"><\/ins> \r\n <script>(AdProvider = window.AdProvider || []).push({\"serve\": {}});<\/script>\r\n  <\/div>\r\n\r\n  <!-- \u5de6\u4fa7\u7ad6\u6392 -->\r\n  <div style=\"height: 250px; background: #ccc; display: grid; place-items: center;\">\r\n  <script async type=\"application\/javascript\" src=\"https:\/\/a.magsrv.com\/ad-provider.js\"><\/script> \r\n <ins class=\"eas6a97888e2\" data-zoneid=\"5876672\"><\/ins> \r\n <script>(AdProvider = window.AdProvider || []).push({\"serve\": {}});<\/script>\r\n  <\/div>\r\n  <div style=\"height: 500px; background: #ccc; display: grid; place-items: center;\">\r\n  <script async type=\"application\/javascript\" src=\"https:\/\/a.magsrv.com\/ad-provider.js\"><\/script> \r\n <ins class=\"eas6a97888e2\" data-zoneid=\"5876680\"><\/ins> \r\n <script>(AdProvider = window.AdProvider || []).push({\"serve\": {}});<\/script>\r\n  <\/div>\r\n\r\n  <!-- \u53f3\u4fa7\u6469\u5929\u697c\uff08\u548c\u5de6\u4fa7\u5b8c\u5168\u5bf9\u9f50\uff09 -->\r\n  <div style=\"grid-row: 3\/5; height: 750px; background: #ccc; display: grid; place-items: center;\">\r\n  <script async type=\"application\/javascript\" src=\"https:\/\/a.magsrv.com\/ad-provider.js\"><\/script> \r\n <ins class=\"eas6a97888e2\" data-zoneid=\"5876678\"><\/ins> \r\n <script>(AdProvider = window.AdProvider || []).push({\"serve\": {}});<\/script>\r\n  <\/div>\r\n  \r\n  <script async type=\"application\/javascript\" src=\"https:\/\/a.magsrv.com\/ad-provider.js\"><\/script> \r\n <ins class=\"eas6a97888e6\" data-zoneid=\"5876682\"><\/ins> \r\n <script>(AdProvider = window.AdProvider || []).push({\"serve\": {}});<\/script>\r\n<\/div><br \/>\n<\/p>\n<div>\n<p><img decoding=\"async\" src=\"https:\/\/images.techeblog.com\/wp-content\/uploads\/2026\/10\/01134301\/diy-homemade-game-console-custom-cds.jpg\" alt=\"DIY Homemade Game Console Custom CDs\" width=\"1280\" height=\"853\"\/><br \/>Emmet wanted a living room console that still asked for a disc, so he built one instead of buying a PlayStation 5 or an Xbox. The result sits on a ZimaBoard 2, a small x86 computer with an Intel N150, 32GB of onboard storage, DisplayPort, USB, and a pair of SATA connectors. A USB CD drive hangs off one port. A 500GB SSD occupies the other after he opened a SATA-to-USB enclosure, pulled the drive free, and wired it straight into the board. DisplayPort runs to a television at 4K and 60 frames a second. Batocera, a Linux build made for retro emulation on x86, handles the library.<\/p>\n<p><span id=\"more-260048\"\/><br \/><iframe title=\"How I Built my own Games Console with Custom CDs (From Scratch)\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/dW5HGrhBync?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><noscript><iframe title=\"How I Built my own Games Console with Custom CDs (From Scratch)\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/dW5HGrhBync?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/noscript><br \/>Orange Book CDs work well for game storage. A 700MB CD-R can store a ROM file as well as a shell script that copies the file to the appropriate Batocera folder. Putting the disk in, hitting refresh, and the title appears, ready to be launched. A Game Boy Advance clone of Pok\u00e9mon Emerald is an excellent example of how it all works; unlike some cartridge projects, which simply tell the machine to load an existing game on the computer, these disks really hold the game data itself. One manufacturer stated that he could have used an autorun method, but he went with the script, and it simply works.<\/p>\n<div class=\"aawp\">\n<div class=\"aawp-product aawp-product--horizontal\" data-aawp-product-asin=\"B0FRGMYJMG\" data-aawp-product-id=\"260386\" data-aawp-tracking-id=\"tec02e-20\" data-aawp-product-title=\"PlayStation\u00ae5 Digital Edition \u2013 825GB\">\n<div class=\"aawp-product__thumb\">\n<p>            <img decoding=\"async\" class=\"aawp-product__image\" src=\"https:\/\/m.media-amazon.com\/images\/I\/2194iGUMjuL._SL160_.jpg\" alt=\"PlayStation\u00ae5 Digital Edition \u2013 825GB\"\/><\/p><\/div>\n<div class=\"aawp-product__content\">\n<p>            PlayStation\u00ae5 Digital Edition \u2013 825GB        <\/p>\n<div class=\"aawp-product__description\">\n<ul>\n<li>Slim Design, players get powerful gaming technology packed inside a sleek and compact console design.<\/li>\n<li>825GB of storage, keep your favorite games raeady and waiting for you to jump in and play<\/li>\n<li>Ultra-High Speed SSD, maximize yoru play sessions with near instant load times for installed PS5 games<\/li>\n<\/ul><\/div>\n<\/p><\/div>\n<\/div>\n<\/div>\n<p>\n<img decoding=\"async\" src=\"https:\/\/images.techeblog.com\/wp-content\/uploads\/2026\/10\/01134244\/diy-homemade-game-console-custom-cds-2.jpg\" alt=\"DIY Homemade Game Console Custom CDs\" width=\"1280\" height=\"720\"\/><br \/>\nWireless controllers were assembled on the same workbench. Each one features an ESP32-S3, communicates with your phone via Bluetooth Low Energy, and has more oomph than some of the ancient consoles it pretends to be. The layout was done in KiCad, and I mean truly laid out: asymmetrical sticks, ABXY, D-pad, bumpers, triggers, a small screen, a battery, and an antenna that was kept away from the Bluetooth signal. When you dock the pad, it will begin to recharge from the cell. He ordered the PCBs from JLCPCB, and the early prototypes were tested on a computer in breadboard format before the printed case was assembled. That printed case has some great organic curves, but it took a few print attempts to get it quite right.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/images.techeblog.com\/wp-content\/uploads\/2026\/10\/01134249\/diy-homemade-game-console-custom-cds-3.jpg\" alt=\"DIY Homemade Game Console Custom CDs\" width=\"1280\" height=\"720\"\/><br \/>Cable management was getting a little messy, but he managed to keep the neat stack intact by using a right-angle USB adapter and a 90-degree SATA cable to keep the disk, SSD, and ZimaBoard all calm and untangled within the printed box. Overall, this project required months of preparation, board work, and reprints. When you turn it on, you\u2019ll see a console menu rather than an outdated computer under the television.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/images.techeblog.com\/wp-content\/uploads\/2026\/10\/01134257\/diy-homemade-game-console-custom-cds-4.jpg\" alt=\"DIY Homemade Game Console Custom CDs\" width=\"1280\" height=\"720\"\/><br \/>Finally, it\u2019s finished with printed labels and nice jewel-case artwork. The disk covers and box art even match the games you put onto them, resulting in a row of these CDs that resembles a shelf from a 1990s video rental shop. Slide one in, let the script do its job, then pick up your bespoke controller. It\u2019s just like playing console games the old way: with a real disk and a system designed to read it.<br \/><span>[Source]<\/span><\/p>\n<\/p><\/div>\n<p><!-- \u603b\u5bb9\u5668\uff1a\u6700\u5927\u5bbd908px Grid\u7d27\u51d1\u5e03\u5c40 -->\r\n<div style=\"display: grid; grid-template-columns: 728px 160px; gap:2px; width:908px; background:#eee; padding:2px;\">\r\n\r\n  <!-- \u901a\u680f\u9876\u90e8\uff1a\u6700\u5927\u6a2a\u5e45 908x258 \u8de8\u6574\u884c -->\r\n  <div style=\"grid-column:1\/-1; height:258px; background:#ff6b6b; display:grid; place-items:center;\">\r\n    <!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114307\" data-width=\"908\" data-height=\"258\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114307});<\/script>\r\n<!--JuicyAds END-->\r\n  <\/div>\r\n\r\n  <!-- \u7b2c\u4e8c\u901a\u680f\uff1a728\u00d790 \u901a\u680f -->\r\n  <div style=\"grid-column:1\/-1; height:90px; background:#4ecdc4; display:grid; place-items:center;\">\r\n    <!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114300\" data-width=\"728\" data-height=\"90\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114300});<\/script>\r\n<!--JuicyAds END-->\r\n  <\/div>\r\n\r\n  <!-- \u5de6\u4fa7\u4e3b\u680f\uff1a\u591a\u5e7f\u544a\u5806\u53e0 -->\r\n  <div style=\"display:grid; gap:2px;\">\r\n    <div style=\"height:60px; background:#45b7d1; display:grid; place-items:center;\">\r\n\t<!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114308\" data-width=\"468\" data-height=\"60\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114308});<\/script>\r\n<!--JuicyAds END-->\r\n\t<\/div>\r\n    <div style=\"height:250px; background:#ffe066; display:grid; place-items:center;\">\r\n\t<!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114299\" data-width=\"300\" data-height=\"250\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114299});<\/script>\r\n<!--JuicyAds END-->\r\n\t<\/div>\r\n    <div style=\"height:250px; background:#ff9ecd; display:grid; place-items:center;\">\r\n\t<!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114305\" data-width=\"250\" data-height=\"250\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114305});<\/script>\r\n<!--JuicyAds END-->\r\n\t<\/div>\r\n    <div style=\"height:139px; background:#c792ea; display:grid; place-items:center;\">\r\n\t<!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114302\" data-width=\"133\" data-height=\"139\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114302});<\/script>\r\n<!--JuicyAds END-->\r\n\t<\/div>\r\n    <div style=\"height:125px; background:#91e7ac; display:grid; place-items:center;\">\r\n\t\r\n<!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114303\" data-width=\"125\" data-height=\"125\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114303});<\/script>\r\n<!--JuicyAds END-->\r\n\t<\/div>\r\n  <\/div>\r\n\r\n  <!-- \u53f3\u4fa7\u7ad6\u680f\uff1a160\u00d7600 \u6574\u5217\u9ad8\u5e7f\u544a -->\r\n  <div style=\"grid-row:3\/8; height:600px;  display:grid; place-items:center;\">\r\n    <!-- JuicyAds v3.0 -->\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async src=\"https:\/\/poweredby.jads.co\/js\/jads.js\"><\/script>\r\n<ins id=\"1114301\" data-width=\"160\" data-height=\"600\"><\/ins>\r\n<script type=\"text\/javascript\" data-cfasync=\"false\" async>(adsbyjuicy = window.adsbyjuicy || []).push({'adzone':1114301});<\/script>\r\n<!--JuicyAds END-->\r\n  <\/div>\r\n\r\n<\/div><br \/>\n<br \/> Emmet Built a From Scratch Game Console That Plays Retro Games Off Custom CDs<br \/>\n<br \/>#Emmet #Built #Scratch #Game #Console #Plays #Retro #Games #Custom #CDs<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Emmet wanted a living room console that still asked for a disc, so he built&#8230;<\/p>\n","protected":false},"author":1,"featured_media":22618,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1293,13728,3542,2434,16504,232,2051,2388,497,1199],"class_list":["post-22617","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech","tag-built","tag-cds","tag-console","tag-custom","tag-emmet","tag-game","tag-games","tag-plays","tag-retro","tag-scratch"],"featured_image_urls":{"full":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds.jpg",1280,853,false],"thumbnail":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-150x150.jpg",150,150,true],"medium":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-300x200.jpg",300,200,true],"medium_large":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-768x512.jpg",640,427,true],"large":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-1024x682.jpg",640,426,true],"1536x1536":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds.jpg",1280,853,false],"2048x2048":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds.jpg",1280,853,false],"covernews-slider-full":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-1115x715.jpg",1115,715,true],"covernews-slider-center":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-800x500.jpg",800,500,true],"covernews-featured":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-1024x682.jpg",1024,682,true],"covernews-medium":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-540x340.jpg",540,340,true],"covernews-medium-square":["https:\/\/8657085.xyz\/wp-content\/uploads\/2026\/10\/diy-homemade-game-console-custom-cds-400x250.jpg",400,250,true]},"author_info":{"display_name":"admin","author_link":"https:\/\/8657085.xyz\/?author=1"},"category_info":"<a href=\"https:\/\/8657085.xyz\/?cat=8\" rel=\"category\">Tech<\/a>","tag_info":"Tech","comment_count":"0","_links":{"self":[{"href":"https:\/\/8657085.xyz\/index.php?rest_route=\/wp\/v2\/posts\/22617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/8657085.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/8657085.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/8657085.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/8657085.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=22617"}],"version-history":[{"count":0,"href":"https:\/\/8657085.xyz\/index.php?rest_route=\/wp\/v2\/posts\/22617\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/8657085.xyz\/index.php?rest_route=\/wp\/v2\/media\/22618"}],"wp:attachment":[{"href":"https:\/\/8657085.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=22617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/8657085.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/8657085.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}