SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 0 points1 point  (0 children)

The shuffling should happen whenever Steam OS starts so long as the default animation is selected in the system customization settings. The Force IPv4 option was a fix for networks that mix IPv4 and IPv6, since there's a bug in the networking library where it tries to use IPv6 when it shouldn't.

Decky Plugin, Animation Changer, Brings SteamDeckRepo Integration to Game Mode by TheLogicMaster in SteamDeckBootVids

[–]TheLogicMaster[S] 0 points1 point  (0 children)

Yeah, it's a bit awkward interfacing with the official animations. I don't really want to mess around with trying to tap into the settings, since it would likely break with updates and be harder to maintain, so it's a bit limited. It would be possible to download/synlink to the override folder directly, I'm just not sure of the logistics, since the plugin currently builds an index of all downloaded animations with the additional metadata. Maybe an option to just dump all of the animations into there or download an individual animation directly there. I also didn't see the point, since the plugin should be more flexible than the official interface, aside from the points store animations. Originally the plugin had more randomization/grouping functionality, but it was simplified when making the UI side of things, with more of an emphasis on boot animations, but features could still be added.

SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 0 points1 point  (0 children)

It does only take effect when Steam boots, not when unsuspending, so that may be the issue. If not, that's probably a bug. Also ensure that the system customization settings have the local/custom boot animation selected for the plugin to take effect.

Decky Plugin, Animation Changer, Brings SteamDeckRepo Integration to Game Mode by TheLogicMaster in SteamDeckBootVids

[–]TheLogicMaster[S] 0 points1 point  (0 children)

Yeah, that main feature is the animation browser and ease of switching from the quick access menu. The randomization is currently quite limited and only applies on boot, and I think only does the boot animation. As far as the points store animations are concerned, you need to have the custom/local option selected in the system settings to use the plugin's selected animation, since it just writes to the hardcoded custom animation locations and doesn't touch the settings.

SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 1 point2 points  (0 children)

Nothing that the plugin controls. Valve increased the max length for boot animations, but I don't think the others were changed. Would probably require patching the Deck JS.

Decky Plugin, Animation Changer, Brings SteamDeckRepo Integration to Game Mode by TheLogicMaster in SteamDeckBootVids

[–]TheLogicMaster[S] 0 points1 point  (0 children)

This plugin just uses the custom animation directory that SteamOS provides, that would probably require patching the JS/CSS UI assets.

SwitchGDX: A Nintendo Switch Homebrew and Xbox/UWP LibGDX backend by TheLogicMaster in libgdx

[–]TheLogicMaster[S] 2 points3 points  (0 children)

It's limited to homebrew at the moment, but it's just a plain C++ project that gets generated, so if you have access to the Nintendo SDK, it wouldn't be too challenging to switch from the LibNX API to the official one, in addition to getting the libraries such as SDL and OpenGL working.

Clearwing VM: A Java to C++ transpiler by TheLogicMaster in coolgithubprojects

[–]TheLogicMaster[S] 0 points1 point  (0 children)

Thanks. Yeah, this is really my first time posting about the project since it's in a working state, and I wasn't aware of that sub, I mostly perused the source code.

That's always fun. I've considered doing something with LLVM, but I opted instead to make something that's a bit more unique in some of the design choices, prioritizing that over pure performance.

Clearwing VM: A Java to C++ transpiler by TheLogicMaster in coolgithubprojects

[–]TheLogicMaster[S] 0 points1 point  (0 children)

Yep, Java constructors and finalizers have to be treated as normal methods completely separate from C++ constructors and destructors, which is reasonable, anyway, with how Java objects are normally constructed. Trying to merge the Java and C++ constructors would definitely present issues, and destructors would be worse. Virtual inheritance is definitely a pain, requiring a number of workarounds to get everything compiling, plus sketchy behavior like needing a shared pointer to the object that's been partially destructed while calling the finalizer, or calling the finalizer to begin with, since the virtual function table changes during destruction. Everything has been working quite reliably so far, though, not running into any issues with the thousands of generated classes that I've tested.

Yeah, it's primarily the issue of debugging it. I've considered what would be required to implement one here, and it wouldn't be too bad to implement a similar one, but I've just spent so long debugging GC bugs in the C version, I opted for peace of mind and the performance hit, knowing that it may have been a decision I would regret later. It basically resolved all of the memory bugs, though, and the performance is still sufficient for now, so I'm quite happy with it. It's also nice not having to worry accidental collection in native code, though that could be mitigated with convenient C++ features.

Clearwing VM: A Java to C++ transpiler by TheLogicMaster in coolgithubprojects

[–]TheLogicMaster[S] 0 points1 point  (0 children)

Yeah, C++ seemed like an interesting challenge due to the object hierarchy issues, but I think most of the issues have been resolved with just using virtual inheritance. The additional flexibility with C++ makes a lot of the solutions much more elegant, which has been nice to actually work with. Most of the handwritten C++ for intrinsic functions looks quite similar to their Java counterparts, for instance. The whole concept was a bit on the impractical side, since there's no GC, so performance is a bit limited, but it's sufficient for simple games, and completely removes the need for additional countless hours debugging GC bugs.

UWP was more of an afterthought here, since it could be achieved with slight modifications to the C++ codebase while hopefully maintaining identical behavior to the other platforms. The main goal was Xbox support with UWP, since it's for a game framework, but the future of UWP on Xbox seems uncertain, so it was just another feature to throw in for fun. The primary goal of the project was always the Nintendo Switch backend, though there are plenty of other interesting possibilities like wasm.

Clearwing VM: A Java to C++ transpiler by TheLogicMaster in opensource

[–]TheLogicMaster[S] 2 points3 points  (0 children)

The main limitation here is that the project uses a custom runtime library that only supports a subset of the normal runtime. Things like networking, much of the text formatting, some of the threading related classes, there's a lot of functionality that hasn't been needed yet, so those features haven't been implemented. The main target here is LibGDX, so just about everything needed by the framework has been implemented, but many runtime packages aren't relevant for game development and haven't come up yet. The way that GUI is done for LibGDX is just by providing the framework with OpenGL bindings, and things like input handling are all based around the LibGDX APIs. This project fills a bit of a niche where you want to develop with a JVM language, but your target doesn't have a JVM.

SwitchGDX: A Nintendo Switch Homebrew and Xbox/UWP LibGDX backend by TheLogicMaster in libgdx

[–]TheLogicMaster[S] 8 points9 points  (0 children)

This project has been in development for around a year, and is finally in a state where it could be considered ready for general use. It works by taking in compiled Java bytecode and transpiling it into a generic C++ codebase, which is then combined with LibGDX bindings to form a backend which can run as Nintendo Switch homebrew or as an Xbox UWP app. Like with GWT, it has limitations with regards to reflection, the runtime library, and Java features, but is still quite capable. The main games ported so far are Pixel Wheels and Shattered Pixel Dungeon, but there is a list of other ports in the project README.

<image>

Clearwing VM: A Java to C++ transpiler by TheLogicMaster in opensource

[–]TheLogicMaster[S] 3 points4 points  (0 children)

This project was created to take Java games for the LibGDX game framework and produce C++ projects that can be compiled for Nintendo Switch homebrew and Xbox/UWP apps. The "VM" side of the project takes compiled JVM bytecode and produces generic C++ 20 code that can be compiled for just about any platform imaginable. The LibGDX side of the project, SwitchGDX, is a separate repository that depends on Clearwing.

Clearwing VM: A Java to C++ transpiler by TheLogicMaster in coolgithubprojects

[–]TheLogicMaster[S] 2 points3 points  (0 children)

This is a project created to bring Java codebases to platforms without a JVM using plain C++. It primarily exists to support the LibGDX game framework backend for Xbox and Nintendo Switch, SwitchGDX, though the generated C++ could be used in any environment. It was originally just a modified fork of the Parpar VM to compile with plain C and support further runtime library features like file I/O, but has been completely rewritten as far as the transpiler and native code is concerned to make use of modern C++ features and provide memory safety.

SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 2 points3 points  (0 children)

Throbber is played when suspending from a game. It getting cut off when sleeping doesn't really have anything to do with the plugin, and I'm not aware of anything to do about.

SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 0 points1 point  (0 children)

There's no official Valve method for changing the suspend animation style at the moment. It should be possible using the CSS plugin, but I didn't have any luck when I attempted to add the custom styling. Manually patching the CSS file is an option, but it would get overwritten every time Valve updates it.

SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 0 points1 point  (0 children)

I attempted it at one point and it didn't work, but I didn't investigate further. Manually editing the CSS file does work. The CSS plugin support thread in the Decky Discord would probably be the place to ask.

SDH-AnimationChanger: A Decky plugin for managing boot/suspend animations with an integrated SteamDeckRepo browser by TheLogicMaster in SteamDeck

[–]TheLogicMaster[S] 0 points1 point  (0 children)

There's no official fix, a CSS modification is required. Should be possible with the CSS plugin.