
For diverse reasons I have been playing with a Raspberry Pi 5 lately.
What a lovely little device! So small, so fast!
I could not help myself and installed Vide on it – one never knows when one wants to develop something :-)!
There were two little things that did not work out of the box – the NI (native interface) library of the serial library I use – which in the end was a simple recompile on my pi.
And the “old” version of JOGL did not run with the OpenGL on the pi.
I downloaded a new version of it – and replaced the one I used befor.
Voila!
Vide on a Pi – emulation runs as fast as 220% – display using OpenGL. Sound and all…
Download it using the button below if you fancy to try it.
I even added the Java implementation “temurin-8-jre-arm64” – so you don’t need to be concerned about the right version yourself.
Just start “vide.sh” – and it should run!
Another Pi 5 thing.
Some time I did changes to the libretro Vectrex core. The changes never made it into any distribution – but it still runs very well.
I recently added Launchbox to my windows desktop – using for the vectrex emulation my own core.
I did the same thing for the raspberry. It was fairly easy going. Download from github – go to the directory and type “make” – and the core is compiled.
Find your retroarch core directory – and replace it.
If you care for a vectrex “overlay” place it under “overlays/vecx/screen.png” – and everything is set.
More information about compiling: https://github.com/malbanGit/libretro-vecx
You can also download and try it for yourself – a precompiled retroarch + vecx core at:
http://vectrex.malban.de/libretro/RetroArchPi5_vecx.zip
(see also readme.txt for more information)
Nice update! Will it also work out the RPi4 or 3? I guess the emulator might struggle, esp. on the 3. You could also use the Raspberry Pi500 as a dev station, that would be cool.👍
I guess it will work – how “fast”, I cannot say.
I’d say my Pi 5 is already pretty “upscaled”, probably better than a standard pi500.
I have 16GB RAM and a 2 TB SSD installed (from which I also boot). I really like my little Pi-box!
At the moment I am trying to get to run NetBeans, so I will not only be able to program with Vide – but also update Vide :-).
Adding x86 emulation turns out to be relatively easy:
sudo apt-get install binfmt-support qemu-user-static
sudo dpkg –add-architecture amd64
sudo apt-get update
sudo apt-get upgrade
sudo update-binfmts –display
Got it all working now. Binfmt setup wasn’t as easy as I originally thought:
# basic binfmt setup
sudo apt-get install binfmt-support qemu-user-static
sudo dpkg –add-architecture amd64
sudo apt-get update
sudo apt-get upgrade
# added i386 to also allow running the binaries in Linux32
sudo dpkg –add-architecture i386
sudo apt-get update
sudo apt-get upgrade
# also tried this but didn’t appear to entirely succeed. May not be needed,
# although it actually looks like x86_64 is being used by Linux64 rather than amd64
sudo dpkg –add-architecture x86-64
sudo apt-get update
sudo apt-get upgrade
sudo update-binfmts –display
# there’s probably a better way to get these but I couldn’t find it…
# this was needed to run all the 64-bit Intel binaries in Linux64. Obviously you can’t copy these from my system but you should be able to find them elsewhere.
sudo mkdir -p /etc/qemu-binfmt/x86_64/lib64
sudo scp gtoal@192.168.2.251:/lib64/ld-2.27.so /etc/qemu-binfmt/x86_64/lib64/ld-linux-x86-64.so.2
sudo scp gtoal@192.168.2.251:/lib64/libc.so.6 /etc/qemu-binfmt/x86_64/lib64/libc.so.6
# and also i386
sudo mkdir -p /etc/qemu-binfmt/i386/lib
sudo scp gtoal@192.168.2.251:/lib/i386-linux-gnu/ld-2.27.so /etc/qemu-binfmt/i386/lib/ld-linux.so.2
sudo scp gtoal@192.168.2.251:/lib/i386-linux-gnu/libc-2.27.so /etc/qemu-binfmt/i386/lib/libc.so.6
Do you do baremetal development for the Pitrex on a Pi now too? I’ld quite like to get back in to writing for the Pitrex but I was never able to use your Windows/Mac VM environment. If it were all hosted on a Pi, I would find it a lot easier. Even if it needed a separate Pi and wasn’t hosted on the Pitrex itself, a command-line pi-based environment would still make developing a lot simpler. I basically had to give up writing for the Pitrex when we dropped linux in favour of the bare metal environment because I found it just too difficult to work in.
Here’s what I did: I created a new user on my pi5 called ‘vide’.
(not relevant, but I then took about 3 hrs to get VNC working to access the GUI under that username. Wasn’t trivial. I eventually got vncserver-x11 to run after disabling Wayland graphics. God knows if I’ll ever manage to convince VNC give me a larger window – Vide is all but unusable with the small window I’m currently working in. Part of that difficulty comes from usually using this machine headless, but I did temporarily attach a small portable display while trying to get one of the VNC’s to run.)
I unpacked Vide.RPI5 in the home directory, and started it up by cd’ing to Vide.RPI5 and running the vide.sh script supplied. (starting up vide.sh outputs a lot of lines like these below to the command window, but that’s probably not a significant problem:
db 158, 0, 101 ; radius, angle(512) in degree, from: -1 rad, y,x: -150, 50
db 180, 0, 80 ; radius, angle(512) in degree, from: -1 rad, y,x: -150, 100
db 212, 0, 64 ; radius, angle(512) in degree, from: -1 rad, y,x: -150, 150
)
I created a new project, ‘Peer C’ style. No parameter tweaks.
I then tried to compile the default ‘hello world’ source that Vide creates in main.c
It gave this…
Cleaned…
Preprocessing: /source/main.c Preprocessing failed
/home/vide/Vide.RPI5/C/Linux64/bin/cc1: 1: Syntax error: “(” unexpected
Error preprocessing: /home/vide/Vide.RPI5/newproj/source/main.c
I checked main.c, there’s no random accidentally typed character in the file.
So, doesn’t work in a completely clean virgin environment. I’ll work on it myself but I thought you’ld want to know and I was wondering if anyone else here has tried it yet? (Maybe we can work it out ourselves before you get back from your trip.)
Your Libretro package worked. It did seem a little faster than a real Pi (playing Vectorblade) but that may just be perception and maybe related to playing over VNC. Doesn’t really matter if it is.
Solved… the binaries in the Vide.RPI5 package all appear to be Intel binaries! Do you have your Pi5 set up to execute Intel binaries under emulation by any chance? (i.e. using binfmt + qemu?) The only other options I can think of are that you either uploaded the wrong package after recompiling everything for ARM, or when you built Vide for the Pi you were only looking at the emulation and not at assembling or compiling anything? (Or you do have ARM binaries elsewhere in your path that are being found in preference to the ones in the Vide.RPI5 tree? But that seems unlikely as I think you use absolute paths when you invoke a binary from within Vide…)
file `find . -name cc1`
./C/Linux32/bin/cc1: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=8ac0828314aa523fc22fabb4e124f8b095dd7787, with debug_info, not stripped
./C/Mac/bin/cc1: Mach-O 64-bit x86_64 executable, flags:
./C/Linux64/bin/cc1: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=78c0a67471680cc73a7088b80fc3fa5bd09bd64b, with debug_info, not stripped
I have not tried „C“ with Vide …
My first go is always assembler.
Yes most probably I would need to recompile the cc and linker… have to place that on my todo list.
Sorry for the inconvenience…
Not a problem, running Intel binaries works a treat and also I’ve finally worked out the kinks in invoking gcc6809 from a Makefile that will go through the same build procedure that Vide does. (there’s a copy of an example working makefile at https://gtoal.com/vectrex/Makefile-VIDE ) It’ll be so nice to work on Vectrex sources in Emacs and Ecce (my two go-to editors), which I know my way around much better than I do Vide’s editor, and where I can invoke utilities such as clang-format with the touch of a key.
btw I’ve rebuilt the assembler and linker from source. I had 5 different versions of the linker source lying around so I did them all – there wasn’t much work involved.
I wasn’t sure how you generate the .cnt file but I found an old copy of make_cnt.cpp in your oldies web site and converted it to modern C but I have no idea what files it takes as input. I’ll put the sources online tomorrow.
The sources I used are in https://gtoal.com/vectrex/vide-pi5-cli/ They compile on the pi5 but should also compile on any linux. Probably nothing different here than you already have. There’s a tar file there to get them all at once if needed.
Thanks – will look at them!