{"id":497347,"date":"2026-06-13T06:30:09","date_gmt":"2026-06-13T06:30:09","guid":{"rendered":"https:\/\/www.newsbeep.com\/ie\/497347\/"},"modified":"2026-06-13T06:30:09","modified_gmt":"2026-06-13T06:30:09","slug":"deeply-optimized-msx-emulation-on-esp32-s3-with-vga-output","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/ie\/497347\/","title":{"rendered":"Deeply Optimized MSX Emulation On ESP32-S3 With VGA Output"},"content":{"rendered":"<p>        <img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1117214\" data-permalink=\"https:\/\/hackaday.com\/2026\/06\/12\/deeply-optimized-msx-emulation-on-esp32-s3-with-vga-output\/s3-msx-pc_dev_setup_svarkovsky_github\/\" data-orig-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/06\/s3-msx-pc_dev_setup_svarkovsky_github.jpg\" data-orig-size=\"827,827\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;,&quot;alt&quot;:&quot;&quot;}\" data-image-title=\"s3-msx-pc_dev_setup_svarkovsky_github\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;ESP32-S3 board with VGA and audio output during development. (Credit: Ivan Svarkovsky)&lt;\/p&gt;&#10;\" data-large-file=\"https:\/\/hackaday.com\/wp-content\/uploads\/2026\/06\/s3-msx-pc_dev_setup_svarkovsky_github.jpg?w=625\" class=\"size-medium wp-image-1117214\" src=\"https:\/\/www.newsbeep.com\/ie\/wp-content\/uploads\/2026\/06\/s3-msx-pc_dev_setup_svarkovsky_github.jpg\" alt=\"ESP32-S3 board with VGA and audio output during development. (Credit: Ivan Svarkovsky)\" width=\"400\" height=\"400\"  \/>ESP32-S3 board with VGA and audio output during development. (Credit: Ivan Svarkovsky)<\/p>\n<p>The ESP32-S3 is by many metrics quite the powerful little computer, which has led to it being used even for things like emulating retro consoles and similar. Here [Ivan Svarkovsky]\u2019s <a href=\"https:\/\/github.com\/Svarkovsky\/s3-msx-pc\" target=\"_blank\" rel=\"nofollow noopener\">S3-MSX-PC project<\/a> pushes the envelope by taking the multi-system <a href=\"https:\/\/github.com\/ducalex\/retro-go\" target=\"_blank\" rel=\"nofollow noopener\">Retro-Go<\/a> project\u2019s MSX component and optimizing it for the ESP32-S3\u2019s Xtensa Lx7 CPU cores.<\/p>\n<p>The project involves an ESP32-S3 as the core, requiring at least 8 MB of PSRAM (N16R8 configuration) to match the tested configuration. Any software is loaded into PSRAM before it\u2019s executed, with the MSX1, MSX2 and MSX2+ supported.<\/p>\n<p>For audio you have to wire up your own PDM filters to connect to the two GPIO pins that are used for audio output, while VGA output is handled by a basic 2-bit R-2R RGB222 DAC. For input devices you can use any USB keyboard, while software is added via the web interface or directly onto an SD card.<\/p>\n<p>The <a href=\"https:\/\/github.com\/Svarkovsky\/s3-msx-pc#how-it-mimics-real-hardware\" target=\"_blank\" rel=\"nofollow noopener\">Technical Deep Dive<\/a> section goes into more detail as to what exactly got changed \u2013 with the blessing of the fMSX author \u2013 in the original fMSX core, such as targeting the Lx7 core\u2019s cache dimensions and optimizing hot paths to avoid bottlenecks. Memory accesses were aligned for Xtensa and moving certain data from Flash to RAM was another change, along with the prevention of pipeline flushing due to certain branching decisions.<\/p>\n<p>Considering that MSX specifications are based on a Z80 core, it\u2019s not so crazy that one of these ESP32-S3 MCUs can effectively emulate them. The Retro-Go project itself claims to cover a whole swath of Nintendo and Sega consoles, as well as others, making it almost too easy to do some retrogaming without even having to drag out a Raspberry Pi SBC or so.<\/p>\n","protected":false},"excerpt":{"rendered":"ESP32-S3 board with VGA and audio output during development. (Credit: Ivan Svarkovsky) The ESP32-S3 is by many metrics&hellip;\n","protected":false},"author":2,"featured_media":497348,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[61,60,80],"class_list":["post-497347","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology","tag-ie","tag-ireland","tag-technology"],"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/posts\/497347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/comments?post=497347"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/posts\/497347\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/media\/497348"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/media?parent=497347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/categories?post=497347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/ie\/wp-json\/wp\/v2\/tags?post=497347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}