I’ve ported my first Game Boy emulator to the PicoCalc, currently running on a Raspberry Pi Pico W. The emulator is based on a fork of the PocketPico project. It’s functional, but not yet optimized.
Here’s what currently works:
Audio
Screen
Keyboard
What still needs to be optimized:
Display
I suspect there’s an issue with either the display refresh rate, as the performance isn’t very smooth. So I’m reaching out to fellow developers for help with this.
There’s a function called lcd_draw_line_bis that allows scaling the display, but it slows things down even more. There’s still a lot of work to do to optimize and clean up the code…
Hello @TheKiwil and thank you for the PocketPico (and also the ftp server). Do you think it’s possible to make M.C.U.M.E. work on the PicoCalc (and a uf2 of the ftp)?
I would love to have a C64 emulated on my precious with the Pico2W
It also emulate many old consoles as master system and pc engine… I wish I had the knowledge to make those work too.
git clone https://github.com/TheKiwil/PocketPico.git
cd PocketPico
git submodule update --init --recursive
Then opened it in Visual Studio Code and imported as a Raspberry Pi Pico project using Pico SDK 2.1.1
Actually nvm that didn’t work.
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c:497:13: error: implicit declaration of function 'printf' [-Wimplicit-function-declaration]
[build] 497 | printf("try to reset i2c\n");
[build] | ^~~~~~
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c:7:1: note: include '<stdio.h>' or provide a declaration of 'printf'
[build] 6 | #include "i2ckbd.h"
[build] +++ |+#include <stdio.h>
[build] 7 |
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c:497:13: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch]
[build] 497 | printf("try to reset i2c\n");
[build] | ^~~~~~
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c:497:13: note: include '<stdio.h>' or provide a declaration of 'printf'
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c: In function 'wait_key':
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c:598:17: warning: incompatible implicit declaration of built-in function 'printf' [-Wbuiltin-declaration-mismatch]
[build] 598 | printf("key %d pressed\n", i);
[build] | ^~~~~~
[build] /Users/user/pico/PocketPico/ext/ili9488_p/picocalc.c:598:17: note: include '<stdio.h>' or provide a declaration of 'printf'
I think I got the color working now too (well according to reddit, these are the correct colors since Pokemon Red was only black/white and it matches the Super Game Boy colors)
hanks for the progress. However, I put a Pico2W back into the Picocalc, and I can’t run your UF2. I compiled a UF2 on my side, and the firmware starts, but it’s impossible to launch a game.
Given the interest in my port, I decided to dive back into it — both to integrate @jblanked changes and to make it compatible with the new SDK 2.2.0, and consequently with @pelrun bootloader.
This required a fair amount of work, especially around flash write handling and core1 synchronization (using now the system queue).
This may be a bit out of your control, but could you take a look at saving progress too? For example, I can save in Pokemon but my progress is lost when I cut the PicoCalc off (I can only start a New Game)