Custom D.E.O.T. V2.0+/Clockwork OS v0.5 image - With customised DEOT interface, Kernel 5.7, Optional 1400MHz OC, Debian 10 Buster, Retroarch 1.9.0, Mupen64+ plus more! (Current build: 200903)

Future changes/what I’m working on:

  1. Doctoring all the icons to be used in the default theme, so there are no longer just initials representing the new apps
  2. Activate the extra mednafen modes, keybinds, and optimisations, eg bios paths etc (they’re currently hidden in the apps/launcher menu
  3. Continue to try and get the airplane and storage menu settings pages working
  4. Do an apt-get full-upgrade, and pray nothing breaks
  5. Provide an optional script to install emulationstation
  6. Add in the gpsp game config file see here
  7. Optional Abbaye des morts script - pending How to install l'Abbaye des Morts?
  8. Fixed some line colours in the settings page
  9. Include “hacker man” vector grid background
  10. Included new mednafen config, in particular addressing virtual boy appearance
  11. Disabled beetleVB, because mednafen is just better in every way
  12. Alternative DEOT Light theme included

yes i got hardware xbox layout, as nintendo set the opposite, yes we need revert it

actually onto the arduino i’ve got the mouse mod,
in future it will be great to upgrade the keypad firmware for more flexibility, like allow shift+arrow by example

there exist some tools to create deb files, have a full look before start

i found this script who allow create deb files from pkgbuild files like on arch linux, meaning my pkgbuild collection may eventually directly work, including kernel & mesa compilation

1 Like

This is something I’m thinking of including in a future release - and even having as potentially a default launcher, if people just want to have the gameshell as an emulation only device.


I’ve found that a few standalone emulators assume they’re in the same directory as emulationstation, that by default is installed in /usr/local/bin
This means that some expected configs/bioses can’t be found. Eg, PCSX.

I’ve experimented with fixing that, making a symbolic link in the /apps/emulators directory, running this after running the script above:

ln -s /usr/local/bin/emulationstation /home/cpi/apps/emulators

Then of course, when you make the script to run emulationstation, change the contents to contain:


cd /home/cpi/apps/emulators

Don’t forget to give it the executable bit with chmod +x, wherever you put it; assuming you’re running it from within the stock ‘awesome_launcher’ - (the name of the stock launcher)

Here’s an icon I made for it. It should be in the skin folder for DEOT, but here it is nonetheless.

I’ve updated the config since writing it, including the newer consoles that have been installed. Save the following in a file called es_systems.cfg in the .emulationstation hidden directory.

		<fullname>MAME Retroarch</fullname>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

		<fullname>FBA Retroarch</fullname>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

		<fullname>NES - Retroarch</fullname>
		<extension>.nes .NES .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>
	# <system>
	#	<name>nes+</name>
	#	<fullname>NES - FCEUX</fullname>
	#	<path>~/games/NES</path>
	#	<extension>.nes .NES .zip .7z</extension>
	#	<command>~/apps/emulators/fceux %ROM%</command>
	#	<platform>nes</platform>
	#	<theme>nes</theme>
	# </system>

		<fullname>SNES - Retroarch</fullname>
		<extension>.sfc .smc .fig .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

	# <system>
	#	<name>snes+</name>
	#	<fullname>SNES - PocketSNES</fullname>
	#	<path>~/games/SNES</path>
	#	<extension>.sfc .smc .fig .zip .7z</extension>
	#	<command>~/apps/emulators/PocketSNES %ROM%</command>
	#	<platform>snes</platform>
	#	<theme>snes</theme>
	# </system>

		<fullname>GB - Retroarch</fullname>
		<extension>.gb .gbc .gba .gbx .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

	# <system>
	#	<name>gb+</name>
	#	<fullname>GB - Ohboy</fullname>
	#	<path>~/games/GB</path>
	#	<extension>.gb .gbc .gba .gbx .zip .7z</extension>
	#	<command>~/apps/emulators/ohboy %ROM%</command>
	#	<platform>gb</platform>
	#	<theme>gb</theme>
	# </system>

		<fullname>GBA - Retroarch</fullname>
		<extension>.gb .abc .gba .gbx .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

	# <system>
	#	<name>gba+</name>
	#	<fullname>GBA - GPSP</fullname>
	#	<path>~/games/GBA</path>
	#	<extension>.gb .abc .gba .gbx .zip .7z</extension>
	#	<command>~/apps/emulators/gpsp %ROM%</command>
	#	<platform>gba</platform>
	#	<theme>gba</theme>
	# </system>

		<fullname>NDS - Drastic</fullname>
		<extension>.ds .nds</extension>
		<command>~/apps/emulators/drastic/drastic %ROM%</command>

	# <system>
	#	<name>virtualboy</name>
	#	<fullname>VB - Retroarch</fullname>
	#	<path>~/games/Virtualboy</path>
	#	<extension>.vb .zip .7z</extension>
	#	<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>
	#	<platform>virtualboy</platform>
	#	<theme>virtualboy</theme>
	# </system>

		<fullname>VB - Mednafen</fullname>
		<extension>.vb .zip .7z</extension>
		<command>mednafen %ROM%</command>

		<fullname>Wonderswan - Retroarch</fullname>
		<extension>.vb .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

	# <system>
	#	<name>wonderswan+</name>
	#	<fullname>Wonderswan - Mednafen</fullname>
	#	<path>~/games/WSWAN</path>
	#	<extension>.vb .zip .7z</extension>
	#	<command>mednafen %ROM%</command>
	#	<platform>wonderswan</platform>
	#	<theme>wonderswan</theme>
	# </system>

		<fullname>Megadrive - Retroarch</fullname>
		<extension>.bin .gen .32x .smd .iso .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

	# <system>
	#	<name>megadrive+</name>
	#	<fullname>Megadrive- PicoDrive</fullname>
	#	<path>~/games/MegaDrive</path>
	#	<extension>.bin .gen .32x .smd .iso</extension>
	#	<command>~/apps/emulators/PicoDrive %ROM%</command>
	#	<platform>megadrive</platform>
	#	<theme>megadrive</theme>
	# </system>

		<fullname>Game Gear - Retroarch</fullname>
		<extension>.md .gg .zip .7z</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

		<fullname>Colecovision - Retroarch</fullname>
		<extension>.col .COL .7z .zip</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

		<fullname>Lynx - Retroarch</fullname>
		<extension>.lnx .7z .zip</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

		<fullname>N64 - Mupen64plus</fullname>
		<extension>.z64 .n64 .v64 .zip .7z</extension>
		<command>mupen64plus --resolution 320x240 --fullscreen %ROM%</command>

		<fullname>ZX Spectrum - Retroarch</fullname>
		<extension>.tzx .tap .z80 .rzx .scl .trd .7z .zip</extension>
		<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>

		<fullname>Amiga - UAE4arm</fullname>
		<extension>.uae .7z .zip</extension>
		<command>~/apps/emulators/uae4arm %ROM%</command>

	# <system>
	#	<name>psx</name>
	#	<fullname>Playstation - Retroarch</fullname>
	#	<path>~/games/PSX</path>
	#	<extension>.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd</extension>
	#	<command>retroarch -L ~/.config/retroarch/cores/ %ROM%</command>
	#	<platform>psx</platform>
	#	<theme>psx</theme>
	# </system>

		<fullname>Playstation - PCSX</fullname>
		<extension>.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd</extension>
		<command>~/apps/emulators/pcsx -cdfile %ROM%</command>


I tried commenting out the double up consoles, but it seems to ignore that. Eh, just delete the attempted comment outs if you want. They’re mostly the emulators that don’t work as well.

Keep in mind, I put in the file types to allow for zip and 7z files. The problem with this is, whenever an emulator opens one, it decompresses the rom, and leaves it in the origin file’s directory. Problematic only if you use compressed archives for roms.

In fact, it might be worthwhile to include this to launch games within Emulationstation:

I’m debating whether to do this, seeing as some emulators just flat out don’t run as well, and I should just remove them.

Arguably I could also just update the stock awesome launcher, removing all the double up console directories and using this script instead; however, if I want to have the launcher updatable like a stock 0.5 clockwork OS, this would break the moment you update it. Sure you could make exceptions, holding files or making a script to return things to normal, but at that stage it’s not really going to be at all like what a stock launcher is like.

I haven’t included the ScummVM, or the ID software games in the Emulationstation system config/setup.
I may make a custom “console” to be used as a toggle to change back and forth between the awesome launcher and the emulationstation launcher. Not exactly eloquent and I’m sure someone else could do something better.

Just in case, here are the contents of es_settings.cfg

<?xml version="1.0"?>
<bool name="BackgroundJoystickInput" value="false" />
<bool name="CaptionsCompatibility" value="true" />
<bool name="CollectionShowSystemInfo" value="true" />
<bool name="DrawFramerate" value="false" />
<bool name="EnableSounds" value="true" />
<bool name="ForceDisableFilters" value="false" />
<bool name="LocalArt" value="false" />
<bool name="MoveCarousel" value="true" />
<bool name="ParseGamelistOnly" value="false" />
<bool name="QuickSystemSelect" value="true" />
<bool name="ScrapeRatings" value="true" />
<bool name="ScreenSaverControls" value="true" />
<bool name="ScreenSaverOmxPlayer" value="false" />
<bool name="ShowHelpPrompts" value="true" />
<bool name="ShowHiddenFiles" value="false" />
<bool name="SlideshowScreenSaverCustomImageSource" value="false" />
<bool name="SlideshowScreenSaverRecurse" value="false" />
<bool name="SlideshowScreenSaverStretch" value="false" />
<bool name="SortAllSystems" value="false" />
<bool name="StretchVideoOnScreenSaver" value="false" />
<bool name="UseCustomCollectionsSystem" value="true" />
<bool name="VideoAudio" value="true" />
<bool name="VideoOmxPlayer" value="false" />
<int name="MaxVRAM" value="100" />
<int name="ScraperResizeHeight" value="0" />
<int name="ScraperResizeWidth" value="400" />
<int name="ScreenSaverSwapImageTimeout" value="10000" />
<int name="ScreenSaverSwapVideoTimeout" value="30000" />
<int name="ScreenSaverTime" value="300000" />
<string name="AudioCard" value="default" />
<string name="AudioDevice" value="Master" />
<string name="CollectionSystemsAuto" value="" />
<string name="CollectionSystemsCustom" value="" />
<string name="GamelistViewStyle" value="automatic" />
<string name="OMXAudioDev" value="both" />
<string name="PowerSaverMode" value="disabled" />
<string name="SaveGamelistsMode" value="on exit" />
<string name="Scraper" value="ScreenScraper" />
<string name="ScreenSaverBehavior" value="dim" />
<string name="ScreenSaverGameInfo" value="never" />
<string name="SlideshowScreenSaverBackgroundAudioFile" value="/home/cpi/.emulationstation/slideshow/audio/slideshow_bg.wav" />
<string name="SlideshowScreenSaverImageDir" value="/home/cpi/.emulationstation/slideshow/image" />
<string name="SlideshowScreenSaverImageFilter" value=".png,.jpg" />
<string name="StartupSystem" value="" />
<string name="ThemeSet" value="simple" />
<string name="TransitionStyle" value="fade" />
<string name="UIMode" value="Full" />
<string name="UIMode_passkey" value="uuddlrlrba" />

And also es_input.cfg

<?xml version="1.0"?>
	<inputConfig type="keyboard" deviceName="Keyboard" deviceGUID="-1">
		<input name="a" type="key" id="107" value="1" />
		<input name="b" type="key" id="106" value="1" />
		<input name="down" type="key" id="1073741905" value="1" />
		<input name="hotkeyenable" type="key" id="8" value="1" />
		<input name="left" type="key" id="1073741904" value="1" />
		<input name="leftshoulder" type="key" id="121" value="1" />
		<input name="lefttrigger" type="key" id="104" value="1" />
		<input name="right" type="key" id="1073741903" value="1" />
		<input name="rightshoulder" type="key" id="111" value="1" />
		<input name="righttrigger" type="key" id="108" value="1" />
		<input name="select" type="key" id="32" value="1" />
		<input name="start" type="key" id="13" value="1" />
		<input name="up" type="key" id="1073741906" value="1" />
		<input name="x" type="key" id="105" value="1" />
		<input name="y" type="key" id="117" value="1" />

I can’t remember if there was anything else special I really needed to do, but looking back over the old thread, it looked like some people had trouble having things look viewable. I may have needed to have manually installed a theme as well. I’ll put in something to script a download of a theme.

I’ve tested most of the consoles. I can’t seem to get drastic running via Emulationstation which is weird. I’ll keep working on it, and hopefully find a solution.


Hi, I finally post the update I made of my script. Sorry for the late :wink:

1 Like

Oh sweet!! I wasn’t sure if it was something you forgot! Haha I was about to DM you about it too!
Good thing you did, I was just about to write in stand-alone support myself. Ha! Save me the effort! :slight_smile:

Oh and also, I solved that problem re: which directory ES is executed from. Simple symbolic link. :slight_smile: It all works now. Well. Except for Drastic, which I’m guessing I’m going to also need to do something for. Probably will need to completely move the contents of the drastic emulator from its own directory to the same ~/app/emulator directory. It’s gonna get messy! Hopefully there’s another way.

I don’t know if anyone has issue with some GBA games on gPSP standalone emulator (I don’t like RetroArch because of its battery and CPU consumption). I had a blank white screen when starting some Pokemon games (FireRed, Ruby).
Googling around and found that gPSP requires special configurations for some specific games to run correctly.
Copying game_config.txt file from Github repo in gpSP for gameshell alone build to /home/cpi/apps/emulators will resolve this. :smiley:


Oh damn, thanks for finding that! I had no idea about that, having not tried that combo! I will definitely include this in the next release! Thanks so much!

Also, do you actually find that retroarch uses more battery/cpu cycles? Is this a feel thing, or actually by SSHing and viewing the process/number of threads etc.
I think by default, the 5.3.6 uses the performance governor, so it would probably be running full speed all the time, without any throttling. I haven’t looked into this much more, re: retroarch specifically, but that is definitely something good to potentially know!

Is anyone aware of a way to make the text on Drastic’s built-in menus larger? It’s absolutely unreadable on the tiny GameShell screen.

1 Like

Jav, I just wanted to say thank you so much for this build. You fot me completely re-excited aboit the CPI again with this. I absolutely hated the cluttered file structure that I just couldn’t wrap my head around and the bland UI was completely off putting to me when I got mine a year ago.

This build has fixed so many things I hated and has made me understand so much more whats going on behind the hood.

Thanks so much, bud. I really appreciate all the hard work. This thing rules!

1 Like

Hullo! Welcome to the forums. I’m afraid it doesn’t seem as though you can really change the DPI, short of plugging it into an external screen via HDMI.
Most of the functions can be edited via the config.
The fact it has a GUI is a step up from mupen64plus and mednafen.
If anything we’d need to use some kind of GUI or front end.
I’ve tried emailing the author of the emulator for the source code. According to his FAQ, if you seem to be genuine, he will provide it. I linked this forum, the community and the thread to show where our genuine intentions and ambitions lie. I haven’t heard back; I’m assuming possibly because he now focuses more on his android apps, which are paid for content.
I could be wrong, but if we want to change the DPI of the GUI, we would need to have the source code.

@Cha0 Thank you so much for your kind words! What you said was exactly what I was hoping to achieve, ie show the entire process of modifying the OS, step by step as I’m thinking things out. I’m not a coder or software engineer by trade, and just a regular “user” like everyone else. If I can even just show people where to find information, then my job is done!
I agree! The directory structure was indeed in a confusing state, with a strange naming directory structure for rom placement.

Re: bland UI, I’m wanting to eventually make a new UI from scratch, having contiguity throughout. Ie all of the consoles/items having the same feel. I’m wondering how far we can actually push the Awesome™ UI.

It really means a lot to hear that people are getting enjoyment and rekindled love for the console! I will continue to make things exciting for as long as I can! Let me know if any suggestions you’d like, and I’ll see what I can do! Keep me busy. :slight_smile:

Could I ask if anyone is willing to do a Retroarch core update via the online update within Retroarch, and test as many games as possible for any changes; be it improvements or incompatibilities. Ive only really tested the consoles that I use (which is most but not all) and am nowhere near close to testing EVERY game on each console.

I was hesitant to do it with the recent releases, given the number of changes that have been made across the board, and the fact that generally most of the Retroarch cores run pretty well.
See here for the core change list.

Of course, I have it always updated on my day to machine, but I only play the games that I play.

Keep in mind, this will only update Retroarch cores, and not standalone emulators.

Also can I get a confirmation on whether the colecovision emulator actually works? Another thread had a user report it not working. Likewise with Fuse, UAE and Lynx. I have never used any of these emulators, or have Roms to test them with.

Yeah, RetroArch (RA) battery drain is just my skeptical thought. I’ve just do a quick test on one GBA game, and the answer is: It depends:

  • gpSP standalone emulator: it eats a hell out of CPU (almost full load one core)
  • RA using gpSP core: it’s much cooler, CPU usage is around 50% (single core) most of the time
  • RA using mGBA: it’s another CPU eater, always over 90% of one core

I see that RA is not a bad guy, it’s just the core who stealing my CPU and battery so bad :smiley:

1 Like

i use retroarch gpsp with only 2 cores at 600mhz …

1 Like

@javelinface Just want to let you know that I changed mednafen.cfg for the virtual boy. Now it is in mono scope mode (black & white), bilinear interpolation is turned on, the picture quality is much better, buttons layout is in SNES mode, and I made new keyboard shortcuts for shoulder buttons (L1- decrease save slot, R1 - increase, L2 - save, R2 - load).
But my shoulder buttons is modded into the standard shell so it is reversed upside down, so if you using standard layout you need to reverse key inputs values in the config file (just search in the file strings “save_state” and “load_state”, “state_slot_dec” and “state_slot_inc” and reverse key values)

1 Like

You absolute champion! I was hoping to find a way to make it look less over layed. That said I wonder if we can use old school red/blue style cellophane 3d glasses to achieve a 3d effect. Or if it’s even worth it haha.
Thanks for this! Is it okay if I provide it in the next release?
Also, have you tried your hand at configuring mednafen for any of the other consoles?

Sure you can use it :ok_hand:
I haven’t tried to tweak other cores because I only needed VB and I don’t see any point because of other alternatives. Do you think it is worth of trying?
Anyway, it is easy to do, just edit mednafen.cfg file in any text editor using this documentation:

1 Like

The annoying part is specifying where each bios is, and praying that you don’t change too much at once, and accidentally break something else!
I started doing a batch remap of controls, and stupidly did all of them at once. Result: I broke the config, and felt too distraught to bother debugging it to find out exactly what went wrong hahah!

From what I’ve heard, mednafen particularly excels at virtual boy, wonder swan and Dreamcast; Although I haven’t tested dreamcast yet. I’m not holding my breath! Maybe a tonight job! :wink:
Edit: Oops! Nope, it doesn’t support Dreamcast!

I’d consider using solely mednafen if I was to say, have a setup using emulationstation. Mednafen runs enough things fairly well, that I might consider emulationstation as a similar kind of launcher as Retroarch.

As it stands, my emulationstation is using a bit of a frankensteined mix of Retroarch and standalones. It would be nice to have everything standardised.

@podmaz - Just looked at the config. The Bi-Linear filtering although pretty is possibly hitting the frame rate pretty hard. Going to test things a bit more! Otherwise, it’s looking very nice!
Edit: Turning Bi linear interpolation barely makes any change to the frame rate. The fact that the emulation looks way better means I’d be happy to take the 1 - 2 frame hit. Good call! :slight_smile:

I see you’ve done a pretty similar thing to what I did re: Control mapping. I thought it was the opposite at first, but that’s because I was comparing my “GM” console, and not my day to day one where I made the changes ;). SNES layout for life.

Before I knew about the SDL can mode re: key mapping, I made a little conversion chart. Might be helpful for others wanting to modify their mednafen scripts.

14 = A

13 = B

12 = X

24 = Y

11 = Shift A L2

15 = Shift B R2

28 = Shift X L1

18 = Shift Y R1

44 = select

40 = start

Down = 81

Left = 80

Right = 79

Up = 82

I’ve configured the majority of the mednafen console key binds.
That’s not to say that everything necessarily runs, or runs well. Eg. SNES runs awfully!
Probably the most noteworthy consoles emulated are Virtual boy; which was the reason for embarking on this journey, Wonderswan; something that may be a bit niche and NES; which is possibly a replacement candidate for FCEUX, which now runs terribly.
Here it is.
I never grew up with a sega console, so can’t really vouch for how it “feels” configuration wise for games, given sega has a (3x2)+2 vs a [(2x2)+(2+2)]+2 config. I mapped it as close as I could.
I haven’t done any turbo keys, since I don’t feel that they’re necessary. There will be some overlap of controls for state save toggle/load/save, using @podmaz’s config above. If you ever decided to actually emulate something that uses trigger buttons, you’ll need to disable them.

In the file, /home/cpi/launcher/, on line 116, there’s this convenient bit of info.

Just tested putting a file named “background.png” into there.
Yup! Looks like the mode made it into the official release!

What this means is, if we put a file called “background.png” into the skin’s root, it will be displayed as the background. Neat!

First attempt. Eh, not that great.

Just put together this subtle little background. Might use it next time. Might not. But the option is now there.

(That’s with the brightness at max - it’s not actually that apparent; Just did it to illustrate the background in action)

1 Like
Here’s another take

Alternative background. I think I like this more. Looks less like a failing LCD/bird poo.

And finally I think I’ve settled on this one:

The question is, would anyone actually want that in the default DEOT Launcher? It’s now deviating away from what the original DEOT OS looked like, but hopefully still keeping it spiritually in the same realm of what it would have looked like, had this mod existed when DEOT was first made.


  • Include retro vector background
  • Keep it as nothing

0 voters

I may have been inspired by this meme

Files below. Also, check out the alternative DEOT Light variant

background backgroundL