{"id":2913,"date":"2026-11-05T03:23:07","date_gmt":"2026-11-05T03:23:07","guid":{"rendered":"https:\/\/www.kernelcrash.com\/blog\/?p=2913"},"modified":"2026-11-05T03:23:28","modified_gmt":"2026-11-05T03:23:28","slug":"rp2350b-based-msx-rom-floppy-and-vga-emulator","status":"publish","type":"post","link":"https:\/\/www.kernelcrash.com\/blog\/rp2350b-based-msx-rom-floppy-and-vga-emulator\/2026\/11\/05\/","title":{"rendered":"RP2350B based MSX ROM, floppy and VGA emulator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">So one of my latest excessive uses of claude is a remake of my <a href=\"https:\/\/www.kernelcrash.com\/blog\/emulating-roms-and-floppy-drives-in-msx\/2020\/06\/14\/\" data-type=\"post\" data-id=\"2010\">msx-rom-and-floppy-emulator<\/a> but using a RP2350B board. Like a lot of nerdy types I bought a <a href=\"https:\/\/www.raspberrypi.com\/products\/raspberry-pi-pico-2\/\">Raspberry Pi pico 2<\/a> when it came out years ago thinking I could do clever rom emulation stuff with it, but I kept  on having issues and gave up on it. Of course there&#8217;s been some issues\/errata with the earlier versions of the RP2350 chip and I just blamed those \ud83d\ude09 More recently I was reading how the A4 stepping of the chip solves most issues and is almost 5V tolerant on most of its GPIO pins &#8230; and thats good enough for me. <\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">The RP2350B is the bigger version with 48 GPIO pins. I bought the Weact RP2350B board off aliexpress. The 0 to 39 pins are the mostly 5V tolerant ones and the 40 to 47 ones are still 3V3. Anyway, that is enough IO&#8217;s to attempt to do some of the stuff I&#8217;ve been doing with the STM32F4 chips.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0640-rotated-1.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"640\" src=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0640-rotated-1.jpg\" alt=\"\" class=\"wp-image-2915\" srcset=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0640-rotated-1.jpg 480w, https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0640-225x300.jpg 225w\" sizes=\"auto, (max-width: 480px) 100vw, 480px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">As this was yet another AI experiment for me, I got claude to reference the <a href=\"https:\/\/github.com\/niklasekstrom\/RPROM\">RPROM<\/a> project (RP2350B emulating an Amiga kickstart rom) and <a href=\"https:\/\/www.kernelcrash.com\/blog\/appleii-vga-and-emulating-other-retro-video-subsystems\/2024\/06\/15\/\" data-type=\"post\" data-id=\"2832\">my own v9938 branch of the Apple II VGA stuff<\/a> as I wanted to have another go at trying to do VGA output at the same time that the ROM and floppy emulation is underway. As a general overview of using claude to build this, it was very good, but there were several times I had to just stop and dig through the code to work out what it was doing. In quite a few cases it just kept taking (to me) the wrong approach. This very &#8216;time sensitive&#8217; coding is an unusual branch of the art, but claude is actually quite good at counting cycles and figuring things out &#8230; but often it stabs itself in the foot with some of the changes it tries. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I was worried about claude writing something that would actively blow up my precious vintage computers, so I used my MSX breadboard computer as a starting point, and as it got to a more workable state, I ported it to work on the Omega MSX2. Moving it to the Omega was a good example of claude overdoing it. It was working fine on the breadboard MSX, and the changes to get it working on the Omega are mostly around having a real _SLTSL signal &#8230; and of course it sutffs it up entirely. I was hoping for a minor defensive change and it goes and changes heaps of stuff &#8230;. which didn&#8217;t work. I get it to rewind and try to do the smallest change &#8230; and of course it then works. I feel like a manager and a tester at times with AI \ud83d\ude09<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Anyway, it all works pretty well. Just like with the <a href=\"https:\/\/www.kernelcrash.com\/blog\/the-panasonic-fs-a1\/2023\/10\/08\/\" data-type=\"post\" data-id=\"2769\">msx-rom-and-floppy-emulator it didn&#8217;t work on the FS-A1 <\/a>since _SLTSL arrives very late on that system. But I soon got that fixed. <a href=\"https:\/\/www.kernelcrash.com\/blog\/appleii-vga-and-emulating-other-retro-video-subsystems\/2024\/06\/15\/\" data-type=\"post\" data-id=\"2832\">The V9938 emulation I worked on a while back<\/a>, now works much better. Where I had minor graphical errors in games like Fray, it all seems to work perfectly. Treasure of Usas works fine. Metal Gear and King Kong 2 seem to be OK too. Note, the photos show my GBS-8200, but its not being used. The RP2350B is direct to the VGA of the monitor.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0635-rotated-1.jpg\"><img decoding=\"async\" data-id=\"2919\" src=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0635.jpg\" alt=\"\" class=\"wp-image-2919\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0638-rotated-1.jpg\"><img decoding=\"async\" data-id=\"2918\" src=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0638.jpg\" alt=\"\" class=\"wp-image-2918\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0639-rotated-1.jpg\"><img decoding=\"async\" data-id=\"2917\" src=\"https:\/\/www.kernelcrash.com\/blog\/wp-content\/IMG_0639.jpg\" alt=\"\" class=\"wp-image-2917\"\/><\/a><\/figure>\n<\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Source is at <a href=\"https:\/\/github.com\/kernelcrash\/rp-msx-rom-and-floppy-emulator\">https:\/\/github.com\/kernelcrash\/rp-msx-rom-and-floppy-emulator<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>So one of my latest excessive uses of claude is a remake of my msx-rom-and-floppy-emulator but using a RP2350B board. Like a lot of nerdy types I bought a Raspberry Pi pico 2 when it came out years ago thinking I could do clever rom emulation stuff with it, but I kept on having issues [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2913","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts\/2913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/comments?post=2913"}],"version-history":[{"count":7,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts\/2913\/revisions"}],"predecessor-version":[{"id":2927,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/posts\/2913\/revisions\/2927"}],"wp:attachment":[{"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/media?parent=2913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/categories?post=2913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kernelcrash.com\/blog\/wp-json\/wp\/v2\/tags?post=2913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}