Commit Graph

153 Commits

Author SHA1 Message Date
Yorunokyujitsu
fd765aa8c8 Updated theme, new translated strings, adjust left side split-screen x position. (#156)
* Add a new ThemeEntryID for split-screen and selected items and modify the theme.

* Adjust the position of the left side split-screen in the filebrowser menu.

* Add new strings and update Korean and Japanese translations.

* fix ja.json.

---------

Co-authored-by: ITotalJustice <47043333+ITotalJustice@users.noreply.github.com>
2025-05-31 18:02:53 +01:00
ITotalJustice
01bfcb05cd fix gamecard install due to fs==NULL. more explicit yields for sd card transfers for file based emummc. 2025-05-28 15:00:31 +01:00
ITotalJustice
6b56b7f7c2 make all threads preemptive. workaround file based emummc hanging due to fs r/w hanging the system.
the fix for file based emummc is to simply sleep between fs r/w to the sd card.
the performance impact is minimal, even with the reduced buffer size.

the above *only* applies for when using file based emummc. not affecting using partition or sysmmc.
2025-05-28 14:37:56 +01:00
ITotalJustice
89fbb10ee6 change update behaviour to update all paths where sphaira exists and better prompt the user how to update. 2025-05-27 22:17:50 +01:00
ITotalJustice
695102405b fix filebrowser split crash due to capturing the lambda by ref, 0.11.1 2025-05-27 17:59:06 +01:00
ITotalJustice
af4aa836a9 add gamecard trim detection. remove duplicate value in error box. 2025-05-27 15:35:52 +01:00
ITotalJustice
fb2272546a bump usbhsfs git tag to include hack for adaptor mounting. fix applet mode text being draw at wrong offset. 2025-05-27 00:55:26 +01:00
ITotalJustice
c11d9edc4e add support for changing the left-side menu.
fixes #148
2025-05-26 22:55:06 +01:00
ITotalJustice
e2a5454263 set fs view to the right side when split mode is enabled. 2025-05-26 20:27:54 +01:00
ITotalJustice
3ca82463cc mount hdd by default, add hdd write protect option. 2025-05-26 19:25:09 +01:00
ITotalJustice
793b36fd59 add hotkey for file browser to jump to advanced options (R2 + X). 2025-05-26 18:01:06 +01:00
ITotalJustice
66fe526754 add option to label trimmed xci dumps (disabled by default). 2025-05-26 17:55:54 +01:00
ITotalJustice
7c45d60e60 add nxmp and switch wave file assoc, remove old sphaira file assoc, replace ext/db assoc parse code with views::split 2025-05-26 17:42:32 +01:00
ITotalJustice
a9931a975d many more optimisations. cleaned up fs code. bug fixes etc (see below).
- fix usb using the wrong year when polling the timestamp.
- fs file/dir has been re-written to allow for simplified calling and remove the need of manually closing.
- add SetSize for stdio by using ftruncate.
- don't truncate the file when opened in stdio.
- add getcount api for stdio.
- display file/dir count in filebrowser for non-native fs.
- allow hash to be used on non-native fs.
- slightly optimise nro parsing by manually calculating nro size rather than doing an os call.
- slightly optimise nro parsing by keeping the fs struct alive between calls, rather than creating a new one on the stack.
- fix filebrowser peeking into zip files that are stored on non-sd fs.
- set the timestamp of a file moved to a stdio location (cut/paste).
- slightly optimise daybreak update folder detection by skipping opening/polling the dir size.
- set the fullpath of the file thats being hashed in progress box.
2025-05-26 17:06:04 +01:00
ITotalJustice
49abdc0590 hotkey R2 in filebrowser for when pressed along with L2, select all files. 2025-05-25 21:06:14 +01:00
ITotalJustice
f7c5ccfa87 huge optimisations (see below). Build with c++26 and c23.
- build with c++26 and c23, fixes warnings due to this change.
- use #embed over romfs where applicable.
- load all configs upfront in the app menu, massively improves boot time
- enable boost mode during load/scan time in all (slow loading) menus, huge load time improvement.
- enable boost mode when exiting the app, to speed up closing all the menus and saving the config.
- reduce the size of the nro nacp when loading to just the title + author + display version.
- add option to enable boost mode for all progress bar menus, huge perf improvement again.
- remove unused launch_count var from the playlog file.
- display full path when dumping.
- optimise appstore unzip code by iterating through the zip rather than finding a specific file, reduces retroarch extract time from 52s to 26s.

overall, this commit has reduced boot time from 0.4s to 0.3s and massively increased load times of other menus.
(it also reduced the binary size by 4kb, so yay)
2025-05-25 20:57:03 +01:00
ITotalJustice
5ce23f29fa GC add initial data and UID dumping (credit to nxdumptool). Fix gc bug where ns wasn't closed. Fix usb s2s being an option if dumping the bins. Always remount GC after storage has been mounted. 2025-05-25 13:24:03 +01:00
ITotalJustice
be88bdb567 initial work towards support standard nsp spec.
see #147
2025-05-24 23:56:42 +01:00
ITotalJustice
1bff57f9c9 Merge branch 'master' into dev 2025-05-24 23:40:52 +01:00
Yorunokyujitsu
4172d5d5b6 Added new strings and update Korean, Japanese lang. (#146)
* Added new strings and update Korean, Japanese lang.

* Update ko.json, ja.json.
2025-05-24 23:32:38 +01:00
ITotalJustice
1cdea981de workaround for time / battery % x position changing every few seconds.
fixes #142
2025-05-24 23:13:53 +01:00
ITotalJustice
22ebfd4a82 fs display hdd at the top of mount list for quick access, change xci dump folder to Gamecard. 2025-05-24 22:31:24 +01:00
ITotalJustice
798ac47487 limit fs hash to a single file. 2025-05-24 22:17:12 +01:00
ITotalJustice
15721b8e8a split screen mode for fs. fix game dump. scrolling text for fs, progress, menu base. display icon when dumping. 2025-05-24 21:55:10 +01:00
ITotalJustice
d43ca37875 add file hashing to the file browser (crc32, md5, sha1, sha256) 2025-05-23 17:02:35 +01:00
ITotalJustice
d8b2896bed fix native dump, fix xci dumps going to nsp folder.
native dump broke with prev commit due to not using the sd card, instead using an empty fs.
2025-05-23 13:07:00 +01:00
ITotalJustice
6475f4316a simplify stdio/native file paths by sharing the same code. 2025-05-23 12:44:56 +01:00
ITotalJustice
93c38da742 add support for mounting stdio (hdd) in the file browser. 2025-05-23 12:23:28 +01:00
ITotalJustice
8070268d2a add hdd dump support, cleanup dump code into a single generic file. 2025-05-22 15:50:50 +01:00
ITotalJustice
2e6d757852 update usbds_getspeed to match pr, fix appstore install returning a bool instead of Result. 2025-05-21 21:52:54 +01:00
ITotalJustice
a91550174a add dump options, allow for gamecard menu to be accessed without install enabled. 2025-05-21 19:52:22 +01:00
ITotalJustice
654f3a1446 replace progress box result from bool to Result. Display error box if progress box fails. 2025-05-21 16:50:18 +01:00
ITotalJustice
da33b9a6b9 add usbds speed / max packet detection, add zlt support for usbds, fix game usb transfer bug (see below).
due to the previous commit, i broke dumping multiple games via usb as the stream offset wasn't reset.
because of this, the first transfer would complete, but the 2nd one would fail.
2025-05-21 14:43:18 +01:00
ITotalJustice
fe2a1a3a80 add support for streamed usb upload, multi thread usb uploads / dumps.
Some notes i made when adding stream support:
The tinfoil API makes it hard / impossible to multi thread the file upload because each data transfer passes the the file name and offset, meaning that it can and will change files and offset in the middle of a transfer
So that prevents the read thread from running freely in the background and the pull thread pulling data when requested.
The extension adds a flag to the usb header which if set, enables stream mode (same as ftp installs). This removes random access, but allows for multi threading as the data will be requested in order.
2025-05-21 13:19:46 +01:00
ITotalJustice
a67171e2b8 disable sleep whilst downloading, uploading, using usb, inside ftp menu. 2025-05-20 23:33:51 +01:00
ITotalJustice
ef25c3edc7 multi thread game dumps and file uploads.
previous uploads were all single threaded, which meant that it only uploaded as fast as the slowest source.
usb transfer is still single threaded due it being random access for both files and data, making it
hard for the read thread to run freely.
2025-05-20 22:50:05 +01:00
ITotalJustice
f956adabc3 add xci dumping, add xci cert and id set dump.
still missing uid and initial dumping.
2025-05-20 17:56:55 +01:00
ITotalJustice
cf192fca85 fix hbmenu not being updated due to faulty string compare, bump version 0.10.1 -> 0.10.2 2025-05-19 20:34:22 +01:00
xHR
041bb2bbe5 Added Ukranian language (#139) 2025-05-19 19:57:15 +01:00
ITotalJustice
33de03a923 fix sd card dumps due to the folder not being created. 2025-05-19 17:04:49 +01:00
ITotalJustice
1000b9c8ec fix sphaira not detecting latest update as we went from 0.9 to 0.10. 2025-05-19 16:23:45 +01:00
ITotalJustice
a64d4dce7a remove ns event from games menu (see below).
turns out that the event is auto cleared when waited.
this meant that if sphaira handled the event before qlaunch got chance to handle it,
then qlaunch won't update when app records changed.

this can result in a gamecard not being mounted, deleted games still apearing, installed games
not being displayed etc...
2025-05-19 16:07:24 +01:00
ITotalJustice
5daca4354c add support for webdav uploads by creating missing folders, game now dumps to title/title[id].nsp 2025-05-19 16:00:03 +01:00
ITotalJustice
da9235f58e fix upload url path not being encoded, add seek api for uploads. 2025-05-19 12:06:43 +01:00
ITotalJustice
bd6566524c enable ftp in the ftp menu if it isn't already enabled. 2025-05-19 08:32:05 +01:00
ITotalJustice
eadc46b0e4 add support for file uploads in the file browser, optimise curl single thread download.
- curl now keeps the handle alive for single threaded downloads, rather than creating it each time.
2025-05-18 23:00:51 +01:00
ITotalJustice
71df5317be add game dump uploading, fix download progress using u32 instead of s64, add progress and title for usb game dump.
- added support for custom upload locations, set in /config/sphaira/locations.ini
- add support for various auth options for download/upload (port, pub/priv key, user/pass, bearer).
2025-05-18 20:30:04 +01:00
ITotalJustice
bd7eadc6a0 add game dumping, add game transfer (switch2switch) via usb, add multi game selecting, fix bugs (see below).
- added more es commands.
- fixed usb install potential hang if the exit command is sent, but the client stops responding (timeout is now 3s).
- added multi select to the games menu.
- added game dumping.
- added switch2switch support by having a switch act as a usb client to transfer games.
- replace std::find with std::ranges (in a few places).
- fix rounding of icon in progress box being too round.
- fix file copy helper in progress box not updating the progress bar.
2025-05-18 13:46:10 +01:00
ITotalJustice
83472f1020 fix game menu forcefully disabled manual loading of control data.
this was done during testing / benchmarking, but i forgot to undo this.
2025-05-14 00:06:36 +01:00
ITotalJustice
0167bf034c gc menu now tries to load control data from ns cache before manually loading.
on fw 19 and below, loading from cache takes ~5ms, whereas manually loading takes ~20ms.
manually loading is still faster than relying on ns to load control from storage (~50ms).
2025-05-14 00:04:47 +01:00