I've seen that some people have made their own boot animation carts, but I would like to make my own, and have it where it will run a command at the end of the animation that makes Pico 8 boot into splore.
This is how it could work in a dedicated Pico 8 machine:
Turn on machine > autorun Pico 8 via bash script or something else with the -run animationcart.p8.png command at the end> animation runs > code at end of cart executes extcmd(splore) or another command that makes Pico 8 go to splore.
I've came up a idea to go around doing this, but it is too clunky. I could make a bash script that runs 2 instances of Pico 8 at the same time. One will boot into Pico 8 and run the cart, but shutdown that instance of Pico 8 afterwards, then the other Pico 8 instance would still be running and be in splore.
I would like to see this added in a future version of Pico 8 if possible. Thanks for making Pico 8 and have a great day.
Hello again. I've been working on different ideas for running Pico 8 games on physical media.
I've tried SD cards and while they are cool and can function as cartridges, they tend to have too much storage and I find that wasteful when Pico 8 games are less than a megabyte. I have been experimenting with other ideas such as using 3.5" floppies. They are much more smaller in storage compared to a SD card, but they have their own setbacks.
What would you recommend I try to use as physical media for Pico 8 games? I could try ROM cartridges, but they will probably be the most expensive route and be the most complicated.
Here is a picture of a Pico 8 game I put on floppy.
The tutorial I made for mounting SD cards 'should' work for floppies with slight changes.
I'm not going to sell Pico 8 games that aren't mine on physical media, I'm just trying out new ideas.
I was working on a new project that involved learning how rom cartridges worked, so I asked around for help and someone suggested that I use SD cards. I ended up liking the idea and decided to use that in my current Pico 8 fanmade handheld project as well. What I did was created a shell that goes around a SD card to give it a cartridge look and feel. A USB SD card reader will read the 'cartridges'. I also wrote a bash script that will search for a p8.png file in your SD card directory and have Pico 8 run that file or run splore instead if no SD card cartridge was connected. Firstly, when you plug in a SD card to your card reader, you should type in
sudo fdisk -l
. This should list your SD card. Mine was listed as /dev/sda1
I then mounted the SD card and made sure Pico 8 could run the file. While in my Pico 8 directory, I typed in
./pico8 -run /media/usb0/run.p8.png
and Pico 8 ran the file, but use whatever directory you mount your SD card in. Why did I call the cartridge run.p8.png? I tried just using
./pico8 -run /media/usb0/*p8.png
, but I thought, if I had multiple cartridges on the same SD card, it would pick one out of random, and I didn't want that, especially for multicart games. Maybe there is a better way at doing this. If there is, please let me know. I made it where the first cartridge can be called run.p8.png, but other cartridges can be called whatever you want. I modified /etc/rc.local and added a line before the screen driver where it would mount the SD card. For me, I put in
sudo mount /dev/sda1 /media/usb0
I then created a bash script that would either load a game from a SD card cartridge or run splore if there was no cartridge connected.
Here is the bash script below: I named it autorunpico8.sh, but you can call it whatever you want.
#!/bin/bash if [ -f "/media/usb0/run.p8.png" ] then exec /home/pi/pico-8/pico8 -run /media/usb0/run.p8.png & else exec /home/pi/pico-8/pico8 -splore & fi exit 0
Once you create the file, you will want to make it executable by typing in
chmod +x yourscripthere.sh
Test out the script and see if it works. If it does, put the script in /etc/rc.local above exit 0 at the bottom of the file.
When you turn on your Raspberry Pi, Pico 8 will load the cartridge.
When there is no 'cartridge' connected to your SD card reader it boots into splore, but if you really want to, you can make a 100% offline system and make it only look for cartridges.
I will upload the cartridge shells on my Thingiverse page soon enough. The front of the cartridge shell allows you to use custom artwork and you can modify the top text to be anything you want. You slide in a SD card and if it isn't a snug fit, hot glue gun might help keep it in place. The back plate of the cartridge can be removed so you can remove the SD card if it stops working. I hope this tutorial is useful and these cartridges can be used in your Pico 8 projects. Have a wonderful day.
Hello again. I am working on a fan handheld for the Pico 8. Once this project is finished, I'll upload all the cad files onto Thingiverse and create a guide on how to create your own Pico 8 handheld. This is what the first prototype shell looks like.
The button spacing feels perfect, but the shell is too wide. Fortunately, it seems like I can shrink it down roughly 5mm so it will be around the same thickness of a Dmg-01 Gameboy. The rounded edges makes it feel comfortable to hold. I might reposition the battery holder location so I might be able to shrink it down another 5mm. I'll take any suggestions for this project as I want this to as good as possible. My goals for this project:
- It must be comfortable to hold and not too bulky.
- It must have a 128x128 resolution screen.
- It must have sound.
- It must take AA batteries, but you are free to modify the project to use rechargeable batteries
What I have done so far:
- Made some designs in fusion360
- Printed a prototype shell
- Got the screen to work and fixed the screen tearing and glitching I was experiencing
I have most of the parts already, besides a speaker, controller board, and power switch, but I will look for solutions for those. Once I'm happy with all the components, I'll print some mounting plates to hold the various hardware, add some screw holes to hold the parts in place, and make a battery door so you can replace your AA batteries. Feel free to leave a comment if you have any suggestions for this project.
Thanks for your time,
Update: I am working on the back plate of the shell. This is what I have designed so far.
The back plate has a battery door and housing for the battery holder that will use 3 AA batteries. I'm thinking of using the whole back plate to mount all the electronics.
This is what the console looks like assembled from the back.
Next on this project, I'm going to work on the controls and sound. Once that is done, I will create spots on the back plate to mount all the electronics.
Update: I finished the first beta version of my handheld. The handheld is fully assembled, but I came across glaring issues. One of those is the fact the buttons are not keyed in, so the round plastic buttons will freely rotate. The other issues are software related. I'm going to upload the cad files without the Pico 8 logo. I will not write a tutorial yet as it is incomplete, but I can help people with getting the screen, power button, and general controls to work. You are allowed to do anything you want with the cad files I'm going to be uploading to Thingiverse.
Edit: I have uploaded the beta cad files for those who want to modify what I've done. I have included .step and stl files so you can modify or make your own. I will be writing a large blog post on how to make one, for those who are interested, including getting the software side of things working.
Hello there. My name is Grhmhome and I've been working on a fan handheld for Pico 8, using a Pi Zero W. I've been working on this project for roughly a week now. I'm proficient with Cad, 3D printing, and I've been learning soldering. I wanted to make a handheld for the Pico 8 with the correct aspect ratio screen and I finally found the perfect screen for my project. This post is a quick tutorial on how to get the Waveshare 128x128 RGB OLED display module to work properly. This took me all of yesterday to get to work properly as I had to troubleshoot and do more troubleshooting.
Where to find this screen?
I used the latest version of RetroPie for this project.
Step 1. Wiring the screen. The pins I used are as follows. The connector that comes with the display should be color coded.
VCC (Power +): Any 3.3V GND (Power -): Any GND DIN: GPIO 10 MOSI CLK: GPIO 11 CLK CS: GPIO 8 CE0 DC: GPIO 25 RST: GPIO 24
If you need help on figuring which pin are which, I used this handy site: https://pinout.xyz/
Type sudo raspi-config and enable SPI interfaces. You will also want to configure your system to autologin as Pi and boot into the terminal. If you are using RetroPie like me, you will also have to go into the RetroPie settings and make sure your not booting directly into Emulationstation, but into the terminal and have it autologin as Pi.
Step 3. Install wiring pi and cmake. If your OS doesn't have git, install that too.
sudo apt-get update sudo apt install cmake sudo apt install wiringpi sudo apt install git
Step 5. Clone the git repo git clone https://github.com/juj/fbcp-ili9341.git
Step 6. Edit some of the files. You will need to edit config.h and change //#define UPDATE_FRAMES_WITHOUT_DIFFING
to #define UPDATE_FRAMES_WITHOUT_DIFFING
Also you will want to edit ssd1351.cpp and change the values on line 35 from 97 to 127.
On ssd1351.h you will want to change #define DISPLAY_NATIVE_HEIGHT 96 to 128 on line 21.
Step 7. Once you finish doing that copy the following commands into the terminal.
mkdir build cd build cmake -DSSD1351=ON -DGPIO_TFT_DATA_CONTROL=25 -DGPIO_TFT_RESET_PIN=24 -DSPI_BUS_CLOCK_DIVISOR=20 -DSTATISTICS=0 .. make -j
Make sure the display is working by typing in sudo ./fbcp-ili9341
If the display is working correctly, continue on. If it is not working, you will have to make sure the screen is connected to the correct GPIO pins.
Step 8. Next, you will want to make sure the display driver will autostart when you turn on your Pi Zero. Edit /etc/rc.local and add the following above the line that says exit 0 sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 &
After that, you will want to edit /boot/config.txt and add the following
hdmi_group=2 hdmi_mode=87 hdmi_cvt=128 128 60 hdmi_force_hotplug=1
If you want to autostart Pico 8, which I'm assuming you are wanting, add another line in /etc/rc.local above exit 0. Change the path accordingly wherever you decided to put Pico 8.
sudo /home/pi/pico-8/pico8 -splore &
Now, when you reboot your system, it should boot directly to Pico 8 every time using the display. I hope this tutorial was helpful. If you have any questions, or if I'm missing anything, feel free to leave a message.