Tesla - The Nintendo Switch Overlay Menu

fhwyjbd.png

Hey all.
I'd like to introduce to you, Tesla: My answer to the growing need for proper ingame front ends for sysmodules.


What is this?

  • Tesla consists of three individual parts. nx-ovlloader, the Tesla menu and libtesla.
    • nx-ovlloader is basically nx-hbloader ported to run as a sysmodule. It runs in the background and loads overlay NROs (.ovl files) given to it.
    • Tesla Menu is the equivalent to the hbmenu. It's the initial thing loaded by nx-ovlloader and acts as a hub for you to select all other overlays.
    • libtesla is where it becomes interesting for developers. It's an easy to use library that handles layer creation, UI drawing and all the overlay UX. It makes it very easy to create a new overlay for anything
  • A frontend for sysmodules that before required either a homebrew or a config file to change settings or used sounds or the LED to give the user feedback.

What is this not?

  • A tool that lets you create overlays that are always visible. Overlays can get unloaded way to easily for this.
  • An excuse to port absolutely everything to a overlay. Nobody's going to need a title manager overlay. If you consider making a overlay, keep it simple. You don't have a whole lot of memory to work with.


How do I use this?

First of all, download the latest release of nx-ovlloader and the Tesla Menu from the GitHub Release page and extract it onto your SD card.
After a reboot, hold down L and DPad Down and push on the right joy stick to bring up Tesla at any time. Navigation works as you imagine it.
Similar to normal homebrews, you place your .ovl files in the /switch/.overlays folder on your SD card.


Screenshots

W8yN2M6.jpg

fdfWAXw.jpg


Notice

Make sure to use the latest Atmosphere release when trying this as older versions ( as the one SX OS uses too ) probably won't have enough memory available for this to run. Overlays do take a lot of space so nx-ovlloader reserves 6MB. 2MB for framebuffers and around 4MB for overlay developers to use in their overlays.


GitHub

nx-ovlloader: https://github.com/WerWolv/nx-ovlloader
Tesla Menu: https://github.com/WerWolv/Tesla-Menu


For Developers

libtesla: https://github.com/WerWolv/libtesla
Tesla build template: https://github.com/WerWolv/Tesla-Template


Download

nx-ovlloader: https://github.com/WerWolv/nx-ovlloader/releases/latest
Tesla-Menu: https://github.com/WerWolv/Tesla-Menu/releases/latest
EdiZon Overlay: http://werwolv.net/downloads/EdiZonOverlay.zip ( As a little preview for what this is capable of and what EdiZon 4.0.0 will have even more of soon :) )

Special thank especially to averne without him, this would not have been possible!


Obligatory Donation links

GitHub Sponsors https://github.com/sponsors/WerWolv
PayPal https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=KP7XRJAND9KWU&source=url
Patreon https://www.patreon.com/werwolv



Thanks a lot and have fun using and extending it :)
 
Last edited by WerWolv,

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,325
Trophies
3
XP
12,161
Country
Poland
So by implementing this to tmemClose()
Diff:
         if (t->src_addr != NULL) {
+            MemoryInfo m = {0};
+            u32 p = 0;
+            while (m.perm == Perm_None) {
+                svcQueryMemory(&m, &p, (u64)(t->src_addr));
+                svcSleepThread(1000000);
+            }
             __libnx_free(t->src_addr);
         }
I have solved issue without using shenanigans I have implemented into libtesla. Though it will require PR to libnx and then manually compiling libnx to get it right until new libnx release will come. I am trying to see if I can push in this form into main libnx fork or I need to change something, for now my libnx fork is here:
https://github.com/masagrator/libnx/tree/patch-1

Thanks to SciresM for proposing idea to solve this.
 
Last edited by masagrator,

Runtuntbadunt

Member
Newcomer
Joined
Mar 28, 2019
Messages
9
Trophies
0
Age
27
XP
90
Country
United States
if your overlays are not showing at all you must look if your tesla is the latest and your Tesla-Menu (ovlmenu) https://github.com/WerWolv/Tesla-Menu are up to date.
I made sure to delete everything and start from scratch, and it is still not working. Not sure what the problem could be. I even tried with three different controllers and I know they have functioning L, DPad down, and right joystick click buttons.
 

ELY_M

Developer
Developer
Joined
Dec 6, 2007
Messages
710
Trophies
1
XP
1,694
Country
United States
I added the PR to libnx and built and installed libnx then rebuilt everything and installed.
Did testing. it still crashing in pokemon violet.
 
  • Love
Reactions: impeeza

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,785
Trophies
2
XP
6,346
Country
I added the PR to libnx and built and installed libnx then rebuilt everything and installed.
Did testing. it still crashing in pokemon violet.
hmm...I used 20+ times in pokemon scarlet and many times in other games didn't crash for me, docked mode
 

Runtuntbadunt

Member
Newcomer
Joined
Mar 28, 2019
Messages
9
Trophies
0
Age
27
XP
90
Country
United States
So I figured out my problem (the button combo was different and I didn't know, lol) but now when I try to use sys-clk the console crashes and gives me "Error Code: 2001-0123 (0xf601)." Is sys-clk not updated to work on the newest version of tesla or something?
 
  • Haha
Reactions: impeeza

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,325
Trophies
3
XP
12,161
Country
Poland
I added the PR to libnx and built and installed libnx then rebuilt everything and installed.
Did testing. it still crashing in pokemon violet.
Checked your report and video on github and your issue is unrelated to my PR.

First of all you're only hiding overlay while this bug happens exclusively when exiting overlay.
And unlike in this bug, you got 0x2A8 (Prefetch abort) instead of 0x4A8 (Data Abort).

For this even fix with changing sleep to 50ms wouldn't help as it's never executed.
 
  • Like
  • Wow
Reactions: ELY_M and impeeza

ELY_M

Developer
Developer
Joined
Dec 6, 2007
Messages
710
Trophies
1
XP
1,694
Country
United States
I admit that I am lazy about closing overlay all way.



yes, simply hiding and unhiding overlay do cause crashes........

I have to fully exit the overlay by pressing the B button 2 or 3 times.
I did few tests this way and I have not got any crashes if I exit fully each time.
 

[Truth]

Well-Known Member
Member
Joined
Mar 21, 2006
Messages
1,060
Trophies
1
Location
Mushroom Kingdom
XP
2,396
Country
Germany
So by implementing this to tmemClose()
Diff:
         if (t->src_addr != NULL) {
+            MemoryInfo m = {0};
+            u32 p = 0;
+            while (m.perm == Perm_None) {
+                svcQueryMemory(&m, &p, (u64)(t->src_addr));
+                svcSleepThread(1000000);
+            }
             __libnx_free(t->src_addr);
         }
I have solved issue without using shenanigans I have implemented into libtesla. Though it will require PR to libnx and then manually compiling libnx to get it right until new libnx release will come. I am trying to see if I can push in this form into main libnx fork or I need to change something, for now my libnx fork is here:
https://github.com/masagrator/libnx/tree/patch-1

Thanks to SciresM for proposing idea to solve this.
So this needs to get pushed to libnx, then libtesla and then to all the different overlays?
Is that the correct path?

Still waiting to upgrade to FW 16.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Xdqwerty @ Xdqwerty:
    @BigOnYa, and since the default emulator is below average i downloaded some "replacements" like snes9x for snes games for example
    +1
  • Xdqwerty @ Xdqwerty:
    And I also have my ps3
    +1
  • BigOnYa @ BigOnYa:
    Yea ps3 is a beast still to today compared to most "sticks"
  • K3Nv2 @ K3Nv2:
    If you just want pi for emulation no point when Anbernic releases new shit every two seconds
    +1
  • BigOnYa @ BigOnYa:
    What's really cool about Pi's tho is you can have multiple SD cards with different OS on each SD card and change from say a gaming machine to a full fledged pc if wanted
  • K3Nv2 @ K3Nv2:
    Plus all bios are set up and usually includes at least 128gbs or 64
  • K3Nv2 @ K3Nv2:
    Yeah but if your main goal is just to play n64 and GameCube you can save about $50 and have the portability option
    +1
  • BigOnYa @ BigOnYa:
    True, but on 2 monitors at 4k. Its just want you want really, to each they own.
  • K3Nv2 @ K3Nv2:
    For a kids aspect Anbernic would be the better option they'd probably melt over the price on a good 4k display
    +1
  • BigOnYa @ BigOnYa:
    For that texasroo guy, I'd recommend the Spell and speak as his first system.
    +1
  • K3Nv2 @ K3Nv2:
    So they buy a pi5 kit for about $150 and say a 28" 4k display probably looking around $400 total
  • K3Nv2 @ K3Nv2:
    They'll be getting in the territory of portable Pcs anyway
    +1
  • BigOnYa @ BigOnYa:
    Again you get what you pay for, its like buying a S series for $300 but its only 1440p native, if you want true 4k, gotta get the X model for $500. But yea you right, when moms buying it anyways, you gotta stay cheap.
  • K3Nv2 @ K3Nv2:
    They could use HD out on their TV no real need for a monitor these days tbh the purists will disagree
  • K3Nv2 @ K3Nv2:
    I'm kind of phasing out on the need for wanting all these consoles cool to have but they just become dust build ups
  • BigOnYa @ BigOnYa:
    I here ya there, I have too many myself, and have hard time letting them go, since most of mine I've modded at some point. Anymore I just play Switch on the go, seriesx at home.
  • Xdqwerty @ Xdqwerty:
    ack my throat
  • K3Nv2 @ K3Nv2:
    I need to invest in some storage totes tbh
  • BigOnYa @ BigOnYa:
    Tots?
  • K3Nv2 @ K3Nv2:
    Tootles
  • BigOnYa @ BigOnYa:
    Tootles? Wtf
  • K3Nv2 @ K3Nv2:
    Oh tootles
  • BigOnYa @ BigOnYa:
    Oh totes , lol, like Tupperware storage, I gotcha
  • BigOnYa @ BigOnYa:
    I'm designing my own entertainment cabinet for my man cave, to store all my systems, then I'm also designing a power supply/HDMI switcher so I can switch to whichever system I want, and power it also. Already picked up the cabinet board, but tinkering with my drawings before start
  • BigOnYa @ BigOnYa:
    But yea, I have frogger arcade cabinet that I gutted and put a Pi4 then Pi5 into, but it never gets played much anymore, should sell it. Even when the kids come over, they don't want to play on it, just the xbox.
    BigOnYa @ BigOnYa: But yea, I have frogger arcade cabinet that I gutted and put a Pi4 then Pi5 into, but it never...