Doom Eternal On Gameboy color

About the project

Using my Raspberry Pi GBC to play Doom Eternal!

Project info

Difficulty: Moderate

Platforms: AdafruitRaspberry Pi

Estimated time: 6 hours

License: GNU General Public License, version 3 or later (GPL3+)

Items used in this project

Hardware components

Tiny Breadboard Tiny Breadboard x 1
TCS3200 Color Sensor TCS3200 Color Sensor x 1
Raspberry Pi Zero Case Raspberry Pi Zero Case x 1

Software apps and online services

moonlight moonlight

Story

But not really.

So of course it’s not really a GBC playing Doom Eternal it’s my Gameboy Raspberry Pi that I made way back in 2017 using Moonlight to stream from my gaming PC to the Raspberry Pi within the GBC shell.

With the release of the (awesome) Doom Eternal I thought it was time to try and play this on that same hardware for a bit of fun.

Build.

Essentially go here and follow the steps if you want to try and build this one for yourself.

You will also need a gaming PC with an nVidia graphics card in with Geforce Experience installed.

Some extra stuff.

So I did a standard install using PiBakery then whacked on the script from my GitHub for the input controls (the ‘buttons_doome.py’ file).

You can then launch this file with:

python buttons_doome.py

python buttons_doome.py

This will allow mouse movement for aiming with the d-pad, mouse clicks with A/B, forward with Start and Select is for jumping. So pretty limited; but I’m all out of buttons at this point.

Next up was getting the PiTFT setup again, can follow the instructions here. Then you want to ensure that the Pi is set to boot and auto-login to desktop.

Then the instructions for Moonlight installation are here – at the sources.list point I added in the ‘buster’ version to ensure to get the newest version.

The instructions here also help out with the sources and GPG keys.

Next up is sorting out the framebuffer copy – the instructions here. This will allow for the current frame to be written to the TFT screen so the game can be played.

In order to get accelerate video through to the Pi TFT, you need to use fbcp. Follow the instructions here. Under X server, Console and Framebuffer mirroring, the only change I found I needed to make was the ‘/usr/share/X11/xorg.conf.d/99-fbdev.conf’ file:

Section "Device"     Identifier "myfb"   Driver "fbdev"   Option "fbdev" "/dev/fb0" EndSection
Section "Device" Identifier "myfb" Driver "fbdev" Option "fbdev" "/dev/fb0" EndSection

This makes it write the X server to fb0 which is then copied to fb1 by fbcp, which is then written to the TFT (I think, I could be technically wrong here, but it works for me). In your /etc/rc.local file, put the below in above exit:

fbcp &

fbcp &

There’s a few other config things need to be set in the boot config at /boot/config.txt:

framebuffer_width=320 framebuffer_height=240hdmi_force_hotplug=1hdmi_group=2 hdmi_mode=87 hdmi_cvt=320 240 60 1 0 0
framebuffer_width=320 framebuffer_height=240hdmi_force_hotplug=1hdmi_group=2 hdmi_mode=87 hdmi_cvt=320 240 60 1 0 0

After a reboot that should take effect and you should be able to see the desktop.

Ensure that the PC you are streaming from is on with GFE set to enable streaming.

Now open up a cmd window and connect Moonlight to the streaming PC:

moonlight pair X.X.X.X

moonlight pair X.X.X.X

x.x.x.x being the IP address of the PC. This will give you a code that then needs typing in on the PC to establish the connection.

Then start streaming with:

moonlight stream -width 320 -height 240 -fps 30 -localaudio -app steam –unsupported
moonlight stream -width 320 -height 240 -fps 30 -localaudio -app steam –unsupported

And that should be it! I also had a keyboard and mouse plugged into the Gameboy Pi so that I could do certain things, as 4 buttons + d-pad aren’t enough to full operate menus and stuff.

But it works:

25

25

25

26

26

26

5

5

5

Conclusion.

It does not work well.

As you can see in the video above, it’s slow and sluggish with the GPIO buttons being used as the input.

However – with a normal mouse and keyboard attached to the Pi… I don’t think this would be too ridiculous of an experience and Moonlight does a good job of getting the frames over to the Pi, given that Steamlink itself will not run on a Pi Zero (requires 3 or above) then this is pretty cool stuff.

The limitation, of course is my input methods – Doom E was just not made for Gameboy Controls or a badly written Python script written by me…

Just a bit of fun for the weekend… Now back to Doom.

On my PC.

Awesome.

Awesome.

Awesome.

Code

Github file

https://github.com/irtimmer/moonlight-embedded/wiki/Packages

Github file

https://github.com/notro/fbtft/wiki/Framebuffer-use

Code snippet #4

Github

https://github.com/LordofBone/gameboypi

Code snippet #3

Credits

Photo of 314Reactor

314Reactor

Technology loving nerd with a passion for trying to bring SciFi to life.

   

Leave your feedback...