Commit Graph

74 Commits

Author SHA1 Message Date
ITotalJustice
070be1ff94 fix filebrowser touch (related to f2462cff81).
the fix in commit f2462cff81 broke split screen.
this commit properly fixes the touch and split screen buttons.
2025-06-17 11:46:34 +01:00
ITotalJustice
c5e3373fe1 fix filebrowser mount name not being displayed as the current option if translations are enabled 2025-06-17 11:00:56 +01:00
ITotalJustice
0789a69975 delete save file before restoring. always commit fs after every write + close, delete, rename, create. 2025-06-17 01:57:42 +01:00
ITotalJustice
99c1db3655 disable hdd->hdd threading. only open log write on write to allow for reads. log fw/ams version.
hdd->hdd threading is disabled due to a bug in libusbhsfs which causes a deadlock if 2 fs calls happen at the same time.
2025-06-17 00:57:46 +01:00
ITotalJustice
6b77cbb0c0 enable boost mode as early as possible during init, and exit boost as late as possible during exit. 2025-06-09 12:32:43 +01:00
ITotalJustice
aaf11211dc add basic error messages for internal sphaira errors. 2025-06-09 12:11:05 +01:00
ITotalJustice
ec1042efa3 rename Bcat -> BCAT, rename bcat folder to BCAT, better impl for stripping leading '/' for zip_add. 2025-06-07 20:27:36 +01:00
ITotalJustice
04f6e5d2a8 update homebrew menu when app is installed from the appstore, add same effect to a few other menus (unused). 2025-06-07 13:03:44 +01:00
ITotalJustice
f2462cff81 add save backup/restore, fix filebrowser touch screen, optimise all zip/unzip file code by using bigger stdio buffers. 2025-06-05 00:17:55 +01:00
ITotalJustice
cd0817bd11 add explicit sleep in between batch delete calls in order to not pin core3.
otherwise, core3 is pinned and button inputs (including the power button) become unresponsive.
2025-06-03 02:36:53 +01:00
ITotalJustice
4a59d1cfda add support for loading custom forwarder gif/logo from file. 2025-05-31 22:14:02 +01:00
ITotalJustice
2ef7742903 Merge branch 'multi_thread_everything' 2025-05-31 18:08:17 +01:00
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
5893cb575e fix ncz block installs, fix error module value being out of range, display error on install from filebrowser.
the issue with block installs was that i was not tracking the ncz block offset in between transfers.
this resulted in the block size being used for each transfer, rather then size-offset.

for blocks that were always compressed, this silently worked as zstd stream can handle multiple frames.
however, if there existed compressed and uncompressed blocks, then this bug would be exposed.

thanks to Marulv for reporting the bug.
2025-05-31 17:30:28 +01:00
ITotalJustice
390c1e870d multi-thread zip and unzip code. option to download appstore zip to mem. hasher mem support. 2025-05-30 12:34:29 +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
695102405b fix filebrowser split crash due to capturing the lambda by ref, 0.11.1 2025-05-27 17:59:06 +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
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
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
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
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
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
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
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
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
df5e27dd06 fix filebrowser crash caused when trying to select all files (L2) whilst a hidden file/folder exists.
this crash was found by @WE1ZARD.
to trigger it, press L2 in the filebrowser whilst a hidden file exists and the hide hidden is enabled.
the was due to GetEntry(i) internally using m_entries_current, and the select all was using the index from m_entries_current.
this would result in an index that goes oob, and as its a write, it crashes.
2025-05-03 13:25:09 +01:00
ITotalJustice
2244e73c53 change "yes, no" for boolean options to "on, off", to match N's sidebar. 2025-05-02 00:57:11 +01:00
ITotalJustice
7851f7f400 add option to extract zip to root, better name extract / compress options. 2025-05-01 18:28:35 +01:00
ITotalJustice
c53692022b add scrolling text to all grid based menus.
fixes #122
2025-04-30 23:56:40 +01:00
ITotalJustice
cca6326314 filebrowser add select al option by pressing L2 2025-04-30 16:55:33 +01:00
ITotalJustice
9176c6780a filebrowser move install forwarder option out of the advanced menu. 2025-04-30 16:49:19 +01:00
ITotalJustice
b1a6b12cf3 add zip extraction, add zip creation, themezer now displays the file name its extracting. 2025-04-30 16:42:05 +01:00
ITotalJustice
2c2f602d14 add gc_menu, add progress, icon, time remaining to progress bar (see full commit message).
- fix ignore distribution bit doing nothing.
- fix yati failing to parse control nca causing the transfer to abort.
- yati now uses ncm rather than ns to get the latest app version.
- improve ui::list input handling (it handles directional buttons now).
- progress bar displays speed and time remaining.
- added gc menu (taken from my gc installer nx and gci).
2025-04-27 20:01:13 +01:00
ITotalJustice
e2a1c8b5e3 fix yati not setting correct version, add support for using zip name when creating forwarder, remove some dead code.
fixes #126
fixes #127
2025-04-22 23:15:16 +01:00
ITotalJustice
21f6f4b74d [skip ci] fix file assoc always using internal name, fix menu showing wrong time
fixes #126
2025-04-22 00:08:26 +01:00
ITotalJustice
5a4a0f75f2 add support for mame and neogeo, as well as alias for rom folder names 2025-04-20 22:03:53 +01:00
ITotalJustice
89e82927ee add basic support for title installing 2025-04-20 14:12:12 +01:00
ITotalJustice
b1b0b13f2a fix filebrowser FsDirOpenMode_NoFileSize being passed
looks like fs ignores this flag as it was reporting the filesize regardless. however, if a file is created using
FsCreateOption_BigFile, then the filesize would return 0.
2025-01-22 13:01:38 +00:00