USB Cable Tester
13 November 2023Perhaps slightly over-complicated USB cable test thing. Because I have too many cables.
... and then I bought more to test it.
Built a significantly less functional board a few months earlier.
Other intersting projects I've worked on. Usually not games.
(Dates may be slightly off)
Perhaps slightly over-complicated USB cable test thing. Because I have too many cables.
... and then I bought more to test it.
Built a significantly less functional board a few months earlier.
Tile-based renderer rendering a model of a PicoVision on a PicoVision. (Maybe the model is running the same code, who knows?)
Uses both cores and ALL the interpolators.
Definitely not motivated by any kind of demo competition or anything.
Big pile of cleanups in an attempt to add PicoVision support (had some fun problems to debug). Didn't get that far but it can emulate a Tufty slightly better than before.
Because I have to port it to the shiny new device with video output!
Also resulted in a bunch of improvements to the experimental launcher code due to finally having something that can do hires output and has an SD card slot. Still sitting on a branch though...
Needed something to test the new compilers. Runs on GBA and PicoSystem and fails in some way on most emulators.
Mashed the two recompilers together into something slightly more generic, gaining x86 support for DaftBoyAdvance... but losing the Thumb->Thumb translator. Also probably broke Windows support (mumble calling conventions mumble).
Somehow ended up generating smaller code and getting faster in the process.
Experimentally ported to DERP, which has a lot more of a performance impact.
In a burst of activity this very serious emulator gained:
The USB support is good enough to handle the UF2 loader, which is much less convenient than running DERP_SDL file.uf2
but uh, why not?
Some attempt to make this into an actual game. Includes a clock, bars that go down and "using" objects to make them go up again.
Also a "build" mode and less rainbows.
Porting a big pile of the 32blit launcher/API stuff to the "pico" port. Allows fun features like multiple games (at this point just the launcher + one game) and running the same game build on different devices.
Sitting on a branch somewhere until I get around to cleaning up and merging...
Okay, so maybe it is... but it's really high-level as emulating all the peripherals would be too much work. Fortunately I just needed to translate the firmware API and almost everything works at reasonable speed.
Definitely not the same shape as a handheld game console that I've written an emulator for.
Last years demo, but with 4x the panels! (and some 3D-printed brackets)
Because I didn't already have enough emulators, I decided to remove half of DaftBoyAdvance's CPU core then hack on extra bits until I had created:
Daft's Emulator for RP2040.
Which is a sensible name and not a joke at all because I definitely expected it to go somewhere. At this point there are just enough of the peripherals stubbed out to run PicoSystem games (without any sound).
Learning my lesson from the previous one I... did the same thing again?
This one only does Thumb -> Thumb. So no Arm mode and it only runs on the same arch as it's emulating... and isn't much faster.
Uh...
32blit with a Pico W connected via I2C that can download games directly from BlitHub.
I should maybe dig up the code for this... Probably got the firmware changes in somewhere though.
A Game Boy emulator with a JIT recompiler is a silly idea and I didn't...
Okay I did. Has x86(_64) and Thumb targets, passes all the same tests and is ~1.2x-2x faster... which is completely unnecessary as it could already do 80-100x speed.
I guess if nothing else, I learned something?
PGA2040-based GBA Cartridge reader that presents the cartridge as a USB mass storage device with two files. (Goes well with having an emulator lying around...)
Built a giant mess of wires a month earlier that sort-of worked sometimes.
Found a mostly-working +2 and the Game Boy's CPU is similar so... this happened.
Doesn't look like I released anything though...
Use a PicoSystem as a basic gamepad! (Because real gamepads are a massive pain to get working...)
(Can't really get a good picture for this so imagine the screen is off...)
Mostly just a demo of a very colourful house at this point. Added some furniture a bit later.
A little demo of falling snow, because someone bought an Interstate 75 + a panel and I couldn't just leave it lying around doing nothing!
Also made me realize that I have Twitter notifications turned on, as people apparently liked that one.
Okay, 99% of the code here is PicoDVI, which is very cool but not mine...
Connecting a GBA to a big screen with a < £4 microcontroller board (and a lot of jumper jerky) still seems worth mentioning here though.
Tweeted a few more pictures of this.
Also built a Tiny2040-based link cable (multiplayer-mode PIO hacks). Which was very useful for booting test ROMs for emulator stuff...
Ended up back here after just over a year (and a lot of lessons learned from improving the non-advance version...)
After a few more months of hacking it now actually works (most of the time) for the games I own.
Somehow still runs on in the 32blit (with a little hacking) and isn't entirely unusable... (That wasn't a goal while working this emulator as I thought it was unreasonable, but apparently not?)
DaftBoy32 ported to run on the PicoSystem (with everything from the 32Blit version... except the performance). Also included a huge amount of accuracy and performance fixes.
(A more hacky partial PicoSystem port existed in July, and an even hackier "pico" port existed in April.)
Existed as a bunch of hacks for most of the year (running on a Pico Explorer Base, then a VGA Demo Board). Became a lot more useful with the PicoSystem and ended up getting merged. (It's almost like the SDL Emscripten port again!)
(The date is when it was merged)
I still have a bunch of patches for using the SDK on pretty-much everything that has a screen of some kind....
"Mode7" style kart racing game. Still a bit unfinished (content problems as usual).
Was ported to the PicoSystem later, surprisingly.
Another 32blit port of some old JS stuff, this time my unfinished Tetris clone. (The original code was called "ketris", if you recognise that you win a prize.)
Was ported to the PicoSystem later.
A 32blit remake of the best word game on this site. Has most of the game, though is missing anything related to leaderboards.
Source is here. (Unlike the original JS/PHP version which is still super-secret... or something)
An attempt to write a GBA emulator based on DaftBoy. Got as far as running a game in about a month... with no sound and extremely basic display handling (no rotating/scaling anything).
Also really slow... and inaccurate.
A 32Blit Game Boy Emulator.
Needed something to do after DOOM, decided to build an emulator. Got to the point of running Tetris in about a week. And then significantly longer fixing bugs...
Not the most accurate emulator ever, but does run the few ROMs I had around to test with.
In July/August it got (partial) Game Boy Color support (and a pile of fixes).
The source was released in Jan 2021... with even more fixes!
It didn't run DOOM... It does now!
I think this is my first port of anything. It involved a lot of memory trimming and allocation adjustments. Also resulted in more API improvements, including adding a palleted scren mode to the API.
Get the source here.
(Image is from an early video, it does fill the screen now.)
The logical next step after audio, right?
This was made easier by the fact that the hardware has a JPEG decoder, just had to add an API for it...
Get the source here.
(Yes, the screenshot is from the music player. The UI is mostly the same and if a video was playing it would just be a picture of a video...)
MP3/Ogg Vorbis player for the 32Blit console.
Wanted to see if it was practical to stream audio into the recently added audio buffer support. After finding a small MP3 decoder this grew into a full music player app.
Also resulted in some API improvements and bugfixes for the 32Blit code.
Get the source here.
This started as something I was working on for myself, but quickly ended up with more contributors.
The date above is when it was merged upstream, which was slighly unexpected as this was one of my first open-source projects.