Commit Graph

  • ef25c3edc7 multi thread game dumps and file uploads. ITotalJustice 2025-05-20 22:50:05 +01:00
  • f956adabc3 add xci dumping, add xci cert and id set dump. ITotalJustice 2025-05-20 17:56:55 +01:00
  • 4244be9592 Fix handling of unicode filenames in usb_install_pc.py (#143) ⭐️NINIKA⭐️ 2025-05-20 14:45:59 +03:00
  • a7fc19e28a Pt patches (#140) Ny'hrarr 2025-05-20 05:00:39 -03:00
  • cf192fca85 fix hbmenu not being updated due to faulty string compare, bump version 0.10.1 -> 0.10.2 0.10.2 ITotalJustice 2025-05-19 20:34:22 +01:00
  • 041bb2bbe5 Added Ukranian language (#139) xHR 2025-05-19 21:57:15 +03:00
  • df558d5dcc bump version for new release 0.10.0 -> 0.10.1 0.10.1 ITotalJustice 2025-05-19 17:06:49 +01:00
  • 33de03a923 fix sd card dumps due to the folder not being created. ITotalJustice 2025-05-19 17:04:49 +01:00
  • 1000b9c8ec fix sphaira not detecting latest update as we went from 0.9 to 0.10. ITotalJustice 2025-05-19 16:23:45 +01:00
  • 74fddecebc bump version for new release 0.9.1 -> 0.10.0 0.10.0 ITotalJustice 2025-05-19 16:09:33 +01:00
  • 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. ITotalJustice 2025-05-19 16:07:24 +01:00
  • 5daca4354c add support for webdav uploads by creating missing folders, game now dumps to title/title[id].nsp ITotalJustice 2025-05-19 16:00:03 +01:00
  • da9235f58e fix upload url path not being encoded, add seek api for uploads. ITotalJustice 2025-05-19 12:06:43 +01:00
  • bd6566524c enable ftp in the ftp menu if it isn't already enabled. ITotalJustice 2025-05-19 08:32:05 +01:00
  • 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. ITotalJustice 2025-05-18 23:00:51 +01:00
  • 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). ITotalJustice 2025-05-18 20:30:04 +01:00
  • 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. ITotalJustice 2025-05-18 13:46:10 +01:00
  • 544272925d fix IsEmunand() failing due to the paths not being page aligned. ITotalJustice 2025-05-15 16:13:35 +01:00
  • 70a31be134 don't fail if the control nca cannot be parsed during install, as it may depend on ticket not yet installed. ITotalJustice 2025-05-15 15:25:03 +01:00
  • 55ae2a63d9 fix installing failing during setup if prod.keys isn't found. ITotalJustice 2025-05-15 15:14:02 +01:00
  • 5a53947a3e fix crash in list layout caused by rendering all previous hidden entries. ITotalJustice 2025-05-14 18:00:56 +01:00
  • 3bbb5ccb3c Update zh.json (#136) BIGBIGSUI 2025-05-14 07:29:04 +08:00
  • 83472f1020 fix game menu forcefully disabled manual loading of control data. this was done during testing / benchmarking, but i forgot to undo this. ITotalJustice 2025-05-14 00:06:36 +01:00
  • 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). ITotalJustice 2025-05-14 00:04:47 +01:00
  • 35abe363a6 optimise theme meta loading. ITotalJustice 2025-05-13 23:52:34 +01:00
  • 97d3fd396e optimise game menu for fw 20 - loading the control data is ran on its own thread, it does not block the main thread. allows for smooth scrolling like nintendos home menu. - on fw20+, sphaira manually parses the control data, rather than using ns. manually parsing takes 20-40ms, which is faster than ms which can take 50-500ms. - on fw19 and below, if the control data is not in ns cache, sphaira will manually parse the data as its twice as fast as ns. You can see how fast this is by loading the gamecard menu as that manually parses everything, and it loads the gamecard faster than the home menu ITotalJustice 2025-05-13 23:51:06 +01:00
  • b98ccb927e fix appstore status icons no longer being rounded (bug added in e279a70) ITotalJustice 2025-05-11 20:19:43 +01:00
  • db23f072a2 add sysmmc / emummc install enable options. ITotalJustice 2025-05-11 20:14:34 +01:00
  • 4d3d7e81d4 update libhaze to silence gcc 15 warning and run on core2 instead of core0. ITotalJustice 2025-05-11 03:45:48 +01:00
  • 441807bc53 fix building for gcc 15 ITotalJustice 2025-05-11 03:00:04 +01:00
  • 20e2d85843 remove bubbles, no one likes easter eggs apparently. ITotalJustice 2025-05-11 02:41:56 +01:00
  • e279a70606 add layout options to grid based menues. ITotalJustice 2025-05-11 02:39:03 +01:00
  • 5d9e24af31 use ns application event to detect when to re-scan for record changes. ITotalJustice 2025-05-04 20:37:36 +01:00
  • 078627e07b Update pt.json (#133) Ny'hrarr 2025-05-03 18:27:31 -03:00
  • 365ae2d0cb fix freeze if the usb menu is closed whilst a usb cable is not connected, 0.9.0 -> 0.9.1 0.9.1 ITotalJustice 2025-05-03 21:15:21 +01:00
  • 5b6e09b926 bump version for new release 0.8.2 -> 0.9.0 0.9.0 ITotalJustice 2025-05-03 18:01:49 +01:00
  • 7072647611 reduce usb install exit latency by waiting on a cancel uevent, rather than relying on a timeout. ITotalJustice 2025-05-03 17:17:53 +01:00
  • 30cf4826f8 add code for calculating games size, stubbed for now as the ns calls are too slow to be usable. ITotalJustice 2025-05-03 15:30:40 +01:00
  • ca47fc1f89 add (limited) sort options to game menu. getting the list of title_ids is very fast (less than 1ms), however parsing the control info, such as title names is very slow. depending on how many games the user has, blocking until we read all control info can take several seconds... we would only need to block if the user wants to sort by name. normally, we lazy load the control data, so we don't suffer from slow load times at all. i decided that its not worth slowing the whole system down just to give the option to sort by name. ITotalJustice 2025-05-03 15:08:25 +01:00
  • 16a2c84edd simplify right-side shortcuts impl, add gamecard and themezer to shortcut list, fix l2/r2 using wrong icons, sort l2/r2 so l2 displays first. some other changes: - shorten the next page and prev page to just next/prev in themezer. - remove misc shortcut name. the function itself still exists. ITotalJustice 2025-05-03 14:39:20 +01:00
  • 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. ITotalJustice 2025-05-03 13:17:51 +01:00
  • d95226f8c0 i18n::get should accept a string_view rather than char*, simplifies calling. ITotalJustice 2025-05-03 12:59:04 +01:00
  • 164fec5b73 fix right-side shortcut not displaying the correct name (again) when using translations. ITotalJustice 2025-05-03 12:51:12 +01:00
  • 8dad96f39f Update de.json (#130) glitched_nx 2025-05-02 23:48:48 +02:00
  • 2244e73c53 change "yes, no" for boolean options to "on, off", to match N's sidebar. ITotalJustice 2025-05-02 00:57:11 +01:00
  • 456cb02d2a [breaking change] update forwarder id generation, add "hide forwarders" to game menu. ITotalJustice 2025-05-02 00:52:08 +01:00
  • f310704472 bump nca key generation values for fw 20.0.0 ITotalJustice 2025-05-02 00:02:09 +01:00
  • 96e5a7081b clip rect and text drawing that go offscreen. ITotalJustice 2025-05-01 23:49:01 +01:00
  • 1c93e18822 replace all "enabled" and "disabled" options with the default "On" and "Off". ITotalJustice 2025-05-01 22:10:47 +01:00
  • ac152454f0 fix menu shortcut setting translated names for the config. ITotalJustice 2025-05-01 22:00:40 +01:00
  • 7851f7f400 add option to extract zip to root, better name extract / compress options. ITotalJustice 2025-05-01 18:28:35 +01:00
  • 2b561dd438 add option to change the right-side menu. ITotalJustice 2025-05-01 18:06:10 +01:00
  • 3545f557fc add scrolling text to popup list, handling clipping inside scrolling text, game menu changes - added delete entity in game menu - added list meta records to game menu ITotalJustice 2025-05-01 15:14:50 +01:00
  • 8dfb9b9ba6 reduce time for scrolling text from 1.5s to 1s. ITotalJustice 2025-05-01 00:04:32 +01:00
  • 7cf36cd25f reduces rounding of icons in grid based menus (15 -> 5). ITotalJustice 2025-04-30 23:59:05 +01:00
  • c53692022b add scrolling text to all grid based menus. ITotalJustice 2025-04-30 23:56:40 +01:00
  • 0f3b7da0b2 fix memleak when deleting homebrew, add game menu. ITotalJustice 2025-04-30 22:45:52 +01:00
  • e22daefb08 slightly round edges for progress and option box, add image support to option boxes ITotalJustice 2025-04-30 18:19:13 +01:00
  • 6fb5319da3 bump version for new release 0.8.1 -> 0.8.2 0.8.2 ITotalJustice 2025-04-30 17:21:04 +01:00
  • 6970fec554 irs connect to first available handle, irs display connected pad in the title. ITotalJustice 2025-04-30 17:16:59 +01:00
  • 36be56647f Revert "remove IRS menu" ITotalJustice 2025-04-30 17:05:44 +01:00
  • cca6326314 filebrowser add select al option by pressing L2 ITotalJustice 2025-04-30 16:55:33 +01:00
  • 9176c6780a filebrowser move install forwarder option out of the advanced menu. ITotalJustice 2025-04-30 16:49:19 +01:00
  • b1a6b12cf3 add zip extraction, add zip creation, themezer now displays the file name its extracting. ITotalJustice 2025-04-30 16:42:05 +01:00
  • c7cc11cc98 only add etag is dst file already exists, enable curl --compressed option. curl/libcurl does not send Accept-Encoding by default. many servers support sending compressed versions of files, to speed up transfers. this is ideal for the switch as its io is shit, but the cpu is mostly idle (4% cpu usage for sphaira). ITotalJustice 2025-04-30 00:40:04 +01:00
  • ec4b96b95d remove stale etag if the server stops sending etags back workaround for appstore images which stopped sending etags back. ITotalJustice 2025-04-29 22:41:33 +01:00
  • a2e343daa7 improve popup_list to highlight the currently selected item. ITotalJustice 2025-04-29 22:40:32 +01:00
  • b811c9e3cd Update zh.json (#129) BIGBIGSUI 2025-04-30 03:35:05 +08:00
  • 8ffaa56bc3 bump version for new release 0.8.0 -> 0.8.1 0.8.1 ITotalJustice 2025-04-29 20:03:23 +01:00
  • eca3358e57 add option to download default music. ITotalJustice 2025-04-29 20:01:51 +01:00
  • 757e380e08 play sound effect when gamecard is inserted. ITotalJustice 2025-04-29 19:23:37 +01:00
  • 6c1b5de932 label the shortcut for misc ITotalJustice 2025-04-29 19:06:33 +01:00
  • d79ac126f7 remove all strings and error codes in error_box.cpp, reduce binary by a further 60k. ITotalJustice 2025-04-29 18:56:55 +01:00
  • 2d7763444e remove Web menu the web browser on the switch is really bad, it shouldnt be used. i am removing this menu because its another option that gets in the way of other options, and code bloat. ITotalJustice 2025-04-29 18:42:32 +01:00
  • 1dafa2748c remove IRS menu i added the irs menu when i wanted to mess around with the sensor on the joycon. since then, i have used it a total of 0 times, and i don't think any users use it either. ITotalJustice 2025-04-29 18:37:43 +01:00
  • 9f7bf9581c add boost mode option for installing ITotalJustice 2025-04-29 18:33:02 +01:00
  • 8f39acbaa2 replace usb protocol with tinfoils protocol, in order to support applications supporting said protocol. - replace the python script with the one included with tinfoil, minor changes such as changing the supported extension, removing unused imports. - tested with the included script, fluffy and ns-usbloader on linux. a user was unable to get it working on mac however... - added build instructions to the readme, i think they're correct. - added install instructions to the readme. ITotalJustice 2025-04-29 18:11:07 +01:00
  • 81469d0ac9 remove PageAlignedVector from yati as it's no longer needed due to previous commit. ITotalJustice 2025-04-29 14:19:37 +01:00
  • 1eae35f072 simplify the usb transfer process by using an aligned buffer to transfer to/from. ITotalJustice 2025-04-29 14:17:12 +01:00
  • 5b82e07b1c fix building due to previous commit ITotalJustice 2025-04-29 13:08:32 +01:00
  • 73886c28ae add gc event waiting, fix control nca mounting, better skip nca support. - gamecards now wait for an event to change, rather than polling each frame. this reduces cpu load on core 3 slightly (3-4% less). - my understanding of fsOpenFileSystemWithId() was wrong, i thought it used the app_id for the id param. turns out it needs the program id (found in the nca header), this is why mounting some control ncas would fail. fs (and ncm) have a call in 17+ to get the program id, it does so by parsing the nca header. in yati, we already have the header so we can avoid the call. for the gamecard menu, we don't. so we can parse the nca header, or use the id offset (which we already have) to form the program id. - std::find_if in yati now takes args by ref rather than by value, avoid quite large copies. - stream installs can now parse the control nca. - if an nca is already installed, it is now skipped. this is regardless to whether it is not in ncm db. - nca skipping is technically supported for stream installs, however it is disabled for now as there needs to be a way to allow for the stream to continue reading and discarding data until the stream has finished. currently, if a ftp (stream) install is skipped, it will close the progress box and cause spahira to hang. this is because sphaira expects the stream to only be closed upon all data being read, so there's nothing more to process. - renamed the title_id field in nca header to program_id. ITotalJustice 2025-04-29 12:47:38 +01:00
  • eea09f6e57 [appstore] make author search case insensitive. ITotalJustice 2025-04-28 22:06:44 +01:00
  • 282c6e5493 bump version for release 0.7.0 -> 0.8.0 0.8.0 ITotalJustice 2025-04-27 21:01:45 +01:00
  • 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). ITotalJustice 2025-04-27 20:01:13 +01:00
  • f7f1254699 Merge pull request #128 from ITotalJustice/stream_installs ITotalJustice 2025-04-23 01:02:26 +01:00
  • 90f8a62823 display useful info in ftp menu (ip, port, user, pass, ssid, passphrase) stream_installs ITotalJustice 2025-04-23 01:00:36 +01:00
  • e2a1c8b5e3 fix yati not setting correct version, add support for using zip name when creating forwarder, remove some dead code. fixes #126 fixes #127 ITotalJustice 2025-04-22 23:15:16 +01:00
  • 21f6f4b74d [skip ci] fix file assoc always using internal name, fix menu showing wrong time fixes #126 ITotalJustice 2025-04-22 00:08:26 +01:00
  • 75d3b3ee0d [skip-ci] initial support for stream installs, add ftp installs. ITotalJustice 2025-04-21 23:23:59 +01:00
  • 0dde379932 don't return from usb menu on error, wait until the user presses B ITotalJustice 2025-04-21 13:33:36 +01:00
  • 9800bbecdf add basic support for gamecard installing ITotalJustice 2025-04-21 13:30:46 +01:00
  • 60e915c255 enable screenshot permissions in applet mode. ITotalJustice 2025-04-21 12:40:37 +01:00
  • 786f8a42fa send file name and size via usb, add requirements.txt for usb.py ITotalJustice 2025-04-21 01:41:20 +01:00
  • 5a4a0f75f2 add support for mame and neogeo, as well as alias for rom folder names ITotalJustice 2025-04-20 22:03:53 +01:00
  • 5aca92a2cc fix usb menu name being set as irs (copy-paste bug). 0.7.0 ITotalJustice 2025-04-20 18:11:17 +01:00
  • 7471885119 bump version for release 0.6.3 -> 0.7.0 ITotalJustice 2025-04-20 18:08:55 +01:00
  • 5038fb0c28 add basic usb install support (see commit message). ITotalJustice 2025-04-20 18:04:35 +01:00
  • ff9f493460 fix skwbd numpa not showing ITotalJustice 2025-04-20 14:18:02 +01:00
  • 89e82927ee add basic support for title installing ITotalJustice 2025-04-20 14:12:12 +01:00
  • 651d9fa495 remove theme shuffle option ITotalJustice 2025-04-19 22:55:08 +01:00