clockworkpi

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.8.9, Mupen64+ plus more! (Current build: 200626)

Let me know when I can do my magic again :slight_smile: And as always : wow what a quick response and dedication ! I am so humbled and inspired by your drive and willingness to support us gameshell console owners and the community users ! Big shoutout to all; let’s thank @javelinface for all his efforts and make his inbox explode with positivity !

2 Likes

Thanks a lot! This is amazing.

I’m very happy that you are dedicating some time on it.

Could you try to make a shell script for that?

1 Like

@javelinface
Thank you very much for your time and custom DEOT image.

My English is pretty basic.
I hope you can understand what I was saying.


Set skin path function

  1. ~/launcher/sys.py/config.py, line 48

    SKIN = "../skin/"
    
  2. ~/launcher/sys.py/config.py, line 50

    /home/cpi/.gameshell_skin
    

    if file exists, read file content to replace skin path(SKIN)

  3. ~/launcher/sys.py/UI/skin_manager.py, line 27

    DefaultSkin = "../skin/DEOT"
    

    and

    config.SKIN ==> import from config.py (/home/cpi/launcher/skin/DEOT)

    if read config.SKIN path error, return DefaultSkin.

    I guess the DefaultSkin = BackupSkin,

    ==>

    DefaultSkin = "../skin/default"
    

    fix UI failed to load, when icon/pic not found.


About(_init.py_), line 82

modify:

#_ListFontObj = MyLangManager.TrFont("varela13")
_ListFontObj = MySkinManager.GiveFont("varela13")

text not aligned in other UI language, change to English font


The order of DinguxCommander

“DinguxCommander” the name is too long.

can not show all text/name on screen

change to

 01_Bean
 02_BatMon
 03_DinguxCommander

It’s OK.


Traditional Chinese language file

https://mega.nz/file/9NNz2YLQ#dj24X5AhzUtFlKNxioROIhYg6HAr9oAj01POH9le17Q


Thanks again for your help.

1 Like

Once I get all the dependencies and backporting sorted, most of that should be able to be copy pasted as a shell script, since I commented out the instructions in between. It’s just a matter of installing everything in the right order so that dependencies of dependencies go first etc. I’m going to have to look into how to back port things more efficiently. I’m a complete beginner with a lot of this, but keen to put in my human hours to help!

More so, thank YOU for laying out such a strong foundation to work with. I’m keen to see the day where we have an absolutely clean state for users to customise and be in complete control of.

The Gameshell is something that you construct from scratch with your hands. The next step would be for someone to build the OS in the same way themselves. That way everyone can get a real appreciation for how things work, and hopeful to understand how to do so as well. This is why like your minimal Debian release, I have tried to provide as many steps of information as possible.

I’m sure there are others out there who could help even more. In particular @hi80482 - you have come out of nowhere and offered tremendous help lately! I’m sure your expertise could be used to help make things work for a new image! I’ll be applying a few of those fixes of the images for sure. :slight_smile:

@Wizz - You’ve been a great support, and always have been! You know I’ll buzz you as soon as I’m ready for the next image. Looks like there’s a few more tweaks to add!

2 Likes

Is the latest version of DEOT currently stable? I just read a few posts about the HDMI ports not working, I just wanted to know if everything’s glitch-free cause I don’t wanna reflash my SD card again.

Ha! Well turns out I’ve reached the character limit for the first post, so I can’t include the release notes there. So I will put them here, and link them. Incoming image. I wasn’t going to put another version, but given there’s at least 18 updates to the image, this may very well justify things. They are mainly interface related, and don’t affect performance in any way.

I’ll update this post when I have finished shrinking, compressing and uploading the image.
Edit: And the file is uploaded, both to Google drive and Mega. Check the first post for links to the download.

Changes (As of 200626)

  1. Updated Retroarch to 1.8.9 and updated cores.
  2. Changed the “proxy” fonts to be their true fonts, so that Eurostile and Varela are independently named.
  3. Updated all references in UI from Varela to Eurostile, making it toggleable via DEOT settings util.
  4. Added “about” to DEOT settings change, aligning UI for languages other than English
  5. Changed the name of 99_DEOT.ini language to 99_DEOT_English.ini to allow it to properly use the proper skin specified font. (This also renames and capitalises launcher menu items to reflect their names in the DEOT OS, only for English however)
  6. Typos in english language file fixed: favorite = favourite (british vs US), forgeting = forgetting, already existed = already exists, delete confirm = confirm delete, scanning… = scanning…, airplane mode = flight mode, and a few other tweaks to make some things make more sense. These are only in affect when using the DEOT language file. Now starts with this by default.
  7. Updated 04 chinese language file. (I haven’t verified if it’s correct, but assume it is!)
  8. Applied warehouse icon fixes to the DEOT theme.
  9. Tweaked some font choices and sizes.
  10. Updated the DEOT Settings activate/deactivate scripts to include the recently changed UI changes, and then return them to normal.
  11. Updated the PICO-8 json file to accept the current version.
  12. Power script on the main launcher page now contains a sleep option.
  13. Both the original and DEOT skin contains an icon for “sleep” - meaning that there was once a sleep icon. I have restored this. Only use it if using Kernel 5.7.7, otherwise you won’t be able to awaken your Gameshell.
  14. Changed the order of Music Player, Tiny Cloud, Reload, Sleep and Power to better group similarly categorised items. This will break if you run a git pull on the launcher, but at this stage, too much has been changed now that a git pull would break more than just this.
  15. Added three kernel switching settings that simultaneously change the kernel, clock speed and boot choices simultaneously to the more compatible combinations.
  16. Renamed 1008MHz to “Underclocked”, 1200MHz to “Governed” and 1400MHz to “Overclocked” to make it a bit clearer.
  17. Changed the order of Utilities so that DingUXCommander doesn’t get cut off at the end.
  18. Updated PocketSNES and FCEUX backgrounds.(Note: you will need to use the “Stock” kernel setting to have these run remotely well - otherwise just use Retroarch, which runs better anyway)
6 Likes

show sleep option in kernel 5.7 only

~/launcher/Menu/GameShell/99_PowerOFF/_init_.py
https://mega.nz/file/cAEQyC4T#SifaEA4ahSynl9O88E3t29Er2HY01yce_AhmTOaJs5A

1 Like

Oh wow! Wow! I am seriously learning a lot more about python looking at the code of this! Way simpler than what I was thinking of doing! Ie, just a basic substitute upon activation, and remove upon deactivation script.
I would have to do something like that for the extra “sleep” icon on the launcher, but this is very clean and coherent! Thanks so much again!
Haha I think at this rate, I won’t be retiring the image and having a final version. You keep making me smile, bringing me back!
Please, by all means; Keep doing this!

In fact, @hi80482 - You definitely seem like you know your way around most of the launcher’s functionality, scripting and general operation of the Gameshell. Based around @Joao_Manoel’s work on the minimal debian release, would you at all be interested in building and optimising a clean launcher for the Gameshell? You definitely do seem to have a knack for finding great solutions, and a desire to help the community.

I remember @guu saying that a lot of the work he did on it was under a lot of pressure. It was using much older workaround too. Maybe, even somehow collaborating with him, and having it all uploaded to GitHub to be readily available to all? I have no idea with GitHub, and that was one of the biggest flaws of this DEOT image.

Maybe having it as something community driven with no deadlines, and just a pure passion for making a launcher that is made by the users for the users would be something to bring the community together. Having a clean slate that can be built up via the Warehouse would make the Gameshell an extremely attractive console. A DEOT image could be one among many different builds that can easily be added to a stock image.

@guu - Would you be interested in perhaps working with some people on relaxed terms to create a new community launcher? No contractural obligations or backlogs of official business that need to be attended to? I would be happy to help in whatever way I can. I’m sure there are many others in a similar position. There are too many people to tag, but I’m guessing if you’re following this thread, you’re probably one of these people. :slight_smile:

Now, on the topic of this image:
I’ll upload a new image once I have a few more things to add to it, just to make it worthwhile.
I also realised afterwards, that I accidentally put the FCEUX backgrounds in a redundant location, seeing as the wallpapers are stored in /home/cpi/.fceux/, and not /home/cpi/apps/emultors/.

I’ll possibly also need to find out exactly why a lot of the standalone emulators run so much worse than Retroarch; especially OhBoy and FCEUX. It’s almost worth removing them, since they don’t offer much, besides saving people who want to try it the trouble of installing it. Perhaps it needs to be recompiled, as opposed to using the pre made binaries linked in the forums.

GPSP+ has some frame rate issues when overclocked, but runs fine while on stock clockspeeds/kernels. Possibly could be a governor problem, and not detecting when under load? I haven’t actually checked any logs, and am just hypothesising.

PocketSNES generally has a much choppier vertical sync than Snes9x in Retroarch. I’m not sure if this is a lessened performance compared to stock, or if Retroarch just works better.

The default core for Snes roms in Retroarch can possibly be safely changed to snes9x 2010. It’s usually a case of the older the version of snes9x, the faster it is, and the newer it is, the more accurate it is; and vice-a-versa. From what I’ve emulated, I’ve found that the recent snes9x has the best of both worlds, running a lot of extremely demanding games at full speed.

Speaking of cores, I noticed in @Joao_Manoel’s minimal debian image a couple of unique built up Retroarch cores; namely Parallel, mupen64plus next, and flycast. I didn’t get them working, but I’d be curious to see if there is any headway in getting them working, and possibly including them in this release as well.

2 Likes

@javelinface

I am a beginner in Python, learn it just by Google and trial and error.
Hope people can help each other and learn from each other.
To make Gameshell a good/better game console, and enjoy it.

1 Like

show battery percentage on title bar, but not for music spectrum.

~/launcher/sys.py/UI/title_bar.py

https://mega.nz/file/oEkBRCwB#eCuaFNdIgkYQz5KVMLya4wkQsKSQP30Rw-E1nmSXapY

1 Like

it’s a good idea

I want to know what kind of launcher will make all of us happier,too

1 Like

great
if it is ok with you

pr is welcome
I assume that you are using the deot launcher

2 Likes

OK.
I got it. Thanks.

1 Like

sleep for kernel 5.7 only

~/launcher/Menu/GameShell/98_Sleep.sh

#!/bin/bash

kernel=$(uname -r)
if [[ $kernel == *"5.7"* ]]; then
  systemctl suspend
fi

exit 0

How to update DEOT launcher (test version)

  1. Backup your launcher folder

    cd
    mv launcher/ launcherbak/
    
  2. Git a clone from GitHub

    cd
    git clone https://github.com/hi80482/launcher_deot.git ~/launcher
    

    Notice: This git is launcher only, not include menu(~/apps/Menu)

  3. Edit .gameshell_skin file

    nano ~/.gameshell_skin

    /home/cpi/launcher/skin/DEOT
  1. Reboot, Update the launcher. Finish.

  2. Set update config

    Set launcher git url? ===> No

    When you git a clone,
    It will be auto gen a “.git” folder under ~/launcher or ~/apps/Menu.
    Update function read config from .git,
    overwrite all ~/launcher or ~/apps/Menu files,
    If your sys.py is DEOT, .git is Normal, then get UI failed.

    Set launcher version check url? =======> Yes

    Edit ~/launcher/sys.py/config.py

    check launcher ver. from a online file

    UPDATE_URL="https://raw.githubusercontent.com/clockworkpi/CPI_DEOT/master/version.json"
    

    or disable update check

    UPDATE_URL=""
    
  3. Update command

    ~/launcher/update.sh

    for launcher

    git pull
    git reset --hard "$1"
    git submodule init
    git submodule update
    

    for menu

    cd ~/apps/Menu && git pull && cd - || exit
    
  4. Restore

    cd
    rm -rf ~/launcher
    mv ~/launcherbak ~/launcher
    sudo reboot
    

If you have a menu git or launcher git,
then you can install it, and update it.

Not forget to backup your folder before test.
~/launcher
~/apps/Menu

1 Like

Hi, with recent 20200626 version, with all three kernels, I get troubles setting threaded video on. Retroarch crashes and returns to launcher after about three screen flicks. Below is the verbose log from the start till the switching of the setting:

cpi@clockworkpi:~/.config/retroarch$ cat logs/retroarch__2020_07_06__15_35_34.log
[INFO] RetroArch 1.8.9 (Git 53f3199652)
[INFO] === Build =======================================
[INFO] Capabilities:  NEON VFPv3 VFPv4
[INFO] Built: Jun 24 2020
[INFO] Version: 1.8.9
[INFO] Git: 53f3199652
[INFO] =================================================
[INFO] [Environ]: SET_PIXEL_FORMAT: RGB565.
[INFO] Version of libretro API: 1
[INFO] Compiled against API: 1
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [GL]: Found GL context: x
[INFO] [GL]: Detecting screen resolution 320x240.
[INFO] [GLX]: Window manager is dwm.
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [GLX]: Using Xinerama on screen #0.
[INFO] [GLX]: X = 0, Y = 0, W = 320, H = 240.
[INFO] [GLX]: Using windowed fullscreen.
[INFO] [GLX]: Found swap function: glXSwapIntervalMESA.
[INFO] [GLX]: glXSwapInterval(1)
[INFO] [GL]: Vendor: lima, Renderer: Mali400.
[INFO] [GL]: Version: 2.1 Mesa 20.0.0-devel (git-2d971cc1ca).
[INFO] [GL]: Using resolution 320x240
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Found display server: x11
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 792 frames
[INFO] ALSA: Buffer size: 3168 frames
[INFO] [Display]: Found display driver: "gl".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Display]: Found display driver: "gl".
[INFO] [LED]: LED driver = 'null' 0xbeeae0
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "alsa" driver.
[INFO] [SRAM]: SRAM will not be saved.
[INFO] [Playlist]: Loading history file: [/home/cpi/.config/retroarch/content_history.lpl].
[INFO] [Playlist]: Loading history file: [/home/cpi/.config/retroarch/content_music_history.lpl].
[INFO] [Playlist]: Loading history file: [/home/cpi/.config/retroarch/content_video_history.lpl].
[INFO] [Playlist]: Loading history file: [/home/cpi/.config/retroarch/content_image_history.lpl].
[INFO] [Playlist]: Loading favorites file: [/home/cpi/.config/retroarch/content_favorites.lpl].
[INFO] [GL]: VSync => on
[INFO] [GLX]: glXSwapInterval(1)
[INFO] [GL]: VSync => on
[INFO] [GLX]: glXSwapInterval(1)
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [XINERAMA]: Saved monitor #0.
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[INFO] [Video]: Starting threaded video driver ...
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [GL]: Found GL context: x
[INFO] [GL]: Detecting screen resolution 320x240.
[INFO] [GLX]: Window manager is dwm.
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [GLX]: Using Xinerama on screen #0.
[INFO] [GLX]: X = 0, Y = 0, W = 320, H = 240.
[INFO] [GLX]: Using windowed fullscreen.
[INFO] [GLX]: Found swap function: glXSwapIntervalMESA.
[INFO] [GLX]: glXSwapInterval(1)
[INFO] [GL]: Vendor: lima, Renderer: Mali400.
[INFO] [GL]: Version: 2.1 Mesa 20.0.0-devel (git-2d971cc1ca).
[INFO] [GL]: Using resolution 320x240
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Found display server: x11
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 792 frames
[INFO] ALSA: Buffer size: 3168 frames
[INFO] [Display]: Found display driver: "gl".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [LED]: LED driver = 'null' 0xbeeae0
[INFO] [MIDI]: Input disabled.
[INFO] [MIDI]: Output disabled.
[INFO] [MIDI]: Initialized "alsa" driver.
[INFO] Game focus is: : off.
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [XINERAMA]: Saved monitor #0.
[INFO] Threaded video stats: Frames pushed: 0, Frames dropped: 0.
[INFO] [Audio]: Set audio input rate to: 48000.00 Hz.
[INFO] [Video]: Video @ fullscreen
[INFO] [Video]: Starting threaded video driver ...
[ERROR] [Wayland]: Failed to connect to Wayland server.
[INFO] [GL]: Found GL context: x
[INFO] [GL]: Detecting screen resolution 320x240.
[INFO] [GLX]: Window manager is dwm.
[INFO] [XINERAMA]: Xinerama version: 1.1.
[INFO] [XINERAMA]: Xinerama screens: 1.
[INFO] [GLX]: Using Xinerama on screen #0.
[INFO] [GLX]: X = 0, Y = 0, W = 320, H = 240.
[INFO] [GLX]: Using windowed fullscreen.
[INFO] [GLX]: Found swap function: glXSwapIntervalMESA.
[INFO] [GLX]: glXSwapInterval(1)
[INFO] [GL]: Vendor: lima, Renderer: Mali400.
[INFO] [GL]: Version: 2.1 Mesa 20.0.0-devel (git-2d971cc1ca).
[INFO] [GL]: Using resolution 320x240
[INFO] [GL]: Default shader backend found: glsl.
[INFO] [Shader driver]: Using GLSL shader backend.
[INFO] [GLSL]: Checking GLSL shader support ...
[WARN] [GL]: Stock GLSL shaders will be used.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GLSL]: Found GLSL vertex shader.
[INFO] [GLSL]: Found GLSL fragment shader.
[INFO] [GLSL]: Linking GLSL program.
[INFO] [GL]: Using 4 textures.
[INFO] [GL]: Loaded 1 program(s).
[INFO] [GL]: Using GL_RGB565 for texture uploads.
[INFO] [Joypad]: Found joypad driver: "udev".
[INFO] [Font]: Using font rendering backend: freetype.
[INFO] [Video]: Found display server: x11
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 792 frames
[INFO] ALSA: Buffer size: 3168 frames
[INFO] [Display]: Found display driver: "gl".
cpi@clockworkpi:~/.config/retroarch$

Any help is highly appreciated :slight_smile:

~/launcher/Menu/GameShell/10_Settings/Update/_init.py_
Add Git Hash for Update page
Download

~/launcher/sys.py/UI/page.py
Add PageUp & PageDown for Main page
D-Pad Up = PageUp
D-Pad Down = PageDown
Download

~/launcher/Menu/GameShell/10_Settings/list_page.py
Add PageUp/Down for Settings page
D-Pad Left = PageUp
D-Pad Right = PageDown
Download

~/launcher/Menu/GameShell/10_Settings/Cores/_init_.py
Add PageUp/Down for Cores page
D-Pad Left = PageUp
D-Pad Right = PageDown
Download

~/launcher/sys.py/UI/Emulator/rom_list_page.py
Add PageUp/Down for rom list
Shift + Menu
D-Pad Left = PageUp
D-Pad Right = PageDown
Download

~/launcher/sys.py/UI/Emulator/rom_list_page.py
Add PageUp/Down for fav list
Shift + Menu
D-Pad Left = PageUp
D-Pad Right = PageDown
Download

~/launcher/Menu/GameShell/95_Music Player/music_lib_list_page.py
Add PageUp/Down for music lib list
Shift + Menu
D-Pad Left = PageUp
D-Pad Right = PageDown
Download

~/launcher/Menu/GameShell/95_Music Player/music_lib_list_page.py
Add PageUp/Down for music play list
Shift + Menu
D-Pad Left = PageUp
D-Pad Right = PageDown
Download

1 Like

fav list
~/launcher/sys.py/UI/Emulator/fav_list_page.py

music play list
~/launcher/Menu/GameShell/95_Music Player/play_list_page.py

1 Like

Is there any reason for enabling Threaded video?
According to the description

Is there a specific core or game that you’re wanting more performance from?
You can enable it, manually editing the Retroarch config file. It’s near the bottom. Set video_threaded = “true”
The cost of latency and video stuttering isn’t worth it for me, which is why I had it disabled.

@hi80482 again, thank you so very much for your optimisations! If you can work out a way to have the lists loop around themselves, it would be very useful! No just for games, but for the settings menu too!

1 Like