Commit Graph

433 Commits

Author SHA1 Message Date
ITotalJustice
cd6fed6aae devoptab: use fixed size array of entries rather than vector as vector can change/break pointers when it reallocs. fs: disable loading assoc when mounting custom fs. 2025-08-12 08:04:24 +01:00
ITotalJustice
7835ebc346 perf: async signal exit ftpsrv and nxlink thread in order to not block. add perf logging for exit. 2025-08-11 22:26:28 +01:00
ITotalJustice
3c33581a08 devoptab: cache all reads to max read throughput, now as fast as normal sd card reads, including compressed zips (80MiB/s). 2025-08-11 21:35:43 +01:00
ITotalJustice
3e9a8c9249 devoptab: only add new entry if mounting is successful. 2025-08-11 20:59:56 +01:00
ITotalJustice
d6c8f120c6 fs: add zip mount support. hash: fix not checking open result for file. fs: fix stdio not checking nullptr access. 2025-08-11 20:01:53 +01:00
ITotalJustice
cb2fa1abfc fs: add support for mounting nsp an xci files in the filebrowser. 2025-08-11 07:01:52 +01:00
ITotalJustice
25f2cfbff2 save: support for mounting save fs, add LRU cache for fatfs. add mounting nro romfs. 2025-08-10 17:31:22 +01:00
ITotalJustice
3404d4cece app: destroy widgets in reverse order on exit as the widgets are a stack. 2025-08-09 11:45:13 +01:00
ITotalJustice
44e1584461 fs: add support for mounting nca, save and gamecard fs. file picker inherits from browser. fix bugs (see below).
- fixed fs real path length not actually being 0x301, but instead 255. fixes #204
- file picker inherits from file browser now so there's a lot less duplicated code.
- file browser now saves the last highlighted file.
- fix bug in file browser where the new file path could be empty (ie not containing a /).
- added support for viewing qlaunch romfs.
- moved fs mount options to the top of the list (may revert).
2025-08-09 11:34:35 +01:00
ITotalJustice
8a16188996 fat: add support for mounting fat bis paritions (prodinfof, safe, user, system), inital work needed for fetching personalised es tickets. 2025-08-08 05:12:51 +01:00
ITotalJustice
70518762ae game_menu: remove stubbed option to enable/disable title cache.
the option was never actually implemented and there's no benifit to disabling it anyway.
2025-08-06 14:11:59 +01:00
ITotalJustice
a0370912da Add content/nca viewer for games menu, fix manual nca title fetch for chinese lang icon, rename "dump" to "export". 2025-08-06 14:11:05 +01:00
ITotalJustice
3fee702ee2 ftp_menu: fix passphrase ascii convert which could cause a stack overflow.
from my notes:
this converts the passphrase array into an ascii string
well, turns out std::transform does not actually increase the std::string size when pushing the new ascii characters
basically, std::string (normally) has small string optimisation. For this, they have a small array which it uses instead of allocating memory.

std::transform casts the std::string itr to a void*. sooo it was basically manually writing to the class, which just so happened to be the SSO buffer. however after 32chars, it runs out...and starts overwriting the stack. so this was a stack overflow lmao
only reason i found this is because i changed some optimisation flags, so the compiler ended up inlining std::transform, which detected the buffer overflow. and then i realised how fucked it was lol.
2025-08-04 20:17:14 +01:00
ITotalJustice
54d73a6d3b optimise: pass all large objects (std::function, std::string, structs) by const ref rather than value.
really, these functions should be passed by && and using std::forward on assignment.
however, this means writing a lot of extra code for every single class, as well as explicitly calling move
in a lot of cases.

In the case of std::string, passing by value and calling std::move is the correct approach, especially if the
string is created as an rvalue, then it is only created once and moved into the dest.
Whereas with a const ref, the string is created and then copied into the dst, basically creating 2 copies.
The same thing happens std::function, and well any object.

However, accepting everything by value sucks if you call a constructor from within a constructor, as now you need to create 2 impls
that accept by value and the other by rvalue. All of this extra code to have a more efficent impl just isn't worth it when, going by
the benchmarks, makes no measurable difference (i count anything within >= 1ms as measurable).
2025-08-04 18:58:20 +01:00
ITotalJustice
9fe9c9d491 themezer: only show latest release for nxtheme when prompting user to download nro. 2025-08-03 04:00:21 +01:00
ITotalJustice
4300c9ee1b filebrowser/picker: backport changes in totalsms (optimise zip peek, remove unused vars and code, optimise folder count, fix missed extension parse). 2025-08-03 03:26:24 +01:00
ITotalJustice
a3780bdcea filebrowser: add forwarder creator. 2025-08-03 00:58:03 +01:00
ITotalJustice
6554b68efa menu: add filepicker, sidebar: add file picker entry.
the filepicker is a stripped down version of the file browser. only file picking is supported atm, no "select folder" yet.
2025-08-02 22:19:48 +01:00
ITotalJustice
1a00db9d55 sidebar: add text input entry 2025-08-02 19:18:42 +01:00
ITotalJustice
fb3ad260da install: add enable prompt to filebrowser and gc menu when an install option is clicked whilst disabled. 2025-08-02 18:41:52 +01:00
ITotalJustice
ed02b0f260 sidebar: add callback when a disabled option is clicked. install: option to enable when a disabled option is clicked. 2025-08-02 18:30:56 +01:00
ITotalJustice
620334439c themezer: show option to launch nro. 2025-08-02 17:51:36 +01:00
ITotalJustice
ab5c54b47a themeze: prompt user to install theme after installing. 2025-08-02 17:47:09 +01:00
ITotalJustice
40e4616520 themezer: prompt user to download ThemeInjector if not installed on launch. 2025-08-02 17:21:07 +01:00
ITotalJustice
3ebb3bd055 option to hide homebrew. 2025-07-31 18:47:41 +01:00
ITotalJustice
25e19b22f7 fix broken link in readme for switch-010editor-templates 2025-07-31 03:05:47 +01:00
ITotalJustice
c67266fe1a display install options by default, but warn the user that installing is disabled an instruct them on how to enable. 2025-07-31 02:48:19 +01:00
ITotalJustice
92d747a0f5 remove seconds from the clock, fix long file name in info box for theme music. 2025-07-31 01:41:07 +01:00
ITotalJustice
79b52ed13e fix the spacing on some of the info boxes 2025-07-31 01:32:21 +01:00
ITotalJustice
bd3ad8782a bump ftpsrv and haze versions (ftpsrv 85b3cf0, haze 0be1523). haze now has 4gb+ support. 2025-07-31 01:23:50 +01:00
ITotalJustice
6b57619871 change default option when installing for nca verify.
the default options where to always verify the nca content, this was for brick protection.
however, users seem to not care about this protection and get frustrated with the default values,
seemingly unable to find the install menu to disable said options.

this change skips verify by default. less issues for me, less unhappy users, win win.
2025-07-30 23:28:25 +01:00
ITotalJustice
c8644c80cd add more info boxes to options, merge option.cpp changes from totalsms. 2025-07-30 23:26:15 +01:00
ITotalJustice
430ee2280a update scrolling using delta_time to allow for smooth scrolling at different refresh rates (ie, using fpslocker). 2025-07-30 18:03:50 +01:00
vanTheodore
f71c10619c Update es.json (#194) 2025-07-30 18:03:28 +01:00
ITotalJustice
b6497c03f6 backport widget changes from totalsms 2025-07-21 12:40:54 +01:00
ITotalJustice
ecb470b938 ghdl: display timestamp for each release and asset 2025-07-21 12:24:28 +01:00
ITotalJustice
a9d3734117 ghdl: list all releases 2025-07-21 11:23:43 +01:00
redraz
faf77d8212 Update ru.json (#192) 2025-07-21 10:34:10 +01:00
Ny'hrarr
3e6d7af720 Update pt.json (#189) 2025-07-21 10:33:57 +01:00
BIGBIGSUI
f69cf8130d Update zh.json (#187)
an updated zh.json.  hope it helps.
2025-07-21 10:33:42 +01:00
ITotalJustice
796208722e workflow: only push new workflow release on push, set specific cmake version, use nproc to use all cores when building. 2025-07-21 10:30:11 +01:00
ITotalJustice
85dbc54641 remove unused usb script 2025-07-21 10:20:58 +01:00
ITotalJustice
8381446a69 disable usb and ftp installs 2025-07-21 10:17:27 +01:00
ITotalJustice
97dc39620c use condivar in install stream to wait until the buffer is empty 2025-07-20 20:25:49 +01:00
ITotalJustice
7fb973c28d handle more usb errors, set max for notifications, usb transfer uses unique ptr over vector, show usb speed in usb menu. 2025-07-19 20:29:53 +01:00
ITotalJustice
4421ac1ceb use uevent in transfer loops to reduce latency between exiting and updating progress time. 2025-07-19 18:33:47 +01:00
ITotalJustice
159abfa246 bump libhaze version, multithread mtp transfers to maximise sd throughput (77MiB/s read, 40MiB/s write) 2025-07-19 17:45:39 +01:00
ITotalJustice
4b06700187 add info boxes, fix case sensitive path compares, many other changes (see comments)
- nca::ParseControl now gets the nacp base on the language.
- xci returns a more descriptive error and logs info during install.
- replace volatile with atmoic, label atmoic methods with volatile as per the standard.
- s2s usb install skips verifying the content as its being installed from another switch.
- fix game / save menu bug where it would only load the nacp if it has started yet, now it will force load even if its in progress.
  this fixes save file zips having empty names.
- game menu saves the application type, to be later used for displaying if its a gamecard (inserted or not), launched etc.
2025-07-19 17:33:28 +01:00
Chronoss
ee68ca54b8 Update fr.json (#182) 2025-06-25 19:31:22 +01:00
ITotalJustice
0bfd336796 always set FsCreateOption_BigFile in fs.cpp when creating 4GiB+ file. 2025-06-25 19:28:23 +01:00