<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://www.gamebrew.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=HydeWing</id>
	<title>GameBrew - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://www.gamebrew.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=HydeWing"/>
	<link rel="alternate" type="text/html" href="https://www.gamebrew.org/wiki/Special:Contributions/HydeWing"/>
	<updated>2026-07-18T06:50:10Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=UndertaleModTool_Switch&amp;diff=205715</id>
		<title>UndertaleModTool Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=UndertaleModTool_Switch&amp;diff=205715"/>
		<updated>2026-07-17T02:09:14Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.9.1.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=UndertaleModTool&lt;br /&gt;
|image=undertalemodtoolnx.png&lt;br /&gt;
|description=The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games).&lt;br /&gt;
|author=krzys-h&lt;br /&gt;
|lastupdated=2026/07/13&lt;br /&gt;
|type=Hack Utilities&lt;br /&gt;
|version=0.9.1.2&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|downloadraw=[https://github.com/krzys-h/UndertaleModTool/releases/tag/bleeding-edge Bleeding Edge] - [https://github.com/UnderminersTeam/UndertaleModTool/releases/tag/0.9.1.2 Stable Download]&lt;br /&gt;
|website=https://gamebanana.com/tools/6647&lt;br /&gt;
|source=https://github.com/krzys-h/UndertaleModTool&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--undertalemodtoolnx.7z--&amp;gt;&lt;br /&gt;
The most complete tool for modding, decompiling and unpacking Undertale (and other Game Maker: Studio games).&lt;br /&gt;
&lt;br /&gt;
UndertaleModTool has a few different versions to choose from. The differences are as follows:&lt;br /&gt;
* GUI (default) - the tool has a full graphical interface, making data file viewing and manipulation convenient.&lt;br /&gt;
* CLI - the tool is accessible only via a command-line interface, which is useful for automation and quick tasks, but is more difficult to use.&lt;br /&gt;
* Single file - the tool is only one executable, with all dependencies embedded within it. This makes your folders cleaner, however it can also cause stability issues in certain cases.&lt;br /&gt;
* Non-single file (default) - all dependencies are not embedded within the executable, and are now located right next to it. Choose this if you don&#039;t care about finding the right executable within ~300 DLL files, or if the stability issues from the Single file build affect you.&lt;br /&gt;
&lt;br /&gt;
Documentation is available on [https://github.com/krzys-h/UndertaleModTool/wiki UndertaleModTool wiki]. &lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Can read every single byte from the data file for latest versions of Undertale, Deltarune, and most other GameMaker games, and then recreate a byte-for-byte exact copy from the decoded data.&lt;br /&gt;
* Properly handles all of the pointers in the file so that if you add/remove stuff, make things longer/shorter, move them around, etc., the file format won&#039;t break.&lt;br /&gt;
* An editor which lets you change (almost) every single value, including unknown ones.&lt;br /&gt;
* Includes a simple room/level editor.&lt;br /&gt;
* Allows for GML VM code editing. This means you can add any custom code to a game, either using the built-in GML compiler or GML assembly. (YYC is not supported for this.)&lt;br /&gt;
* High-level GML decompiler and compiler. Supports a large range of GameMaker versions, and most important GML features (still missing a few).&lt;br /&gt;
* Support for running scripts that automatically modify your data file (or perform other nefarious tasks). This can be used for mod distribution, aside from other methods such as file patches/project systems.&lt;br /&gt;
* All core functionality extracted into a library for use in external tools.&lt;br /&gt;
* Can generate a &amp;lt;code&amp;gt;.yydebug&amp;lt;/code&amp;gt; file for the GM:S debugger so that you can edit variables live! (see [https://github.com/UnderminersTeam/UndertaleModTool/wiki/Corrections-to-GameMaker-Studio-1.4-data.win-format-and-VM-bytecode,-.yydebug-format-and-debugger-instructions#yydebug-file-format here])&lt;br /&gt;
* Automatic file associations for all GameMaker related data files. This is opt-in at the first boot of the tool, and can also be disabled by having a &amp;lt;code&amp;gt;dna.txt&amp;lt;/code&amp;gt; file next to the executable.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/undertalemodtoolnx2.png&lt;br /&gt;
&lt;br /&gt;
[https://gamejolt.com/games/UndertaleBnP/574044 Undertale: Bits and Pieces] &amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/undertalemodtoolnx3.png&lt;br /&gt;
&lt;br /&gt;
[https://gamejolt.com/games/ribbitmod/671888 RIBBIT - The Deltarune Mod] &amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/undertalemodtoolnx4.png&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
[https://github.com/krzys-h/UndertaleModTool/releases Release notes.]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/krzys-h/UndertaleModTool&lt;br /&gt;
* GameBanana - https://gamebanana.com/tools/6647&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Ultrahand_Overlay_Switch&amp;diff=205714</id>
		<title>Ultrahand Overlay Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Ultrahand_Overlay_Switch&amp;diff=205714"/>
		<updated>2026-07-17T02:09:09Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 2.5.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=Ultrahand Overlay&lt;br /&gt;
|image=ultrahandoverlaynx.png&lt;br /&gt;
|description=The fully craft-able overlay executor. Create directories, manage files, and customize configurations effortlessly using simple ini files.&lt;br /&gt;
|author=ppkantorski&lt;br /&gt;
|lastupdated=2026/07/10&lt;br /&gt;
|type=Overlays&lt;br /&gt;
|version=2.5.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://github.com/ppkantorski/Ultrahand-Overlay/releases&lt;br /&gt;
|website=https://gbatemp.net/threads/ultrahand-overlay-the-fully-craft-able-overlay-executor.633560/&lt;br /&gt;
|source=https://github.com/ppkantorski/Ultrahand-Overlay&lt;br /&gt;
|donation=https://ko-fi.com/X8X3VR194&lt;br /&gt;
}}&amp;lt;!--ultrahandoverlaynx.7z--&amp;gt;&lt;br /&gt;
Ultrahand Overlay is a fully scriptable overlay menu ecosystem for the Nintendo Switch.&lt;br /&gt;
&lt;br /&gt;
Accessible instantly via hotkey from any game or application, it provides a powerful custom command language for managing files, configurations, and system settings. Built on [https://github.com/ppkantorski/libultrahand libultrahand] (an enhanced fork of [https://github.com/WerWolv/libtesla libtesla]), Ultrahand is a full drop-in replacement for Tesla Menu.&lt;br /&gt;
&lt;br /&gt;
Every existing Tesla overlay (&amp;lt;code&amp;gt;.ovl&amp;lt;/code&amp;gt;) works without modification.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
=== For Users ===&lt;br /&gt;
* Instantly accessible from any game via hotkey or swipe gesture - no game suspension required.&lt;br /&gt;
* Launch and manage overlays and packages with assignable per-item key combos.&lt;br /&gt;
* Install and run community packages from [https://github.com/ppkantorski/Ultrahand-Packages Ultrahand Packages].&lt;br /&gt;
* Control volume (up to 150% via bundled audio patch), backlight, and system settings on the fly.&lt;br /&gt;
* Real-time progress feedback for downloads, copies, and installs.&lt;br /&gt;
* Full touch support - scrolling, tapping, long-tap, and swipe gestures work throughout the entire UI.&lt;br /&gt;
* Customizable themes, wallpapers, sound packs, and UI layout.&lt;br /&gt;
* Browser-based [https://ppkantorski.github.io/Ultrahand-Wallpaper/ Wallpaper Designer] - crop, adjust, and export ready-to-drop &amp;lt;code&amp;gt;.rgba&amp;lt;/code&amp;gt; wallpapers (448×720).&lt;br /&gt;
* Toast notification system - packages and external sysmodules/apps can push notifications to the overlay via JSON &amp;lt;code&amp;gt;.notify&amp;lt;/code&amp;gt; files.&lt;br /&gt;
* A growing ecosystem of [https://github.com/ppkantorski/libultrahand libultrahand]-based overlays is available, all launchable and manageable directly from Ultrahand:&lt;br /&gt;
** [https://github.com/ppkantorski/UltraGB-Overlay UltraGB] - Game Boy / GBC emulator running on top of any game.&lt;br /&gt;
** [https://github.com/ppkantorski/Tetris-Overlay Tetris] - Fully playable Tetris running as an overlay.&lt;br /&gt;
** [https://github.com/ppkantorski/sys-tune sys-tune] - Background music player.&lt;br /&gt;
** [https://github.com/ppkantorski/Status-Monitor-Overlay Status Monitor] - Real-time CPU/GPU/RAM, temps, battery, and frequency stats.&lt;br /&gt;
** [https://github.com/ppkantorski/FPSLocker FPSLocker] - Custom FPS targets and display refresh rates for retail games.&lt;br /&gt;
** [https://github.com/ppkantorski/sys-clk sys-clk] - Per-game CPU/GPU/memory overclocking and underclocking.&lt;br /&gt;
** [https://github.com/ppkantorski/ovl-sysmodules ovl-sysmodules] - Toggle system modules and monitor memory usage on the fly.&lt;br /&gt;
** [https://github.com/ppkantorski/QuickNTP QuickNTP] - One-tap NTP time sync.&lt;br /&gt;
** [https://github.com/ppkantorski/Fizeau Fizeau] - Color temperature, saturation, gamma, and contrast adjustment.&lt;br /&gt;
** [https://github.com/ppkantorski/NX-FanControl NX-FanControl] - Custom fan curve control.&lt;br /&gt;
* For a fuller list, see [https://github.com/ppkantorski#ultrahand-overlays Ultrahand Overlays].&lt;br /&gt;
&lt;br /&gt;
=== For Package Devs ===&lt;br /&gt;
A rich INI-based GUI scripting environment with:&lt;br /&gt;
* &#039;&#039;&#039;Launch integration&#039;&#039;&#039; - assignable hotkey combos per package, hide/star state, and boot/exit package hooks (&amp;lt;code&amp;gt;boot_package.ini&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;exit_package.ini&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Overlay control&#039;&#039;&#039; - launch overlays, execute package sections, navigate back, exit to menu&lt;br /&gt;
* &#039;&#039;&#039;Dynamic UI&#039;&#039;&#039; - toggles, sliders, dropdowns, tables (drawn directly or loaded from a text file), rich toast notifications (title, duration, alignment, icon), &amp;lt;code&amp;gt;set-footer&amp;lt;/code&amp;gt;, and page/theme/wallpaper &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Status bar widget&#039;&#039;&#039; - opt-in clock, temperature, and battery overlay widget&lt;br /&gt;
* &#039;&#039;&#039;Language translations&#039;&#039;&#039; - package UI strings are automatically translated at render time based on the active system language&lt;br /&gt;
* &#039;&#039;&#039;Notifications&#039;&#039;&#039; - &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;notify-now&amp;lt;/code&amp;gt; commands push inline toast messages from scripts; dropping a &amp;lt;code&amp;gt;.notify&amp;lt;/code&amp;gt; JSON file to &amp;lt;code&amp;gt;/config/ultrahand/notifications/&amp;lt;/code&amp;gt; queues a persistent API notification that displays until dismissed&lt;br /&gt;
* &#039;&#039;&#039;Placeholders&#039;&#039;&#039; - INI, JSON, hex, list, file, and timestamp sources; hardware info (&amp;lt;code&amp;gt;{ams_version}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{hos_version}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{title_id}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{build_id}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ram_vendor}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{local_ip}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{volume}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{backlight}&amp;lt;/code&amp;gt;, fuse data, and more); math and string transforms&lt;br /&gt;
* &#039;&#039;&#039;Conditional logic&#039;&#039;&#039; - &amp;lt;code&amp;gt;try:&amp;lt;/code&amp;gt; blocks, &amp;lt;code&amp;gt;path_exists&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;erista:&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;mariko:&amp;lt;/code&amp;gt; hardware guards, version comparisons&lt;br /&gt;
* &#039;&#039;&#039;File operations&#039;&#039;&#039; - copy, move, delete, rename, mkdir, touch, mirror, compare, flag, dot-clean&lt;br /&gt;
* &#039;&#039;&#039;Download &amp;amp; extraction&#039;&#039;&#039; - download with retry, unzip; performs a one-time NTP sync to &amp;lt;code&amp;gt;pool.ntp.org&amp;lt;/code&amp;gt; on first download to prevent SSL handshake failures&lt;br /&gt;
* &#039;&#039;&#039;INI editing&#039;&#039;&#039; - get/set values and keys, add/rename/remove sections and keys, pattern-matched bulk edits&lt;br /&gt;
* &#039;&#039;&#039;JSON editing&#039;&#039;&#039; - get/set values and keys&lt;br /&gt;
* &#039;&#039;&#039;Hex editing&#039;&#039;&#039; - edit by offset, swap, string, decimal, reversed decimal, custom pattern offset, and hex pattern replacement&lt;br /&gt;
* &#039;&#039;&#039;Mod conversion&#039;&#039;&#039; - &amp;lt;code&amp;gt;.pchtxt&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;.ips&amp;lt;/code&amp;gt; or Atmosphere cheat format&lt;br /&gt;
* &#039;&#039;&#039;System control&#039;&#039;&#039; - reboot (Hekate boot/ini/UMS/payload targets), shutdown, volume, backlight, region&lt;br /&gt;
&lt;br /&gt;
See the [https://github.com/ppkantorski/Ultrahand-Overlay/wiki Wiki] for full documentation.&lt;br /&gt;
&lt;br /&gt;
=== For Overlay Devs ===&lt;br /&gt;
Overlays built on [https://github.com/ppkantorski/libultrahand libultrahand] get access to the full &amp;lt;code&amp;gt;libultra&amp;lt;/code&amp;gt; utility suite plus first-class Ultrahand integration:&lt;br /&gt;
* &#039;&#039;&#039;Tesla compatibility&#039;&#039;&#039; - full drop-in replacement for libtesla; existing overlays work without modification&lt;br /&gt;
* &#039;&#039;&#039;Improved rendering&#039;&#039;&#039; - enhanced rendering performance and expanded shape primitives compared to libtesla&lt;br /&gt;
* &#039;&#039;&#039;Bug fixes&#039;&#039;&#039; - title ID change foreground bug, underscan bug, and screenshot transparency bug all resolved versus stock libtesla&lt;br /&gt;
* &#039;&#039;&#039;Full touch support&#039;&#039;&#039; - complete touch input handling with proper scrolling, tap, long-tap, and swipe gesture support (a significant improvement over libtesla&#039;s limited touch implementation)&lt;br /&gt;
* &#039;&#039;&#039;Launch integration&#039;&#039;&#039; - assignable combos, hide/star state, and boot/exit package hooks&lt;br /&gt;
* &#039;&#039;&#039;Per-overlay themes&#039;&#039;&#039; - independent theme overrides scoped to your overlay&lt;br /&gt;
* &#039;&#039;&#039;Per-overlay wallpapers&#039;&#039;&#039; - custom wallpaper support with automatic heap-aware fallback&lt;br /&gt;
* &#039;&#039;&#039;Status bar widget&#039;&#039;&#039; - opt-in clock, temperature, and battery overlay widget&lt;br /&gt;
* &#039;&#039;&#039;Language translations&#039;&#039;&#039; - automatic string translation at render time based on the active language&lt;br /&gt;
* &#039;&#039;&#039;Notifications&#039;&#039;&#039; - call &amp;lt;code&amp;gt;tsl::notification-&amp;amp;gt;show()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;tsl::notification-&amp;amp;gt;showNow()&amp;lt;/code&amp;gt; to push toast messages from overlay code, with configurable text, font size, priority, duration, alignment, and icon&lt;br /&gt;
* &#039;&#039;&#039;File &amp;amp; path utilities&#039;&#039;&#039; - copy, move, delete, mkdir, wildcard matching, and directory traversal&lt;br /&gt;
* &#039;&#039;&#039;Download &amp;amp; extraction&#039;&#039;&#039; - curl-based file downloads and zip extraction; performs a one-time NTP sync to &amp;lt;code&amp;gt;pool.ntp.org&amp;lt;/code&amp;gt; on first download to prevent SSL handshake failures&lt;br /&gt;
* &#039;&#039;&#039;INI, JSON &amp;amp; hex utilities&#039;&#039;&#039; - full read/write access to INI files, JSON files, and binary hex data&lt;br /&gt;
* &#039;&#039;&#039;Mod conversion&#039;&#039;&#039; - &amp;lt;code&amp;gt;.pchtxt&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;.ips&amp;lt;/code&amp;gt; or Atmosphere cheat format&lt;br /&gt;
* &#039;&#039;&#039;String utilities&#039;&#039;&#039; - trim, split, format, version parsing, placeholder resolution&lt;br /&gt;
* &#039;&#039;&#039;Audio &amp;amp; haptics&#039;&#039;&#039; - WAV sound playback with volume control and rumble feedback&lt;br /&gt;
&lt;br /&gt;
See [https://github.com/ppkantorski/libultrahand libultrahand] for full documentation.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Quick Install (Recommended):&lt;br /&gt;
* Download the latest [https://github.com/ppkantorski/Ultrahand-Overlay/releases/latest/download/sdout.zip &amp;lt;code&amp;gt;sdout.zip&amp;lt;/code&amp;gt;] and extract it to the root of your SD card. It includes everything needed: &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ovlmenu.ovl&amp;lt;/code&amp;gt;, language files, themes, sound packs, and the required folder structure. Boot / reboot and launch Ultrahand with the default hotkey (&amp;lt;code&amp;gt;ZL+ZR+DDOWN&amp;lt;/code&amp;gt;) or any Tesla-compatible combo.&lt;br /&gt;
&lt;br /&gt;
Manual Install:&lt;br /&gt;
* Download and install the latest [https://github.com/ppkantorski/nx-ovlloader nx-ovlloader].&lt;br /&gt;
* Place [https://github.com/ppkantorski/Ultrahand-Overlay/releases/latest/download/ovlmenu.ovl &amp;lt;code&amp;gt;ovlmenu.ovl&amp;lt;/code&amp;gt;] at &amp;lt;code&amp;gt;/switch/.overlays/ovlmenu.ovl&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Warning:&#039;&#039;&#039; This will replace Tesla Menu if it is installed.&lt;br /&gt;
* Boot / reboot and launch Ultrahand with the default hotkey (&amp;lt;code&amp;gt;ZL+ZR+DDOWN&amp;lt;/code&amp;gt;) or any Tesla-compatible combo.&lt;br /&gt;
* On first launch, Ultrahand creates &amp;lt;code&amp;gt;/config/ultrahand/&amp;lt;/code&amp;gt; and generates a starter &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt; at &amp;lt;code&amp;gt;/switch/.packages/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* If a package does not appear in the menu, try running &amp;amp;quot;Fix Bit Archive&amp;amp;quot; in Hekate.&lt;br /&gt;
&lt;br /&gt;
For available community packages, see [https://github.com/ppkantorski/Ultrahand-Packages Ultrahand Packages].&lt;br /&gt;
&lt;br /&gt;
== Settings Overview ==&lt;br /&gt;
Access the Settings menu by pressing &amp;lt;code&amp;gt;PLUS&amp;lt;/code&amp;gt; from the main screen.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Key Combo&#039;&#039;&#039; - Configure the hotkey used to open Ultrahand&lt;br /&gt;
* &#039;&#039;&#039;Language&#039;&#039;&#039; - Select UI language (loaded from &amp;lt;code&amp;gt;/config/ultrahand/lang/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &#039;&#039;&#039;Notifications&#039;&#039;&#039; - Toast behavior and API notification settings&lt;br /&gt;
** Silence notifications, set max slots, toggle startup notification&lt;br /&gt;
** External sysmodules/apps can push notifications via &amp;lt;code&amp;gt;.notify&amp;lt;/code&amp;gt; JSON files in &amp;lt;code&amp;gt;/config/ultrahand/notifications/&amp;lt;/code&amp;gt;; per-app filtering and 50×50 RGBA icons supported&lt;br /&gt;
** &#039;&#039;&#039;API Toggle Hotkey&#039;&#039;&#039; - hold &amp;lt;code&amp;gt;MINUS&amp;lt;/code&amp;gt; ~4s to enable/disable API notifications on the fly&lt;br /&gt;
* &#039;&#039;&#039;System&#039;&#039;&#039; - View device info and adjust overlay memory heap size (4 / 6 / 8 MB)&lt;br /&gt;
* &#039;&#039;&#039;Software Update&#039;&#039;&#039; - Check for and install updates from within the overlay&lt;br /&gt;
* &#039;&#039;&#039;Theme&#039;&#039;&#039; - Select a theme from &amp;lt;code&amp;gt;/config/ultrahand/themes/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Sounds&#039;&#039;&#039; - Select a sound-effect pack from &amp;lt;code&amp;gt;/config/ultrahand/.sounds/&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Wallpaper&#039;&#039;&#039; - Set a background wallpaper (requires 6 MB+ heap; &amp;lt;code&amp;gt;.rgba&amp;lt;/code&amp;gt; format, 448×720 px)&lt;br /&gt;
* &#039;&#039;&#039;Widget&#039;&#039;&#039; - Toggle individual status bar elements:&lt;br /&gt;
** Clock, SOC temperature, PCB temperature, battery&lt;br /&gt;
** Backdrop, extended backdrop, border&lt;br /&gt;
* &#039;&#039;&#039;Miscellaneous&#039;&#039;&#039; - Granular toggles including:&lt;br /&gt;
** Swipe-to-open, haptic feedback, auto NTP sync&lt;br /&gt;
** Page recall, launch recall&lt;br /&gt;
** Packages menu, user guide, show/hide delete, show/hide unsupported overlays&lt;br /&gt;
** Overlay and package version display&lt;br /&gt;
&lt;br /&gt;
Per-overlay and per-package launch combos can be assigned independently via the overlay/package settings menu (&amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Writing Packages ==&lt;br /&gt;
Packages live in &amp;lt;code&amp;gt;/switch/.packages/&amp;amp;lt;YOUR_PACKAGE_NAME&amp;amp;gt;/&amp;lt;/code&amp;gt; and are configured with a &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt; file. A minimal example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-ini&amp;quot;&amp;gt;;title=&#039;My Package&#039;&lt;br /&gt;
;version=1.0.0&lt;br /&gt;
;creator=YourName&lt;br /&gt;
&lt;br /&gt;
[Copy Config]&lt;br /&gt;
copy /switch/.packages/package.ini /config/mypackage/&lt;br /&gt;
&lt;br /&gt;
[Reboot to Hekate]&lt;br /&gt;
;hold=true&lt;br /&gt;
reboot hekate&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For complete documentation on the package format, all available commands, placeholder variables, and command modes, see the [https://github.com/ppkantorski/Ultrahand-Overlay/wiki Wiki]:&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Package-Reference Package Reference] - Package structure, headers, pages, boot/exit hooks, and configuration&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Command-Reference Command Reference] - All commands, modes, source functions, and placeholder variables&lt;br /&gt;
&lt;br /&gt;
For real-world package examples, see the [https://github.com/ppkantorski/Ultrahand-Overlay/tree/main/examples &amp;lt;code&amp;gt;examples/&amp;lt;/code&amp;gt;] directory.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
A - Execute the selected command&lt;br /&gt;
&lt;br /&gt;
Minus - View and run individual command lines (Script Overlay); tap to dismiss the frontmost notification&lt;br /&gt;
&lt;br /&gt;
Hold Minus (~4s) - Toggle API Notifications on/off (when API Toggle Hotkey is enabled in Notification Settings)&lt;br /&gt;
&lt;br /&gt;
Long-tap (touch) - Open command line view or overlay/package settings&lt;br /&gt;
&lt;br /&gt;
X - Star/favorite an overlay or package&lt;br /&gt;
&lt;br /&gt;
Y - Open overlay/package settings&lt;br /&gt;
&lt;br /&gt;
Plus - Open Ultrahand Settings from the main menu&lt;br /&gt;
&lt;br /&gt;
L/R - Jump to top / bottom of the current list&lt;br /&gt;
&lt;br /&gt;
ZL/ZR - Page up / down (hold for rapid scrolling)&lt;br /&gt;
&lt;br /&gt;
R during command - Abort the running operation&lt;br /&gt;
&lt;br /&gt;
B during command - Dismiss the overlay without canceling&lt;br /&gt;
&lt;br /&gt;
Swipe inward from edge - Open Ultrahand (alternative to key combo)&lt;br /&gt;
&lt;br /&gt;
Tap notification (touch) - Dismiss that notification directly&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/ultrahandoverlaynx-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/ultrahandoverlaynx-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/ultrahandoverlaynx-03.png&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;Version 2.5.2&#039;&#039;&#039;&lt;br /&gt;
* List of Changes&lt;br /&gt;
** New &amp;lt;code&amp;gt;;text_color=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;footer_color=&amp;lt;/code&amp;gt; command headers for command list items.&lt;br /&gt;
*** &amp;lt;code&amp;gt;;text_color=&amp;amp;lt;HEX&amp;amp;gt;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;footer_color=&amp;amp;lt;HEX&amp;amp;gt;&amp;lt;/code&amp;gt; (rgb888, e.g. &amp;lt;code&amp;gt;#RRGGBB&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;RRGGBB&amp;lt;/code&amp;gt;) set a custom title/value color for that specific item.&lt;br /&gt;
*** Applies to standard list items, toggles, and dropdown-selection items; takes priority over theme defaults but never overrides transient run-state colors (spinner/checkmark/crossmark/in-progress).&lt;br /&gt;
** New &amp;lt;code&amp;gt;;bg_color=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;border=&amp;lt;/code&amp;gt; table command headers.&lt;br /&gt;
*** &amp;lt;code&amp;gt;;bg_color=&amp;amp;lt;HEX&amp;amp;gt;&amp;lt;/code&amp;gt; sets a custom table background color. Only the RGB channels are used (alpha is still read from the theme).&lt;br /&gt;
*** &amp;lt;code&amp;gt;;border=true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;;border=false&amp;lt;/code&amp;gt; toggles the table&#039;s border on or off independent of &amp;lt;code&amp;gt;Dynamic Tables&amp;lt;/code&amp;gt;.&lt;br /&gt;
** New &amp;lt;code&amp;gt;matching_hex_val_custom &amp;amp;lt;FILE_PATH&amp;amp;gt; &amp;amp;lt;ASCII_PATTERN&amp;amp;gt; &amp;amp;lt;OFFSET&amp;amp;gt; &amp;amp;lt;HEX_VALUE&amp;amp;gt;&amp;lt;/code&amp;gt; conditional command (and inverse &amp;lt;code&amp;gt;!matching_hex_val_custom&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** Resolves &amp;lt;code&amp;gt;&amp;amp;lt;OFFSET&amp;amp;gt;&amp;lt;/code&amp;gt; relative to the file offset of &amp;lt;code&amp;gt;&amp;amp;lt;ASCII_PATTERN&amp;amp;gt;&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;amp;quot;CUST&amp;amp;quot;&amp;lt;/code&amp;gt;), using the same magic-scan + offset cache that hex-by-custom-offset writes use.&lt;br /&gt;
*** Usable standalone or with &amp;lt;code&amp;gt;;visibility_condition=&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;;toggle_state_condition=&amp;lt;/code&amp;gt;, same as the other &amp;lt;code&amp;gt;matching_*&amp;lt;/code&amp;gt; checks.&lt;br /&gt;
** New &#039;&#039;&#039;In-Package Titles&#039;&#039;&#039; toggle in Widget Settings (&amp;lt;code&amp;gt;in_package_titles&amp;lt;/code&amp;gt;, on by default).&lt;br /&gt;
*** Separate from the existing &#039;&#039;&#039;Package Titles&#039;&#039;&#039; toggle. When off, every in-package (sub-menu) title is forced to the theme&#039;s default package title color, overriding any color a package requested via its own header (e.g. &amp;lt;code&amp;gt;;color=&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Input handling changes to prevent accidental hides while a command is running.&lt;br /&gt;
*** &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; now hides the overlay while a command is running (moved off &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt;), so reflexively pressing &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; to &amp;amp;quot;go back&amp;amp;quot; no longer hides the overlay mid-command.&lt;br /&gt;
*** &amp;lt;code&amp;gt;B&amp;lt;/code&amp;gt; is swallowed during a running command instead of hiding or popping the menu.&lt;br /&gt;
*** D-pad and &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; now visibly bounce the highlighted item while a command is running, instead of incorrectly triggering a click animation.&lt;br /&gt;
** Settings menu navigation bug fixes.&lt;br /&gt;
** Fixed overlay/package list titles and versions not switching to the theme&#039;s Selection Text/Value color when highlighted.&lt;br /&gt;
*** These now use the new base-color path internally, so highlighting behaves correctly again while still supporting the new &amp;lt;code&amp;gt;;text_color=&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;;footer_color=&amp;lt;/code&amp;gt; per-item overrides.&lt;br /&gt;
** Slight changes to the default theme colors and settings.&lt;br /&gt;
*** &amp;lt;code&amp;gt;Dynamic Logo&amp;lt;/code&amp;gt; now defaults to &#039;&#039;&#039;off&#039;&#039;&#039; instead of on.&lt;br /&gt;
*** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; For color changes to be applied, users must re-apply their default theme, or install Ultrahand fresh.&lt;br /&gt;
** Refreshed default theme colors (click, dynamic logo, main logo, and table background), and added a new bundled &amp;lt;code&amp;gt;classic.ini&amp;lt;/code&amp;gt; theme.&lt;br /&gt;
*** &amp;lt;code&amp;gt;classic.ini&amp;lt;/code&amp;gt; preserves the exact pre-2.5.2 default color palette for anyone who prefers the previous look.&lt;br /&gt;
** Improved download reliability for usage with a wider range of url domains.&lt;br /&gt;
** Foreground related bug fixes in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Fixed a mismatched declared size on the default key-combos array.&lt;br /&gt;
** [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.5.1...v2.5.2 Full Changelog: v2.5.1...v2.5.2]&lt;br /&gt;
&lt;br /&gt;
Quick Update&lt;br /&gt;
* Foreground request related bug fixes. - 07/10/2026 02:54 AM PST&lt;br /&gt;
* Slight tweaks to default theme. - 07/10/2026 4:20 AM PST&lt;br /&gt;
* New table wrapping mode &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; + bug fixes for notification translations / alignments. - 07/10/2026 7:35 AM PST&lt;br /&gt;
** &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; utilizes character wrapping for Asian languages and word wrapping for non-Asian languages.&lt;br /&gt;
* New Ultrahand config.ini key &amp;lt;code&amp;gt;swipe_offset&amp;lt;/code&amp;gt; (integer value; optional) for calibrating the swipe to open behavior&#039;s X-start. - 07/10/2026 7:35 AM PST&lt;br /&gt;
* Hard line break fix for table &amp;lt;code&amp;gt;wrapText&amp;lt;/code&amp;gt; (proper handling of newlines). - 07/10/2026 08:04 AM PST&lt;br /&gt;
* Add translation handling in CategoryHeader constructors. -07/10/2026 8:33 AM PST&lt;br /&gt;
* Translations now apply to sections on divider split strings, new &amp;lt;code&amp;gt;{ovl_language}&amp;lt;/code&amp;gt; placeholder for overlay language, bug fix for hard line break changes. - 07/10/2026 10:01 AM PST&lt;br /&gt;
** &amp;lt;code&amp;gt;{ovl_language}&amp;lt;/code&amp;gt; returns values like &amp;lt;code&amp;gt;en&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;es&amp;lt;/code&amp;gt;, etc based upon the selected language in the Ultrahand settings menu.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.5.2...d706cd8 Full Changelog: v2.5.2...d706cd8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.5.1&#039;&#039;&#039;&lt;br /&gt;
* Ultrahand package bug fix for placeholder resolution within sourced commands.&lt;br /&gt;
** This bug appears to have been introduced in v2.4.5.&lt;br /&gt;
* No changes to &amp;lt;code&amp;gt;libultrahand v2.5.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.5.0...v2.5.1 Full Changelog: v2.5.0...v2.5.1]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.5.0&#039;&#039;&#039;&lt;br /&gt;
* New &amp;lt;code&amp;gt;Switch 2 Style&amp;lt;/code&amp;gt; toggle in &amp;lt;code&amp;gt;Theme Settings&amp;lt;/code&amp;gt; (Misc), on by default.&lt;br /&gt;
** When enabled, selected list items, the cursor, trackbar handles are replaced with a more rounded, slightly wider cursor utilizing the new color-wheel effect.&lt;br /&gt;
** Toggles render as a sliding Switch-style pill switch instead of a plain ON/OFF glyph.&lt;br /&gt;
** Single-choice selection lists draw a circular radio mark in the value slot instead of a checkmark.&lt;br /&gt;
** Turning the toggle off preserves the classic &amp;lt;code&amp;gt;Switch 1&amp;lt;/code&amp;gt; look from before v2.5.0.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; requires &amp;lt;code&amp;gt;libultrahand v2.5.0&amp;lt;/code&amp;gt; or greater; compiled overlays built against older &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; versions are unaffected.&lt;br /&gt;
* Radio-style selection lists.&lt;br /&gt;
** &amp;lt;code&amp;gt;Themes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Wallpapers&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Sounds&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Language&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Launch Combos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Priority&amp;lt;/code&amp;gt;, and package &amp;lt;code&amp;gt;;mode=option&amp;lt;/code&amp;gt; dropdown menus now use the new circular radio mark in place of a checkmark when &amp;lt;code&amp;gt;Switch 2 Style&amp;lt;/code&amp;gt; is on.&lt;br /&gt;
* New theme INI color keys added.&lt;br /&gt;
** &#039;&#039;&#039;Cursor&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_highlight_color_1&amp;lt;/code&amp;gt;: first fixed accent in the default rotating highlight wheel (cursor/selection border).&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_highlight_color_2&amp;lt;/code&amp;gt;: second fixed accent in the default rotating highlight wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_highlight_color_3&amp;lt;/code&amp;gt;: bright hero color in the default wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_highlight_color_3_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_highlight_color_3&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_highlight_color_4&amp;lt;/code&amp;gt;: second bright hero color in the default wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_highlight_color_4_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_highlight_color_4&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_alt_highlight_color_1&amp;lt;/code&amp;gt;: first fixed accent in the alternate wheel (shown while locked or mid-click).&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_alt_highlight_color_2&amp;lt;/code&amp;gt;: second fixed accent in the alternate wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_alt_highlight_color_3&amp;lt;/code&amp;gt;: bright hero color in the alternate wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_alt_highlight_color_3_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_alt_highlight_color_3&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_alt_highlight_color_4&amp;lt;/code&amp;gt;: second bright hero color in the alternate wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_alt_highlight_color_4_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_alt_highlight_color_4&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Table Border&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_table_border_color_1&amp;lt;/code&amp;gt;: first fixed accent in the rotating table-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_table_border_color_2&amp;lt;/code&amp;gt;: second fixed accent in the rotating table-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_table_border_color_3&amp;lt;/code&amp;gt;: bright hero color in the table-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_table_border_color_3_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_table_border_color_3&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_table_border_color_4&amp;lt;/code&amp;gt;: second bright hero color in the table-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_table_border_color_4_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_table_border_color_4&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;table_border_color&amp;lt;/code&amp;gt;: base color of the new table border, used when &amp;lt;code&amp;gt;Dynamic Tables&amp;lt;/code&amp;gt; is off.&lt;br /&gt;
** &#039;&#039;&#039;Widget Border&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_widget_border_color_1&amp;lt;/code&amp;gt;: first fixed accent in the rotating widget-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_widget_border_color_2&amp;lt;/code&amp;gt;: second fixed accent in the rotating widget-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_widget_border_color_3&amp;lt;/code&amp;gt;: bright hero color in the widget-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_widget_border_color_3_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_widget_border_color_3&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_widget_border_color_4&amp;lt;/code&amp;gt;: second bright hero color in the widget-border wheel.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_widget_border_color_4_deep&amp;lt;/code&amp;gt;: deep/shadow variant of &amp;lt;code&amp;gt;s2_widget_border_color_4&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Switch 2 UI Elements&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_radio_ring_color&amp;lt;/code&amp;gt;: outer ring of an unselected radio mark.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_radio_selected_color&amp;lt;/code&amp;gt;: fill color once a radio choice is confirmed.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_radio_inprogress_color&amp;lt;/code&amp;gt;: fill color while a radio choice is mid-selection.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_radio_inner_color&amp;lt;/code&amp;gt;: small inner dot drawn inside a filled radio mark.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_toggle_on_color&amp;lt;/code&amp;gt;: toggle track color when the toggle is on.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_toggle_off_color&amp;lt;/code&amp;gt;: toggle track color when the toggle is off.&lt;br /&gt;
*** &amp;lt;code&amp;gt;s2_toggle_circle_color&amp;lt;/code&amp;gt;: color of the toggle&#039;s sliding knob.&lt;br /&gt;
** Preliminary updates for the bundled &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ultra-blue.ini&amp;lt;/code&amp;gt; themes.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; custom themes that don&#039;t define these keys fall back to libultrahand&#039;s built-in defaults.&lt;br /&gt;
* Widget Settings tweaks.&lt;br /&gt;
** &amp;lt;code&amp;gt;Dynamic Colors&amp;lt;/code&amp;gt; has been renamed to &amp;lt;code&amp;gt;Dynamic Temps&amp;lt;/code&amp;gt;.&lt;br /&gt;
** New &amp;lt;code&amp;gt;Dynamic Border&amp;lt;/code&amp;gt; toggle (animates the widget&#039;s border color according to the theme colors).&lt;br /&gt;
* Theme Settings: new &amp;lt;code&amp;gt;Dynamic Tables&amp;lt;/code&amp;gt; toggle (default on).&lt;br /&gt;
** Drives the new border effect drawn around package table sections; independent of the &amp;lt;code&amp;gt;Switch 2 Style&amp;lt;/code&amp;gt; toggle.&lt;br /&gt;
** When off, tables resort back to the &amp;lt;code&amp;gt;table_border_color&amp;lt;/code&amp;gt; theme ini preset.&lt;br /&gt;
* Bug fix for nested placeholders.&lt;br /&gt;
** Placeholder resolution is now depth-aware.&lt;br /&gt;
** A placeholder whose inner content hasn&#039;t resolved yet is now left intact for a later pass instead of producing a premature &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Settings menu navigation bug fix.&lt;br /&gt;
** Added a recovery guard that re-derives the settings menu/sub-menu state if both navigation flags are unexpectedly cleared (e.g. after a rapid back-press chain or an interrupted hide/show transition), preventing the menu from getting stuck.&lt;br /&gt;
** Fixed a stale sub-menu flag for combo-mode entries that could cause a double-pop on the next B press.&lt;br /&gt;
* Various alignment corrections.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/9b965b1...v2.5.0 Full Changelog: 9b965b1...v2.5.0]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.4.5&#039;&#039;&#039;&lt;br /&gt;
* New conditional &amp;lt;code&amp;gt;{if_...}&amp;lt;/code&amp;gt; placeholder method.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;{if_null(&amp;amp;lt;VALUE&amp;amp;gt;,&amp;amp;lt;TRUE_FALLBACK&amp;amp;gt;,[FALSE_FALLBACK])}&amp;lt;/code&amp;gt; returns &amp;lt;code&amp;gt;TRUE_FALLBACK&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;VALUE&amp;lt;/code&amp;gt; resolved to &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; (the literal returned by an unresolved/missing placeholder).&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;!null&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;{if_!null(&amp;amp;lt;VALUE&amp;amp;gt;,&amp;amp;lt;TRUE_FALLBACK&amp;amp;gt;,[FALSE_FALLBACK])}&amp;lt;/code&amp;gt; is the inverse.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;==&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!=&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;{if_==(&amp;amp;lt;VALUE&amp;amp;gt;,&amp;amp;lt;COMPARE_VALUE&amp;amp;gt;,&amp;amp;lt;TRUE_FALLBACK&amp;amp;gt;,[FALSE_FALLBACK])}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{if_!=(...)}&amp;lt;/code&amp;gt; do exact string equality.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;{if_&amp;amp;gt;(&amp;amp;lt;VALUE&amp;amp;gt;,&amp;amp;lt;COMPARE_VALUE&amp;amp;gt;,&amp;amp;lt;TRUE_FALLBACK&amp;amp;gt;,[FALSE_FALLBACK])}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{if_&amp;amp;lt;(...)}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{if_&amp;amp;gt;=(...)}&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;{if_&amp;amp;lt;=(...)}&amp;lt;/code&amp;gt; compare numerically when both values are numbers (compared as floats), and fall back to a plain lexicographic (case-sensitive) comparison otherwise.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;version_&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version_&amp;amp;lt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version_&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;version_&amp;amp;lt;=&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;{if_version_&amp;amp;gt;(&amp;amp;lt;VALUE&amp;amp;gt;,&amp;amp;lt;COMPARE_VALUE&amp;amp;gt;,&amp;amp;lt;TRUE_FALLBACK&amp;amp;gt;,[FALSE_FALLBACK])}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{if_version_&amp;amp;lt;(...)}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{if_version_&amp;amp;gt;=(...)}&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;{if_version_&amp;amp;lt;=(...)}&amp;lt;/code&amp;gt; do version-aware comparison.&lt;br /&gt;
*** Numeric segments compare as integers (&amp;lt;code&amp;gt;1.10.0&amp;lt;/code&amp;gt; &amp;amp;gt; &amp;lt;code&amp;gt;1.9.0&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; suffix is treated as a pre-release and sorts lower (&amp;lt;code&amp;gt;2.0.1-rc&amp;lt;/code&amp;gt; &amp;amp;lt; &amp;lt;code&amp;gt;2.0.1&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; suffix is treated as build metadata and sorts higher (&amp;lt;code&amp;gt;2.0.1+r23&amp;lt;/code&amp;gt; &amp;amp;gt; &amp;lt;code&amp;gt;2.0.1&amp;lt;/code&amp;gt;).&lt;br /&gt;
** The &amp;lt;code&amp;gt;FALSE_FALLBACK&amp;lt;/code&amp;gt; is optional in every form. When omitted, the false branch returns &amp;lt;code&amp;gt;VALUE&amp;lt;/code&amp;gt; unchanged.&lt;br /&gt;
* New &amp;lt;code&amp;gt;{crc32(&amp;amp;lt;FILE_PATH&amp;amp;gt;)}&amp;lt;/code&amp;gt; placeholder method.&lt;br /&gt;
** Returns the CRC32 of a file as 8 uppercase hex characters, or &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; if the file can&#039;t be read.&lt;br /&gt;
** Useful with the &amp;lt;code&amp;gt;{if_...}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;matching_*&amp;lt;/code&amp;gt; checks for verifying file contents.&lt;br /&gt;
* All placeholders can now be composed to define any source declaration.&lt;br /&gt;
** All placeholder variable declarations are fully resolved in order before being used.&lt;br /&gt;
** All placeholder commands (excluding &amp;lt;code&amp;gt;_source&amp;lt;/code&amp;gt;) can be nested and chained to build the final &amp;lt;code&amp;gt;_source&amp;lt;/code&amp;gt; declaration.&lt;br /&gt;
*** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; No commands are executed at this stage; only placeholder expressions are evaluated.&lt;br /&gt;
** Non-source variable placeholders can now be redefined mid-section in sourced commands.&lt;br /&gt;
* New standalone conditional commands for use in packages.&lt;br /&gt;
** &amp;lt;code&amp;gt;path_exists &amp;amp;lt;PATH&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;ipc_exists &amp;amp;lt;SERVICE_NAME&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;module_exists &amp;amp;lt;TID&amp;amp;gt;&amp;lt;/code&amp;gt; (true when the module&#039;s content folder exists, running or not)&lt;br /&gt;
** &amp;lt;code&amp;gt;module_is_active &amp;amp;lt;TID&amp;amp;gt;&amp;lt;/code&amp;gt; (true only when the module is currently running)&lt;br /&gt;
** &amp;lt;code&amp;gt;matching_txt_line &amp;amp;lt;FILE_PATH&amp;amp;gt; &amp;amp;lt;TEXT_LINE&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;matching_hex_val &amp;amp;lt;FILE_PATH&amp;amp;gt; &amp;amp;lt;OFFSET&amp;amp;gt; &amp;amp;lt;HEX_VALUE&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;matching_ini_val &amp;amp;lt;FILE_PATH&amp;amp;gt; &amp;amp;lt;SECTION&amp;amp;gt; &amp;amp;lt;KEY&amp;amp;gt; &amp;amp;lt;VALUE&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Each runs as its own command and resolves to success or failure, so it can be used mid-script to force a command failure or success (handy with &amp;lt;code&amp;gt;try:&amp;lt;/code&amp;gt; logic).&lt;br /&gt;
** Prefix any of them with &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; to invert the result (&amp;lt;code&amp;gt;!path_exists&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;!module_exists&amp;lt;/code&amp;gt;, etc.).&lt;br /&gt;
* New &amp;lt;code&amp;gt;;visibility_condition=&amp;lt;/code&amp;gt; option directive for usage with all command objects.&lt;br /&gt;
** &amp;lt;code&amp;gt;;visibility_condition=&amp;amp;lt;MODE&amp;amp;gt; &amp;amp;lt;ARGS&amp;amp;gt;&amp;lt;/code&amp;gt; draws a menu item or section only when the condition is satisfied; otherwise the item is skipped at render time.&lt;br /&gt;
** Accepts any of the conditional modes above (&amp;lt;code&amp;gt;path_exists&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ipc_exists&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;module_exists&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;module_is_active&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;matching_txt_line&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;matching_hex_val&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;matching_ini_val&amp;lt;/code&amp;gt;) with &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; negation, and resolves placeholders inside the condition.&lt;br /&gt;
** An empty condition (as well as a successful condition) shows the item; an unknown mode, missing argument (or false condition) hides it.&lt;br /&gt;
** Revised integration from &#039;&#039;&#039;PR [https://github.com/ppkantorski/Ultrahand-Overlay/pull/309 #309]&#039;&#039;&#039;.&lt;br /&gt;
* New &amp;lt;code&amp;gt;;toggle_state_condition=&amp;lt;/code&amp;gt; option directive.&lt;br /&gt;
** Sets a toggle&#039;s initial ON/OFF state from a live condition instead of an on/off path check. Uses the same conditional modes as &amp;lt;code&amp;gt;;visibility_condition=&amp;lt;/code&amp;gt;. A satisfied condition starts the toggle ON.&lt;br /&gt;
** Revised integration from PR [https://github.com/ppkantorski/Ultrahand-Overlay/pull/309 #309].&lt;br /&gt;
* New &amp;lt;code&amp;gt;;hold=true&amp;lt;/code&amp;gt; directive for hold-to-activate items.&lt;br /&gt;
** Add &amp;lt;code&amp;gt;;hold=true&amp;lt;/code&amp;gt; to a command list item or a toggle to require the user to hold the action before it fires.&lt;br /&gt;
** While held, the item shows the in-progress symbol; execution is deferred until the hold completes, and the action can be cancelled by releasing early.&lt;br /&gt;
** The hold length is set globally by the new &#039;&#039;&#039;Hold Duration&#039;&#039;&#039; trackbar (see below).&lt;br /&gt;
** The built-in default Reboot/Shutdown package now ships its &amp;lt;code&amp;gt;Shutdown&amp;lt;/code&amp;gt; entry with &amp;lt;code&amp;gt;;hold=true&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; command for starting and stopping sysmodules.&lt;br /&gt;
** &amp;lt;code&amp;gt;module start &amp;amp;lt;TID&amp;amp;gt;&amp;lt;/code&amp;gt; launches a sysmodule by program ID.&lt;br /&gt;
** &amp;lt;code&amp;gt;module stop &amp;amp;lt;TID&amp;amp;gt;&amp;lt;/code&amp;gt; stops a sysmodule, graceful-first with a force-kill fallback for dynamic modules.&lt;br /&gt;
** Reads the module&#039;s &amp;lt;code&amp;gt;toolbox.json&amp;lt;/code&amp;gt; for its shutdown contract; static modules with no graceful contract are refused rather than risking an unsafe kill.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;lt;TID&amp;amp;gt;&amp;lt;/code&amp;gt; accepts a bare 16-hex-character folder name or a &amp;lt;code&amp;gt;0x&amp;lt;/code&amp;gt;-prefixed program ID.&lt;br /&gt;
* New &amp;lt;code&amp;gt;ipc-exec &amp;amp;lt;SERVICE_NAME&amp;amp;gt; &amp;amp;lt;ENUM_CMD&amp;amp;gt;&amp;lt;/code&amp;gt; command.&lt;br /&gt;
** Sends a void to void IPC command to a service; success means the dispatch was accepted.&lt;br /&gt;
* New &amp;lt;code&amp;gt;ntp-sync &amp;amp;lt;NTP_URL&amp;amp;gt;&amp;lt;/code&amp;gt; command.&lt;br /&gt;
** On-demand clock sync to the NTP host you specify.&lt;br /&gt;
** Checks for internet access internally before attempting the sync.&lt;br /&gt;
* New &amp;lt;code&amp;gt;refresh-return&amp;lt;/code&amp;gt; command for sourced commands (dropdown menus).&lt;br /&gt;
** When returning from a sourced selection, &amp;lt;code&amp;gt;refresh-return&amp;lt;/code&amp;gt; redraws the entire prior menu and lands the cursor back on the item you came from, instead of a plain back.&lt;br /&gt;
** Calling is optional. Without is faster, so only use &amp;lt;code&amp;gt;refresh-return&amp;lt;/code&amp;gt; when the prior menu needs to be rebuilt to reflect changes (e.g. values that conditions key off of).&lt;br /&gt;
* New &amp;lt;code&amp;gt;refresh combos&amp;lt;/code&amp;gt; command argument.&lt;br /&gt;
** &amp;lt;code&amp;gt;refresh combos&amp;lt;/code&amp;gt; reloads the launch key combos live, so changes take effect without restarting the overlay. This joins the existing &amp;lt;code&amp;gt;refresh theme&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;refresh package&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;refresh wallpaper&amp;lt;/code&amp;gt; arguments.&lt;br /&gt;
* New &#039;&#039;&#039;Input Settings&#039;&#039;&#039; section added to Misc.&lt;br /&gt;
** Houses &#039;&#039;&#039;Launch Combos&#039;&#039;&#039;, &#039;&#039;&#039;Swipe to Open&#039;&#039;&#039;, &#039;&#039;&#039;Haptic Feedback&#039;&#039;&#039;, and the two new input options below.&lt;br /&gt;
** New &#039;&#039;&#039;Stick Navigation&#039;&#039;&#039; toggle. When on, the analog stick navigates menus alongside the D-pad; when off, only the D-pad navigates. Applies to all &amp;lt;code&amp;gt;libultrahand v2.4.5+&amp;lt;/code&amp;gt; overlays.&lt;br /&gt;
** New &#039;&#039;&#039;Hold Duration&#039;&#039;&#039; track-bar. Sets the global command hold-A length for all hold-to-activate actions, from &amp;lt;code&amp;gt;0.5s&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;5.0s&amp;lt;/code&amp;gt; (default &amp;lt;code&amp;gt;3.0s&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Settings menu reorganized and renamed.&lt;br /&gt;
** &#039;&#039;&#039;Page Recall&#039;&#039;&#039; and &#039;&#039;&#039;Launch Recall&#039;&#039;&#039; toggles have been &#039;&#039;&#039;removed&#039;&#039;&#039;. These behaviors are now always on.&lt;br /&gt;
** The old &#039;&#039;&#039;Features&#039;&#039;&#039; header is now &#039;&#039;&#039;Feature Settings&#039;&#039;&#039;.&lt;br /&gt;
** &#039;&#039;&#039;Auto NTP Sync&#039;&#039;&#039; is renamed &#039;&#039;&#039;NTP Sync Downloads&#039;&#039;&#039;.&lt;br /&gt;
* The handheld / docked &amp;lt;code&amp;gt;;state=&amp;lt;/code&amp;gt; directive renamed to &amp;lt;code&amp;gt;;device_state=&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Packages that used &amp;lt;code&amp;gt;;state=&amp;lt;/code&amp;gt; must update to &amp;lt;code&amp;gt;;device_state=&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;ini_file_source&amp;lt;/code&amp;gt; now supports wildcard paths.&lt;br /&gt;
** A wildcard &amp;lt;code&amp;gt;ini_file_source&amp;lt;/code&amp;gt; path enumerates every matching &amp;lt;code&amp;gt;.ini&amp;lt;/code&amp;gt; and merges their section names (empty names skipped, duplicates removed, first occurrence wins).&lt;br /&gt;
** Multiple &amp;lt;code&amp;gt;ini_file_source&amp;lt;/code&amp;gt; lines now accumulate sections together rather than each one replacing the last.&lt;br /&gt;
** Revised integration from &#039;&#039;&#039;PR [https://github.com/ppkantorski/Ultrahand-Overlay/pull/312 #312]&#039;&#039;&#039;.&lt;br /&gt;
* The default root package now includes an &amp;lt;code&amp;gt;INI Entry&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;/bootloader/ini/*.ini&amp;lt;/code&amp;gt; entries in &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Users may want to delete &amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt; to have this command updated.&lt;br /&gt;
** Revised integration from &#039;&#039;&#039;PR [https://github.com/ppkantorski/Ultrahand-Overlay/pull/312 #312]&#039;&#039;&#039;.&lt;br /&gt;
* &amp;lt;code&amp;gt;mirror-&amp;lt;/code&amp;gt; is now accepted as an alias for &amp;lt;code&amp;gt;mirror_&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;mirror-copy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;mirror-cp&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; This follows the loose convention where &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; are used with action commands (&amp;lt;code&amp;gt;set-ini-val&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;sync-ntp&amp;lt;/code&amp;gt;, etc) and &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; are used to for check commands that simply resolve to success or failure (&amp;lt;code&amp;gt;path_exists&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;matching_ini_val&amp;lt;/code&amp;gt;, etc).&lt;br /&gt;
* The overlay version placeholder &amp;lt;code&amp;gt;{ovl_version(&amp;amp;lt;OVL_PATH&amp;amp;gt;)}&amp;lt;/code&amp;gt; now works with relative path resolution (i.e. &amp;lt;code&amp;gt;./&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;./../&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Cleaner dock power-down protocol on &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
** A USB-PD teardown is now staged before any shutdown so the console signals the dock to cut its 5V rail before the PMIC powers off.&lt;br /&gt;
** Bug fix from &#039;&#039;&#039;Issue [https://github.com/ppkantorski/Ultrahand-Overlay/issues/313 #313]&#039;&#039;&#039;.&lt;br /&gt;
* New &amp;lt;code&amp;gt;Overlay does not exist!&amp;lt;/code&amp;gt; notification for attempting to launch an overlay file that does not exist.&lt;br /&gt;
** Launching a mode whose overlay file is missing now reports the missing overlay directly instead of misreporting it as AMS-incompatible.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.4.4...v2.4.5 Full Changelog: v2.4.4...v2.4.5]&lt;br /&gt;
&lt;br /&gt;
Quick Update&lt;br /&gt;
* &amp;lt;code&amp;gt;;device_state=&amp;lt;/code&amp;gt; processing bug fix. - 06/11/2026 8:00 AM PST&lt;br /&gt;
* Variable placeholder definition / redefinition and resolutions bug fix. - 06/11/2026 8:00 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.4.5...9b965b1 Full Changelog: v2.4.5...9b965b1]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.4.4&#039;&#039;&#039;&lt;br /&gt;
* Quick bug fix for the &amp;lt;code&amp;gt;exit package&amp;lt;/code&amp;gt; command.&lt;br /&gt;
** In the prior version triggering &amp;lt;code&amp;gt;exit package&amp;lt;/code&amp;gt; was preventing the package header from being properly cached for forwarder packages until Ultrahand exits.&lt;br /&gt;
*** This broke things like package versions, titles, and info sections in package forwarders from being properly cached after triggering (now resolved).&lt;br /&gt;
* &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Compiled with &amp;lt;code&amp;gt;libultrahand v2.4.3&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;v2.4.4&amp;lt;/code&amp;gt; will be skipped on this release; no changes).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.4.3&#039;&#039;&#039;&lt;br /&gt;
* Sleep halting of the background event poller in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (to prevent all polling activity during shallow sleep).&lt;br /&gt;
** This makes the CPU load contribution from the overlay 0% during shallow sleep.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.4.2&#039;&#039;&#039;&lt;br /&gt;
* New package command option header &amp;lt;code&amp;gt;;ram_size_gb=&amp;lt;/code&amp;gt; for conditionally drawing commands based on detected system RAM.&lt;br /&gt;
** &amp;lt;code&amp;gt;;ram_size_gb=4&amp;lt;/code&amp;gt; will only apply on 4GB systems, &amp;lt;code&amp;gt;;ram_size_gb=8&amp;lt;/code&amp;gt; on 8GB systems.&lt;br /&gt;
** RAM size is detected at fuse data write time and cached.&lt;br /&gt;
*** Older fuse files without this key are updated automatically on next startup.&lt;br /&gt;
* New package placeholders: &amp;lt;code&amp;gt;{ram_size_gb}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{hekate_version}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ovlloader_version}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ultrahand_version}&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;{ovl_version(&amp;amp;lt;PATH_TO_OVL&amp;amp;gt;)}&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;{ram_size_gb}&amp;lt;/code&amp;gt;: returns &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; based on detected system RAM (read from fuse data).&lt;br /&gt;
** &amp;lt;code&amp;gt;{hekate_version}&amp;lt;/code&amp;gt;: reads from &amp;lt;code&amp;gt;sdmc:/bootloader/update.bin&amp;lt;/code&amp;gt; and is cached at startup.&lt;br /&gt;
** &amp;lt;code&amp;gt;{ovlloader_version}&amp;lt;/code&amp;gt;: reads from the running loader info and is cached at startup.&lt;br /&gt;
** &amp;lt;code&amp;gt;{ultrahand_version}&amp;lt;/code&amp;gt;: returns the currently running Ultrahand version.&lt;br /&gt;
** &amp;lt;code&amp;gt;{ovl_version(&amp;amp;lt;PATH_TO_OVL&amp;amp;gt;)}&amp;lt;/code&amp;gt;: dynamically reads the version of any overlay by path.&lt;br /&gt;
* Expanded &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt; command with new destination arguments.&lt;br /&gt;
** &amp;lt;code&amp;gt;exit package&amp;lt;/code&amp;gt; instantly returns to the packages menu from anywhere in the package nav stack (including nested menus and script overlays) with the cursor positioned on the originating package.&lt;br /&gt;
** &amp;lt;code&amp;gt;exit overlays&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;exit packages&amp;lt;/code&amp;gt; have been renamed to &amp;lt;code&amp;gt;exit to_overlays&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;exit to_packages&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;exit ovlloader&amp;lt;/code&amp;gt; triggers a complete exit of &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Expanded &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; command &amp;lt;code&amp;gt;reboot ovlloader&amp;lt;/code&amp;gt; command using the same reload flag mechanism as &amp;lt;code&amp;gt;exit ovlloader&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Triggers an nx-ovlloader reload on demand without requiring a heap size change.&lt;br /&gt;
* &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; version is now compared before and after a Software Update.&lt;br /&gt;
** If a version change is detected, Ultrahand automatically triggers a reload so the new loader takes effect immediately without a manual reboot.&lt;br /&gt;
* New &amp;lt;code&amp;gt;force_failure&amp;lt;/code&amp;gt; command.&lt;br /&gt;
** Explicitly marks command execution as failed (useful for &amp;lt;code&amp;gt;try:&amp;lt;/code&amp;gt; logic in packages).&lt;br /&gt;
* Scope fix for &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
** &amp;lt;code&amp;gt;executeIniCommands&amp;lt;/code&amp;gt; now correctly derives the package path from the ini file&#039;s actual location rather than always defaulting to the calling package&#039;s path.&lt;br /&gt;
* Bug fix for &amp;lt;code&amp;gt;;mode=option&amp;lt;/code&amp;gt; drop-down losing the option symbol on back when no value has been set.&lt;br /&gt;
** Footer now correctly restores to &amp;lt;code&amp;gt;OPTION_SYMBOL&amp;lt;/code&amp;gt; as the default rather than an empty/null string.&lt;br /&gt;
* Name split footer normalization fix for option-mode checkmark matching.&lt;br /&gt;
** Footers written by &amp;lt;code&amp;gt;boot_package&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;&amp;quot;0 - (default)&amp;quot;&amp;lt;/code&amp;gt;) now correctly restored in &amp;lt;code&amp;gt;SelectionOverlay&amp;lt;/code&amp;gt; after subsequent value changes.&lt;br /&gt;
* Table fixes / improvements.&lt;br /&gt;
** Lines beginning with &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; are now skipped (comment-out support for table rows).&lt;br /&gt;
** Rows where a placeholder resolves to &amp;lt;code&amp;gt;&amp;quot;&amp;quot;&amp;lt;/code&amp;gt; now correctly shift columns instead of rendering a blank first column (bug fix).&lt;br /&gt;
** The section and info columns now wrap independently to their own available widths, with rows aligned pairwise so multi-line entries in either column don&#039;t go out of sync.&lt;br /&gt;
** Creator field text wrapping mode corrected from &amp;lt;code&amp;gt;&amp;quot;none&amp;quot;&amp;lt;/code&amp;gt; to word wrapping.&lt;br /&gt;
* Bug fix for &amp;lt;code&amp;gt;PROTECTED_FILES&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;atmosphere/package3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;atmosphere/stratosphere.romfs&amp;lt;/code&amp;gt;) not being correctly staged to &amp;lt;code&amp;gt;.ultra&amp;lt;/code&amp;gt; during &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;unzip&amp;lt;/code&amp;gt; operations.&lt;br /&gt;
** These changes fix updating AMS from Ultrahand via reboot payload in more test cases.&lt;br /&gt;
* IDDQ fuse calibration values now correctly scaled on write (&amp;lt;code&amp;gt;cpu_iddq&amp;lt;/code&amp;gt; x4, &amp;lt;code&amp;gt;soc_iddq&amp;lt;/code&amp;gt; x4, &amp;lt;code&amp;gt;gpu_iddq&amp;lt;/code&amp;gt; x5) to match &amp;lt;code&amp;gt;hekate&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Scroll bar object rendering corrections in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;atmosphere.rgba&amp;lt;/code&amp;gt; wallpaper is now bundled in &amp;lt;code&amp;gt;sdout.zip&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New master volume IPS patch included (&amp;lt;code&amp;gt;d1e98d469...ips&amp;lt;/code&amp;gt;) for latest HOS support.&lt;br /&gt;
* Now packaged with [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v2.0.2 nx-ovlloader v2.0.2].&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/59b531c...v2.4.2 Full Changelog: 59b531c...v2.4.2]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.4.1&#039;&#039;&#039;&lt;br /&gt;
* Widget now has an optional border (on by default).&lt;br /&gt;
** New theme color &amp;lt;code&amp;gt;widget_border_color&amp;lt;/code&amp;gt;.&lt;br /&gt;
** New toggle for &amp;lt;code&amp;gt;Border&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;Settings &amp;amp;gt; Widget&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Themes &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ultra_blue.ini&amp;lt;/code&amp;gt; have been updated.&lt;br /&gt;
* Improved audio event handling (for simultaneous sound effect playbacks) in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Improved combo input isolation and button event handling.&lt;br /&gt;
* Home event system tick flag storing in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (for devs only).&lt;br /&gt;
* Slight alignment corrections.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.4.0...v2.4.1 Full Changelog: v2.4.0...v2.4.1]&lt;br /&gt;
&lt;br /&gt;
Quick Update:&lt;br /&gt;
* Slight widget alignment correction for the 100% battery case. - 04/20/2026 5:02 AM PST&lt;br /&gt;
* &amp;lt;code&amp;gt;hide_widget_border&amp;lt;/code&amp;gt; variable loading bug fix in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;. -04/20/2026 7:45 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.4.1...59b531c Full Changelog: v2.4.1...59b531c]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.4.0&#039;&#039;&#039;&lt;br /&gt;
* Across the board performance optimizations to rendering methods in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Significantly improved wallpaper rendering performance (60FPS on 612 MHz cpu under-clock).&lt;br /&gt;
* Across the board optimizations to all &amp;lt;code&amp;gt;libultra&amp;lt;/code&amp;gt; functions in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Now compiling back to pre-&amp;lt;code&amp;gt;Ultrahand Overlay v1.1.7&amp;lt;/code&amp;gt; sizes.&lt;br /&gt;
* Overlay memory mode features have been expanded.&lt;br /&gt;
** 6MB overlay heap now supports wallpapers and higher buffer sizes (faster copy, downloads, unzip, etc).&lt;br /&gt;
** 4MB overlay heap now supports sound effects and slightly higher buffer sizes.&lt;br /&gt;
* Improved table drawing (significantly better performance + various bug fixes).&lt;br /&gt;
* Download commands now perform a NTP sync to &amp;lt;code&amp;gt;pool.ntp.org&amp;lt;/code&amp;gt; one time after initial startup when called.&lt;br /&gt;
** This feature will auto-fix issues with SSL handshakes breaking due to time de-synchronization.&lt;br /&gt;
** New &amp;lt;code&amp;gt;Auto NTP Sync&amp;lt;/code&amp;gt; toggle in the &amp;lt;code&amp;gt;Settings &amp;amp;gt; Miscellaneous&amp;lt;/code&amp;gt; menu for disabling this feature.&lt;br /&gt;
* New &amp;lt;code&amp;gt;Page Recall&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Launch Recall&amp;lt;/code&amp;gt; toggles in &amp;lt;code&amp;gt;Settings &amp;amp;gt; Miscellaneous&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;Page Recall&amp;lt;/code&amp;gt; preserves memory of what item you were on on page left / right for proper recall back to that item (on by default).&lt;br /&gt;
** &amp;lt;code&amp;gt;Launch Recall&amp;lt;/code&amp;gt; takes you back to the exact overlay / package you used a launch combo to enter on the main menu when you click such combo again (on by default).&lt;br /&gt;
*** When turned off, combo returns simply return to Ultrahand cold (like before).&lt;br /&gt;
*** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; This function only works with overlays compiled with &amp;amp;gt;=&amp;lt;code&amp;gt;libultrahand v2.4.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Max overlay / package sort priority has been increased from 20 to 25.&lt;br /&gt;
* Critical bug fixes for page swapping / swapTo in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** There was an issue where rapid tapping of page left / right could trigger a broken GUI pointer (crash).&lt;br /&gt;
*** This issue is now resolved.&lt;br /&gt;
* Improvements to feedback (sound + haptics).&lt;br /&gt;
** Both sound and haptics now use their own threads for improved reliability with event synchronization for improved performance.&lt;br /&gt;
* Numerous additional tweaks and unmentioned bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/7df15c9...v2.4.0 Full Changelog: 7df15c9...v2.4.0]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.3.0&#039;&#039;&#039;&lt;br /&gt;
* Numerous improvements to the notifications implementation.&lt;br /&gt;
** Notification options have been moved to the Notifications Menu (in System Settings).&lt;br /&gt;
** Multiple notifications can be shown at once (up to the &amp;lt;code&amp;gt;Max Slots&amp;lt;/code&amp;gt; value).&lt;br /&gt;
*** When using 4MB overlay memory, max slots is capped at 4, otherwise it is capped at 8. (default value 4)&lt;br /&gt;
** API Notifications (formerly known as &amp;lt;code&amp;gt;External Notifications&amp;lt;/code&amp;gt;) are formatted as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;    {&lt;br /&gt;
        &amp;quot;text&amp;quot;: &amp;quot;This is an example notification.&amp;quot;,&lt;br /&gt;
        &amp;quot;font_size&amp;quot;: 24, #optional&lt;br /&gt;
        &amp;quot;split_type&amp;quot;: &amp;quot;word&amp;quot; #optional, word by default&lt;br /&gt;
        &amp;quot;alignment&amp;quot;: &amp;quot;left&amp;quot;, #optional, center by default without a title&lt;br /&gt;
        &amp;quot;duration&amp;quot;: 4000, #optional duration in ms&lt;br /&gt;
        &amp;quot;title&amp;quot;: &amp;quot;Example App&amp;quot;, #optional, allows show_time&lt;br /&gt;
        &amp;quot;show_time&amp;quot;: &amp;quot;true&amp;quot;, #optional, true by default&lt;br /&gt;
        &amp;quot;priority&amp;quot;: 20, #optional (ideally not modified)&lt;br /&gt;
    }&amp;lt;/pre&amp;gt;&lt;br /&gt;
*** Stored in &amp;lt;code&amp;gt;/config/ultrahand/notifications/{APP_ID}-{UNIQUE_ID}.notify&amp;lt;/code&amp;gt; (JSON format)&lt;br /&gt;
*** API Notifications can be filtered with the existence of &amp;lt;code&amp;gt;/config/ultrahand/flags/notifications/{APP_ID}.flag&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Notification icons are now supported and must be 50x50 RGBA format with &amp;lt;code&amp;gt;{APP_ID}&amp;lt;/code&amp;gt; matching the notification json.&lt;br /&gt;
*** &amp;lt;code&amp;gt;/config/ultrahand/assets/notifications/{APP_ID}.rgba&amp;lt;/code&amp;gt;&lt;br /&gt;
** Package command &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;notification&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;notify-now&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;notification-now&amp;lt;/code&amp;gt; has been expanded.&lt;br /&gt;
*** &amp;lt;code&amp;gt;notify &amp;amp;lt;MESSAGE&amp;amp;gt; [FONT_SIZE] [TEXT_ALIGNMENT] [SPLIT_TYPE] [DURATION_MS] [TITLE] [SHOW_TIME] [APP_NAME]&amp;lt;/code&amp;gt;&lt;br /&gt;
**** &amp;lt;code&amp;gt;&amp;amp;lt;MESSAGE&amp;amp;gt;&amp;lt;/code&amp;gt;: the main notification message text. (only 4 lines can be displayed)&lt;br /&gt;
**** &amp;lt;code&amp;gt;[FONT_SIZE]&amp;lt;/code&amp;gt;: an integer value in range 8 to 48 (24 by default with a title, 26 without a title).&lt;br /&gt;
**** &amp;lt;code&amp;gt;[TEXT_ALIGNMENT]&amp;lt;/code&amp;gt;: either &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;right&amp;lt;/code&amp;gt;.&lt;br /&gt;
***** By default, without a title it is &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; and with one it is &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt;.&lt;br /&gt;
**** &amp;lt;code&amp;gt;[SPLIT_TYPE]&amp;lt;/code&amp;gt;: either &amp;lt;code&amp;gt;word&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;.&lt;br /&gt;
**** &amp;lt;code&amp;gt;[DURATION_MS]&amp;lt;/code&amp;gt;: the duration for the prompt in milliseconds. (500 min, 4000 by default)&lt;br /&gt;
***** A duration value of 0 will keep the prompt displayed indefinitely until dismissal.&lt;br /&gt;
**** &amp;lt;code&amp;gt;[TITLE]&amp;lt;/code&amp;gt;: a title for the notification.&lt;br /&gt;
**** &amp;lt;code&amp;gt;[SHOW_TIME]&amp;lt;/code&amp;gt;: a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; value for showing the timestamp alongside the title. (requires a title)&lt;br /&gt;
**** &amp;lt;code&amp;gt;[APP_NAME]&amp;lt;/code&amp;gt;: allows the notification command to use an icon (used if present)&lt;br /&gt;
***** To use an app name without a title, title must be an empty string (&amp;lt;code&amp;gt;&amp;amp;quot;&amp;amp;quot;&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** &amp;lt;code&amp;gt;notify-now&amp;lt;/code&amp;gt; follows the same pattern as &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; but always displays in slot 0 with immediate priority.&lt;br /&gt;
*** &#039;&#039;&#039;Sidenote:&#039;&#039;&#039; All &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; parameters are optional and are interpreted based upon their value and order.&lt;br /&gt;
** New notification sound effect &amp;lt;code&amp;gt;/config/ultrahand/sounds/notification.wav&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Users may need to re-apply the default theme for this new sound effect to load.&lt;br /&gt;
*** The &amp;lt;code&amp;gt;Silence Notifications&amp;lt;/code&amp;gt; toggle disables notification sound effects.&lt;br /&gt;
** Notifications can be dismissed with &amp;lt;code&amp;gt;KEY_MINUS&amp;lt;/code&amp;gt; clicks, as well as via direct touch.&lt;br /&gt;
** API toggle hotkey (hold &amp;lt;code&amp;gt;KEY_MINUS&amp;lt;/code&amp;gt; for 4s) allows disabling API Notifications on demand easily.&lt;br /&gt;
*** The API toggle hotkey can be enabled / disabled in the Notifications Menu.&lt;br /&gt;
* New theme colors &amp;lt;code&amp;gt;notification_title_color&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;notification_time_color&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;unfocused_color&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;notification_title_color&amp;lt;/code&amp;gt; is the color for the notification titles.&lt;br /&gt;
** &amp;lt;code&amp;gt;notification_time_color&amp;lt;/code&amp;gt; is the color for the notification timestamps.&lt;br /&gt;
** &amp;lt;code&amp;gt;unfocused_color&amp;lt;/code&amp;gt; is the color &amp;lt;code&amp;gt;KEY_A&amp;lt;/code&amp;gt;+&amp;amp;quot; OK&amp;amp;quot; is displayed with at the bottom of the overlay when no items are in focus.&lt;br /&gt;
* New package command &amp;lt;code&amp;gt;touch&amp;lt;/code&amp;gt;, called &amp;lt;code&amp;gt;touch &amp;amp;lt;PATH_TO_FILE&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Command creates an empty text file according to the file path if the file does not exist.&lt;br /&gt;
* New &amp;lt;code&amp;gt;Packages Menu&amp;lt;/code&amp;gt; toggle (in Miscellaneous) for hiding the packages menu completely.&lt;br /&gt;
* Timestamp placeholder &amp;lt;code&amp;gt;{timestamp()}&amp;lt;/code&amp;gt; (with no formatting parameter) can now also be called as &amp;lt;code&amp;gt;{timestamp}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;System RAM&amp;lt;/code&amp;gt; previews now automatically change with &amp;lt;code&amp;gt;Overlay Memory&amp;lt;/code&amp;gt; adjustments in the System Settings menu.&lt;br /&gt;
* Sound effects can now use &amp;lt;code&amp;gt;8000 Hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;11025 Hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;16000 Hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;22050 Hz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;32000 Hz&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;44100 Hz&amp;lt;/code&amp;gt; 16-bit PCM wav files in addition to &amp;lt;code&amp;gt;48000 Hz&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Feedback (haptics + sound) is now processed on its own background thread for improved performance and reliability.&lt;br /&gt;
* Improvements to haptics in handheld mode.&lt;br /&gt;
* Cleanup of language json&#039;s (removal of unused / unnecessary variables).&lt;br /&gt;
* Bug fix for internet connection checks in download calls.&lt;br /&gt;
* Various list class corrections / improvements.&lt;br /&gt;
* Various code optimizations, bug fixes, and improvements.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/f580fd9...v2.3.0 Full Changelog: f580fd9...v2.3.0]&lt;br /&gt;
&lt;br /&gt;
Quick Update:&lt;br /&gt;
* JSON placeholder parsing bug fix (for allowing numerical / boolean conversions to strings). - 03/12/2026 11:26 PM PST&lt;br /&gt;
* Script Overlay no longer removes tags from ListItem commands (bug fix). - 03/12/2026 11:26 PM PST&lt;br /&gt;
* Notification timestamp positioning bug fix (for notifications with no icons). - 03/12/2026 11:42 PM PST&lt;br /&gt;
* Separator symbol coloring for notification text. - 03/13/2026 12:01 AM PST&lt;br /&gt;
* Notification touch dismissal in right-side mode bug fix. - 03/13/2026 1:12 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.9&#039;&#039;&#039;&lt;br /&gt;
* Overlay freeze bug fix triggered when entering the packages menu with &#039;&#039;&#039;GDB debugging&#039;&#039;&#039; enabled in Atmosphere.&lt;br /&gt;
** When &amp;lt;code&amp;gt;enable_htc = u8!0x0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;enable_standalone_gdbstub = u8!0x1&amp;lt;/code&amp;gt; are present in the &amp;lt;code&amp;gt;system_settings.ini&amp;lt;/code&amp;gt;, prior versions can freeze / become unresponsive when entering the packages menu (or any package in general) while within an application / game.&lt;br /&gt;
** This was because &amp;lt;code&amp;gt;getBuildIdAsString&amp;lt;/code&amp;gt; (updated among the general placeholders) was relying on &amp;lt;code&amp;gt;dmnt:cht&amp;lt;/code&amp;gt; which conflicts directly with the standalone GDB stub.&lt;br /&gt;
* &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt; has been updated to latest.&lt;br /&gt;
*  [https://github.com/ppkantorski/Ultrahand-Overlay/compare/c6a9c08...v2.2.9 Full Changelog: c6a9c08...v2.2.9]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Build ID value correction (was pulled from wrong index). - 02/22/2026 12:49 PM PST&amp;lt;br /&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.9...f580fd9 Full Changelog: v2.2.9...f580fd9]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.8&#039;&#039;&#039;&lt;br /&gt;
* All language font glyphs are now accessible regardless of the specified language (&amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; fix).&lt;br /&gt;
** Special thanks to [https://github.com/tomvita @tomvita].&lt;br /&gt;
* Packages can now utilize language translation json&#039;s (similar to &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; overlay language translations).&lt;br /&gt;
** Language json&#039;s go within the &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; folder within the package&#039;s main folder and are utilized based upon the current selected overlay language.&lt;br /&gt;
** Translations are based upon &amp;lt;code&amp;gt;drawString&amp;lt;/code&amp;gt; calls with keys being the original text and values being the translations.&lt;br /&gt;
* New package command option headers.&lt;br /&gt;
** &amp;lt;code&amp;gt;;state=&amp;lt;/code&amp;gt; works with values &amp;lt;code&amp;gt;handheld&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;docked&amp;lt;/code&amp;gt; and will only draw the list item if in handheld or docked accordingly.&lt;br /&gt;
** &amp;lt;code&amp;gt;;hos_version=&amp;lt;/code&amp;gt; works with version values or with comparison signs &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; + the specified version directly after.&lt;br /&gt;
** &amp;lt;code&amp;gt;;ams_version=&amp;lt;/code&amp;gt; works with version values or with comparison signs &amp;lt;code&amp;gt;&amp;amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;&amp;lt;/code&amp;gt; + the specified version directly after.&lt;br /&gt;
*** Both &amp;lt;code&amp;gt;;hos_version=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;ams_version=&amp;lt;/code&amp;gt; will only draw the command when the conditions are met.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; All of these new command headers can be used in combination or isolation.&lt;br /&gt;
* New package placeholder variables.&lt;br /&gt;
** &amp;lt;code&amp;gt;{package_version}&amp;lt;/code&amp;gt; returns the current package version from which the command exists in (specified in the header).&lt;br /&gt;
** &amp;lt;code&amp;gt;{backlight}&amp;lt;/code&amp;gt; returns the current handheld backlight level.&lt;br /&gt;
** &amp;lt;code&amp;gt;{volume}&amp;lt;/code&amp;gt; returns the current master volume level.&lt;br /&gt;
* New command &amp;lt;code&amp;gt;!path_exists&amp;lt;/code&amp;gt; (similar to &amp;lt;code&amp;gt;path_exists&amp;lt;/code&amp;gt; except it returns command failure if the specified path exists).&lt;br /&gt;
** Called &amp;lt;code&amp;gt;!path_exists &amp;amp;lt;SPECIFIED_PATH&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Changes to root package boot package behavior (&amp;lt;code&amp;gt;/switch/.packages/boot_package.ini&amp;lt;/code&amp;gt;).&lt;br /&gt;
** The &amp;lt;code&amp;gt;on-boot&amp;lt;/code&amp;gt; entry now triggers specified commands once on system startup (similar to how &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; used to function).&lt;br /&gt;
** The &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt; entry now triggers once when the &amp;lt;code&amp;gt;Packages Menu&amp;lt;/code&amp;gt; is entered, as well as once on the &amp;lt;code&amp;gt;Packages Menu&amp;lt;/code&amp;gt; after overlay hiding has triggered.&lt;br /&gt;
* New &amp;lt;code&amp;gt;Sounds&amp;lt;/code&amp;gt; manager for selecting overlay system sound effects (bundled in .zip&#039;s).&lt;br /&gt;
** Sound zip packs go in &amp;lt;code&amp;gt;/config/ultrahand/.sounds/&amp;lt;/code&amp;gt; (files must be around the same size as the default sounds pack).&lt;br /&gt;
** The &amp;lt;code&amp;gt;Sound Effects&amp;lt;/code&amp;gt; toggle has been removed from the &amp;lt;code&amp;gt;Features&amp;lt;/code&amp;gt; page.&lt;br /&gt;
** The &amp;lt;code&amp;gt;NO_SOUND_EFFECTS_UPDATES&amp;lt;/code&amp;gt; update flag has now been removed (no longer necessary).&lt;br /&gt;
* Update to &amp;lt;code&amp;gt;Overlay Info&amp;lt;/code&amp;gt;, with info properly translated in each supported language.&lt;br /&gt;
** New project developer animation on the &amp;amp;quot;Software Update&amp;amp;quot; page.&lt;br /&gt;
** Languages update command in the &amp;lt;code&amp;gt;Software Update&amp;lt;/code&amp;gt; menu has been removed (now unnecessary).&lt;br /&gt;
* Text wrapping for tables has been significantly revised to properly handle asian characters on split as well as implement hyphens for other languages when split by character.&lt;br /&gt;
** Indent symbols for continued lines utilizing indents now properly indent their start position based upon the indentation of the previous line (for easier viewing of code).&lt;br /&gt;
* Scrolling category headers now properly resume scroll state during regular &amp;lt;code&amp;gt;goBack&amp;lt;/code&amp;gt; calls (&amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; fix).&lt;br /&gt;
* Now including patches from [https://github.com/averne/MasterVolume Master Volume] for unbounded volume sliding from 100% to 150% using the &amp;lt;code&amp;gt;volume&amp;lt;/code&amp;gt; command.&lt;br /&gt;
* Download commands now verify internet access on network connection (to prevent hanging while on a network without internet access).&lt;br /&gt;
* The &amp;amp;quot;hold A to execute&amp;amp;quot; list item behavior has been reduced from 4s to 3s to trigger.&lt;br /&gt;
* TrackBar unlocking / locking feedback tweaks.&lt;br /&gt;
* Script overlay &#039;&#039;freeze&#039;&#039; bug fix (placeholder replacement infinite loop bug fix).&lt;br /&gt;
* Various boundary case fixes to the &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; class in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Bug fix for package version labels not being displayed &#039;&#039;clean&#039;&#039; with &amp;lt;code&amp;gt;Clean Versions&amp;lt;/code&amp;gt; enabled.&lt;br /&gt;
* Improvements to image rendering (&amp;lt;code&amp;gt;libultrhaand&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Various additional bug fixes and code optimizations.&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Sounds preservation on update bug fix. - 02/20/2026 2:14 AM PST&lt;br /&gt;
* &amp;lt;code&amp;gt;sdout.zip&amp;lt;/code&amp;gt; empty folder inclusion bug fix - 02/20/2026 2:52 AM PST&lt;br /&gt;
* Master volume patch inclusion (was accidentally removed from the &amp;lt;code&amp;gt;sdout.zip&amp;lt;/code&amp;gt;). - 02/20/2026 9:12 PM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.7&#039;&#039;&#039;&lt;br /&gt;
* Critical bug fix for touch navigation (crash fix).&lt;br /&gt;
** Touch navigation redirection for direct touch on list items utilizing &amp;lt;code&amp;gt;swapTo&amp;lt;/code&amp;gt; (in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; v2.2.3 -&amp;amp;gt; v2.2.5) could trigger crashes randomly (pointer still referenced after deconstruction).&lt;br /&gt;
* New settings toggle for startup notifications (&amp;lt;code&amp;gt;Startup Notifications&amp;lt;/code&amp;gt;; on by default).&lt;br /&gt;
** New restart notification for &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; memory settings changes.&lt;br /&gt;
** Proper restart vs startup condition isolations.&lt;br /&gt;
* Notifications toggle has been renamed to &amp;lt;code&amp;gt;External Notifications&amp;lt;/code&amp;gt; and will only be applied to JSON based notifications.&lt;br /&gt;
* The &amp;amp;quot;hold A to execute&amp;amp;quot; behavior now works via touch.&lt;br /&gt;
** Hold duration has been reduced to 4 seconds.&lt;br /&gt;
* Package command &amp;lt;code&amp;gt;pchtxt2cheat&amp;lt;/code&amp;gt; now accepts names for the cheats being converted (fix).&lt;br /&gt;
** Called &amp;lt;code&amp;gt;pchtxt2cheat &amp;amp;lt;SOURCE_PATH&amp;amp;gt; [CHEAT_NAME]&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Table scrolling with &amp;lt;code&amp;gt;KEY_UP&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;KEY_DOWN&amp;lt;/code&amp;gt; clicks have been slightly refined.&lt;br /&gt;
* Touch feedback refinements.&lt;br /&gt;
* Socket is now initialized and exited per download.&lt;br /&gt;
** This should free up more working memory / reduce memory pressure for packages and Ultrahand in general.&lt;br /&gt;
* Software updates now automatically reload Ultrahand on exit from the update menu (rather than on exits from the settings menu).&lt;br /&gt;
* Multiple list corrections, focus resuming, touch related bug fixes, and more.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.6...v2.2.7 Full Changelog: v2.2.6...v2.2.7]&lt;br /&gt;
&lt;br /&gt;
Quick Update:&lt;br /&gt;
* Table scrolling bug fix. - 1/11/2026 1:03 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.7...e6e825d Full Changelog: v2.2.7...e6e825d]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.6&#039;&#039;&#039;&lt;br /&gt;
* Sequential placeholder replacement bug fixes (for package commands).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.5...v2.2.6 Full Changelog: v2.2.5...v2.2.6]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.5&#039;&#039;&#039;&lt;br /&gt;
* Critical bug fix for crashes on the packages / package menu when &#039;&#039;&#039;not connected to a network&#039;&#039;&#039;.&lt;br /&gt;
* &amp;lt;code&amp;gt;unpackDeviceInfo&amp;lt;/code&amp;gt; sequencing correction.&lt;br /&gt;
* Added &amp;lt;code&amp;gt;curl_global_cleanup&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;exitServices&amp;lt;/code&amp;gt; (to cleanup curl global resources on app exit).&lt;br /&gt;
* Buffer initialization correction for download / unzip functions.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/f4978f0...v2.2.5 Full Changelog: f4978f0...v2.2.5]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.4&#039;&#039;&#039;&lt;br /&gt;
* OverlayFrame titles now auto-scroll when too long or covered by the widget (just like subtitles).&lt;br /&gt;
* Copy, move, and delete wildcard commands now support &amp;lt;code&amp;gt;-filter &amp;amp;lt;PATH_TO_TXT&amp;amp;gt;&amp;lt;/code&amp;gt; (path to a text file containing a list of files / folders to be filtered from pattern resolution).&lt;br /&gt;
* &amp;lt;code&amp;gt;-filter&amp;lt;/code&amp;gt; now properly resolves &amp;lt;code&amp;gt;./&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;../&amp;lt;/code&amp;gt; paths and no longer require hardcoded &amp;lt;code&amp;gt;sdmc:/&amp;lt;/code&amp;gt; in the file / folder paths.&lt;br /&gt;
* Bug fix for the ScriptOverlay on track-bars (was improperly utilizing the index / value).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/8bc9e73...v2.2.4 Full Changelog: 8bc9e73...v2.2.4]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Removal of &amp;lt;code&amp;gt;;mode=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;;grouping=&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;;system=&amp;lt;/code&amp;gt; pattern values from being cached in the package &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; metadata and loaded (was unnecessary). - 12/15/2025 8:21 AM PST&lt;br /&gt;
* Slight tweak to json placeholder replacements to, when the key does not exist, assume the key is &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;. - 12/15/2025 12:56 PM PST&lt;br /&gt;
* Command footer highlight loading bug fix (when defined in the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; but not the &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt; command). - 12/15/2025 1:35 PM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.4...f4978f0 Full Changelog: v2.2.4...f4978f0]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.3&#039;&#039;&#039;&lt;br /&gt;
* Improvements to the &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; class in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** No more pointer caching (less memory usage, faster openings / list to list transitions, more consistent behavior).&lt;br /&gt;
** Proper &amp;amp;quot;wall&amp;amp;quot; handling for initial clicks that select the first / last ListItems (no instant wrap around until subsequent clicks).&lt;br /&gt;
** Theme variable &amp;lt;code&amp;gt;trackbar_color&amp;lt;/code&amp;gt; is now &amp;lt;code&amp;gt;scrollbar_color&amp;lt;/code&amp;gt; + new color &amp;lt;code&amp;gt;scrollbar_wall_color&amp;lt;/code&amp;gt; (triggered when tapping ends of the list).&lt;br /&gt;
*** Updates to &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ultra-blue.ini&amp;lt;/code&amp;gt; themes (as well as &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;).&lt;br /&gt;
**** Themes will need to be re-applied for changes to be applied.&lt;br /&gt;
** Fixes to the &amp;amp;quot;immediate focus&amp;amp;quot; implementation introduced in v2.2.2.&lt;br /&gt;
* New package command header &amp;lt;code&amp;gt;;footer=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;footer_highlight=&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;;footer=&amp;lt;/code&amp;gt; allows users to pre-define a default footer value for a package command (to be used, stored, and set when no footer exists in the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; for the package.&lt;br /&gt;
** &amp;lt;code&amp;gt;;footer_highlight=&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; parameter that will draw the footer with the highlight color when on.&lt;br /&gt;
*** &amp;lt;code&amp;gt;footer_highlight&amp;lt;/code&amp;gt; is also a new key to be used in the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; for manually configuring the footer highlight for the command.&lt;br /&gt;
* Hold mode &amp;lt;code&amp;gt;;mode=hold&amp;lt;/code&amp;gt; is no longer a command mode and can now be set for &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;slot&amp;lt;/code&amp;gt; commands via &amp;lt;code&amp;gt;;hold=true&amp;lt;/code&amp;gt;.&lt;br /&gt;
** The default generated &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt; now uses this command header.&lt;br /&gt;
*** Users may want to delete their &amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt; and have Ultrahand re-generate it if they are still using the old &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; If using &amp;lt;code&amp;gt;;mode=hold&amp;lt;/code&amp;gt;, users will need to update their commands to leverage &amp;lt;code&amp;gt;;hold=true&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
* Fixes to the placeholder parsing implementation.&lt;br /&gt;
** Proper handling and resolution sequencing of unresolved placeholders.&lt;br /&gt;
** Placeholder methods before the &amp;lt;code&amp;gt;_source&amp;lt;/code&amp;gt; definitions are now carried over to the rest of the commands (rather than reset).&lt;br /&gt;
* Touch improvements to track-bars.&lt;br /&gt;
* Optimizations to command menu drawings.&lt;br /&gt;
* Various corrections, bug fixes, and improvements.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/ec26959...v2.2.3 Full Changelog: ec26959...v2.2.3]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Footer package command header bug fixes (now to allow spaces). - 12/11/2025 3:57 PM PST&lt;br /&gt;
** Bug fix from prior changes. - 12/11/2025 5:20 PM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.3...8bc9e73 Full Changelog: v2.2.3...8bc9e73]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.2&#039;&#039;&#039;&lt;br /&gt;
* Proper fix for default combo initializations (on fresh installs).&lt;br /&gt;
** Launch combo is first checked and loaded from &amp;lt;code&amp;gt;/config/tesla/config.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
** If the Tesla combo does not exist, and no combo in &amp;lt;code&amp;gt;/config/ultrahand/config.ini&amp;lt;/code&amp;gt; exists, users can use the default Tesla combo (&amp;lt;code&amp;gt;L+DDOWN+RS&amp;lt;/code&amp;gt;) or the default Ultrahand combo (&amp;lt;code&amp;gt;ZL+ZR+DDOWN&amp;lt;/code&amp;gt;) for initializing their default combo.&lt;br /&gt;
*** Once initialized, Ultrahand will assume the combo the user used until changed in the Settings menu.&lt;br /&gt;
* Bug fix for returning from an overlay while touch is still in progress (multiple cursors).&lt;br /&gt;
** If foreground is in focus and a button is clicked while touch is in progress, input will now be prevented (with button click feedback).&lt;br /&gt;
* Bug fix for returning to the overlay menu after using an overlay launch combo and exiting the overlay (&amp;lt;code&amp;gt;KEY_B&amp;lt;/code&amp;gt; click).&lt;br /&gt;
** Before the &amp;lt;code&amp;gt;jumpToItem&amp;lt;/code&amp;gt; implementation would kick in on the next launch of Ultrahand after closing the overlay, causing the cursor to shift unnecessarily to the last open overlay title on the overlay menu.&lt;br /&gt;
* Bug fix for widget settings not auto-loading on first fresh install launch.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.1...v2.2.2 Full Changelog: v2.2.1...v2.2.2]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Overlay frame top/bottom synchronization bug fix (for invoking the script overlay). - 12/07/2025 4:01 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.2.2...ec26959 Full Changelog: v2.2.2...ec26959]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.1&#039;&#039;&#039;&lt;br /&gt;
* New command mode &amp;lt;code&amp;gt;;mode=hold&amp;lt;/code&amp;gt; for triggering a &amp;amp;quot;hold A to execute&amp;amp;quot; type response (similar to &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;).&lt;br /&gt;
** The pre-generated &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt; now utilizes &amp;lt;code&amp;gt;;mode=hold&amp;lt;/code&amp;gt; for its shutdown command.&lt;br /&gt;
* New commands &amp;lt;code&amp;gt;set-ini-val-matching-key&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;remove-ini-key-matching-key&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;path_exists&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;set-ini-val-matching-key&amp;lt;/code&amp;gt; will set an ini value to all ini sections that include the matching pattern key.&lt;br /&gt;
*** Called &amp;lt;code&amp;gt;set-ini-val-matching-key &amp;amp;lt;FILE_PATH&amp;amp;gt; &amp;amp;lt;PATTERN_KEY&amp;amp;gt; &amp;amp;lt;DESIRED_KEY&amp;amp;gt; &amp;amp;lt;DESIRED_VALUE&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;remove-ini-key-matching-key&amp;lt;/code&amp;gt; will remove all key value pairs from an ini from sections that include a matching pattern key.&lt;br /&gt;
*** Called &amp;lt;code&amp;gt;remove-ini-key-matching-key &amp;amp;lt;FILE_PATH&amp;amp;gt; &amp;amp;lt;PATTERN_KEY&amp;amp;gt; &amp;amp;lt;DESIRED_KEY&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;path_exists&amp;lt;/code&amp;gt; will return command success or failure based upon if the path provided exists or not.&lt;br /&gt;
*** Called &amp;lt;code&amp;gt;path_exists &amp;amp;lt;PATH&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Can be quite useful when chained within &amp;lt;code&amp;gt;try:&amp;lt;/code&amp;gt; blocks.&lt;br /&gt;
* Placeholder replacement improvements for chaining with a source command.&lt;br /&gt;
** In addition to &amp;lt;code&amp;gt;ini_file&amp;lt;/code&amp;gt; (like before), users can now use the full catalogue of placeholders and chain them with their &amp;lt;code&amp;gt;_source&amp;lt;/code&amp;gt; method definition.&lt;br /&gt;
** Various improvements to placeholder replacements.&lt;br /&gt;
* Slight refinements to &amp;lt;code&amp;gt;list_file_source&amp;lt;/code&amp;gt; to include newlines when chained with tables.&lt;br /&gt;
** Slight formatting improvements for tables on the &amp;lt;code&amp;gt;ScriptOverlay&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New package [https://github.com/ppkantorski/Memory-Kit Memory Kit] (latest revision of the old [https://github.com/ppkantorski/Ultrahand-Overlay/tree/main/examples/Memory%20Config Memory Config] package example; Ultrahand v2.2.1+ only).&lt;br /&gt;
** This package includes the &amp;lt;code&amp;gt;mesosphere.bin&amp;lt;/code&amp;gt; [https://github.com/Craftyawesome/Atmosphere/tree/memory-hack memory hack] (&amp;lt;code&amp;gt;1.85 MB&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;stripped&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** Keep in mind that the &amp;lt;code&amp;gt;stripped&amp;lt;/code&amp;gt; version will break the web browser, which will cause crashes on certain games and apps that utilize the web browser.&lt;br /&gt;
*** The &amp;lt;code&amp;gt;1.85 MB&amp;lt;/code&amp;gt; version however should not have any issues.&lt;br /&gt;
** Regular users should &#039;&#039;not&#039;&#039; touch the &amp;lt;code&amp;gt;Configure Commands&amp;lt;/code&amp;gt; tab as it is strictly available for development and testing of memory configurations for &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New base64 decoding placeholder.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;{base64_decode(&amp;amp;lt;ENCODED_STRING&amp;amp;gt;)}&amp;lt;/code&amp;gt; .&lt;br /&gt;
* Improvement to haptics (stronger and more consistent feedback).&lt;br /&gt;
* Bug fix for combos on forced &amp;lt;code&amp;gt;AMS v1.10+&amp;lt;/code&amp;gt; support overlays.&lt;br /&gt;
** Combos were not working properly for overlays with forced support.&lt;br /&gt;
** Forced AMS v1.10+ support is &#039;&#039;&#039;not recommended&#039;&#039;&#039;, but can still be used with manual patching overlay binaries.&lt;br /&gt;
*** It is highly recommended that all overlays get recompiled for proper AMS v1.10+ support.&lt;br /&gt;
* New unsupported warning notification displayed when trying to launch an unsupported overlay.&lt;br /&gt;
* All pages now get drawn with the cursor automatically set (no cursor flickering into view).&lt;br /&gt;
* Bug fix for sluggish table scrolling after triggering a jump / wrap to bottom.&lt;br /&gt;
* Bug fix for exit sound + haptics kicking in when combo launching an overlay during a notification.&lt;br /&gt;
* Bug fix for degrees symbol on Chinese fonts.&lt;br /&gt;
* Slight optimizations to &amp;lt;code&amp;gt;stbtt_FindGlyphIndex_impl&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Various additional tweaks, bug fixes and corrections.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.2.0&#039;&#039;&#039;&lt;br /&gt;
* New overlay heap size configurations with automatic reloads (in the &amp;lt;code&amp;gt;System Settings&amp;lt;/code&amp;gt; menu).&lt;br /&gt;
** Default heap size for HOS 21+ is now set to 4MB (displayed as &amp;lt;code&amp;gt;nx-ovlloader-&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** Although rare, some overlays may not work properly on 4MB (without a fix implemented).&lt;br /&gt;
**** To fix some of these overlays, they should be using &amp;lt;code&amp;gt;socketInitialize&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;socketInitializeDefault&amp;lt;/code&amp;gt; (if utilized).&lt;br /&gt;
**** Overlays should also not be utilizing a full 1280x720p framebuffer when on 4MB.&lt;br /&gt;
** Default heap size for HOS 20 is now set to 6MB (displayed as &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Default heap size for HOS 19 and lower is now set to 8MB (displayed as &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Users can also add a 4th higher option by adding to &amp;lt;code&amp;gt;/config/ultrahand/config.ini&amp;lt;/code&amp;gt; a new section &amp;lt;code&amp;gt;memory&amp;lt;/code&amp;gt; with key &amp;lt;code&amp;gt;custom_overlay_memory_MB&amp;lt;/code&amp;gt; and an integer value (2MB intervals greater than 8MB only).&lt;br /&gt;
*** After adding that entry, a 4th memory option will appear (displayed as &amp;lt;code&amp;gt;nx-ovlloader×&amp;lt;/code&amp;gt;).&lt;br /&gt;
** If Ultrahand deems there is not enough memory (at least 5.3 MB free after potential changes), then changes will not be applied.&lt;br /&gt;
* Users can now completely exit the overlay system from the &amp;lt;code&amp;gt;System Settings&amp;lt;/code&amp;gt; menu.&lt;br /&gt;
** This will recover all memory consumed by &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;Ultrahand Overlay&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Users can then use &amp;lt;code&amp;gt;Ultrahand-Reload.nro&amp;lt;/code&amp;gt; from homebrew launcher (now bundled with &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;) to restart / reset &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; without rebooting.&lt;br /&gt;
* Commands &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;dot-clean&amp;lt;/code&amp;gt; memory optimizations.&lt;br /&gt;
** Larger deletes, moves, and copies than &amp;lt;code&amp;gt;v2.1.8&amp;lt;/code&amp;gt; are now possible (even on a 4MB heap).&lt;br /&gt;
** &amp;lt;code&amp;gt;dot-clean&amp;lt;/code&amp;gt; now also removes all &amp;lt;code&amp;gt;.DS_Store&amp;lt;/code&amp;gt; files for the specified directory (and subdirectories).&lt;br /&gt;
* Now bundled with [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v2.0.0 nx-ovlloader v2.0.0] (which includes the new helper module [https://github.com/ppkantorski/nx-ovlreloader nx-ovlreloader]).&lt;br /&gt;
** &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; compilation has been discontinued (no longer necessary).&lt;br /&gt;
** The &amp;lt;code&amp;gt;nx-ovloader+&amp;lt;/code&amp;gt; zip on &amp;lt;code&amp;gt;v2.0.0&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** It is provided for now during a grace period to ensure users can easily update from the system settings menu.&lt;br /&gt;
*** In the future after &amp;lt;code&amp;gt;nx-ovlloader v2.0.0&amp;lt;/code&amp;gt;, if not on Ultrahand Overlay v2.2.0+, update methods &#039;&#039;might&#039;&#039; be broken.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Users no longer need the &amp;lt;code&amp;gt;/config/ultrahand/expansion/&amp;lt;/code&amp;gt; folder and can safely delete it after updating.&lt;br /&gt;
* Software updates now have the option to download a temporary &amp;lt;code&amp;gt;update.ini&amp;lt;/code&amp;gt; command file (if provided on release) for micro managing the installation / update process.&lt;br /&gt;
** Software updates instructions have also been slightly reworked for easier management.&lt;br /&gt;
* Command &amp;lt;code&amp;gt;exec&amp;lt;/code&amp;gt; now can be called with any package ini file (in addition to &amp;lt;code&amp;gt;boot_package.ini&amp;lt;/code&amp;gt; like before).&lt;br /&gt;
** Users can call this with &amp;lt;code&amp;gt;exec &amp;amp;lt;ENTRY_NAME&amp;amp;gt; [ULTRAHAND_INI_FILE_PATH]&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** &amp;lt;code&amp;gt;ULTRAHAND_INI_FILE_PATH&amp;lt;/code&amp;gt; in this case is an optional parameter, the path to the package ini file containing the command entry.&lt;br /&gt;
*** When not provided, it will assume commands from &amp;lt;code&amp;gt;boot_package.ini&amp;lt;/code&amp;gt; (just like before).&lt;br /&gt;
* Slight improvements to notifications (new &amp;lt;code&amp;gt;tsl::notification-&amp;amp;gt;showNow&amp;lt;/code&amp;gt; implementation).&lt;br /&gt;
** This allows instant display of the notification without waiting for the last notification to transition.&lt;br /&gt;
** Packages can also use &amp;lt;code&amp;gt;showNow&amp;lt;/code&amp;gt; via &amp;lt;code&amp;gt;notify-now&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;notification-now&amp;lt;/code&amp;gt; (called the same way as &amp;lt;code&amp;gt;notify&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;notification&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Sound effects now work on 6MB+ overlay heap sizes (disabled on 4MB).&lt;br /&gt;
* Improvements to TrackBar touch.&lt;br /&gt;
* Improvements to touch haptics (now to trigger on touch).&lt;br /&gt;
* Improvements rounded rects and circles (slightly more refined AA).&lt;br /&gt;
* Changes to socket initialization for improved memory usage (enables downloads on 4MB and improved memory).&lt;br /&gt;
* Bug fix for haptics becoming disabled after sleep.&lt;br /&gt;
* Bug fix for &amp;lt;code&amp;gt;;display_title=&amp;lt;/code&amp;gt; in packages interfering with proper returns to the last selected list item on the menu (as seen with returning from &amp;lt;code&amp;gt;Alchemist&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Various tweaks, optimizations, bug fixes, and corrections.&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Bug fix for software updates from v2.2.0 forwards. - 11/28/2025 8:36 PM PST&lt;br /&gt;
** New command &amp;lt;code&amp;gt;download-no-retry&amp;lt;/code&amp;gt; for download commands with zero retry attempts.&lt;br /&gt;
** More accurate failed download detections.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.8&#039;&#039;&#039;&lt;br /&gt;
* AMS 1.10.0+ and HOS 21 support.&lt;br /&gt;
** Overlays not recompiled with latest &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt; no longer work without manual force enabling (potentially dangerous).&lt;br /&gt;
** Unsupported overlays can now be hidden (toggle is within the settings menu).&lt;br /&gt;
*** &#039;&#039;&#039;Important:&#039;&#039;&#039; All homebrew on &amp;lt;code&amp;gt;AMS 1.10+&amp;lt;/code&amp;gt; must to be recompiled with latest &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt; for properly ensured support.&lt;br /&gt;
* Anti-aliasing is now applied to rounded rects, uniform rounded rects, bordered rounded rects, and circles.&lt;br /&gt;
** Overall smoother, less pixelated / jagged edges.&lt;br /&gt;
* Slightly improved wallpaper loading speed + menu opening speed.&lt;br /&gt;
* Memory expansion toggle / notification bug fix.&lt;br /&gt;
* Initial state bug fix for main settings menu toggles.&lt;br /&gt;
* Bug fix for ini file saving. (buffer was too large)&lt;br /&gt;
** This fixes the &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt; overlay command in Ultrahand packages.&lt;br /&gt;
* Bug fix for ini file parsing not returning &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; on failed parsings.&lt;br /&gt;
* Fixed Chinese font selection to ensure all glyphs display correctly on Traditional Chinese systems.&lt;br /&gt;
** Special thanks to [https://github.com/BadFish-HSrui @BadFish-HSrui].&lt;br /&gt;
* &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; has now been updated (v1.1.2) for AMS 1.10+ support.&lt;br /&gt;
** &#039;&#039;&#039;Important:&#039;&#039;&#039; Double check that you are on v1.1.2 BEFORE updating AMS (if you choose to).&lt;br /&gt;
* &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt; has been manually recompiled with &amp;lt;code&amp;gt;-Os&amp;lt;/code&amp;gt; as well as several other code generation optimizations.&lt;br /&gt;
* Various minor bug fixes and corrections.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.7...v2.1.8 Full Changelog: v2.1.7...v2.1.8]&lt;br /&gt;
&lt;br /&gt;
Quick Update:&lt;br /&gt;
* Removal of pre-release status. - 11/15/2025 6:04 PM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.8...e84de59 Full Changelog: v2.1.8...e84de59]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.7&#039;&#039;&#039;&lt;br /&gt;
* Bug fix for notification text being drawn transparent when hidden (related to the global alpha limiter).&lt;br /&gt;
* Bug fix for toggling &amp;lt;code&amp;gt;Memory Expansion&amp;lt;/code&amp;gt; preventing users from exiting the Ultrahand settings menu.&lt;br /&gt;
* Ini method optimizations (faster loading).&lt;br /&gt;
* Proper menu return to last selected overlay / package when version labels are hidden.&lt;br /&gt;
** A unique ID is now used to facilitate precise returns.&lt;br /&gt;
* Widget backdrop now utilizes the alpha limiter.&lt;br /&gt;
* Language config map (for the initial and repeated parsing of languages) is no longer static.&lt;br /&gt;
** This should free up more memory in the global heap.&lt;br /&gt;
* Slight improvements for haptics initializations (to prevent failed initializations that sometimes happen on first boot).&lt;br /&gt;
* Various minor code optimizations.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.6...v2.1.7 Full Changelog: v2.1.6...v2.1.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.6&#039;&#039;&#039;&lt;br /&gt;
* Proper return to the last selected item after changing settings in the main Ultrahand settings menu.&lt;br /&gt;
** Ultrahand settings menu can also now be entered from the hidden overlays / packages page.&lt;br /&gt;
* Improved shake highlight animation.&lt;br /&gt;
* Faster wallpaper loading.&lt;br /&gt;
* Various rendering optimizations.&lt;br /&gt;
* Global alpha limiter for glyph rendering.&lt;br /&gt;
** This will improve appearances when transitioning shown to hidden and vise versa.&lt;br /&gt;
** renderer-&amp;gt;a is no longer needed for drawString calls in libultrahand.&lt;br /&gt;
* Bug fix for click animation not triggering on toggle list items.&lt;br /&gt;
* Various code optimizations (8kb smaller than v2.1.5).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.5&#039;&#039;&#039;&lt;br /&gt;
* New haptic feedback and sound effects options in &amp;lt;code&amp;gt;Features&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;Miscellaneous&amp;lt;/code&amp;gt; in the settings menu.&lt;br /&gt;
** Haptic feedback is off by default.&lt;br /&gt;
** Sound effects are on by default, but require [https://github.com/ppkantorski/Ultrahand-Overlay/tree/main/sounds sound files] to be added to &amp;lt;code&amp;gt;/config/ultrahand/sounds/&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Users updating to v2.1.5 must run &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; from the &amp;lt;code&amp;gt;Software Update&amp;lt;/code&amp;gt; page one more time after updating for the included sound effects to be properly installed.&lt;br /&gt;
*** Users can manually disable updates of the sound effect files by adding a file named &amp;lt;code&amp;gt;NO_SOUND_EFFECTS_UPDATES.flag&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;/config/ultrahand/flags/&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Sound effects are only enabled on &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt;, not regular &amp;lt;code&amp;gt;nx-ovloader&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Sidenote:&#039;&#039;&#039;&lt;br /&gt;
*** Sounds and haptics will also be applied to every overlay compiled with &amp;lt;code&amp;gt;libultrahand v2.1.5+&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Sound files must be relatively small to prevent memory related issues and keep latency low.&lt;br /&gt;
** Special thanks to [https://github.com/sskyNS @sskyNS] for help with identifying the correct audio services implementation.&lt;br /&gt;
* Transition bug fixes for cached &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; frames.&lt;br /&gt;
** These fixes ensure the overlay list changes are synchronized with the top and bottom parts of the OverlayFrame during menu transitions.&lt;br /&gt;
* Various refinements and bug fixes to the download file command.&lt;br /&gt;
** Buffer sizes have been tweaked, memory related improvements applied, and boundary case crashes resolved.&lt;br /&gt;
* Memory related improvements for &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt; commands running on the interpreter thread.&lt;br /&gt;
* The &amp;amp;quot;Selection is empty!&amp;amp;quot; message is now properly centered, and applied to the overlay menu when no overlays have been added.&lt;br /&gt;
** This ensures that translations are properly centered text instead of drawing text misaligned.&lt;br /&gt;
* Memory related improvements to wallpaper loading / reloading.&lt;br /&gt;
* Cleanup of notification processing queue.&lt;br /&gt;
* Cleanup of screenshots and recording layer initializations.&lt;br /&gt;
* Various code refinements, bug fixes, and tweaks.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.4...v2.1.5 Full Changelog:  v2.1.4...v2.1.5]&lt;br /&gt;
&lt;br /&gt;
Quick Update:&lt;br /&gt;
* Overlay exit sound to respect the disable sound effects preset. - 11/03/2025 9:37 PM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.5...3670712 Full Changelog: v2.1.5...3670712]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.4&#039;&#039;&#039;&lt;br /&gt;
* New &amp;lt;code&amp;gt;sdout.zip&amp;lt;/code&amp;gt; distribution, bundled with all components and dependencies (up-to-date) for easier SD card installations.&lt;br /&gt;
** Installs &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; by default, but users can toggle off &amp;lt;code&amp;gt;Memory Expansion&amp;lt;/code&amp;gt; after installing for regular &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New build ID placeholder variable &amp;lt;code&amp;gt;{build_id}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New system region setting command &amp;lt;code&amp;gt;set-region &amp;amp;lt;REGION&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;lt;REGION&amp;amp;gt;&amp;lt;/code&amp;gt; is either &amp;lt;code&amp;gt;JPN&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;EUR&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AUS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTK&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;CHN&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Reboot is required for changes to apply.&lt;br /&gt;
* Bug fix for &amp;lt;code&amp;gt;refresh wallpaper&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Various code optimizations and restructurings.&lt;br /&gt;
* Stability related bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.3...v2.1.4 Full Changelog: v2.1.3...v2.1.4]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.3&#039;&#039;&#039;&lt;br /&gt;
* Bug fixes for regular toggles (state was not being preserved in &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Bug fixes for toggles in the root package (&amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Restoration of the &amp;lt;code&amp;gt;{index}&amp;lt;/code&amp;gt; source function placeholder (was accidentally removed at some point over time).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/855f0d1...v2.1.3 Full Changelog: 855f0d1...v2.1.3]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.2&#039;&#039;&#039;&lt;br /&gt;
* Rendering bug fix for regular &amp;lt;code&amp;gt;TrackBar&amp;lt;/code&amp;gt; objects / uniform rounded rects.&lt;br /&gt;
** Uniform rounded rects in some circumstances when drawn off screen could cause crashes.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Did not affect &amp;lt;code&amp;gt;StepTrackBar&amp;lt;/code&amp;gt;/ &amp;lt;code&amp;gt;NamedStepTrackBar&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Left / right sensitivity fix for value transitions on regular &amp;lt;code&amp;gt;TrackBar&amp;lt;/code&amp;gt; objects have been adjusted for precision.&lt;br /&gt;
* Various method restructurings.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/7b8de7f...v2.1.2 Full Changelog: 7b8de7f...v2.1.2]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* TrackBar touch highlight style improvements. - 09/30/2025 3:04 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.2...855f0d1 Full Changelog: v2.1.2...855f0d1]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.1&#039;&#039;&#039;&lt;br /&gt;
* Toggles now utilize the interpreter thread with state change only applied for successful completion.&lt;br /&gt;
* New true/false command option ;progress= for toggle commands to show the command in progress throbber.&lt;br /&gt;
* Memory related improvements to move/mv with file logging and compare.&lt;br /&gt;
** This fix enables base loader to properly handle large move commands with proper file logging (as seen in Alchemist&#039;s content manager).&lt;br /&gt;
* Bug fix for {local_ip} placeholder not returning the local IP address.&lt;br /&gt;
* Various minor code optimizations.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.0...v2.1.1 Full Changelog: v2.1.0...v2.1.1]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Overlay sort priority bug fix.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v2.1.1...7b8de7f Full Changelog: v2.1.1...7b8de7f]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.1.0&#039;&#039;&#039;&lt;br /&gt;
* New system notifications implementation.&lt;br /&gt;
** There are 3 ways to interface with system notifications.&lt;br /&gt;
*** a. &#039;&#039;&#039;Ultrahand Package&#039;&#039;&#039;: &amp;lt;code&amp;gt;notify &amp;amp;lt;MESSAGE&amp;amp;gt; [FONT_SIZE]&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;notification &amp;amp;lt;MESSAGE&amp;amp;gt; [FONT_SIZE]&amp;lt;/code&amp;gt;&lt;br /&gt;
*** b. &#039;&#039;&#039;Direct &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt; calls:&#039;&#039;&#039; &amp;lt;code&amp;gt;tsl::notification-&amp;amp;gt;show(&amp;amp;lt;MESSAGE&amp;amp;gt;, [FONT_SIZE], [PRIORITY]);&amp;lt;/code&amp;gt;&lt;br /&gt;
*** c. &#039;&#039;&#039;External json calls&#039;&#039;&#039;: &amp;lt;code&amp;gt;{&amp;amp;quot;text&amp;amp;quot;: &amp;amp;lt;MESSAGE&amp;amp;gt;, &amp;amp;quot;font_size&amp;amp;quot;: [FONT_SIZE], &amp;amp;quot;priority&amp;amp;quot;: [PRIORITY]}&amp;lt;/code&amp;gt;&lt;br /&gt;
** Font size is an optional parameter, default value &amp;lt;code&amp;gt;28&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Priority is an optional, with jsons always assume priority &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; while Ultrahand packages / direct calls assume priority &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Creation time for jsons is auto prioritized for everything within the same priority level.&lt;br /&gt;
** For external json calls, jsons can be written to &amp;lt;code&amp;gt;/config/ultrahand/notifications/&amp;amp;lt;PROGRAM_ID&amp;amp;gt;-&amp;amp;lt;UNIQUE_ID&amp;amp;gt;.notify&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** This function allows any program, including sys modules, to interface with the notification prompts.&lt;br /&gt;
** New theme color for notification text: &amp;lt;code&amp;gt;notification_text_color&amp;lt;/code&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Notice:&#039;&#039;&#039; Overlays must be compiled with the latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; for system notifications within those overlays.&lt;br /&gt;
* New overlay / package setting option to delete an overlay / package. (Hold A to Delete)&lt;br /&gt;
* New &amp;lt;code&amp;gt;Miscellaneous&amp;lt;/code&amp;gt; options for toggling on / off notifications and show delete.&lt;br /&gt;
* New notifications for startup, new version detection, and when reboot is required for changes to apply.&lt;br /&gt;
* New page for empty selection commands.&lt;br /&gt;
* New placeholder variable for returning the current local ip address, called &amp;lt;code&amp;gt;{local_ip}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New package header option &amp;lt;code&amp;gt;;display_title=&amp;lt;/code&amp;gt; for displaying an alternative in package display title.&lt;br /&gt;
* Category headers now auto-scroll right to left for extended text.&lt;br /&gt;
* Improvements to package memory usage.&lt;br /&gt;
** Pages are no longer held up in memory for deeper menu navigation.&lt;br /&gt;
* Improvements to &amp;lt;code&amp;gt;dot-clean&amp;lt;/code&amp;gt;, faster file processing completion.&lt;br /&gt;
* Improvements package item &amp;lt;code&amp;gt;jumpToItem&amp;lt;/code&amp;gt; calls.&lt;br /&gt;
** Full command names, including tags, are now properly utilized for specific item name isolations.&lt;br /&gt;
* Package settings now groups various package options into an &amp;lt;code&amp;gt;Options&amp;lt;/code&amp;gt; category.&lt;br /&gt;
* Command file / folder paths can now properly use &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt; to specify the directory above a current folder.&lt;br /&gt;
** i.e. &#039;./../test/&#039; will return the folder named &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; above the current directory the package ini is currently running from.&lt;br /&gt;
* Settings and favorites buttons are now displayed on the menu within the &amp;lt;code&amp;gt;Packages&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Overlays&amp;lt;/code&amp;gt; category headers.&lt;br /&gt;
* Bug fix for wallpaper alpha when hiding overlays.&lt;br /&gt;
** Proper fading with alpha transitions.&lt;br /&gt;
* Interpreter thread bug fixes for safer rapid launches.&lt;br /&gt;
* Bug fixes for the command parser; proper order of operation resolution for nested placeholder replacements.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/a3a4519...v2.1.0 Full Changelog: a3a4519...v2.1.0]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0.1&#039;&#039;&#039;&lt;br /&gt;
* Overlay interaction (including button combinations) is now strictly limited to handheld mode controller as well as the player 1 controller.&lt;br /&gt;
** In the past, when other controllers click buttons, because the overlay looked for all controller inputs the sum of all buttons being clicked could trigger the menu or launch a combo unintentionally.&lt;br /&gt;
** This fix was set in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;, so all overlays compiled with it will now include this fix.&lt;br /&gt;
* Underscan and &amp;amp;quot;right-side mode&amp;amp;quot; bug fixes and adjustments.&lt;br /&gt;
** Users no longer need to exit the overlay for the underscan fix to correct the overlay dimensions (auto-corrections).&lt;br /&gt;
** Right-side mode is auto applied now when clicked in the settings menu with no need to reload.&lt;br /&gt;
** Fix is also in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;, so it will apply to all newly compiled overlays.&lt;br /&gt;
* Launch combo mode settings is now rendered within its own dropdown instead of being drawn directly within the root of overlay setting&#039;s menu (when specified).&lt;br /&gt;
* Various minor corrections.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/8a7904e...a3a4519 Full Changelog:  8a7904e...a3a4519]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0.0&#039;&#039;&#039;&lt;br /&gt;
* New combo package launcher (similar to the overlay launcher).&lt;br /&gt;
** Users can set any package to key combos.&lt;br /&gt;
** New &amp;lt;code&amp;gt;Quick Launch&amp;lt;/code&amp;gt; package setting (for disabling &amp;lt;code&amp;gt;Boot Commands&amp;lt;/code&amp;gt; for the package during combo launches).&lt;br /&gt;
** More button combinations have also been added to the list.&lt;br /&gt;
* New command &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt; for opening overlays (with or without launch arguments) from the package menu.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;open /path/to/overlay.ovl {LAUNCH_ARGUMENT_1} {LAUNCH_ARGUMENT_2} {...}&amp;lt;/code&amp;gt;&lt;br /&gt;
** Overlays can now be compiled to handle specific tasks for Ultrahand packages.&lt;br /&gt;
* Buttons &amp;lt;code&amp;gt;ZL&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ZR&amp;lt;/code&amp;gt; will now skip the menu exactly one viewport&#039;s distance up or down.&lt;br /&gt;
** Multiple clicks and hold will trigger rapid page skipping.&lt;br /&gt;
** This should allow for quicker and easier menu navigation, as well as table scrolling.&lt;br /&gt;
* New atmosphere updater functionality.&lt;br /&gt;
** To use, copy / move / unzip files into place as you would expect (overwriting stratosphere and package3 in &amp;lt;code&amp;gt;/atmosphere/&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** Instead of being overwritten, the files will be assigned a &amp;lt;code&amp;gt;.ultra&amp;lt;/code&amp;gt; extension.&lt;br /&gt;
** After files have been moved into place, any &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; command will automatically trigger the Ultrahand Updater payload.&lt;br /&gt;
*** This payload is downloaded once the moment &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt; is ran after installing Atmosphere as well as during software updates.&lt;br /&gt;
*** Users must reboot from Ultrahand Overlay itself for changes to apply.&lt;br /&gt;
* &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; detection for overlays compiled with &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Highlight colors for overlays with &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; functionality.&lt;br /&gt;
** Recompilation of all &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; overlays is needed with the new Ultrahand signature added (see &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt;).&lt;br /&gt;
* New command &amp;lt;code&amp;gt;dot-clear&amp;lt;/code&amp;gt;, called &amp;lt;code&amp;gt;dot-clear &amp;amp;lt;PATH_TO_BE_CLEARED&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This command will remove all metadata files that begin with &amp;lt;code&amp;gt;._&amp;lt;/code&amp;gt; from any specified directory (as well as all subdirectories).&lt;br /&gt;
** This is useful for users who transfer files and mods over to their SD card from macOS.&lt;br /&gt;
*** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; These metadata files can cause issues with mods, so clearing them can be quite useful.&lt;br /&gt;
* New theme color configurations and updates to the default theme as well as &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ultra-blue.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;banner_version_text_color&amp;lt;/code&amp;gt;: Default color of the version label below the Ultrahand title.&lt;br /&gt;
** &amp;lt;code&amp;gt;overlay_text_color&amp;lt;/code&amp;gt;: Default color for overlay titles.&lt;br /&gt;
** &amp;lt;code&amp;gt;overlay_version_text_color&amp;lt;/code&amp;gt;: Default color for overlay versions.&lt;br /&gt;
** &amp;lt;code&amp;gt;ult_overlay_text_color&amp;lt;/code&amp;gt;: Default color for libultrahand compiled overlay titles.&lt;br /&gt;
** &amp;lt;code&amp;gt;ult_overlay_version_text_color&amp;lt;/code&amp;gt;: Default color for libultrahand compiled overlay versions&lt;br /&gt;
** &amp;lt;code&amp;gt;package_text_color&amp;lt;/code&amp;gt;: Default color for package titles.&lt;br /&gt;
** &amp;lt;code&amp;gt;package_version_text_color&amp;lt;/code&amp;gt;: Default color for package versions.&lt;br /&gt;
** &amp;lt;code&amp;gt;ult_package_text_color&amp;lt;/code&amp;gt;: Secondary color for package titles.&lt;br /&gt;
** &amp;lt;code&amp;gt;ult_package_version_text_color&amp;lt;/code&amp;gt;: Secondary color for package versions.&lt;br /&gt;
** &amp;lt;code&amp;gt;text_separator_color&amp;lt;/code&amp;gt;: Default color for text separator symbols.&lt;br /&gt;
** &amp;lt;code&amp;gt;selection_value_text_color&amp;lt;/code&amp;gt;: Default color for the selection value.&lt;br /&gt;
*** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Users may want to re-apply the default theme once for some of the changes to apply.&lt;br /&gt;
* Proper input isolation so menu navigation buttons do not interfere with combos and vise versa.&lt;br /&gt;
* Thread safe ini, hexing, file operations, and page swapping.&lt;br /&gt;
** New libultrahand command &amp;lt;code&amp;gt;swapTo&amp;lt;/code&amp;gt; to safely handle swapping between pages (goBack / pop + changeTo).&lt;br /&gt;
* The &amp;lt;code&amp;gt;Miscellaneous&amp;lt;/code&amp;gt; settings menu has been re-organized and now includes &amp;lt;code&amp;gt;Theme Settings&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Theme settings includes options that allows you to toggle on and off various theme configurations.&lt;br /&gt;
* On return from within package dropdowns / forwarders, the page is now automatically refreshed.&lt;br /&gt;
** All command footers and tables will automatically redrawn.&lt;br /&gt;
* Package headers can now utilize &amp;lt;code&amp;gt;;show_widget=true&amp;lt;/code&amp;gt; for rendering the widget.&lt;br /&gt;
* Dropdown menu commands can now utilize &amp;lt;code&amp;gt;;mode=slot&amp;lt;/code&amp;gt; for changing the dropdown symbol to the option symbol.&lt;br /&gt;
* Software update now installs &amp;lt;code&amp;gt;nx-ovlloader / nx-ovlloader+ v1.1.1&amp;lt;/code&amp;gt; (latest release).&lt;br /&gt;
** Bug fixes for rapid overlay swapping, reduced file io calls, better memory mapping, and slight optimizations.&lt;br /&gt;
* Language changes are now instantly applied to the menu from within the language selection.&lt;br /&gt;
* Faster menu drawing.&lt;br /&gt;
* Buffer sizes for &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; (memory expansion) are now loaded immediately during overlay launch.&lt;br /&gt;
** Slight buffer size tweaks for base loader.&lt;br /&gt;
* Slight improvements to &amp;lt;code&amp;gt;Swipe To Open&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Slight redesigns to various text components within the overlay.&lt;br /&gt;
* Rendering related fixes and improvements.&lt;br /&gt;
* Fixes to file list generation from copy and move to include subdirectories.&lt;br /&gt;
** This functionality allows &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt; to properly handle the removal of folders when appropriate for toggling content mods.&lt;br /&gt;
* Numerous bug fixes, memory optimizations, navigational fixes and alignment corrections.&lt;br /&gt;
** Significantly reduced memory pressure throughout numerous methods.&lt;br /&gt;
** Countless code optimizations and better memory handling.&lt;br /&gt;
** Bug fix for step track-bar values vanishing.&lt;br /&gt;
** Touch related fixes (long touch and release).&lt;br /&gt;
** Dangerous pattern bug fixes.&lt;br /&gt;
** &amp;lt;code&amp;gt;json_file&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;json_file_source&amp;lt;/code&amp;gt; bug fixes.&lt;br /&gt;
** Many other fixes not mentioned.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/2602970...v2.0.0 Full Changelog: 2602970...v2.0.0]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Transparent screenshot cursor opacity bug fix. ~ 8/6/2025 12:11 PM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.10.0&#039;&#039;&#039;&lt;br /&gt;
* Expansion of the overlay key combo launcher implementation.&lt;br /&gt;
** New launch argument modes implementation.&lt;br /&gt;
*** Users can add launch argument modes to overlay entries in &amp;lt;code&amp;gt;/config/ultrahand/overlays.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** For example, for &amp;lt;code&amp;gt;mini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;micro&amp;lt;/code&amp;gt; entry points on my [https://github.com/ppkantorski/Status-Monitor-Overlay/releases/tag/v1.1.9%2Br4 Status Monitor fork], users can add &amp;lt;code&amp;gt;mode_args=(-mini, -micro)&amp;lt;/code&amp;gt; as well as &amp;lt;code&amp;gt;mode_labels=(Mini, Micro)&amp;lt;/code&amp;gt; for labeling them.&lt;br /&gt;
*** After adding &amp;lt;code&amp;gt;mode_args&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;mode_args&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mode_labels&amp;lt;/code&amp;gt;) new mode options will appear within the overlay settings menu (&amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; on an overlay).&lt;br /&gt;
** All &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; compiled overlays (compiled with v1.10.0+) now allow for quick launches.&lt;br /&gt;
*** This means you can jump from one overlay / overlay mode to another without ever returning to &amp;lt;code&amp;gt;ovlmenu.ovl&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Pressing the combo used to launch the overlay will now also return users back to &amp;lt;code&amp;gt;ovlmenu.ovl&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Setting combos will now also instantly be applied (no need to exit the menu).&lt;br /&gt;
** You can now also be anywhere within Ultrahand and trigger an instant jump to any overlay / overlay mode using key combos.&lt;br /&gt;
* New &amp;lt;code&amp;gt;Launch Combos&amp;lt;/code&amp;gt; global toggle in the &amp;lt;code&amp;gt;Miscellaneous&amp;lt;/code&amp;gt; settings menu.&lt;br /&gt;
** This will disable all overlay launch combos from working.&lt;br /&gt;
** Can be useful if you are playing a game that demands lots of button combinations.&lt;br /&gt;
* Critical bug fixes for menu navigation.&lt;br /&gt;
** The &amp;lt;code&amp;gt;ScriptOverlay&amp;lt;/code&amp;gt; was actually still broken in v1.9.10 on certain menus.&lt;br /&gt;
** These fixes address a lot of potential mishandling of pointers in &amp;lt;code&amp;gt;main.cpp&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Unzip commands have been improved and are now less prone to errors.&lt;br /&gt;
* Commands in progress will now properly hit 100% instead of going from 99% to complete.&lt;br /&gt;
* Cursor center focus has been slightly lowered.&lt;br /&gt;
** This prevents &#039;&#039;slight&#039;&#039; scrolling from kicking in after hitting the 4th item on the list.&lt;br /&gt;
* Slight re-organization of the &amp;lt;code&amp;gt;Miscellaneous&amp;lt;/code&amp;gt; settings menu.&lt;br /&gt;
* The overlay / package settings menu now displays the version, with slight formatting improvements.&lt;br /&gt;
* Changing the sort priority for overlays / packages now triggers an immediate jump to the item being sorted upon return.&lt;br /&gt;
* Various alignment corrections and bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.10...2602970 Full Changelog: v1.9.10...2602970]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.10 Quick patch (stability update)&#039;&#039;&#039;&lt;br /&gt;
* Restoration of the &amp;lt;code&amp;gt;ScriptOverlay&amp;lt;/code&amp;gt; (minus on a command).&lt;br /&gt;
** There was a lingering issue within the &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; class that was causing mis-handlings of the cached items for certain menus upon return.&lt;br /&gt;
*** This issue should be resolved now.&lt;br /&gt;
* Potential memory leak bug fix for aborted &amp;lt;code&amp;gt;unzip&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
* Smoother text scrolling (for list items with long text).&lt;br /&gt;
* Slightly improved color sampling for the cursor blink effect.&lt;br /&gt;
* Slight optimizations to the &amp;lt;code&amp;gt;handleRunningInterpreter&amp;lt;/code&amp;gt; input handler.&lt;br /&gt;
* Removal of unused variable declarations in the &amp;lt;code&amp;gt;MainMenu&amp;lt;/code&amp;gt; class.&lt;br /&gt;
* Slight alignment corrections to the table background.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/8ee2844...v1.9.10 Full Changelog: 8ee2844...v1.9.10]&lt;br /&gt;
* More widget options have been added to the settings menu.&lt;br /&gt;
** New toggle for disabling dynamic temperature colors.&lt;br /&gt;
** New toggle for forcing center text alignment (on by default).&lt;br /&gt;
*** When off, text alignment will be set to the right (like before v1.9.8).&lt;br /&gt;
** New toggle for extended backdrop (off by default).&lt;br /&gt;
*** This is an alternative style choice to the backdrop that some users may prefer.&lt;br /&gt;
** Widget menu has also now been broken up into &amp;amp;quot;Widget Items&amp;amp;quot; and &amp;amp;quot;Widget Settings&amp;amp;quot;.&lt;br /&gt;
** Widget positioning and alignments have also been corrected.&lt;br /&gt;
* Important navigational bug fixes (memory leak fixes).&lt;br /&gt;
** Page swapping (including rapid page swapping), list deconstruction, and management of list item cache have been significantly cleaned up to prevent crashes.&lt;br /&gt;
** These changes should prevent lingering navigational memory related issues from randomly occurring.&lt;br /&gt;
* New theme color configurations.&lt;br /&gt;
** &amp;lt;code&amp;gt;temperature_color&amp;lt;/code&amp;gt;: color for temperatures on the widget with dynamic colors disabled.&lt;br /&gt;
** &amp;lt;code&amp;gt;battery_charging_color&amp;lt;/code&amp;gt;: color for the power indicator on the widget with the battery charging.&lt;br /&gt;
** &amp;lt;code&amp;gt;battery_low_color&amp;lt;/code&amp;gt;: color for the power indicator on the widget when battery is below 20%.&lt;br /&gt;
** Propagation of &amp;lt;code&amp;gt;version_text_color&amp;lt;/code&amp;gt; to apply to overlay and package versions on the menu (in addition to the &amp;lt;code&amp;gt;Ultrahand&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; version displayed below the logo).&lt;br /&gt;
* Improved dynamic logo with higher resolution color sampling (smoother gradient color progression).&lt;br /&gt;
* New alpha fix for screenshots taken with &amp;lt;code&amp;gt;Opaque Screenshots&amp;lt;/code&amp;gt; set to off.&lt;br /&gt;
** This sets the alpha for certain elements to 14, others to 15 to make screenshots with transparency look more accurate.&lt;br /&gt;
* Slight changes to default theme.&lt;br /&gt;
** Table background has been reset to a darker shade of gray.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Default theme must be re-applied for changes to occur.&lt;br /&gt;
* Various alignment corrections and bug fixes.&lt;br /&gt;
* &#039;&#039;&#039;Notice:&#039;&#039;&#039; Next version is currently planned to be v1.9.10, so don&#039;t get your hopes up for v2.0.0 quite yet.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/3c6125a...v1.9.9 Full Changelog: 3c6125a...v1.9.9]&lt;br /&gt;
&lt;br /&gt;
Quick update: (cosmetic)&lt;br /&gt;
* Slight alignment fix to the widget / widget backdrop (1 pixel shift). ~ 7/6/2025 8:46 AM PST&lt;br /&gt;
* Script overlay has been temporarily disabled to prevent issues. ~ 7/6/2025 10:25 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.9...8ee2844 Full Changelog: v1.9.9...8ee2844]&lt;br /&gt;
* &#039;&#039;&#039;Warning:&#039;&#039;&#039; The script overlay is currently not working right (minus on a command). I am working on a fix. For now do not use this function.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.8&#039;&#039;&#039;&lt;br /&gt;
* Important bug fix for &amp;lt;code&amp;gt;pchtxt2ips&amp;lt;/code&amp;gt; conversion not properly naming the ips files.&lt;br /&gt;
** This issue came up because of the &amp;lt;code&amp;gt;NO_FSTREAM&amp;lt;/code&amp;gt; directive change in v1.9.7 (was not properly handled).&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Conversion of pchtxt&#039;s in v1.9.7 is bugged so v1.9.8 is recommended (for usage with &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Various UI improvements to the widget.&lt;br /&gt;
** Widget text are now centered instead of aligned to the right.&lt;br /&gt;
** New widget backdrop implementation for highlighting the widget region with a uniform rounded rectangle.&lt;br /&gt;
*** This makes the widget easier to see with certain wallpapers, or transparencies.&lt;br /&gt;
*** Located in &amp;lt;code&amp;gt;UI Settings &amp;amp;gt; Widget&amp;lt;/code&amp;gt; (on by default).&lt;br /&gt;
*** New theme color settings &amp;lt;code&amp;gt;widget_backdrop_color&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;widget_backdrop_alpha&amp;lt;/code&amp;gt;.&lt;br /&gt;
* The default theme has some new color changes.&lt;br /&gt;
** For changes to be applied, users must re-apply the default theme in the settings menu.&lt;br /&gt;
** There are also a couple minor changes in &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Screenshot opacity implementation has been cleaned up.&lt;br /&gt;
** Longer opacity delay as well as cleaner click and release state handling.&lt;br /&gt;
* Shake highlight implementation bug fixes and top / bottom of list triggering.&lt;br /&gt;
** Clicking left on the overlay page or right on the packages page now triggers the shake highlight effect (like before v1.9.7).&lt;br /&gt;
** Holding down / up and hitting the last / first item will now triggers a shake highlight in the direction you are traversing from (new).&lt;br /&gt;
* Bug fix for certain theme color changes not fully being applied after application and returning to main menu.&lt;br /&gt;
* Rendering methods have been optimized again (very slightly faster than v1.9.7).&lt;br /&gt;
* Various alignment corrections and bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.7...v1.9.8 Full Changelog: v1.9.7...v1.9.8]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Revert of new screenshot opacity implementation. - 07/03/2024 4:53 AM PST&lt;br /&gt;
** The issue was if a capture event gets missed, the opacity might never reset.&lt;br /&gt;
** A simpler, better fix is just to set opacity duration to 1.5s.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.8...3c6125a Full Changelog: v1.9.8...3c6125a]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.7&#039;&#039;&#039;&lt;br /&gt;
* Improved &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;unzip&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
** Library &amp;lt;code&amp;gt;zzip&amp;lt;/code&amp;gt; has been migrated to &amp;lt;code&amp;gt;minizip&amp;lt;/code&amp;gt; for improved compatibility (as well as z64 support).&lt;br /&gt;
** Tested with near 4 GB downloads (FAT32 limit) as well as files within zips.&lt;br /&gt;
*** Also tested with zips containing thousands of files.&lt;br /&gt;
* Buffer calibrations for &amp;lt;code&amp;gt;download&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unzip&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;hex&amp;lt;/code&amp;gt; functions.&lt;br /&gt;
** Calibrations have been set for &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; based upon available heap memory.&lt;br /&gt;
** &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;:&lt;br /&gt;
*** &#039;&#039;&#039;Download:&#039;&#039;&#039; 128 KB read, 32 KB write&lt;br /&gt;
*** &#039;&#039;&#039;Unzip:&#039;&#039;&#039; 128 KB read, 32 KB write&lt;br /&gt;
*** &#039;&#039;&#039;Copy:&#039;&#039;&#039; 64 KB read / write&lt;br /&gt;
*** &#039;&#039;&#039;Hex:&#039;&#039;&#039; 64 KB read&lt;br /&gt;
** &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt;:&lt;br /&gt;
*** &#039;&#039;&#039;Download:&#039;&#039;&#039; 256 KB read, 128 KB write&lt;br /&gt;
*** &#039;&#039;&#039;Unzip:&#039;&#039;&#039; 256 KB read, 128 KB write&lt;br /&gt;
*** &#039;&#039;&#039;Copy:&#039;&#039;&#039; 256 KB read / write&lt;br /&gt;
*** &#039;&#039;&#039;Hex:&#039;&#039;&#039; 256 KB read&lt;br /&gt;
** The result is faster downloads / unzips / copying / hexing and less memory issues.&lt;br /&gt;
*** Optimizations in this revision have lead to more heap memory available overall.&lt;br /&gt;
* The selection overlay (sourced commands) has been optimized.&lt;br /&gt;
** Improved memory management for usage with &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; (base loader).&lt;br /&gt;
*** Base loader will now only draw up to 250 list items to prevent crashes.&lt;br /&gt;
**** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Keep in mind that if you have more than 250 items on the page, you will not be seeing everything.&lt;br /&gt;
**** &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; however has this draw limit uncapped.&lt;br /&gt;
* Library migration for &amp;lt;code&amp;gt;jansson&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;cJSON&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;cJSON&amp;lt;/code&amp;gt; compiles smaller and should be faster for the use cases within Ultrahand.&lt;br /&gt;
* Now compiled without &amp;lt;code&amp;gt;fstream&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;NO_FSTREAM&amp;lt;/code&amp;gt; directive), utilizing &amp;lt;code&amp;gt;stdio.h&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
** This should be faster and help keep compilation size smaller.&lt;br /&gt;
* Optimizations and fixes to various rendering methods.&lt;br /&gt;
** The result is very slightly faster rendering than v1.9.6 with less potential issues.&lt;br /&gt;
* Across the board optimizations to all &amp;lt;code&amp;gt;libultra&amp;lt;/code&amp;gt; methods.&lt;br /&gt;
** Improved ini, hex, path, and json functions.&lt;br /&gt;
** Bug fixes for &amp;lt;code&amp;gt;NO_FSTREAM&amp;lt;/code&amp;gt; directive.&lt;br /&gt;
* Slight cleanup of lingering visual annoyances within the &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; class.&lt;br /&gt;
** This fixes the menu not returning all the way to the top after scrolling.&lt;br /&gt;
** Fix for menu auto jumping to top / bottom when pressing into a table at the very bottom / top instead of scrolling to the end.&lt;br /&gt;
** Slightly improved table scrolling.&lt;br /&gt;
** Removal of unnecessary internal methods.&lt;br /&gt;
** Memory leak bug fix for rapid page swaps (faster than it can draw).&lt;br /&gt;
* Bottom touch regions have been properly aligned based upon the text.&lt;br /&gt;
** This should keep the touch regions clean and uniform regardless of language changes.&lt;br /&gt;
* New flag option for disabling the auto update of &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; during the software update command.&lt;br /&gt;
** To use this, add a file (can be empty) named &amp;lt;code&amp;gt;NO_LOADER_UPDATES.flag&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;/config/ultrahand/flags/&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; Be cautious of using this, because once the flag has been added, Ultrahand will not be updating &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;.&lt;br /&gt;
* For interpreter in progress with downloads / unzips / large copies, the bottom menu bar will now display &amp;lt;code&amp;gt;Hide&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Cancel&amp;lt;/code&amp;gt; with proper touch integration.&lt;br /&gt;
* Cleanup of &amp;lt;code&amp;gt;unique&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;shared&amp;lt;/code&amp;gt; pointers in &amp;lt;code&amp;gt;main.cpp&amp;lt;/code&amp;gt; to now purely utilize raw pointers instead.&lt;br /&gt;
* The glyph cache will now be cleared automatically when you enter Ultrahand packages as well as the selection overlay.&lt;br /&gt;
** This prevents the glyph cache from getting too large after entering tons of pages. (potential memory leak)&lt;br /&gt;
* The &amp;lt;code&amp;gt;Script Overlay&amp;lt;/code&amp;gt; now displays the package forwarder commands.&lt;br /&gt;
* New language variable for abbreviated &amp;lt;code&amp;gt;Overlays&amp;lt;/code&amp;gt;, for drawing on the bottom touch region.&lt;br /&gt;
** This will be helpful for languages with large translations of this word.&lt;br /&gt;
* Faster wallpaper loading.&lt;br /&gt;
* Removal of all &amp;lt;code&amp;gt;.reserve&amp;lt;/code&amp;gt; declarations throughout the project.&lt;br /&gt;
** From extensive testing, it appears that memory reservations have been contributing to heap overload and memory leaks.&lt;br /&gt;
* Revert of all &amp;lt;code&amp;gt;__builtin_&amp;lt;/code&amp;gt; memory related methods back to their &amp;lt;code&amp;gt;std&amp;lt;/code&amp;gt; counterpart.&lt;br /&gt;
** For the use cases within the project, the builtin appears to be less ideal since in many circumstances size is not determined during compilation.&lt;br /&gt;
* Bug fix for memory expansion toggle.&lt;br /&gt;
** &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; was not auto-applying upon the first click (with no expansion zips initially installed).&lt;br /&gt;
* Bug fix for favoriting / starring overlays not properly utilizing jump menu navigation.&lt;br /&gt;
* Various alignment corrections and bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/907f143...v1.9.7 Full Changelog: 907f143...v1.9.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.6&#039;&#039;&#039;&lt;br /&gt;
* New commands &amp;lt;code&amp;gt;set-json-val&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;set-json-value&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;set-json-key&amp;lt;/code&amp;gt; (similar to &amp;lt;code&amp;gt;set-ini-val&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;set-ini-key&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;set-json-val &amp;amp;lt;JSON_PATH&amp;amp;gt; &amp;amp;lt;JSON_KEY&amp;amp;gt; &amp;amp;lt;JSON_VALUE&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*** This will set a value in a json according to a key.&lt;br /&gt;
*** If the json / key does not exist, it will be auto-created.&lt;br /&gt;
** &amp;lt;code&amp;gt;set-json-key &amp;amp;lt;JSON_PATH&amp;amp;gt; &amp;amp;lt;JSON_KEY&amp;amp;gt; &amp;amp;lt;NEW_JSON_KEY&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
*** This changes the name of a key in a json&lt;br /&gt;
*** Will do nothing if the json does not exist.&lt;br /&gt;
* Cleanup of all lingering visual glitches during menu navigation.&lt;br /&gt;
** No more cursor flicker as pages transition.&lt;br /&gt;
** Proper isolation / cleanup of &amp;lt;code&amp;gt;jumpToItem&amp;lt;/code&amp;gt; execution.&lt;br /&gt;
** The &#039;&#039;&#039;Language Menu&#039;&#039;&#039; will now also return to the last selected item after a language change (with translations properly applied).&lt;br /&gt;
* Updating Ultrahand from the &amp;lt;code&amp;gt;Software Update&amp;lt;/code&amp;gt; page will now also update the version label stored in the HBAppStore&#039;s &amp;lt;code&amp;gt;info.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This will prevent &amp;amp;quot;new update&amp;amp;quot; flags from appearing on the HBAppStore after updating Ultrahand from within itself.&lt;br /&gt;
*** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; If you don&#039;t see the version label on the update command footer before clicking it, the version label will not be updated.&lt;br /&gt;
**** If HBAppStore does not have the latest version, the store will still say that there is an update available.&lt;br /&gt;
* Various alignment corrections (tables, scrollbar, list height corrections, internal &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; corrections, etc).&lt;br /&gt;
* Various scrolling related fixes and improvements.&lt;br /&gt;
* Various bug fixes and code optimizations.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.5...v1.9.6 Full Changelog: v1.9.5...v1.9.6]&lt;br /&gt;
&lt;br /&gt;
Quick update:&lt;br /&gt;
* Lingering memory leak fixed for rapid language changes. - 6/23/2025 6:12 AM PST &#039;&#039;&#039;(UPDATE IS RECOMMENDED)&#039;&#039;&#039;&lt;br /&gt;
* Last minor bug fix:&lt;br /&gt;
** Table drawer wasn&#039;t properly updating colors on the main menu. - 6/23/2025 7:55 AM PST&lt;br /&gt;
*** You&#039;d only notice if you have a table on the page that you are returning to after changing themes.&lt;br /&gt;
* Final fix:&lt;br /&gt;
** Rounded rects drawing out of bounds bug fix (like touching next page on Japanese for instance). - 6/23/2025 10:24 AM PST&lt;br /&gt;
** This was causing a crash because of my renderer optimizations. Should all be good now.&lt;br /&gt;
*** Alignments will be corrected in the next version.&lt;br /&gt;
*** [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.6...907f143 Full Changelog: v1.9.6...907f143]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.5&#039;&#039;&#039;&lt;br /&gt;
* Forward list caching has been properly implemented.&lt;br /&gt;
** This allows &amp;lt;code&amp;gt;jumpToItem&amp;lt;/code&amp;gt; to seamlessly transition during forward navigation (like in v1.9.3, but with no memory leaks).&lt;br /&gt;
* Refresh commands with &amp;lt;code&amp;gt;jumpToItem&amp;lt;/code&amp;gt; are now moved to &amp;lt;code&amp;gt;refresh-to&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;refresh-to &amp;amp;lt;ITEM_NAME&amp;amp;gt; [ITEM_VALUE] [EXACT_MATCH]&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Exact match is an optional &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; value, set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; by default.&lt;br /&gt;
*** When false, it will check if the value / versions are contained within the strings rather than an exact match.&lt;br /&gt;
* Various fixes to scrolling as well as table scrolling.&lt;br /&gt;
* Fixes to download commands using a completion timeout (cancelling downloads early).&lt;br /&gt;
** This completion timeout was added by mistake and could make downloads of large files fail.&lt;br /&gt;
* New language &amp;lt;code&amp;gt;Ukrainian&amp;lt;/code&amp;gt; has been added.&lt;br /&gt;
* Additional key combos have been added to the combo list.&lt;br /&gt;
* Table wrapping alignments have been corrected.&lt;br /&gt;
* Various bug fixes and corrections.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/6d027f9...v1.9.5 Full Changelog: 6d027f9...v1.9.5]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.4&#039;&#039;&#039;&lt;br /&gt;
* Several critical memory leaks have been properly addressed.&lt;br /&gt;
** Memory leaks can cause crashes when the heap gets overloaded.&lt;br /&gt;
*** This was especially noticeable with extremely long menus or long chains of commands (like download and unzip).&lt;br /&gt;
** The prior frame caching implementation needed to be reworked / revised.&lt;br /&gt;
*** Potential broken / dangling pointers not properly being managed / cleared.&lt;br /&gt;
*** Backwards caching works fine, but forward caching of prior frames with &amp;lt;code&amp;gt;jumpToItem&amp;lt;/code&amp;gt; needs to be revised in the next release to prevent the menu from briefly flickering into view.&lt;br /&gt;
** Directory path caching has been completely removed (an unnecessary &amp;quot;old&amp;quot; implementation).&lt;br /&gt;
** Various tweaks to &amp;lt;code&amp;gt;libultra&amp;lt;/code&amp;gt; functions for improved reliability.&lt;br /&gt;
* Implementation of a &amp;lt;code&amp;gt;Font Manager&amp;lt;/code&amp;gt; class in &amp;lt;code&amp;gt;tsl::gfx&amp;lt;/code&amp;gt; with a universal glyph cache for better memory management across &amp;lt;code&amp;gt;drawString&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;calculateStringWidth&amp;lt;/code&amp;gt; methods.&lt;br /&gt;
** All &amp;lt;code&amp;gt;drawString&amp;lt;/code&amp;gt; methods and have been reconsolidated.&lt;br /&gt;
** Fixes for alternative fonts were also implemented.&lt;br /&gt;
* Complete rework of the prior scrolling implementation for smoother scrolling navigation.&lt;br /&gt;
** Table scrolling for subsequent tables has been fixed (was not working properly in v1.9.3).&lt;br /&gt;
** Table scrolling is also a lot smoother than before, with proper velocity interpolation.&lt;br /&gt;
* (NEW) Dropdown commands (normally empty command blocks) can now be written with &amp;lt;code&amp;gt;;mini=true&amp;lt;/code&amp;gt; for making mini dropdown menus command forwarders.&lt;br /&gt;
* Various alignment corrections, selection text color corrections, method optimizations and bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/a592584...v1.9.4 Full Changelog: a592584...v1.9.4]&lt;br /&gt;
&lt;br /&gt;
Quick Update:&lt;br /&gt;
* Ini placeholder bug fix.&lt;br /&gt;
** Certain ini placeholders replacements were not being properly handled within the source replacement functions.&lt;br /&gt;
** This likely affected &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt; for certain entry names in &amp;lt;code&amp;gt;hekate_ipl.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.4...6d027f9 Full Changelog: v1.9.4...6d027f9]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.3&#039;&#039;&#039;&lt;br /&gt;
* Menu navigation has been significantly cleaned up utilizing the new jump to item implementations.&lt;br /&gt;
** Returning to the exact overlay entry you launched on the menu (on both the &amp;lt;code&amp;gt;Overlays&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Hidden Overlays&amp;lt;/code&amp;gt; pages).&lt;br /&gt;
** Auto navigation to the checkmark on dropdown selections.&lt;br /&gt;
** Page caching for smoother page to page transitions.&lt;br /&gt;
** Left to right page swaps now have seamless transitions.&lt;br /&gt;
* New &amp;lt;code&amp;gt;Show Hidden&amp;lt;/code&amp;gt; toggle in &amp;lt;code&amp;gt;Settings &amp;amp;gt; UI Settings &amp;amp;gt; Miscellaneous &amp;amp;gt; Menu Items&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This will hide your hidden tabs on the &amp;lt;code&amp;gt;Overlays&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Packages&amp;lt;/code&amp;gt; pages.&lt;br /&gt;
** Hidden overlays with &amp;lt;code&amp;gt;Show Hidden&amp;lt;/code&amp;gt; set to off will also have their launch combos blacklisted.&lt;br /&gt;
** This should be useful for giving your device to a kid to play without having them mess-up something critical.&lt;br /&gt;
* Numerous across the board code optimizations.&lt;br /&gt;
** Slightly faster rendering than v1.9.2.&lt;br /&gt;
* Tables will now only poll new values when placeholders are present.&lt;br /&gt;
* Complete cleanup of alignments (including table alignments).&lt;br /&gt;
* Complete cleanup/rewrite of the &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; class in &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt; for seamless menu navigation.&lt;br /&gt;
* Various touch scrolling bug fixes (especially for touch scrolling on tables, then resuming with controller input).&lt;br /&gt;
* Jump menu navigation can now be used in packages (expansion of &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; command).&lt;br /&gt;
** &amp;lt;code&amp;gt;refresh &amp;amp;lt;ITEM_NAME&amp;amp;gt; [ITEM_VALUE]&amp;lt;/code&amp;gt; will auto-return the cursor to the item that fits the match.&lt;br /&gt;
** &amp;lt;code&amp;gt;ITEM_VALUE&amp;lt;/code&amp;gt; is &#039;&#039;&#039;optional&#039;&#039;&#039; and does not have to be defined.&lt;br /&gt;
** &amp;lt;code&amp;gt;ITEM_NAME&amp;lt;/code&amp;gt; is only optional with a blank string as its value, i.e. &amp;lt;code&amp;gt;&#039;&#039;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Numerous bug fixes and corrections.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.2...v1.9.3 Full Changelog: v1.9.2...v1.9.3]&lt;br /&gt;
Update: (Users should run update again for proper polling isolation.)&lt;br /&gt;
* New &amp;lt;code&amp;gt;;polling=&amp;lt;/code&amp;gt; table header (&amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;) for placeholder polling. (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default)&lt;br /&gt;
** This will make it easier for users to manually specify when placeholder polling should be enabled.&lt;br /&gt;
** &#039;&#039;&#039;Notice:&#039;&#039;&#039; Projects leveraging placeholder polling will need to set &amp;lt;code&amp;gt;;polling=true&amp;lt;/code&amp;gt; on their table commands.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.3...a592584 Full Changelog: v1.9.3...a592584]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.2&#039;&#039;&#039;&lt;br /&gt;
* Restoring of debug logging.&lt;br /&gt;
** This caused issues in rare test cases, using the &amp;lt;code&amp;gt;USING_LOGGING_DIRECTIVE&amp;lt;/code&amp;gt; set to 0 (off).&lt;br /&gt;
** Debug logging needs to be consolidated more (later).&lt;br /&gt;
* Opacity bug fix.&lt;br /&gt;
** This caused wallpapers to hit opacity before the rest of the items, making screenshots look weird. All fixed now.&lt;br /&gt;
* Jump menu navigation from clicking up at the top of the list bug fix.&lt;br /&gt;
** This caused multiple &amp;amp;quot;up&amp;amp;quot; clicks to get stuck on the last item on the list initially for the second &amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt; click. Also fixed.&lt;br /&gt;
* Slight refinement to the &amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;down&amp;lt;/code&amp;gt; jump menu navigation.&lt;br /&gt;
* Threshold for successive clicks has been set from 150ms to 100ms for smoother navigation.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.1...v1.9.2 Full Changelog: v1.9.1...v1.9.2]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.1&#039;&#039;&#039;&lt;br /&gt;
* Significant rendering improvements in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt; (again).&lt;br /&gt;
** Faster string rendering (with safeguards) as well as rendering of other objects.&lt;br /&gt;
** Faster glyph lookup (for drawing strings).&lt;br /&gt;
** Safe optimizations to critical rendering components (considerable improvements).&lt;br /&gt;
** 60fps now works on 918 MHz CPU with wallpapers.&lt;br /&gt;
** 60fps also works with 714 MHz CPU without wallpapers.&lt;br /&gt;
*** 612 Mhz CPU without wallpapers is now very close to 60fps with it rendering 60fps on certain menus.&lt;br /&gt;
* Bug fixes for left to right scrolling text (long ListItem text) not returning to its original position before restarting.&lt;br /&gt;
* Rewrite of the &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt; class in &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt; to properly allow jump menu navigation.&lt;br /&gt;
** When at the top of the menu and &amp;lt;code&amp;gt;up&amp;lt;/code&amp;gt; is pressed, the cursor will now automatically go to the bottom most item.&lt;br /&gt;
** When at the bottom of the menu and &amp;lt;code&amp;gt;down&amp;lt;/code&amp;gt; is pressed, the cursor will now automatically go back to the top.&lt;br /&gt;
** When &amp;lt;code&amp;gt;L&amp;lt;/code&amp;gt; is pressed, the cursor will jump to the top of the menu.&lt;br /&gt;
** When &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; is pressed, the cursor will jump to the bottom of the menu.&lt;br /&gt;
*** All jump menu implementations works on menus with ListItems and tables, or even just tables.&lt;br /&gt;
** Complete rewrite of the table scrolling implementation for smoother scrolling and less potential issues.&lt;br /&gt;
* Download commands now have a 10s timeout.&lt;br /&gt;
* &amp;lt;code&amp;gt;Software Update&amp;lt;/code&amp;gt; now removes the version label if it cannot pull the latest version details from GitHub.&lt;br /&gt;
** This will prevent people thinking an older version of the overlay is the latest.&lt;br /&gt;
* Slight cleanup of debug &amp;lt;code&amp;gt;logging&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Beta for [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.1.1 nx-ovlloader+ v1.1.1] is now live (not linked to &amp;lt;code&amp;gt;Update&amp;lt;/code&amp;gt; for now for testing).&lt;br /&gt;
&lt;br /&gt;
What&#039;s Changed:&lt;br /&gt;
* Tweak for dist target by [https://github.com/impeeza @impeeza] in [https://github.com/ppkantorski/Ultrahand-Overlay/pull/232 *232]&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/215e878...v1.9.1 Full Changelog: 215e878...v1.9.1]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.9.0&#039;&#039;&#039;&lt;br /&gt;
* Title ID polling bug fixes in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (cleanup of the foreground fix implementation).&lt;br /&gt;
** Before it was using old / outdated service calls for pulling the title ID.&lt;br /&gt;
** This issue appears to have caused crashes on certain switch environments according to users.&lt;br /&gt;
* Various code optimizations in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Rendering is slightly faster now than v1.8.9.&lt;br /&gt;
** Removal of &amp;lt;code&amp;gt;chrono&amp;lt;/code&amp;gt; for libnx alternatives.&lt;br /&gt;
* &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; have been re-compiled.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/becd070...v1.9.0 Full Changelog: becd070...v1.9.0]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Slight bug fixes with &amp;lt;code&amp;gt;libcurl&amp;lt;/code&amp;gt; initializations (revert of changes).&lt;br /&gt;
* &amp;lt;code&amp;gt;setNextOverlay&amp;lt;/code&amp;gt; bug fix for overlay filename launch arguments. - 06/07/2025 10:30 PM PST&lt;br /&gt;
* Bug fix for text extending off the screen causing crashes (like in lang file &amp;lt;code&amp;gt;es.json&amp;lt;/code&amp;gt;). - 06/08/2025 6:07 AM PST&lt;br /&gt;
* A more elegant solution will be applied later to speed up the rendering a pinch.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.9.0...215e878 Full Changelog: v1.9.0...215e878]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.9&#039;&#039;&#039;&lt;br /&gt;
* Significantly improved rendering has been applied to &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;&#039;s custom &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt; fork.&lt;br /&gt;
** This now allows for 60fps wallpapers on stock CPU clock speeds.&lt;br /&gt;
** CPU &amp;lt;code&amp;gt;714 MHz&amp;lt;/code&amp;gt; under-clock without wallpapers should now render at 60fps as well.&lt;br /&gt;
** CPU &amp;lt;code&amp;gt;612 MHz&amp;lt;/code&amp;gt; under-clock is not quite at 60fps yet, but on various pages it can get pretty close.&lt;br /&gt;
* A new bug fix for input isolation failing (foreground bug) on changing titles has also been applied to &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This should prevent overlays compiled with &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; from losing their input focus on the menu when a game starts up.&lt;br /&gt;
* Various optimizations to &amp;lt;code&amp;gt;drawTable&amp;lt;/code&amp;gt; (the table drawing method).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.8...v1.8.9 Full Changelog: v1.8.8...v1.8.9]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Slight cleanup of &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Revert of some of the cleanup changes. (bug fix for scrolling text)&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.9...becd070 Full Changelog: v1.8.9...becd070]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.8&#039;&#039;&#039;&lt;br /&gt;
* New &amp;lt;code&amp;gt;Key Combo&amp;lt;/code&amp;gt; implementation for launching any overlay.&lt;br /&gt;
** Located in the overlay settings menu (&amp;lt;code&amp;gt;Y&amp;lt;/code&amp;gt; on an overlay).&lt;br /&gt;
** This lets you set any overlay to any key combination (excluding your Ultrahand &amp;lt;code&amp;gt;Key Combo&amp;lt;/code&amp;gt;).&lt;br /&gt;
** When setting an already used combo, combos set for overlays with the same combo are removed.&lt;br /&gt;
** Very useful for quickly launching any overlay without invoking the &amp;lt;code&amp;gt;Ultrahand Overlay&amp;lt;/code&amp;gt; menu.&lt;br /&gt;
* Default theme table info color has been changed.&lt;br /&gt;
** For changes to apply to the default theme, users must re-apply the default theme in the theme selector on the settings menu.&lt;br /&gt;
* Fixes for &amp;lt;code&amp;gt;slot&amp;lt;/code&amp;gt; commands to render the updated footers instead of a checkmark.&lt;br /&gt;
* Long tap on commands now invoke the &amp;lt;code&amp;gt;ScriptOverlay&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This makes all options of the menu fully accessible now via touch.&lt;br /&gt;
* Bug fix for new packages and overlays not initially being listed with names until the menu reloads.&lt;br /&gt;
* Slight code optimizations.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.7...v1.8.8 Full Changelog: v1.8.7...v1.8.8]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.7&#039;&#039;&#039;&lt;br /&gt;
* Bug fixes for &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; toggles.&lt;br /&gt;
** There were issues with &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; not being properly resolved with subsequent clicks to &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; toggles.&lt;br /&gt;
** Issues should now be resolved.&lt;br /&gt;
* Sorting related bug fixes for command grouping &amp;lt;code&amp;gt;split5&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New method &amp;lt;code&amp;gt;flag&amp;lt;/code&amp;gt; for generating empty text files with the name of files/folders within a directory&lt;br /&gt;
** Called &amp;lt;code&amp;gt;flag &amp;amp;lt;input_path_wildcard_pattern&amp;amp;gt; &amp;amp;lt;output_dir&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Might not be particularly useful in most cases, but it is essential for proper management of active contents mods within &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Tweaks / improvements to &amp;lt;code&amp;gt;dangerous pattern&amp;lt;/code&amp;gt; detection.&lt;br /&gt;
** Patterns with multiple &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; next to each other (i.e. &amp;lt;code&amp;gt;**&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;***&amp;lt;/code&amp;gt;, etc) are now considered dangerous and will return a failed command for &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;null*&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;*null&amp;lt;/code&amp;gt; are also considered to be dangerous patterns (failed placeholder replacements).&lt;br /&gt;
** Cleanup of failed placeholder replacements to return &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; instead of empty values when necessary.```&lt;br /&gt;
* &amp;lt;code&amp;gt;ScriptOverlay&amp;lt;/code&amp;gt; (minus on a command) related bug fixes.&lt;br /&gt;
* Slight corrections to &amp;lt;code&amp;gt;compare&amp;lt;/code&amp;gt; as well as &amp;lt;code&amp;gt;split&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;slice&amp;lt;/code&amp;gt; placeholder methods.&lt;br /&gt;
* Slight code optimizations.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/06f9666...v1.8.7 Full Changelog: 06f9666...v1.8.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.6&#039;&#039;&#039;&lt;br /&gt;
* Tables now render live values with placeholder replacements.&lt;br /&gt;
** Values will poll / update once every second.&lt;br /&gt;
* New &amp;lt;code&amp;gt;back&amp;lt;/code&amp;gt; command implementation for simulating &amp;lt;code&amp;gt;Back&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;KEY_B&amp;lt;/code&amp;gt; button press.&lt;br /&gt;
* &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; commands now accept wildcard patterns for more advanced filtering of source inputs.&lt;br /&gt;
* New command grouping (&amp;lt;code&amp;gt;;grouping=&amp;lt;/code&amp;gt;) option &amp;lt;code&amp;gt;split5&amp;lt;/code&amp;gt;. (similar to &amp;lt;code&amp;gt;split3&amp;lt;/code&amp;gt; except it works on the folder containing the file/folder).&lt;br /&gt;
** &#039;&#039;&#039;Side-note:&#039;&#039;&#039; All command grouping modes will eventually be renamed to avoid confusion.&lt;br /&gt;
* Title ID placeholders &amp;lt;code&amp;gt;{title_id}&amp;lt;/code&amp;gt; now work within source function definitions.&lt;br /&gt;
* &amp;lt;code&amp;gt;pxhtxt2ips&amp;lt;/code&amp;gt; conversions now create an empty title ID text file within the folder where the IPS mod is generated.&lt;br /&gt;
** This feature is necessary for proper management of active mods within &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt;.&lt;br /&gt;
** The title ID is read from the comments within the &amp;lt;code&amp;gt;.pchtxt&amp;lt;/code&amp;gt; file (already necessary for pxhtxt2cheat conversions).&lt;br /&gt;
** All IPS mods must be regenerated for this file to be generated. Otherwise IPS mods will not register within the &amp;lt;code&amp;gt;Active&amp;lt;/code&amp;gt; tabs on &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Various menu traversal related bug fixes.&lt;br /&gt;
* Various bug fixes within &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.5...v1.8.6 Full Changelog: v1.8.5...v1.8.6]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Slight bug fix with menu traversal.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.6...06f9666 Full Changelog: v1.8.6...06f9666]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.5&#039;&#039;&#039;&lt;br /&gt;
* Critical bug fixes for decimal to hex conversions.&lt;br /&gt;
* Updates to all &amp;lt;code&amp;gt;devkitpro&amp;lt;/code&amp;gt; related libraries.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/2f3a5b6...v1.8.5 Full Changelog: 2f3a5b6...v1.8.5]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.4&#039;&#039;&#039;&lt;br /&gt;
* Various bug fixes to &amp;lt;code&amp;gt;isDangerousCombination&amp;lt;/code&amp;gt; (dangerous pattern detection). Certain wildcard patterns were being flagged with the old implementation that should not be.&lt;br /&gt;
** This fixes &amp;lt;code&amp;gt;exeFS Groups&amp;lt;/code&amp;gt;&#039;s &amp;lt;code&amp;gt;Enable All&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Disable All&amp;lt;/code&amp;gt; commands in &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Bug fixes for the &amp;lt;code&amp;gt;ScriptOverlay&amp;lt;/code&amp;gt; (minus on a command) where &amp;lt;code&amp;gt;./&amp;lt;/code&amp;gt; placeholders were not being properly replaced with the package folder for commands.&lt;br /&gt;
* Various logging related bug fixes. (default log is currently set to  &amp;lt;code&amp;gt;sdmc:/switch/.packages/log.txt&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;logging&amp;lt;/code&amp;gt; is enabled)&lt;br /&gt;
* Tweaks to &amp;lt;code&amp;gt;decimalToHex&amp;lt;/code&amp;gt; implementations in &amp;lt;code&amp;gt;libultra&amp;lt;/code&amp;gt; to manually specify byte group size (byte_group_size 2 = XX, byte_group_size 4 = XXXX, byte_group_size 6 = XXXXXX, etc). This should resolve problems related to a decimal value of 0. Default byte_group_size is 2, then will be assumed according to the decimal value if greater.&lt;br /&gt;
** &amp;lt;code&amp;gt;hex-by-custom-decimal-offset &amp;amp;lt;file_path&amp;amp;gt; &amp;amp;lt;custom_pattern&amp;amp;gt; &amp;amp;lt;offset&amp;amp;gt; &amp;amp;lt;decimal_data&amp;amp;gt; [byte_group_size]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;hex-by-custom-rdecimal-offset &amp;amp;lt;file_path&amp;amp;gt; &amp;amp;lt;custom_pattern&amp;amp;gt; &amp;amp;lt;offset&amp;amp;gt; &amp;amp;lt;rdecimal_data&amp;amp;gt; [byte_group_size]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;hex-by-decimal &amp;amp;lt;file_path&amp;amp;gt; &amp;amp;lt;decimal_data_to_replace&amp;amp;gt; &amp;amp;lt;decimal_data_replacement&amp;amp;gt; [byte_group_size] [optional_occurrence]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;hex-by-rdecimal &amp;amp;lt;file_path&amp;amp;gt; &amp;amp;lt;decimal_data_to_replace&amp;amp;gt; &amp;amp;lt;decimal_data_replacement&amp;amp;gt; [byte_group_size] [optional_occurrence]&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;{decimal_to_hex(decimal, byte_group_size)}&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;{decimal_to_hex(decimal)}&amp;lt;/code&amp;gt;&lt;br /&gt;
* Sidenote: For usage of &amp;lt;code&amp;gt;optional_occurrence&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;byte_group_size&amp;lt;/code&amp;gt; must be specified.&amp;lt;br /&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.3...v1.8.4 Full Changelog: v1.8.3...v1.8.4]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Pull Request [https://github.com/ppkantorski/Ultrahand-Overlay/issues/5 *5] got deleted in &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; for some reason, so &amp;lt;code&amp;gt;respect @disabled flag pchtxt&amp;lt;/code&amp;gt; functionality has been restored.&lt;br /&gt;
* Fixes to various hex method calls (some got broken with the update). - 06/26/2025 6:04 PM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.4...2f3a5b6 Full Changelog: v1.8.4...2f3a5b6]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.3&#039;&#039;&#039;&lt;br /&gt;
* New toggle option &amp;lt;code&amp;gt;Dynamic Logo&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;UI Settings &amp;amp;gt; Miscellaneous&amp;lt;/code&amp;gt; for enabling / disabling the dynamic logo effect.&lt;br /&gt;
* Various fixes to &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Launch combo is read from the &amp;lt;code&amp;gt;tesla.ini&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;ultrahand.ini&amp;lt;/code&amp;gt; does not exist for overlays compiled with libultrahand. (bug fix)&lt;br /&gt;
** Fix for converting pchtxt&#039;s with embedded comments as well as a couple other tweaks.&lt;br /&gt;
** Subtle UI corrections / improvements.&lt;br /&gt;
* The memory indicator on the &amp;lt;code&amp;gt;System&amp;lt;/code&amp;gt; page now shows the true memory (no longer -8MB) and has custom coloring.&lt;br /&gt;
** New theme colors &amp;lt;code&amp;gt;healthy_ram_text_color&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;neutral_ram_text_color&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;bad_ram_text_color&amp;lt;/code&amp;gt;.&lt;br /&gt;
*** Healthy is &amp;amp;gt;= 9MB.&lt;br /&gt;
*** Neutral is &amp;amp;lt; 9MB, &amp;amp;gt;= 3MB.&lt;br /&gt;
*** Bad is &amp;amp;lt; 3MB.&lt;br /&gt;
* Various minor tweaks.&lt;br /&gt;
** The pre-generated package.ini now has symbols on some of the &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt; commands and the &amp;lt;code&amp;gt;Shutdown&amp;lt;/code&amp;gt; command.&lt;br /&gt;
** The &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; theme that is installed when updating has been updated to use white text color.&lt;br /&gt;
** The &amp;lt;code&amp;gt;ultra-blue.ini&amp;lt;/code&amp;gt; theme that is installed when updating is now the old &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; theme color.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d448e61...v1.8.3 Full Changelog: d448e61...v1.8.3]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.2&#039;&#039;&#039;&lt;br /&gt;
* New &amp;lt;code&amp;gt;Page Swap&amp;lt;/code&amp;gt; toggle for swapping the overlays and packages page locations.&lt;br /&gt;
** Located in &amp;lt;code&amp;gt;Settings &amp;amp;gt; UI Settings &amp;amp;gt; Miscellaneous &amp;amp;gt; Effects &amp;amp;gt; Page Swap&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This feature will draw the packages menu on the left and the overlays menu on the right when enabled.&lt;br /&gt;
* Fixes to &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; for preventing screenshots from occurring during capture event initializations.&lt;br /&gt;
** This is particularly useful for isolating actual capture button events from initializations within projects like [https://github.com/HookedBehemoth/bitmap-printer bitmap-printer] / [https://github.com/J-D-K/PNGShot PNGShot].&lt;br /&gt;
*** If using &amp;lt;code&amp;gt;bitmap-printer&amp;lt;/code&amp;gt;, it is currently recommended to use a version built with pull request [https://github.com/HookedBehemoth/bitmap-printer/pull/25 *25] or else there will be dragons (unwanted screenshots in the &amp;lt;code&amp;gt;Bitmaps&amp;lt;/code&amp;gt; directory generated every time a &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; compiled overlays is opened).&lt;br /&gt;
*** If using &amp;lt;code&amp;gt;PNGShot&amp;lt;/code&amp;gt;, it is currently recommended to use a version built with pull request [https://github.com/J-D-K/PNGShot/pull/5 *5], however builds from latest source code on the repo should now work as well without producing unwanted screenshots.&lt;br /&gt;
** &#039;&#039;&#039;Notice:&#039;&#039;&#039;&lt;br /&gt;
*** All projects built with &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; will need to be recompiled with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; for this fix to apply.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.1...v1.8.2 Full Changelog: v1.8.1...v1.8.2]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Fixes for returning to overlay menu after exiting overlay with &amp;lt;code&amp;gt;Page Swap&amp;lt;/code&amp;gt;. - 11/05/2024 3:06 AM PST&lt;br /&gt;
* Touch selection fixes for left / right page with &amp;lt;code&amp;gt;Page Swap&amp;lt;/code&amp;gt;. - 11/05/2024 3:33 AM PST&lt;br /&gt;
* Dangerous pattern tweak for wildcard patterns within the &amp;lt;code&amp;gt;Album&amp;lt;/code&amp;gt; folder. - 11/05/2024 6:42 PM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.2...d448e61 Full Changelog: v1.8.2...d448e61]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.1&#039;&#039;&#039;&lt;br /&gt;
* New package header &amp;lt;code&amp;gt;;show_version=&amp;lt;/code&amp;gt; is an optional &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; option for forcing the menu to show the package version instead of the current section title under the package title. (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default)&lt;br /&gt;
* Various bug fixes.&lt;br /&gt;
** Fix to &amp;lt;code&amp;gt;Software Update&amp;lt;/code&amp;gt; command and &amp;lt;code&amp;gt;Memory Expansion&amp;lt;/code&amp;gt; to download &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;nx_ovlloader+&amp;lt;/code&amp;gt; v1.0.8 instead of v1.0.9 if AMS version is &amp;amp;lt; 1.8.0.&lt;br /&gt;
** Fix for forwarder footers being updated when they should not be.&lt;br /&gt;
** Fix for table with &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; value replacements not correctly aligning &amp;lt;code&amp;gt;Not available&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;UNAVAILABLE_SELECTION&amp;lt;/code&amp;gt; text properly.&lt;br /&gt;
** Fix for combo labels not being converted to their icon counterparts upon initialization.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.8.0...v1.8.1 Full Changelog: v1.8.0...v1.8.1]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.8.0&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Introduction of new &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; command options &amp;lt;code&amp;gt;;mini=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;selection_mini=&amp;lt;/code&amp;gt; for usage of &amp;amp;quot;mini&amp;amp;quot; ListItems.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;mini=true&amp;lt;/code&amp;gt; will enable mini mode for the ListItem. (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;selection_mini=true&amp;lt;/code&amp;gt; will enable mini mode for the dropdown selection ListItems. (for &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; commands; &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Introduction of new command &amp;lt;code&amp;gt;volume&amp;lt;/code&amp;gt; to control the system master volume level, called &amp;lt;code&amp;gt;volume &amp;amp;lt;PERCENTAGE&amp;amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;&amp;amp;lt;PERCENTAGE&amp;amp;gt;&amp;lt;/code&amp;gt; is an integer value from 0 to 150.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Users can create a volume level slider similarly to a brightness level slider.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-ini&amp;quot;&amp;gt;[Volume Level]&lt;br /&gt;
;mode=trackbar&lt;br /&gt;
;min_value=0&lt;br /&gt;
;max_value=150&lt;br /&gt;
;units=%&lt;br /&gt;
;on_every_tick=true&lt;br /&gt;
volume {value}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Side-note:&#039;&#039;&#039; Max volume scale has been capped at 150%. Will only scale the current active system volume level (not modify it).&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Package forwarder commands will now update footer labels when modified from within the forwarder package.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Option footers will now be automatically loaded from the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; upon command success instead of returning a checkmark.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Expansion of &amp;lt;code&amp;gt;timestamp&amp;lt;/code&amp;gt; placeholder argument to include &amp;lt;code&amp;gt;%f&amp;lt;/code&amp;gt; for fractional seconds.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Basic timer example:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre class=&amp;quot;language-ini&amp;quot;&amp;gt;[Timer]&lt;br /&gt;
;mode=option&lt;br /&gt;
ini_file ./config.ini&lt;br /&gt;
try:&lt;br /&gt;
set-ini-val ./config.ini Timer stop {timestamp(%s.%f)}&lt;br /&gt;
set-footer {math({ini_file(Timer,stop)}-{ini_file(Timer,start)})}s&lt;br /&gt;
remove-ini-key ./config.ini Timer start&lt;br /&gt;
try:&lt;br /&gt;
set-ini-val ./config.ini Timer start {timestamp(%s.%f)}&lt;br /&gt;
set-footer ●&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Various code / compiler optimizations for smaller compilation size.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Various bug fixes and subtle UI corrections.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Max value bug fix for regular track-bars.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Fixes to &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; placeholder operation parsing.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;set-footer&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; values will now return a failed command.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/367a0bb...v1.8.0 Full Changelog: 367a0bb...v1.8.0]&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.9&#039;&#039;&#039;&lt;br /&gt;
# Complete rework of the &amp;lt;code&amp;gt;Script Overlay&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;minus&amp;lt;/code&amp;gt; on a command).&lt;br /&gt;
#* Users can now preview command blocks and execute would be executed commands on the &amp;lt;code&amp;gt;Script Overlay&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* All command objects are now compatible.&lt;br /&gt;
# Package header routing has now been implemented.&lt;br /&gt;
#* This will make it easier for users to tell where they are within the menu when navigating through packages.&lt;br /&gt;
# Ultrahand&#039;s overlay development libraries have now been moved to [https://github.com/ppkantorski/libultrahand libultrahand].&lt;br /&gt;
#* Numerous improvements have been made within &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; to make recompiling overlays easier.&lt;br /&gt;
#* Users can also use these libraries for their own overlay development, or to rebuild other Tesla overlays with Ultrahand features.&lt;br /&gt;
#** A number of overlays have been rebuilt as examples. (see [https://github.com/ppkantorski/libultrahand?tab=readme-ov-file#build-examples Build Examples])&lt;br /&gt;
# Introduction of new theme colors.&lt;br /&gt;
#* &amp;lt;code&amp;gt;default_overlay_color&amp;lt;/code&amp;gt; for specifying the default title color for overlays compiled with &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* &amp;lt;code&amp;gt;default_script_color&amp;lt;/code&amp;gt; for specifying the default title color for the &amp;lt;code&amp;gt;Script Overlay&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Various fixes to track-bars.&lt;br /&gt;
#* Users can now also click &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt; to apply track-bar settings.&lt;br /&gt;
#* Users can hold &amp;lt;code&amp;gt;R&amp;lt;/code&amp;gt; on top of an unlocked track bar to enable changing pages &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;right&amp;lt;/code&amp;gt; (using D-Pad).&lt;br /&gt;
#* Fixes to rapid left / right clicks.&lt;br /&gt;
#* Fixes to text alignments.&lt;br /&gt;
#* Color swap for cursor over locked / unlocked trackbars.&lt;br /&gt;
#* Various touch related bug fixes.&lt;br /&gt;
# New table drawing options and various improvements to table rendering.&lt;br /&gt;
#* &amp;lt;code&amp;gt;;wrapping_mode=&amp;lt;/code&amp;gt; can be set to &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;char&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;word&amp;lt;/code&amp;gt; for tables. (default is &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;)&lt;br /&gt;
#* &amp;lt;code&amp;gt;;wrapping_indent=&amp;lt;/code&amp;gt; can be set to &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; for drawing an indent on the wrapped lines.&lt;br /&gt;
#** &#039;&#039;&#039;Notice:&#039;&#039;&#039; Wrapping modes will only be applied to the &#039;&#039;&#039;section&#039;&#039;&#039; text on the table.&lt;br /&gt;
# Software update command now updates &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; as well as the included themes.&lt;br /&gt;
#* [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.0.9 nx-ovlloader+] has been updated for HOS 19.0.0 support.&lt;br /&gt;
#** &#039;&#039;&#039;Notice:&#039;&#039;&#039; This update is required for proper reading of device FUSE data.&lt;br /&gt;
# Fixes for drawing the overlays / packages menu for newly added overlays / packages.&lt;br /&gt;
# Various UI corrections / improvements and code optimizations.&lt;br /&gt;
#* Wallpapers now consume half the system memory they used to.&lt;br /&gt;
#* Text width computations are now fixed. This should allow Ultrahand to display other fonts and languages more properly.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/aabb4e7...v1.7.9 Full Changelog: aabb4e7...v1.7.9]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Bug fix for &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;nx-ovlloader&amp;lt;/code&amp;gt; latest release URL. (was set to v1.0.8 instead of latest) - 10/19/2024 4:57 AM PST&lt;br /&gt;
** If you already updated to v1.7.9 with the &amp;amp;quot;Software Update&amp;amp;quot; menu, you may want to click update 2x. (first update will pull the fixed ovlmenu, second update will pull the correct loader)&lt;br /&gt;
* Cleanup of package header route labels. - 10/19/2024 6:25 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.9...367a0bb Full Changelog: v1.7.9...367a0bb]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.8&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Fix for display underscanning in libtesla.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Overlays will need to be rebuilt with this fix for them to also have no issues with display underscan. (see [https://github.com/ppkantorski/EdiZon-Overlay Edizon] as an example)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;New command expansion for &amp;lt;code&amp;gt;backlight&amp;lt;/code&amp;gt; called &amp;lt;code&amp;gt;backlight auto&amp;lt;/code&amp;gt; (which takes parameter &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;) for controlling the &amp;lt;code&amp;gt;auto screen brightness&amp;lt;/code&amp;gt; feature.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;backlight auto on&amp;lt;/code&amp;gt; will turn on the auto brightness feature.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;backlight auto off&amp;lt;/code&amp;gt; will turn off the auto brightness feature.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Example toggle:&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;[Auto Brightness]&lt;br /&gt;
;mode=toggle&lt;br /&gt;
on:&lt;br /&gt;
backlight auto on&lt;br /&gt;
off:&lt;br /&gt;
backlight auto off&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;New placeholder function &amp;lt;code&amp;gt;math&amp;lt;/code&amp;gt; to resolve mathematical expressions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Called &amp;lt;code&amp;gt;{math(MATH_EXPRESSION)}&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;MATH_EXPRESSION&amp;lt;/code&amp;gt; is a mathematical expression like &amp;lt;code&amp;gt;1+1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(5+4)/9&amp;lt;/code&amp;gt;, etc.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Can also be called &amp;lt;code&amp;gt;{math(MATH_EXPRESSION, true)}&amp;lt;/code&amp;gt; where &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; forces the output to always be an integer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Users can use &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;%&amp;lt;/code&amp;gt; as well as brackets &amp;lt;code&amp;gt;(&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;)&amp;lt;/code&amp;gt; within their mathematical expressions.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;New placeholder function &amp;lt;code&amp;gt;random&amp;lt;/code&amp;gt; to generate a random integer.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Called &amp;lt;code&amp;gt;{random(START_VALUE,END_VALUE)}&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;New placeholder function &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; to compute the length of a provided string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Called &amp;lt;code&amp;gt;{length(STRING)}&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Any white spaces on the left and right of the string will be trimmed.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Placeholder replacement order of operations fix.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Users can use nested placeholders called in any sequence now.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Removal of old &amp;lt;code&amp;gt;progress animation&amp;lt;/code&amp;gt; UI setting.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Mostly unused, and a bit out dated in terms of design preferences. I think it is better for now to remove this feature.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Bug fix for touch with trackbars.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Issue was that sliding to the left of the slidable area caused the value to become the max value for the slider.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;This should no longer be an issue.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Various subtle UI tweaks.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/73b10bd...v1.7.8 Full Changelog: 73b10bd...v1.7.8]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Placeholder replacement bug fix. - 09/30/2024 3:06 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.8...aabb4e7 Full Changelog: v1.7.8...aabb4e7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.7&#039;&#039;&#039;&lt;br /&gt;
* New table scrolling implementation.&lt;br /&gt;
** &amp;lt;code&amp;gt;;scrollable=&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; table parameter for initializing a table with a scrollable property (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default).&lt;br /&gt;
** &amp;lt;code&amp;gt;;top_pivot=&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; table parameter for making the top of the table have a selectable property (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default).&lt;br /&gt;
** &amp;lt;code&amp;gt;;bottom_pivot=&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; table parameter for making the bottom of the table have a selectable property (&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; by default).&lt;br /&gt;
** A variety of modifications were made to properly handle table scrolling (for touch / click both above and below scrollable tables).&lt;br /&gt;
* Tables can now use &amp;lt;code&amp;gt;list_file_source&amp;lt;/code&amp;gt; for reading raw text files directly into a table and displaying the text line by line.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;list_file_source &amp;amp;lt;PATH_TO_TEXT_FILE&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** Text is drawn in the section portion and can utilize &amp;lt;code&amp;gt;;section_text_color=&amp;lt;/code&amp;gt; for alternative coloring.&lt;br /&gt;
* Various UI related tweaks and fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d016b6f...v1.7.7 Full Changelog: d016b6f...v1.7.7]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
*Slight table scrolling bug fix. (was miscounting the last step) - 09/15/2024 3:30 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.7...73b10bd Full Changelog: v1.7.7...73b10bd]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.6&#039;&#039;&#039;&lt;br /&gt;
* New symbol placeholder variables.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{A}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{B}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{X}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{Y}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{L}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{R}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ZL}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ZR}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Button symbols for A, B, X, Y, L, R, ZL, and ZR.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{DUP}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{DDOWN}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{DLEFT}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{DRIGHT}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Directional pad (D-Pad) buttons symbols.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{LS}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{RS}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Symbols for the left stick (LS) and right stick (RS) click buttons.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{PLUS}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{MINUS}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Symbols for the Plus and Minus buttons.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{UP_ARROW}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{DOWN_ARROW}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{LEFT_ARROW}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{RIGHT_ARROW}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Arrow symbols pointing up, down, left, and right.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{RIGHT_UP_ARROW}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{RIGHT_DOWN_ARROW}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{LEFT_UP_ARROW}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{LEFT_DOWN_ARROW}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Diagonal arrow symbols indicating direction combinations.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{POWER}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Power button symbol.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{HOME}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Home button symbol.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{CAPTURE}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Capture button symbol.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{REFRESH_SYMBOL}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Refresh symbol.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{WARNING_SYMBOL}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Warning symbol.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;{INFO_SYMBOL}&amp;lt;/code&amp;gt;&#039;&#039;&#039;: Information symbol.&lt;br /&gt;
* New progress symbol throbber implementation. (for commands in progress that do not utilize the progress percentage)&lt;br /&gt;
* Toggle-related bug fixes. (bug was introduced in v1.7.5)&lt;br /&gt;
** This should resolve issues a number of issues with toggles not retaining their state after being clicked.&lt;br /&gt;
* Storage capacity in &amp;lt;code&amp;gt;Device Info&amp;lt;/code&amp;gt; has been corrected. (was previously showing free space instead of the amount of space being consumed)&lt;br /&gt;
* Slight UI corrections.&lt;br /&gt;
* Various code optimizations.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/3801fca...v1.7.6 Full Changelog: 3801fca...v1.7.6]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* String formatted combo symbols replacements for tables. - 09/10/2024 09:08 PM PST&lt;br /&gt;
* Slight tweak to throbber implementation (slightly more optimized). - 09/10/2024 09:46 PM PST&lt;br /&gt;
* Arrow symbols fix. (some were mis-mapped) - 09/11/2024 09:00 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.6...d016b6f Full Changelog: v1.7.6...d016b6f]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.5&#039;&#039;&#039;&lt;br /&gt;
* Introduction of new &amp;lt;code&amp;gt;Swipe to Open&amp;lt;/code&amp;gt; feature (an alternative to &amp;lt;code&amp;gt;Key Combo&amp;lt;/code&amp;gt; for opening Ultrahand).&lt;br /&gt;
** This feature is now on by default, but can be toggled off in &amp;lt;code&amp;gt;Settings &amp;amp;gt; UI Settings &amp;amp;gt; Miscellaneous &amp;amp;gt; Effects &amp;amp;gt; Swipe to Open&amp;lt;/code&amp;gt;.&lt;br /&gt;
** To trigger a swipe launch, swipe your finger from off the screen inwards ~1.5cm from the side where the menu is being drawn (left by default or right) in &amp;amp;lt; 150ms.&lt;br /&gt;
** &#039;&#039;&#039;Note:&#039;&#039;&#039; It should be relatively hard to trigger by accident even if you play touch sensitive games, but still easy enough to launch any time you try.&lt;br /&gt;
* Introduction of new placeholder variable &amp;lt;code&amp;gt;{title_id}&amp;lt;/code&amp;gt; for returning the title ID of the currently running game / application.&lt;br /&gt;
** Will return &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; if a game / application is not open.&lt;br /&gt;
** This placeholder should allow some more complex packages to be made.&lt;br /&gt;
* Root package folder &amp;lt;code&amp;gt;exit_package.ini&amp;lt;/code&amp;gt; will now have command &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt; only ran when Ultrahand (and any other running overlay) is completely closed.&lt;br /&gt;
* More bug fixes and code optimizations.&lt;br /&gt;
** Clean-up of progress percentage implementation.&lt;br /&gt;
** Reduction of string copying for various string functions. (faster commands, less memory)&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/0ef1c3a...v1.7.5 Full Changelog: 0ef1c3a...v1.7.5]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Slight tweak to &amp;lt;code&amp;gt;Swipe to Open&amp;lt;/code&amp;gt;. - 09/09/2024 03:19 AM PST&lt;br /&gt;
* &amp;lt;code&amp;gt;lang.zip&amp;lt;/code&amp;gt; translations update. - 09/09/2024 05:24 AM PST&lt;br /&gt;
* Bug fix for update languages (menu was triggering unnecessary reload). - 09/09/2024 05:36 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.5...3801fca Full Changelog: v1.7.5...3801fca]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.4&#039;&#039;&#039;&lt;br /&gt;
* Introduction of &amp;lt;code&amp;gt;exit_package.ini&amp;lt;/code&amp;gt; (similar to &amp;lt;code&amp;gt;boot_package.ini&amp;lt;/code&amp;gt; but with command name &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;boot&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &amp;lt;code&amp;gt;Exit Commands&amp;lt;/code&amp;gt; are now a toggle-able option for package settings. (on by default)&lt;br /&gt;
*** The &amp;lt;code&amp;gt;Boot Package&amp;lt;/code&amp;gt; toggle has been renamed to &amp;lt;code&amp;gt;Boot Commands&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;exit_package.ini&amp;lt;/code&amp;gt; can go in &amp;lt;code&amp;gt;/switch/.packages/&amp;lt;/code&amp;gt; or be used in &amp;lt;code&amp;gt;/switch/.packages/&amp;amp;lt;YOUR_PACKAGE_NAME&amp;amp;gt;/&amp;lt;/code&amp;gt;.&lt;br /&gt;
** When present in package root path, exit commands will be ran every time you close Ultrahand.&lt;br /&gt;
** When present in an Ultrahand package, exit commands will be ran every time you close the package.&lt;br /&gt;
* Temperature widget calls are now read directly from &amp;lt;code&amp;gt;i2c&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;ts&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;tc&amp;lt;/code&amp;gt; services.&lt;br /&gt;
** This should help prevent any conflicts that may have arrises from usage with &amp;lt;code&amp;gt;ts&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;tc&amp;lt;/code&amp;gt; in prior versions.&lt;br /&gt;
* Refinement of tap and hold functions.&lt;br /&gt;
** Holding on a package/overlay for &amp;amp;gt; 0.3s, &amp;amp;lt;= 1.0s then releasing will trigger the Settings key.&lt;br /&gt;
** Holding on a package/overlay for &amp;amp;gt; 1.0s then releasing will trigger the Star key (favorites key).&lt;br /&gt;
* Introduction of &amp;lt;code&amp;gt;Right-side Mode&amp;lt;/code&amp;gt;. (located in &amp;lt;code&amp;gt;Settings &amp;amp;gt; UI Settings &amp;amp;gt; Miscellaneous &amp;amp;gt; Effects&amp;lt;/code&amp;gt;)&lt;br /&gt;
** This feature will draw the Ultrahand menu on the right side of the screen instead of the left.&lt;br /&gt;
* Updating Ultrahand will now auto-reload the newly installed version when returning to the main menu after.&lt;br /&gt;
* New table command options &amp;lt;code&amp;gt;;start_gap=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;end_gap=&amp;lt;/code&amp;gt; (same as &amp;lt;code&amp;gt;;gap=&amp;lt;/code&amp;gt;) for manual aligning of tables.&lt;br /&gt;
* More details have been added to the [https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Command-Reference Commands Documentation].&lt;br /&gt;
* Various UI tweaks / corrections.&lt;br /&gt;
* Various bug fixes and code optimizations / cleanups.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/28e239f...v1.7.4 Full Changelog: 28e239f...v1.7.4]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Software update menu bug fix. - 09/07/2024 6:23 AM PST&lt;br /&gt;
* &amp;lt;code&amp;gt;Right-side Mode&amp;lt;/code&amp;gt; touch fixes. - 09/07/2024 7:48 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.4...0ef1c3a Full Changelog: v1.7.4...0ef1c3a]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.3&#039;&#039;&#039;&lt;br /&gt;
* Long tap (touch &amp;amp;gt; 0.5s) of an overlay / package on the main menu will now open the overlay / package settings menu upon release.&lt;br /&gt;
* Fuse data is now reloaded / re-dumped upon boot.&lt;br /&gt;
** New &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; option &amp;lt;code&amp;gt;disable_reload&amp;lt;/code&amp;gt; is now stored in &amp;lt;code&amp;gt;fuse.ini&amp;lt;/code&amp;gt; for manual disabling of the fuse data reload function.&lt;br /&gt;
* More corrections and improvements to the wallpaper swapping feature.&lt;br /&gt;
* Interpreter relevant bug fixes (especially with handing large &amp;lt;code&amp;gt;boot_package.ini&amp;lt;/code&amp;gt; files).&lt;br /&gt;
** These fixes should make opening &amp;lt;code&amp;gt;OC Toolkit&amp;lt;/code&amp;gt; faster as well as fix the &amp;lt;code&amp;gt;Backup&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Restore&amp;lt;/code&amp;gt; functions when used with wallpapers.&lt;br /&gt;
* Few additional minor bug fixes.&lt;br /&gt;
* &#039;&#039;&#039;Important:&#039;&#039;&#039; Fuse data has new key names, so you may need to reboot once or delete &amp;lt;code&amp;gt;sdmc:/config/ultrahand/fuse.ini&amp;lt;/code&amp;gt; after updating from v1.7.2.&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/9ff96ba...v1.7.3 Full Changelog: 9ff96ba...v1.7.3]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Slight table text alignment correction. - 09/05/2024 6:10 AM PST&lt;br /&gt;
* Various services cleanup. - 09/05/2024 9:35 PM PST&lt;br /&gt;
** Temperature calls now only initialize the temperature service when the temperature widgets are enabled.&lt;br /&gt;
** &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt; bug fix introduced from prior modification. - 09/05/2024 10:40 PM PST&lt;br /&gt;
** Another bug fix (for toggling on widgets). - 09/06/2024 3:30 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.3...28e239f Full Changelog: v1.7.3...28e239f]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.2&#039;&#039;&#039;&lt;br /&gt;
* Continued expansion of &amp;lt;code&amp;gt;Device Info&amp;lt;/code&amp;gt; to now include local IP, eMMC storage, CPU/GPU/SOC Speedo + IDDQ and more.&lt;br /&gt;
** Fuse related data is auto-dumped to &amp;lt;code&amp;gt;sdmc:/config/ultrahand/fuse.ini&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;fuse.ini&amp;lt;/code&amp;gt; is missing.&lt;br /&gt;
** Special thanks to Masagrator.&lt;br /&gt;
* Slight reorganization of &amp;lt;code&amp;gt;Settings Menu&amp;lt;/code&amp;gt;.&lt;br /&gt;
* More renderer related tweaks and bug fixes. (faster pixel rendering / more FPS)&lt;br /&gt;
* Package settings menu now includes a toggle for &amp;lt;code&amp;gt;Boot Package&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Error Logging&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Error logging will now only occur for packages when &amp;lt;code&amp;gt;Error Logging&amp;lt;/code&amp;gt; is set to an &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; state. (off by default)&lt;br /&gt;
** Logs will be generated within the package folder in &amp;lt;code&amp;gt;log.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Root package / root boot package logging will only work with command &amp;lt;code&amp;gt;logging&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Calls of &amp;lt;code&amp;gt;logging&amp;lt;/code&amp;gt; command will always bypass &amp;lt;code&amp;gt;Error Logging&amp;lt;/code&amp;gt; and log errors and commands to the designated &amp;lt;code&amp;gt;log.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New placeholder variables &amp;lt;code&amp;gt;{cpu_speedo}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{cpu_iddq}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{gpu_speedo}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{gpu_iddq}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{soc_speedo}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{soc_iddq}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New progress indicator bar for visualizing download, unzip, and copy percentages.&lt;br /&gt;
** New theme color settings &amp;lt;code&amp;gt;progress_color&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;progress_alpha&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Return of &amp;lt;code&amp;gt;shutdown controllers&amp;lt;/code&amp;gt; for manually powering off all connected bluetooth controllers.&lt;br /&gt;
** This feature still does not work with &amp;lt;code&amp;gt;Mission Control&amp;lt;/code&amp;gt;. Just a heads up.&lt;br /&gt;
* New language variables.&lt;br /&gt;
** Alternate languages may still need translations done to the updated &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt; files.&lt;br /&gt;
* Updates to libraries &amp;lt;code&amp;gt;devkitA64&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Numerous code optimizations for smaller compilation size and slightly faster commands.&lt;br /&gt;
* Various bug fixes.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/d959363...v1.7.2 Full Changelog: d959363...v1.7.2]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Pre-release period is over. Things appear to be stable. - (09/03/2024 12:27 PM PST)&lt;br /&gt;
* Number of memory related bug fixes.&lt;br /&gt;
* Corrections to memory ID (got messed up upon initial release).&lt;br /&gt;
* Couple logging related bug fixes.&lt;br /&gt;
* Copy buffer has been increased to 4x and properly linked.&lt;br /&gt;
* Live wallpaper swapping bug fix. - (09/03/2024 3:21 AM PST)&lt;br /&gt;
* More live wallpaper swapping bug fixes. - (09/03/2024 4:15 AM PST)&lt;br /&gt;
** Tighter/stricter timing for swapping wallpapers to prevent more &#039;&#039;random&#039;&#039; crashes. - (09/03/2024 6:28 AM PST)&lt;br /&gt;
* Placeholder replacement order of operations bug fix. - (09/03/2024 6:00 PM PST)&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.2...9ff96ba Full Changelog: v1.7.2...9ff96ba]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.1&#039;&#039;&#039;&lt;br /&gt;
* Expanded &amp;lt;code&amp;gt;System&amp;lt;/code&amp;gt; page to include various device related information.&lt;br /&gt;
** This table currently includes device firmware, bootloader version, hardware type, memory information, and storage information.&lt;br /&gt;
** Special thanks to ComplexNarrative.&lt;br /&gt;
* New command placeholder variables &amp;lt;code&amp;gt;{ram_vendor}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ram_model}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{ams_version}&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;{hos_version}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Expansion of &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; command to include &amp;lt;code&amp;gt;wallpaper&amp;lt;/code&amp;gt; for the ability to reload &amp;lt;code&amp;gt;wallpaper.rgba&amp;lt;/code&amp;gt;,&lt;br /&gt;
** Called &amp;lt;code&amp;gt;refresh wallpaper&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Improved scrolling implementation. (proper time-synced speed interpolation)&lt;br /&gt;
* Complete recalibration of character width map.&lt;br /&gt;
** This should result in more proper table alignments when using tables with info sections aligned to the right.&lt;br /&gt;
* Multiple memory related bug fixes.&lt;br /&gt;
** More memory leaks have been fixed, which should result in less heap overloads / crashes.&lt;br /&gt;
* Language replacements are now performed on every ListItem and CategoryHeader upon initialization.&lt;br /&gt;
** This fixed entries like, for example, &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Shutdown&amp;lt;/code&amp;gt; from not being properly translated.&lt;br /&gt;
** Language json&#039;s may still need some translations for the new words that have been included.&lt;br /&gt;
* Removal of &amp;lt;code&amp;gt;shutdown controllers&amp;lt;/code&amp;gt; for space conservation. (commented out)&lt;br /&gt;
** Did not want to remove this function, but because it only works with Nintendo controllers (and not Mission Control) it does seem somewhat redundant since the &amp;lt;code&amp;gt;sync button&amp;lt;/code&amp;gt; on Nintendo controllers effectively turns off the controller as well.&lt;br /&gt;
** If it is highly desirable, I may include this command again in future revisions. But for size stability, I could not get it to fit properly this time around.&lt;br /&gt;
* Numerous code optimizations and bug fixes.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/6961b2e...v1.7.1 Full Changelog: 6961b2e...v1.7.1]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Placeholder bug fix for new variables + bug fix for &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; command. - 08/28/2024 4:40 PM PST&lt;br /&gt;
* TrackBar highlight width adjustment / fix. - 08/29/2024 5:05 AM PST&lt;br /&gt;
* Rename hardware model &amp;lt;code&amp;gt;Nx&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Icosa&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;x1&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;X1&amp;lt;/code&amp;gt;. (correction) - 08/29/2024 5:28 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.1...d959363 Full Changelog: v1.7.1...d959363]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.7.0&#039;&#039;&#039;&lt;br /&gt;
* New memory expansion option (located inSettings &amp;gt; System).&lt;br /&gt;
** This function requires internet the first time it is ran, otherwise you can place nx-ovlloader.zip and nx-ovlloader+.zip in sdmc:/config/ultrahand/expansion/. (see [https://github.com/ppkantorski/nx-ovlloader/releases/tag/v1.0.8 here] for the .zips)&lt;br /&gt;
** nx-ovlloader.zip (base memory) and nx-ovlloader+.zip (expanded memory) are recompilations of WerWolv&#039;s nx-ovlloader 1.0.6/1.0.7.&lt;br /&gt;
** Notice: This feature will utilize an extra 2 MB of system memory for overlays and will require a reboot after being toggled for changes to apply.&lt;br /&gt;
* New wallpapers implementation. (requires memory expansion)&lt;br /&gt;
** Wallpapers must be formatted in .rgba and be exactly 448x720 pixels in resolution.&lt;br /&gt;
** Place .rgba formatted wallpapers into sdmc:/config/ultrahand/wallpapers/, then they will show up in the Wallpaper Manager in the Settings Menu.&lt;br /&gt;
** Sidenote: For full 60 FPS in Ultrahand with wallpapers, overclock CPU &amp;gt;=1581.0 MHz.&lt;br /&gt;
* Numerous optimizations to the libTesla renderer.&lt;br /&gt;
** Multi-thread rendering (requires expanded memory).&lt;br /&gt;
** Reduced big-O complexity.&lt;br /&gt;
** Sidenote: With stock clocks and no wallpaper, users should expect to now get ~60 FPS in menu.&lt;br /&gt;
* Various improvements to tables, track-bars and the track-bar highlight/select cursor.&lt;br /&gt;
* Time-synced controller scrolling implementation, time-synced click saturation effect, and a variety of corrections within libTesla.&lt;br /&gt;
* Mod .pchtxt&#039;s now utilize @stop properly when generating IPS mods. (helpful for developers)&lt;br /&gt;
* New Polish language implementation and slight bug fixes to the languages menu.&lt;br /&gt;
* Various bug fixes.&lt;br /&gt;
** Fix for missing pre-generated root package. (was missing in v1.6.9)&lt;br /&gt;
** Downloads bug fix. (was broken fi missing path sdmc:/config/ultrahand/downloads/ in v1.6.9)&lt;br /&gt;
* Compilation libraries have been updated (excluding devkitA64 which has been left at r25.1-1).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.9...v1.7.0 Full Changelog: v1.6.9...v1.7.0]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Expanded memory toggle bug fix. 08/24/24 9:00 AM PST&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.7.0...6961b2e Full Changelog: v1.7.0...6961b2e]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.9&#039;&#039;&#039;&lt;br /&gt;
* Dropdown and forwarder commands can now use custom labels/footers by using &amp;lt;code&amp;gt;footer=&amp;lt;/code&amp;gt; with a value other than &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; in the package&#039;s &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Custom name and version labels for overlays and packages can now be set in &amp;lt;code&amp;gt;/config/ultrahand/overlays.ini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;/config/ultrahand/packages.ini&amp;lt;/code&amp;gt; by using options &amp;lt;code&amp;gt;custom_name=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;custom_version=&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Overlays will only be renamed when displayed on the menu. Direct modification of the overlay is still required for any re-naming of the overlay modules themselves.&lt;br /&gt;
** Packages will now assume names in the following priorities.&amp;lt;br /&amp;gt;&lt;br /&gt;
i. Priority 0: Custom names and versions written in &amp;lt;code&amp;gt;packages.ini&amp;lt;/code&amp;gt;.&amp;lt;br /&amp;gt;&lt;br /&gt;
ii. Priority 1: Package name stated in the header in the &amp;lt;code&amp;gt;package.ini&amp;lt;/code&amp;gt; file for the Ultrahand package.&amp;lt;br /&amp;gt;&lt;br /&gt;
iii. Priority 2: If none of the above, it will assume the name based upon the Ultrahand package folder.&lt;br /&gt;
** If left empty, custom name and version parameters will be unused.&lt;br /&gt;
* New option for table &amp;lt;code&amp;gt;;header_indent=&amp;lt;/code&amp;gt; for drawing a single header indent on left side of the line.&lt;br /&gt;
** This is meant to be used on one line &amp;amp;quot;header-like&amp;amp;quot; tables.&lt;br /&gt;
* New table text color options for &amp;lt;code&amp;gt;info_text_color&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;section_text_color&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;text&amp;lt;/code&amp;gt; : Ultrahand theme text color used for default text.&lt;br /&gt;
** &amp;lt;code&amp;gt;header&amp;lt;/code&amp;gt; : Ultrahand theme text color used for headers.&lt;br /&gt;
** &amp;lt;code&amp;gt;on_value&amp;lt;/code&amp;gt; : Ultrahand theme color for &amp;lt;code&amp;gt;On&amp;lt;/code&amp;gt; values / values.&lt;br /&gt;
** &amp;lt;code&amp;gt;off_value&amp;lt;/code&amp;gt; : Ultrahand theme color for &amp;lt;code&amp;gt;Off&amp;lt;/code&amp;gt; values / version labels.&lt;br /&gt;
* Key combo string representations in packages will now return their symbolic representation.&lt;br /&gt;
* Software update menu will now pull an indicator for the latest Ultrahand Overlay version from the GitHub API.&lt;br /&gt;
* Themes &amp;lt;code&amp;gt;classic.ini&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt; will now be auto-downloaded when opening the Theme manager if they do not exist.&lt;br /&gt;
* Downloads are now stored in a temporary state until completion. After completion, they are then moved into place.&lt;br /&gt;
** This should help with failed downloads and files being removed/replaced after a failed download to an existing filepath.&lt;br /&gt;
* The packages menu commands section now utilizes the same core logic as the packages themselves. (code optimization)&lt;br /&gt;
* Improvements to &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt; pre-generated command in root package. (&amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt;)&lt;br /&gt;
** If you are missing this feature, you may need to delete &amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Various subtle UI positioning corrections and bug fixes.&lt;br /&gt;
** Bug fix for cursor jumping/sliding after using hotkeys (with a d-pad down button) in games.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/cc7afad...v1.6.9 Full Changelog: cc7afad...v1.6.9]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.8&#039;&#039;&#039;&lt;br /&gt;
* Introduction of &amp;lt;code&amp;gt;ini_file_source&amp;lt;/code&amp;gt; function and expansion of &amp;lt;code&amp;gt;ini_file&amp;lt;/code&amp;gt; function.&lt;br /&gt;
** Dropdown selections can now use &amp;lt;code&amp;gt;ini_file_source &amp;amp;lt;PATH_TO_INI&amp;amp;gt;&amp;lt;/code&amp;gt; which will return a list of ini section name.&lt;br /&gt;
** Introduction of new placeholder index replacements selections&amp;lt;code&amp;gt;{ini_file(&amp;amp;lt;INDEX&amp;amp;gt;)}&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;{ini_file_source(*)}&amp;lt;/code&amp;gt; for returning section names. (regular usage of &amp;lt;code&amp;gt;ini_file&amp;lt;/code&amp;gt; placeholder calls will still function the same way, as well as &amp;lt;code&amp;gt;ini_file_source&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Named step-trackbars can now use standard &amp;lt;code&amp;gt;json_source&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;json_file_source&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ini_file_source&amp;lt;/code&amp;gt; source functions and placeholder replacements.&lt;br /&gt;
* Expansion of &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; to non-path type entries in dropdown selections.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;filter &amp;amp;lt;NAME_OF_ENTRY&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Expansion of &amp;lt;code&amp;gt;exit&amp;lt;/code&amp;gt; command to exit directly to the overlays menu or packages menu.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;exit overlays&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;exit packages&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Expansion of &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; command.&lt;br /&gt;
** &amp;lt;code&amp;gt;refresh theme&amp;lt;/code&amp;gt;: reload/refresh the current current loaded theme (&amp;lt;code&amp;gt;/config/ultrahand/theme.ini&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &amp;lt;code&amp;gt;refresh package&amp;lt;/code&amp;gt;: reload/refresh the current working package (redraws menu)&lt;br /&gt;
* Introduction of &amp;lt;code&amp;gt;compare&amp;lt;/code&amp;gt; function to compare two text file lists and output a duplicate files list.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;compare &amp;amp;lt;PATH_TO_TXT_1&amp;amp;gt; &amp;amp;lt;PATH_TO_TXT_2&amp;amp;gt; &amp;amp;lt;OUTPUT_TXT_PATH&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New option &amp;lt;code&amp;gt;-copy_filter&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-cp_filter&amp;lt;/code&amp;gt; for &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt; commands utilizing &amp;lt;code&amp;gt;-src&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;-dest&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;move -src &amp;amp;lt;SRC_TXT&amp;amp;gt; -dest &amp;amp;lt;DEST_TXT&amp;amp;gt; -copy_filter &amp;amp;lt;FILTER_TXT&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** This will run a copy instead of move for files in the filter list text file.&lt;br /&gt;
* Introduction of new placeholder function &amp;lt;code&amp;gt;split&amp;lt;/code&amp;gt; for splitting strings.&lt;br /&gt;
** Called &amp;lt;code&amp;gt;{split(&amp;amp;lt;STRING&amp;amp;gt;,&amp;amp;lt;PATTERN&amp;amp;gt;,&amp;amp;lt;INDEX&amp;amp;gt;)}&amp;lt;/code&amp;gt;.&lt;br /&gt;
** For example, if the string is &amp;lt;code&amp;gt;Test - String&amp;lt;/code&amp;gt;, the pattern is &amp;lt;code&amp;gt;&amp;amp;quot; - &amp;amp;quot;&amp;lt;/code&amp;gt;, and the index is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;, the output would be &amp;lt;code&amp;gt;Test&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Updates to the pre-generated &amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt; root package file to include &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt; (for booting directly into &amp;lt;code&amp;gt;/bootloader/hekate_ipl.ini&amp;lt;/code&amp;gt; boot entries.&lt;br /&gt;
** &#039;&#039;&#039;Notice:&#039;&#039;&#039; Users may need to delete &amp;lt;code&amp;gt;/switch/.packages/package.ini&amp;lt;/code&amp;gt; for it to generate a new one.&lt;br /&gt;
* Various optimizations to the command interpreter, file manipulation logging, bulk execution implementations, and to &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt; operations.&lt;br /&gt;
* Additional tweaks to the dangerous pattern detection function.&lt;br /&gt;
* Update to [https://github.com/ppkantorski/Mod-Alchemist Mod Alchemist] now at v0.4.7.&lt;br /&gt;
** Bug fixes for toggling content mods with duplicate files (utilizing &amp;lt;code&amp;gt;-copy_filter&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;compare&amp;lt;/code&amp;gt;).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.7...v1.6.8 Full Changelog: v1.6.7...v1.6.8]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Filter bug fix. (affected &amp;lt;code&amp;gt;Reboot To&amp;lt;/code&amp;gt;) - 07/22/2024 2:53 PM PST&lt;br /&gt;
* Addition of &amp;lt;code&amp;gt;-filter &amp;amp;lt;FILTER_TXT&amp;amp;gt;&amp;lt;/code&amp;gt; command option for &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;. - 07/22/2024 8:35 PM PST&lt;br /&gt;
** This allows for filtering of bulk executions (&amp;lt;code&amp;gt;-src&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-dest&amp;lt;/code&amp;gt;).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.8...cc7afad Full Changelog: v1.6.8...cc7afad]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.7&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;New optional command parameters for &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;del&amp;lt;/code&amp;gt; commands for transfer logging and bulk executions.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;a. File manipulation logging: &amp;lt;code&amp;gt;-log_src&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-log_dest&amp;lt;/code&amp;gt; (outputs a text list for source file and destination file locations)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;copy &amp;amp;lt;source_file_path&amp;amp;gt; &amp;amp;lt;destination_file_path&amp;amp;gt; -log_src &amp;amp;lt;src_output_txt_file_path&amp;amp;gt; -log_dest &amp;amp;lt;dest_output_txt_file_path&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;move &amp;amp;lt;source_file_path&amp;amp;gt; &amp;amp;lt;destination_file_path&amp;amp;gt; -log_src &amp;amp;lt;src_output_txt_file_path&amp;amp;gt; -log_dest &amp;amp;lt;dest_output_txt_file_path&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;delete &amp;amp;lt;source_file_path&amp;amp;gt; -log_src &amp;amp;lt;src_output_txt_file_path&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;b. Bulk execution: &amp;lt;code&amp;gt;-src&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;-dest&amp;lt;/code&amp;gt; (utilizes text lists to perform transfer operations on all entries)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;copy -src &amp;amp;lt;src_input_txt_file_path&amp;amp;gt; -dest &amp;amp;lt;dest_input_txt_file_path&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;move -src &amp;amp;lt;src_input_txt_file_path&amp;amp;gt; -dest &amp;amp;lt;dest_input_txt_file_path&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;delete -src &amp;amp;lt;src_input_txt_file_path&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Improvements and fixes to &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; toggle functions.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Improved handling of &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; placeholder replacements.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Corrections to &amp;lt;code&amp;gt;isDangerousCombination&amp;lt;/code&amp;gt; (the dangerous pattern combination detection function).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The following paths are now ultra-protected (unable to delete or move files from):&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sdmc:/Nintendo/Contents/&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sdmc:/Nintendo/save/&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sdmc:/emuMMC/RAW1/Nintendo/Contents/&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;sdmc:/emuMMC/RAW1/Nintendo/save/&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Slight improvements to dangerous pattern detection.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Updates to [https://github.com/ppkantorski/Mod-Alchemist Mod Alchemist] (now v0.4.6, requires Ultrahand v1.6.7+).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now utilizes the new command options for managing &amp;amp;quot;Contents&amp;amp;quot; mods.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.6...v1.6.7 Full Changelog: v1.6.6...v1.6.7]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.6&#039;&#039;&#039;&lt;br /&gt;
* Major memory leak has been fixed.&lt;br /&gt;
** This issue was present for a while now, but until &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt; was never as concerning. Since &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt; can draw extremely long menus, memory overflow problems became more apparent.&lt;br /&gt;
** Has been resolved and should result in better memory handling across all Ultrahand packages/commands.&lt;br /&gt;
* Slight tweaks to the displayed version label formatting for overlays and packages.&lt;br /&gt;
* Failed interpreter spawning bug fix.&lt;br /&gt;
** Commands would occasionally get locked in an &amp;amp;quot;in-progress&amp;amp;quot; mode when there were memory related problems when trying to spawn the interpreter thread. When memory related problems occur, the command will return a failed command state instead (red &amp;amp;quot;X&amp;amp;quot;).&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/1c08f0f...v1.6.6 Full Changelog: 1c08f0f...v1.6.6]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.5&#039;&#039;&#039;&lt;br /&gt;
* Introduction of root-layer boot package implementation for executing commands upon startup.&lt;br /&gt;
** Command &amp;lt;code&amp;gt;[boot]&amp;lt;/code&amp;gt; located within &amp;lt;code&amp;gt;/switch/.packages/boot_package.ini&amp;lt;/code&amp;gt; (if it exists) will be now be auto-ran once on startup.&lt;br /&gt;
** This feature can be useful for Switch Android users if they wanted to remove the auto-generated Android folders (for instance).&lt;br /&gt;
* Introduction of new command &amp;lt;code&amp;gt;pchtxt2cheat&amp;lt;/code&amp;gt; (called &amp;lt;code&amp;gt;pchtxt2cheat /path/to/file.pchtxt&amp;lt;/code&amp;gt;).&lt;br /&gt;
** This function will convert &amp;lt;code&amp;gt;pchtxt&amp;lt;/code&amp;gt; files and load them into the correct directory for the game&#039;s cheat.&lt;br /&gt;
** &#039;&#039;&#039;Important:&#039;&#039;&#039; The game&#039;s title ID must be present somewhere within the pchtxt for this function to work.&lt;br /&gt;
* Various bug fixes to &amp;lt;code&amp;gt;pchtxt2ips&amp;lt;/code&amp;gt;&#039;s IPS generation.&lt;br /&gt;
* Expansion of &amp;lt;code&amp;gt;shutdown&amp;lt;/code&amp;gt; command to turn off all bluetooth controllers.&lt;br /&gt;
** This function is called &amp;lt;code&amp;gt;shutdown controllers&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &#039;&#039;&#039;Notice:&#039;&#039;&#039; I have heard that this command may fail (return a red X) with &amp;lt;code&amp;gt;MissionControl&amp;lt;/code&amp;gt; due to conflicting services, so just a heads up.&lt;br /&gt;
* Source function &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; can now be chained (called one after another) for combining multiple sources into a single list.&lt;br /&gt;
* Source function definitions can now also utilize an &amp;lt;code&amp;gt;ini_file&amp;lt;/code&amp;gt; placeholder replacement (with the &amp;lt;code&amp;gt;ini_file&amp;lt;/code&amp;gt; specified before the definition).&lt;br /&gt;
* Various bug fixes to &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; toggles.&lt;br /&gt;
** Subsequent clicks to &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; toggles are now handled properly with alternating path replacements according to the last line &amp;lt;code&amp;gt;move {file_source} /destination/path/&amp;lt;/code&amp;gt; (must be present for &amp;lt;code&amp;gt;file_source&amp;lt;/code&amp;gt; toggles).&lt;br /&gt;
* Various bug fixes to &amp;lt;code&amp;gt;ini_file&amp;lt;/code&amp;gt; placeholder replacements.&lt;br /&gt;
** Failed replacements now return &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; again instead of &amp;lt;code&amp;gt;Not available&amp;lt;/code&amp;gt; (the &amp;lt;code&amp;gt;UNAVAILABLE_SELECTION&amp;lt;/code&amp;gt; language variable).&lt;br /&gt;
** When a value is &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; on a table info section, it is now auto replaced with &amp;lt;code&amp;gt;UNAVAILABLE_SELECTION&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Language selections in the &amp;lt;code&amp;gt;Settings Menu&amp;lt;/code&amp;gt; now state their full names in their translated language with their abbreviations listed as footers.&lt;br /&gt;
** This included updates to all &amp;lt;code&amp;gt;/config/ultrahand/lang/&amp;lt;/code&amp;gt; files.&lt;br /&gt;
* Additional key combo &amp;lt;code&amp;gt;LS+RS&amp;lt;/code&amp;gt; has been added to the combos list.&lt;br /&gt;
** This includes a correction to the &amp;lt;code&amp;gt;LS&amp;lt;/code&amp;gt; button icon.&lt;br /&gt;
* Commands &amp;lt;code&amp;gt;mirror_copy&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mirror_delete&amp;lt;/code&amp;gt; can now accept wildcard patterns.&lt;br /&gt;
* Introduction of new Ultrahand Package [https://github.com/ppkantorski/Mod-Alchemist &amp;lt;code&amp;gt;Mod Alchemist&amp;lt;/code&amp;gt;] designed for managing, converting, and installing game mods. (formerly the &amp;lt;code&amp;gt;Mod Master&amp;lt;/code&amp;gt; example package)&lt;br /&gt;
** &#039;&#039;&#039;Notice:&#039;&#039;&#039; This package requires Ultrahand Overlay v1.6.5+.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.4...v1.6.5 Full Changelog: v1.6.4...v1.6.5]&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Bug fix for the root-layer boot package implementation. - 07/07/2024 7:09 AM PST&lt;br /&gt;
** The issue was the commands appeared to be executing every time the overlay is spawned. Now it is fully isolated to run once on boot.&lt;br /&gt;
* Wildcard pattern bug fix. - 07/07/2024 9:00 PM PST&lt;br /&gt;
** The issue was that in certain cases, folder patterns were still returning files. Should be resolved now.&lt;br /&gt;
* Slight optimizations to transfer memory. - 07/07/2024 9:34 PM PST&lt;br /&gt;
** Freed up a little more memory to prevent some potential memory related bugs.&lt;br /&gt;
* Json replacement failure fall back value bug fix. - 07/08/2024 1:10 AM PST&lt;br /&gt;
** This includes fall back &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; related bug fixes as well as fixes to table drawing with &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; values.&lt;br /&gt;
* Transfer memory correction. - 07/09/2024 05:07 AM PST&lt;br /&gt;
** Issues noticed after freeing up a bit too much of the transfer memory, so corrections needed to be made.&lt;br /&gt;
* IPS generation bug fix. - 07/09/2024 06:16 AM PST&lt;br /&gt;
** Offsets were improperly being applied during &amp;lt;code&amp;gt;pchtxt2ips&amp;lt;/code&amp;gt; generation. Corrections have been made.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.5...1c08f0f Full Changelog: v1.6.5...1c08f0f]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.4&#039;&#039;&#039;&lt;br /&gt;
* Optimizations to the &amp;lt;code&amp;gt;;on_every_tick=&amp;lt;/code&amp;gt; implementation for track-bars.&lt;br /&gt;
** Faster on every tick command execution.&lt;br /&gt;
* New table option additions &amp;lt;code&amp;gt;;section_text_color=&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;;info_text_color=&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Both section and info text color are optional parameters that can be set to:&lt;br /&gt;
*** &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; (normally &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; when unspecified)&lt;br /&gt;
*** &amp;lt;code&amp;gt;warning&amp;lt;/code&amp;gt; (new built-in theme color &amp;lt;code&amp;gt;warning_text_color&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** or any specified RGB888 hex color string&lt;br /&gt;
* Forwarder package versions and title colors are now inherited from the layer 0 package (package.ini) if left unspecified within the forwarder package.&lt;br /&gt;
** Users no longer need to specify forwarder package versions and colors on every forwarder package ini.&lt;br /&gt;
* Bottom buttons and settings menu touch functions now utilize theme colors &amp;lt;code&amp;gt;click_color&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;click_alpha&amp;lt;/code&amp;gt; for drawing highlights on the touch regions.&lt;br /&gt;
* Various touch interaction bug fixes. (touching &amp;amp;quot;OK&amp;amp;quot; on top of a track-bar, bottom regions for touch adjusted to language text size, etc.)&lt;br /&gt;
* Slight tweaks to pixel blender for drawn strings during hiding.&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/0eeef44...v1.6.4 Full Changelog: 0eeef44...v1.6.4]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of changes:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039; Tables in v1.6.3 no longer utilize &amp;lt;code&amp;gt;;header=&amp;lt;/code&amp;gt; pattern and no longer draw headers. Tables also no longer require a &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; in the command name.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To define a header, use an empty package command (like how they are defined normally).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Introduction of 3 track-bar command mode implementations.&amp;lt;br /&amp;gt;&lt;br /&gt;
i. Regular track-bar is called utilizing &amp;lt;code&amp;gt;;mode=trackbar&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;min_value=&amp;lt;/code&amp;gt; sets the minimum integer value&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;max_value=&amp;lt;/code&amp;gt; sets the maximum integer value&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;units=&amp;lt;/code&amp;gt; sets the display units&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;unlocked=&amp;lt;/code&amp;gt; is an optional true/false parameter for unlocked track-bars (locked by default)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At least one track-bar must first be clicked (A) for all track-bars to be editable (unless unlocked).&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;on_every_tick=&amp;lt;/code&amp;gt; is an optional true/false parameter for executing listed commands on every track-bar tick (off by default)&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;By default, commands are executed the moment the interactions with the slider stop.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;ii. Step track-bar is called utilizing &amp;lt;code&amp;gt;;mode=step_trackbar&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;;steps=&amp;lt;/code&amp;gt; is an optional integer parameter for directly specifying the number of steps utilized with the step track-bar.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;iii. Named step track-bar is called utilizing &amp;lt;code&amp;gt;;mode=named_step_trackbar&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Requires a &amp;lt;code&amp;gt;list_source&amp;lt;/code&amp;gt; definition or a &amp;lt;code&amp;gt;list_file_source&amp;lt;/code&amp;gt; definition (for loading the names).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Does not use &amp;lt;code&amp;gt;;min_value=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;;max_value=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;;units=&amp;lt;/code&amp;gt;, nor &amp;lt;code&amp;gt;;steps=&amp;lt;/code&amp;gt;.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;All track-bars commands can be used with placeholders &amp;lt;code&amp;gt;{value}&amp;lt;/code&amp;gt; for returning the value and &amp;lt;code&amp;gt;{index}&amp;lt;/code&amp;gt; for returning the index. Both value and index are also stored within the package config.ini file according to the track-bar entry.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Introduction of 5 new placeholder commands.&amp;lt;br /&amp;gt;&lt;br /&gt;
i. &amp;lt;code&amp;gt;{slice(&amp;amp;lt;ANY_STRING&amp;amp;gt;,&amp;amp;lt;START_INDEX&amp;amp;gt;,&amp;amp;lt;END_INDEX&amp;amp;gt;)}&amp;lt;/code&amp;gt; slices any string according to a start and end index.&amp;lt;br /&amp;gt;&lt;br /&gt;
ii. &amp;lt;code&amp;gt;{decimal_to_hex(&amp;amp;lt;DECIMAL&amp;amp;gt;)}&amp;lt;/code&amp;gt; converts a decimal string into a hex string.&amp;lt;br /&amp;gt;&lt;br /&gt;
iii. &amp;lt;code&amp;gt;{ascii_to_hex(&amp;amp;lt;ASCII&amp;amp;gt;)}&amp;lt;/code&amp;gt; converts an ascii string into a hex string.&amp;lt;br /&amp;gt;&lt;br /&gt;
iv. &amp;lt;code&amp;gt;{hex_to_rhex(&amp;amp;lt;HEX&amp;amp;gt;)}&amp;lt;/code&amp;gt; inverts the endian of a hex string.&amp;lt;br /&amp;gt;&lt;br /&gt;
v. &amp;lt;code&amp;gt;{hex_to_decimal(&amp;amp;lt;HEX&amp;amp;gt;)}&amp;lt;/code&amp;gt; converts a hex string into a decimal string.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Bug fix: All variable placeholders no longer require a specified order for operations.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Optimized input handling for smoother / faster menu item traversal.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;New theme colors and updates to theme [https://github.com/ppkantorski/Ultrahand-Overlay/blob/main/themes/ultra.ini &amp;lt;code&amp;gt;ultra.ini&amp;lt;/code&amp;gt;].&amp;lt;br /&amp;gt;&lt;br /&gt;
i. &amp;lt;code&amp;gt;header_text_color&amp;lt;/code&amp;gt; is the text color for category headers.&amp;lt;br /&amp;gt;&lt;br /&gt;
ii. &amp;lt;code&amp;gt;header_separator_color&amp;lt;/code&amp;gt; is the separator rectangle color for category headers.&amp;lt;br /&amp;gt;&lt;br /&gt;
iii. &amp;lt;code&amp;gt;star_color&amp;lt;/code&amp;gt; is the color of the favorites star when unselected.&amp;lt;br /&amp;gt;&lt;br /&gt;
iv. &amp;lt;code&amp;gt;selection_star_color&amp;lt;/code&amp;gt; is the color of the favorites star when selected.&amp;lt;br /&amp;gt;&lt;br /&gt;
v. &amp;lt;code&amp;gt;bottom_button_color&amp;lt;/code&amp;gt; is the color of the buttons displayed at the bottom of the window.&amp;lt;br /&amp;gt;&lt;br /&gt;
vi. &amp;lt;code&amp;gt;bottom_separator_color&amp;lt;/code&amp;gt; is the color of the separator drawn near the bottom of the window.&amp;lt;br /&amp;gt;&lt;br /&gt;
vii. &amp;lt;code&amp;gt;bottom_text_color&amp;lt;/code&amp;gt; is the color of the text drawn at the bottom of the window next to the buttons.&amp;lt;br /&amp;gt;&lt;br /&gt;
viii. &amp;lt;code&amp;gt;trackbar_slider_color&amp;lt;/code&amp;gt; is the color of the trackbar slider.&amp;lt;br /&amp;gt;&lt;br /&gt;
ix. &amp;lt;code&amp;gt;trackbar_slider_malleable_color&amp;lt;/code&amp;gt; is the color of the trackbar slider when it is in a modifiable mode (unlocked / press A).&amp;lt;br /&amp;gt;&lt;br /&gt;
x. &amp;lt;code&amp;gt;trackbar_slider_border_color&amp;lt;/code&amp;gt; is the color of the thin border around the slider.&amp;lt;br /&amp;gt;&lt;br /&gt;
xi. &amp;lt;code&amp;gt;trackbar_full_color&amp;lt;/code&amp;gt; is the color of the trackbar for the filled portion.&amp;lt;br /&amp;gt;&lt;br /&gt;
x. &amp;lt;code&amp;gt;trackbar_empty_color&amp;lt;/code&amp;gt; is the color of the trackbar for the empty portion.&amp;lt;br /&amp;gt;&lt;br /&gt;
xi. &amp;lt;code&amp;gt;default_package_color&amp;lt;/code&amp;gt; is the default color for package titles (used if none is specified in the package header).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;IMPORTANT&#039;&#039;&#039;: All colors with word &amp;lt;code&amp;gt;seperator&amp;lt;/code&amp;gt; are now spelt correctly &amp;lt;code&amp;gt;separator&amp;lt;/code&amp;gt;. (grammer typo fix)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Expansion of &amp;lt;code&amp;gt;backlight&amp;lt;/code&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In addition to &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;, backlight can now take an integer percentage value for precise backlight modifications.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;backlight &amp;amp;lt;PERCENTAGE&amp;amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Bug fix for &amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; command.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;refresh&amp;lt;/code&amp;gt; should now behave on the level / page it is called upon.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Improved touch scrolling implementation. (cursor no longer is redrawn as touch scrolling is initiated)&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Updated &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;v4.6.0&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;v4.7.0&amp;lt;/code&amp;gt;.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Page left / right traversal now works with joysticks in addition to the d-pad.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Various bug fixes and command optimizations.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.2...v1.6.3 Full Changelog: v1.6.2...v1.6.3]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Alignment correction for track-bar sliders and up / down bounce effect for track-bar cursors. (06/14/24 3:45 AM PST)&lt;br /&gt;
* Named step-bar tick indicator color and position correction. (06/14/24 3:53 AM PST)&lt;br /&gt;
* [https://github.com/ppkantorski/Ultrahand-Overlay/compare/v1.6.3...0eeef44 v1.6.3...0eeef44]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.2&#039;&#039;&#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
List of changes:&amp;lt;br/&amp;gt;&lt;br /&gt;
* New methods &amp;lt;code&amp;gt;list_file&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;list_file_source&amp;lt;/code&amp;gt; for reading lines from a text file.&lt;br /&gt;
** They are defined &amp;lt;code&amp;gt;list_file &amp;amp;lt;path_to_text_file&amp;amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;list_file_source &amp;amp;lt;path_to_text_file&amp;amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Their behavior is similar to a regular list with placeholders &amp;lt;code&amp;gt;{list_file(&amp;amp;lt;index&amp;amp;gt;)}&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;{list_file_source(&amp;amp;lt;index&amp;amp;gt;)}&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Bug fixes for nested package dropdown selections.&lt;br /&gt;
* Opaque screenshots will now be turned on by default upon initialization.&lt;br /&gt;
** To disable, enter the &amp;lt;code&amp;gt;Miscellaneous&amp;lt;/code&amp;gt; menu and click the toggle item.&lt;br /&gt;
* Bug fixes for Tesla combo persistence.&lt;br /&gt;
* Addition of a couple more default Tesla combos as well as fixes for reading alternate user specified combos.&lt;br /&gt;
* Settings menu code revision. (for smaller compilation)&lt;br /&gt;
* Various &amp;lt;code&amp;gt;libtesla&amp;lt;/code&amp;gt; alignment corrections.&lt;br /&gt;
&lt;br /&gt;
Update:&lt;br /&gt;
* Widget alignment correction. (05/26/2024 2:44 AM PST)&lt;br /&gt;
* Couple additional key combos (added by request). (05/26/2024 3:32 AM PST)&lt;br /&gt;
* Slight footer alignment correction. (05/26/2024 5:08 AM PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.1&#039;&#039;&#039;&lt;br /&gt;
* New command mode &amp;lt;code&amp;gt;;mode=slot&amp;lt;/code&amp;gt; for slot commands.&lt;br /&gt;
** &amp;lt;code&amp;gt;slot&amp;lt;/code&amp;gt; commands are similar to &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;, but with the ability to set footers (similar to an &amp;lt;code&amp;gt;option&amp;lt;/code&amp;gt; command).&lt;br /&gt;
* Various placeholder replacement bug fixes.&lt;br /&gt;
** Preservation of &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; arg with default to &amp;lt;code&amp;gt;Not available&amp;lt;/code&amp;gt; upon final replacement.&lt;br /&gt;
** Placeholder replacements now no longer contribute to command success/failure. (determined now solely by commands themselves.)&lt;br /&gt;
** &amp;lt;code&amp;gt;{file_name}&amp;lt;/code&amp;gt; replacements no longer include file extensions.&lt;br /&gt;
* Hex edits will now be unprocessed for &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt; arguments and still return successful. (bug fix)&lt;br /&gt;
* New placeholder &amp;lt;code&amp;gt;{timestamp(&amp;amp;lt;strftime&amp;amp;gt;)}&amp;lt;/code&amp;gt; for logging time as a variable.&lt;br /&gt;
** &amp;lt;code&amp;gt;strftime&amp;lt;/code&amp;gt; are datetime formats like &amp;lt;code&amp;gt;&amp;amp;quot;%Y-%m-%d&amp;amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Nested layers bug fix (for nested layers beyond layer 1).&lt;br /&gt;
* Package forwarder bug fixes.&lt;br /&gt;
* Slight tweaks to libtesla.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6.0&#039;&#039;&#039;&lt;br /&gt;
* More improvements to UI and libtesla.&lt;br /&gt;
** Rending related bug fixes and optimizations.&lt;br /&gt;
** Pixel blender bug fix (for transparency layer blending).&lt;br /&gt;
** Improvements to string/character length computations.&lt;br /&gt;
** Slightly improved cursor and menu layout.&lt;br /&gt;
* New themes values &amp;lt;code&amp;gt;selection_bg_alpha&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;table_bg_alpha&amp;lt;/code&amp;gt; for blended transparency.&lt;br /&gt;
** Updates to &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;ultra&amp;lt;/code&amp;gt; themes.&lt;br /&gt;
* New effect option &amp;lt;code&amp;gt;Opaque Screenshots&amp;lt;/code&amp;gt; (located in Settings &amp;amp;gt; UI Settings &amp;amp;gt; Miscellaneous) for removing overlay transparency from screenshots for Ultrahand.&lt;br /&gt;
* Slight improvements to the &amp;lt;code&amp;gt;unzip&amp;lt;/code&amp;gt; command method. (boundary case bug fixes)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.9&#039;&#039;&#039;&lt;br /&gt;
* More improvements and optimizations to the tables implementation.&lt;br /&gt;
** New option &amp;lt;code&amp;gt;;background=&amp;lt;/code&amp;gt; which is a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; value for drawing the table background.&lt;br /&gt;
** New configurable theme color &amp;lt;code&amp;gt;table_bg_color&amp;lt;/code&amp;gt; for configuring table background colors.&lt;br /&gt;
* More refinements and optimizations to libTesla.&lt;br /&gt;
** Slightly faster rendering + cleanup of various implementations.&lt;br /&gt;
* Update to &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; and [https://github.com/ppkantorski/Ultrahand-Overlay/blob/main/themes/ultra.ini ultra] themes.&lt;br /&gt;
* Bug fix for Ultrahand starting opened after shutting down within an overlay. (only present in v1.5.8)&lt;br /&gt;
* Bug fix for nested package pages.&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.8&#039;&#039;&#039;&lt;br /&gt;
* Numerous across the board optimizations and bug fixes. (Significant memory/speed improvements from v1.5.7.)&lt;br /&gt;
** Improved code structure and memory consumption.&lt;br /&gt;
** Optimized menu item sorting. (for drawing the &amp;lt;code&amp;gt;overlays&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;packages&amp;lt;/code&amp;gt; menu)&lt;br /&gt;
** Improved themes loading implementation.&lt;br /&gt;
** New hiding overlay implementation. (animations + widget throttling correction)&lt;br /&gt;
** &amp;lt;code&amp;gt;set-ini-value&amp;lt;/code&amp;gt; now will create folders if necessary when initializing new ini&#039;s.&lt;br /&gt;
** Bug fixes for &amp;lt;code&amp;gt;move&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt; commands.&lt;br /&gt;
** CURL global initialization. (fix for random crashes using download function)&lt;br /&gt;
** Bug fixes for default key combo initialization. (for fresh setups)&lt;br /&gt;
* New table implementation for drawing information.&lt;br /&gt;
** Table commands must start with &amp;lt;code&amp;gt;$&amp;lt;/code&amp;gt; in the command name and include &amp;lt;code&amp;gt;;mode=table&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Additional options for configuring tables:&lt;br /&gt;
*** &amp;lt;code&amp;gt;;header=&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; option for drawing the section header with the table.&lt;br /&gt;
*** &amp;lt;code&amp;gt;;alignment=&amp;lt;/code&amp;gt; is a string value &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;right&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; for controlling the value column alignment. (default value is &amp;lt;code&amp;gt;right&amp;lt;/code&amp;gt;).&lt;br /&gt;
*** &amp;lt;code&amp;gt;;offset=&amp;lt;/code&amp;gt; is an integer value for configuring the values column offset with a &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;center&amp;lt;/code&amp;gt; alignment. (default value is &amp;lt;code&amp;gt;160&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** &amp;lt;code&amp;gt;;spacing=&amp;lt;/code&amp;gt; is an integer value for configuring the newline spacings for drawing the table. (default value is &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;)&lt;br /&gt;
*** &amp;lt;code&amp;gt;;gap=&amp;lt;/code&amp;gt; is an integer value for configuring the post-table gap. (default value is &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;)&lt;br /&gt;
** Placeholders are fully functional for drawing tables with parsed values. (json, hex, list, etc.)&lt;br /&gt;
** New theme color options &amp;lt;code&amp;gt;table_section_text_color&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;table_info_text_color&amp;lt;/code&amp;gt;.&lt;br /&gt;
* New unzip + copy progress indicator.&lt;br /&gt;
* Progress animation. (see &amp;lt;code&amp;gt;Settings &amp;amp;gt; UI Settings &amp;amp;gt; Miscellaneous &amp;amp;gt; Effects &amp;amp;gt; Progress Animation&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Various subtle UI improvements and corrections.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.7&#039;&#039;&#039;&lt;br /&gt;
* List of changes:&lt;br /&gt;
** New function remove-ini-key for removing key/value pairs from a specified INI section.&lt;br /&gt;
*** remove-ini-key &amp;lt;path_to_ini&amp;gt; &amp;lt;desired_section&amp;gt; &amp;lt;desired_key&amp;gt;&lt;br /&gt;
** Unzip / copy progress indicator for background commands in progress. (similar to the download progress indicator)&lt;br /&gt;
*** WARNING: cp / copy now behaves more like the Shell / Bash version of cp, where it copies contents from the specified directory directly to the specified directory. it no longer forces a copy of the folder, requiring a potential rename.&lt;br /&gt;
** Buffer s and heap memory are now configurable from /config/ultrahand/config.ini. (see new package Memory Config)&lt;br /&gt;
*** This was added for additional configurations during testing.&lt;br /&gt;
*** When properly set, functions may gain a speed improvement. But configure with caution.&lt;br /&gt;
** Across the board optimizations and code revisions for faster functions with reduced memory.&lt;br /&gt;
*** Numerous revisions and improvements to libultra.&lt;br /&gt;
** Various minor bug fixes.&lt;br /&gt;
* Update:&lt;br /&gt;
** Copy folder related bug fix. (05/10/2024 6:51 AM PST)&lt;br /&gt;
** hex-by-custom-rdecimal-offset bug fix. (05/10/2024 4:59 PM PST)&lt;br /&gt;
** More slight optimizations + bug fixes with hexing. (05/10/2024 11:14 PM PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.6&#039;&#039;&#039;&lt;br /&gt;
* List of changes:&lt;br /&gt;
** Package path shortcuts implementation, called ./ for package path within command ini&#039;s.&lt;br /&gt;
*** i.e. /switch/.packages/&amp;lt;NAME_OF_PACKAGE&amp;gt;/ can now be called as ./&lt;br /&gt;
*** When fully utilized, this allows users to rename Ultrahand packages without any path conflicting.&lt;br /&gt;
** Basic toggles called without sourcing can now take a default state.&lt;br /&gt;
*** ;mode=toggle?on for defaulting to on when never clicked&lt;br /&gt;
*** ;mode=toggle?off for defaulting to off when never clicked (current default functionality for ;mode=toggle)&lt;br /&gt;
** backlight command now requires a on / off state. (bug fix)&lt;br /&gt;
*** Here is a simple way to use can the backlight function as a toggle.&lt;br /&gt;
*** [Backlight]&lt;br /&gt;
*** ;mode=toggle?on&lt;br /&gt;
*** on:&lt;br /&gt;
*** backlight on&lt;br /&gt;
*** off:&lt;br /&gt;
*** backlight off&lt;br /&gt;
** Numerous optimizations for a variety of the *_funcs.hpp methods. (faster menu drawing and commands)&lt;br /&gt;
** New scroll bar implementation has been corrected.&lt;br /&gt;
** Returning from a hidden overlay now takes you back to the hidden overlay menu.&lt;br /&gt;
** Reduced memory imprint of ovlmenu.ovl.&lt;br /&gt;
** Creation of libultra (restructuring of project into a custom library).&lt;br /&gt;
*** This allows users to potentially build their own Ultrahand Overlays when utilized with my libtesla fork.&lt;br /&gt;
*** To use, users simply need to copy the libs folder into their project, then import and use libtesla as they would normally.&lt;br /&gt;
* Update: &lt;br /&gt;
** Hidden package / overlay settings bug fix + setIniFile bug fix. (05/07/2024 5:49 AM PST)&lt;br /&gt;
*** If you did use v1.5.6 before this update, you might want to run this command once (just to be safe).&lt;br /&gt;
*** [Clear INIs]&lt;br /&gt;
*** delete /config/ultrahand/packages.ini&lt;br /&gt;
*** delete /config/ultrahand/overlays.ini&lt;br /&gt;
*** delete /config/ultrahand/theme.ini&lt;br /&gt;
*** delete /config/ultrahand/config.ini&lt;br /&gt;
*** delete /config/.packages/config.ini&lt;br /&gt;
*** delete /switch/.packages/*/config.ini&lt;br /&gt;
** Path shortcut fix for json_file_source + fix for commands grouped together with a package forwarder. (05/07/2024 4:04 PM PST)&lt;br /&gt;
** Wildcard pattern bug fix + move files/folders bug fix. (05/07/2024 8:55 PM PST)&lt;br /&gt;
*** This may have affected this line from executing properly delete /switch/.packages/*/config.ini. You may still want to run this command once if you used v1.5.6 earlier than the first update.&lt;br /&gt;
** More last minute wildcard pattern bug fixes. (05/07/2024 11:19 PM PST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.5&#039;&#039;&#039;&lt;br /&gt;
* List of changes:&lt;br /&gt;
** Implementation of new package forwarders for extended Ultrahand packages.&lt;br /&gt;
*** To use forwarders, use command mode ;mode=forwarder with * in the command name.&lt;br /&gt;
*** Forwarder package is defined with package_source &amp;lt;PATH_TO_FORWARDED_INI&amp;gt;.&lt;br /&gt;
*** Additional commands listed along side package_source are executed upon click.&lt;br /&gt;
** UI related bug fixes and tweaks.&lt;br /&gt;
*** Scroll bar implementation has been modified.&lt;br /&gt;
*** Page alignment has been slightly adjusted.&lt;br /&gt;
*** Adjustments to spacing of info sections.&lt;br /&gt;
** Touch implementation has been cleaned up a bit more.&lt;br /&gt;
*** Fix for unmapped toggle commands (and others).&lt;br /&gt;
** Various minor menu traversing related bug fixes.&lt;br /&gt;
* Update:&lt;br /&gt;
** Nested package implementation bug fix. (05/05/2024)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.4&#039;&#039;&#039;&lt;br /&gt;
*List of changes:&lt;br /&gt;
**Better memory management and utilization of smart pointers. (potential memory leaks resolved hopefully)&lt;br /&gt;
**Interpreter thread now is initialized when command is ran.&lt;br /&gt;
**Root package commands now accept dropdown commands (similar to the current package command implementation).&lt;br /&gt;
**Removal of last_menu setting from /config/ultrahand/config.ini. (no longer needed)&lt;br /&gt;
**Setting key combo from the Settings Menu now also updates /config/tesla/config.ini. (for persistence reasons with libTesla overlays)&lt;br /&gt;
**Menu traversing related bug fixes.&lt;br /&gt;
**Various bug fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.3&#039;&#039;&#039;&lt;br /&gt;
*List of changes:&lt;br /&gt;
**Removal of &amp;lt;sys/stat.h&amp;gt;/&amp;lt;cstdio&amp;gt; and implementation of &amp;lt;fstream&amp;gt; in every function.&lt;br /&gt;
**More improvements to make every function to make them thread safe (json, hex, ini, etc.)&lt;br /&gt;
**Slight restructuring of various sections of code.&lt;br /&gt;
**Reduction of compilation size.&lt;br /&gt;
**Various bug fixes and improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.2&#039;&#039;&#039;&lt;br /&gt;
*List of changes:&lt;br /&gt;
**Numerous menu related memory leak bug fixes.&lt;br /&gt;
**Revision to the background thread implementation.&lt;br /&gt;
**Various improvements to download, json, ini, and path functions.&lt;br /&gt;
**Bug fixes for refresh function as well as exec boot.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.1&#039;&#039;&#039;&lt;br /&gt;
*List of changes:&lt;br /&gt;
**Full touch support is now included.&lt;br /&gt;
***You can now touch the logo/widget section to enter the settings menu.&lt;br /&gt;
**Multi-threading implementation for the interpreter.&lt;br /&gt;
***Package commands (except boot_package for now) now operate on a background thread, allowing users to hide the overlay during long tasks. This includes background downloads.&lt;br /&gt;
**Introduction of new theme coloring variables. (mostly for commands in progress)&lt;br /&gt;
**New ;system= command headers, called ;system=erista or ;system=mariko.&lt;br /&gt;
***These headers will only draw commands onto the menu depending upon what system they are being displayed on.&lt;br /&gt;
**New file path grouping types (will be better documented later with the revision of Mod Master, now planned for v1.5.2).&lt;br /&gt;
**Pressing L jumps back to the first item on the menu.&lt;br /&gt;
**Various bug fixes in download_funcs as well as libTesla.&lt;br /&gt;
*Update:&lt;br /&gt;
**Download progress implementation.&lt;br /&gt;
**Pressing R cancels / kills a command in progress.&lt;br /&gt;
**Many bug fixes.&lt;br /&gt;
**New command exit for exiting Ultrahand directly.&lt;br /&gt;
**Interpreter optimizations and stability bug fixes. (final update 04/25/2024)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5.0&#039;&#039;&#039;&lt;br /&gt;
* Introduction of new pchtxt2ips method, called pchtxt2ips &amp;lt;PCHTXT_FILE_PATH&amp;gt; &amp;lt;OUTPUT_FOLDER&amp;gt;.&lt;br /&gt;
** This allows the easy conversion of .pchtxt files into .ips binaries.&lt;br /&gt;
* Download commands now show a downloading indicator (footer) to help users understand when a file is downloading.&lt;br /&gt;
* Failed replacements now return null instead of -1. Failed json replacements now return Not available (UNAVAILABLE_SELECTION variable).&lt;br /&gt;
* Bug fix for starring / favoriting hidden overlays and packages.&lt;br /&gt;
* libnx has been updated.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.9&#039;&#039;&#039;&lt;br /&gt;
*List of changes:&lt;br /&gt;
**Numerous refinements to the UI and libTesla.&lt;br /&gt;
***(cleanup alignments, rounded corner cursor, corrections to footer draw locations, listItem size, etc.)&lt;br /&gt;
**Expansion of the configurable themes.&lt;br /&gt;
***New variables for customizing background color, various text colors, logo color, and dynamic logo color.&lt;br /&gt;
***New themes light.ini and light-v2.ini (light mode themes) as well as updates for the rest.&lt;br /&gt;
**Introduction of DEFAULT_CHAR_WIDTH variable within the language json for more precise mapping of character width in alternate languages.&lt;br /&gt;
*Update:&lt;br /&gt;
**Slight default logo color tweak.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.8&#039;&#039;&#039;&lt;br /&gt;
*List of changes:&lt;br /&gt;
**Improved toggles implementation.&lt;br /&gt;
***Toggles no longer require a source and use the pre-generated config.ini for storing state information.&lt;br /&gt;
***Sidenote: Dropdown selection toggles still may require revisions to their implementation some time down the line.&lt;br /&gt;
**Failed variable replacements now return a value.&lt;br /&gt;
***Currently set to -1 for failed replacements, but may be revised to something more unique in the next update.&lt;br /&gt;
**Various bug fixes as well as code optimizations.&lt;br /&gt;
***This included a footer bug fix (was present in v1.4.6 but missing from v1.4.7).&lt;br /&gt;
***More memory related optimizations across a variety of functions.&lt;br /&gt;
**Updates to OC Toolkit (now at v0.3.6).&lt;br /&gt;
***Sys-clk Settings are now configurable from the Tools menu.&lt;br /&gt;
*Update:&lt;br /&gt;
**Another bug fix for option command selection footers. - 11/25/23 10:06 PM PST&lt;br /&gt;
**libTesla bug fixes (widget drawing related fixes). - 11/26/23 7:00 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.7&#039;&#039;&#039;&lt;br /&gt;
*Numerous code optimizations and revisions across the board for all methods.&lt;br /&gt;
**These ranged from bug fixes to stricter/cleaner memory management within functions.&lt;br /&gt;
**Especially helpful for downloading command failure related bugs.&lt;br /&gt;
*New commands:&lt;br /&gt;
**backlight toggles on/off the screen&lt;br /&gt;
**hex-by-custom-decimal-offset, hex-by-custom-rdecimal-offset (similar to hex-by-custom-offset but accepts decimal representations of hex for replacement.&lt;br /&gt;
**mariko:, erista: define code blocks that will execute based upon if the device is mariko or erista.&lt;br /&gt;
*Update:&lt;br /&gt;
**Bug fix for mariko: and erista: calls.&lt;br /&gt;
**More memory related optimizations. - 11/19/23 6:21 AM PST&lt;br /&gt;
**Default Tesla combo bug fix. - 11/20/23 2:40 PM PST&lt;br /&gt;
**Overlay sorting bug fix for overlays with _ within overlayNames. - 11/20/23 8:08 PM PST&lt;br /&gt;
**Last minute memory related optimizations. - 11/21/23 3:40 AM PST&lt;br /&gt;
**Rewrite of Studious Pancake&#039;s functions for IsErista and IsMariko. (bug fix) - 11/21/23 5:02 PM PST&lt;br /&gt;
**Bug fix for Not available commands in alternate languages. - 11/22/23 6:47 AM PST&lt;br /&gt;
**More libTesla optimizations. (faster menu). - 11/22/23 6:47 AM PST&lt;br /&gt;
**New clear command clear hex_sum_cache for clearing the hexSumCache. - 11/22/23 7:22 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.6&#039;&#039;&#039;&lt;br /&gt;
*Addition of a toggle-able User Guide (drawn by default on the Packages Menu).&lt;br /&gt;
*Reboot directly to Hekate menu now implemented within the reboot command.&lt;br /&gt;
**Called reboot hekate or reboot HEKATE (similar to reboot ums).&lt;br /&gt;
*Initialization / auto-generation of /config/tesla/config.ini for legacy compatibility.&lt;br /&gt;
**This is primarily for preserving hide/show hot keys within overlays.&lt;br /&gt;
**You are not required to ever touch nor modify /config/tesla/config.ini.&lt;br /&gt;
**Modifications within Ultrahand will automatically carry over.&lt;br /&gt;
*Default Tesla launch combo (L+DDOWN+RS) now works upon first run in addition to Ultrahand&#039;s default launch combo (ZL+ZR+DDOWN).&lt;br /&gt;
**The combo that is clicked first will be the combo that Ultrahand assumes.&lt;br /&gt;
**Combo can then be updated from the Settings Menu.&lt;br /&gt;
*Version Labels is now a subcategory within Miscellaneous in addition to Menu Items.&lt;br /&gt;
**Users can show/hide the User Guide from within Miscellaneous.&lt;br /&gt;
*Various bug fixes and implementation modifications.&lt;br /&gt;
**Update:&lt;br /&gt;
*Slight indentation cleanups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.5&#039;&#039;&#039;&lt;br /&gt;
*New function try: for executing blocks/lines of code with error catching.&lt;br /&gt;
**Commands in the chain are still executed normally without try:.&lt;br /&gt;
**Subsequent try: statements blocks will be executed in order until success is reached throughout an entire block.&lt;br /&gt;
**(See updated examples Easy Installer and OC Toolkit.)&lt;br /&gt;
*New highlight color added to themes for &amp;quot;clicking&amp;quot;.&lt;br /&gt;
**This color will only be applied when the selection background is set to not be drawn.&lt;br /&gt;
**When selection background is disabled, clicking backgrounds will also be disabled.&lt;br /&gt;
*If any of the lines within the command that involve sourcing, hexing, downloading, or unzipping fail, it will return a red cross symbol instead of a checkmark.&lt;br /&gt;
*Various bug fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.4&#039;&#039;&#039;&lt;br /&gt;
*Theme manager is now built into the Settings Menu (PLUS / +).&lt;br /&gt;
**Themes will have their own custom name and be placed within /config/ultrahand/themes/&amp;lt;THEME&amp;gt;.ini.&lt;br /&gt;
*Themes have been expanded to include variables selection_text_color, selection_bg_color, disable_selection_bg and disable_colorful_logo.&lt;br /&gt;
**disable_selection_bg is set to true by default. This significantly improves the speed of rendering the UI, resulting in a smoother experience moving around (especially noticeable in the Script Overlay).&lt;br /&gt;
*Addition of several extra Key Combo button combinations on the Settings Menu. (ZL+ZR+PLUS, L+R+PLUS, PLUS+MINUS)&lt;br /&gt;
*Numerous libTesla bug fixes and optimizations.&lt;br /&gt;
**These ranged from improper cropping of certain menu items to correcting draw locations.&lt;br /&gt;
**Additional improvements to text scrolling.&lt;br /&gt;
**Half float data-type implementations.&lt;br /&gt;
*Update: 11/6/23 2:13 AM PST&lt;br /&gt;
*Bug fixes for download functions, json_source functions, and Package Info drawing.&lt;br /&gt;
*Updates, fixes and expansions to OC Toolkit (now v0.2.9).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.3&#039;&#039;&#039;&lt;br /&gt;
* Key combo initialization bug fix (primarily for people not coming from Tesla Menu).&lt;br /&gt;
** This bug made an initialized /config/ultrahand/config.ini file not write hotkeys to the ini without Tesla config files.&lt;br /&gt;
** Default key combo is now ZL+ZR+DDOWN if no key combo is found and will be auto generated with the config.ini.&lt;br /&gt;
* ListItem scrolling is now time synchronized in libTesla.&lt;br /&gt;
** When you under clock your device and see a long command name, this is especially noticeable.&lt;br /&gt;
** Previous behavior would scroll the text from left to right very slowly when clock speeds go down, then faster when they speed up.&lt;br /&gt;
** With time synchronized animation, behavior is standardized, creating an overall smoother experience on the menu. (better resource management)&lt;br /&gt;
* Various (minor) fixes and improvements.&lt;br /&gt;
* Update: 11/02/2023 10:49 PM PST&lt;br /&gt;
** Credits are now an addition in Ultrahand packages, called ;credits= (similar to ;about=).&lt;br /&gt;
*** Slight cleanup of scrolling implementation.&lt;br /&gt;
** smoothing effect has been added to scrolling (for cleaner animation)&lt;br /&gt;
** Toggles for &amp;quot;On&amp;quot; and &amp;quot;Off&amp;quot; for Ultrahand Packages now use the active language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.2&#039;&#039;&#039;&lt;br /&gt;
* Built with latest libnx for official HOS 17.0.0 support.&lt;br /&gt;
** Temperatures are now working on HOS 17.0.0.&lt;br /&gt;
* Addition of UI Settings menu. (within Settings Menu PLUS/+).&lt;br /&gt;
** Widget for clock, temperature, and battery is now easily toggleable.&lt;br /&gt;
** Version Labels has been moved into it&#039;s own subgroup.&lt;br /&gt;
* Software Update is now its own subgroup with overlay info for Ultrahand as well as language update options.&lt;br /&gt;
** Ultrahand Overlay information is now displayed in the Software Update section.&lt;br /&gt;
* JSON placeholder replacement functions have been rewritten/improved.&lt;br /&gt;
* Various bug fixes and improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.1&#039;&#039;&#039;&lt;br /&gt;
*Ini parsing and formatting related bug fixes.&lt;br /&gt;
**This fixes issues like the first key in your keyCombo not working in libTesla.&lt;br /&gt;
**Also improves formatting structure when adding in entries into ini files.&lt;br /&gt;
*Expanded themes and UI improvements.&lt;br /&gt;
**Themes (/config/ultrahand/theme.ini) now have options trackbar_color, highlight_color_1, highlight_color_2.&lt;br /&gt;
**The /config/ultrahand/config.ini also lets you control visibility of clock, temperatures, and battery.&lt;br /&gt;
**libTesla dynamic color effects are now synced to time instead of being driven by clock-speed. You will notice that even when under-clocking the color effects are always full speed.&lt;br /&gt;
*RebootToPayload functions via Studious Pancake (AMS 1.6.0+).&lt;br /&gt;
**The reboot command has now been expanded with payload / Hekate functionality. This was done in preparation for HOS 17.0.0.&lt;br /&gt;
***reboot ini &amp;lt;ENTRY_NAME&amp;gt; or reboot ini &amp;lt;ENTRY_INDEX&amp;gt;&lt;br /&gt;
***reboot boot &amp;lt;ENTRY_NAME&amp;gt; or reboot boot &amp;lt;ENTRY_INDEX&amp;gt;&lt;br /&gt;
***reboot /path/to/payload.bin&lt;br /&gt;
***reboot UMS&lt;br /&gt;
***reboot&lt;br /&gt;
**sidenote: Reboot by id is coming soon. All of these functions have been coded to work on both Mariko and Erista.&lt;br /&gt;
*Software updates for Ultrahand can now be performed from the Settings menu (PLUS / +).&lt;br /&gt;
*Launch arguments for overlays are now passable from /config/ultrahand/overlays.ini.&lt;br /&gt;
**You can press Y on an overlay to enter the Overlay settings menu, then enable/disable launch arguments.&lt;br /&gt;
**Launch arguments must be set by hand within /config/ultrahand/overlays.ini otherwise are initialized empty.&lt;br /&gt;
*Temperature now include both SOC and PCB temperature, but 17.0.0 implementation for temperature is currently still pending on libnx. (soon).&lt;br /&gt;
**Backend for implementation has been written and is currently commented out.&lt;br /&gt;
*Various updates to languages files (still a WIP).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4.0&#039;&#039;&#039;&lt;br /&gt;
* Improvements to UI (battery, configurable clock, sensor, drawspace, etc.)&lt;br /&gt;
* International languages implementation.&lt;br /&gt;
** Language files go in /config/ultrahand/lang/*.json&lt;br /&gt;
** NOTE: Help is still needed to get some of these translations down. Language files are subjected to updates, but feel free to modify them yourself for your language.&lt;br /&gt;
* Expanded settings menu.&lt;br /&gt;
** key combo is now configurable from the Settings menu (PLUS)&lt;br /&gt;
* Start of themes implementation (text_color, clock_color, battery_color).&lt;br /&gt;
** Themes are stored in /config/ultrahand/theme.ini.&lt;br /&gt;
* Improved overlay sorting. (done by Overlay name instead of Overlay file name).&lt;br /&gt;
* Multiple bug fixes.&lt;br /&gt;
* Faster command interpreter. (update 10/20/23 9:23 PM PST)&lt;br /&gt;
** After inspection, this actually resulted a in ~0.4MB file size reduction.&lt;br /&gt;
* Sidenote: HOS 17.0.0 messed up temperature readings with libnx. This should be easily fixed once libnx is updated for 17.0.0.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.9&#039;&#039;&#039;&lt;br /&gt;
*Star-ing overlays is now done by pressing X instead of PLUS.&lt;br /&gt;
*Pressing PLUS on main menu now invokes the Ultrahand Settings menu (a page to control some settings in the config.ini).&lt;br /&gt;
*Pressing Y on top of an overlay / package pulls up the Menu settings for that particular item.&lt;br /&gt;
*New hidden overlays/packages page for storing hidden overlays/packages (will be drawn at the bottom when populated).&lt;br /&gt;
*New option clean_version_labels in /config/ultrahand/config.ini (can be set on Ultrahand Settings menu).&lt;br /&gt;
**Clean versions restricts all displayed version labels into a X.X.X format.&lt;br /&gt;
*Various bug fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.8&#039;&#039;&#039;&lt;br /&gt;
*Introduction of Pages: Now, you can define pages using empty commands [@PAGE1] and [@PAGE2], where PAGE1 and PAGE2 are labels for the page. Note that only two of these empty @-commands can be referenced in a package. You can navigate between PAGE1 and PAGE2 using the left and right buttons on the DPAD.&lt;br /&gt;
*New Command remove-ini-section: I&#039;ve added a new command called remove-ini-section &amp;lt;ini_file_path&amp;gt; &amp;lt;section_name&amp;gt;. This command allows you to quickly remove a section from an INI file.&lt;br /&gt;
*Package Info Section: You can now include a Package Info section within your package.ini file by using [Package Info] as an empty command. If there&#039;s no reference to [Package Info], the package info section will not be displayed.&lt;br /&gt;
*Package title colors now accept custom RGB888 hex representations (i.e. #FFFFFF for white).&lt;br /&gt;
*NOTE: RGB888 hex color format will be downscaled to RGB444 for libTesla compatibility.&lt;br /&gt;
**Bug Fixes: Addressed various bug fixes, including a memory leak issue on the main menu.&lt;br /&gt;
*New updates to OC Toolkit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.7&#039;&#039;&#039;&lt;br /&gt;
*Hex offset caching has been implemented for faster hexing read/write calls.&lt;br /&gt;
*Various additional improvements to hex functions.&lt;br /&gt;
*New true/false property hide for packages.ini and overlays.ini to toggle visiblity.&lt;br /&gt;
*New command logging to enable/disable command logging (now off by default).&lt;br /&gt;
*New command clear for deleting Ultrahand relavent files (so far only clear log works).&lt;br /&gt;
*New ;color= header definition in package.ini for choosing colors for your package title.&lt;br /&gt;
**Colors: red, green(default), blue, yellow, orange, purple, pink, white, ultra(wip)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.6&#039;&#039;&#039;&lt;br /&gt;
*Added the ability to define functions in boot_package.ini other than boot.&lt;br /&gt;
*Enabled referencing and execution of global functions defined in boot_package.ini from your script using exec &amp;lt;COMMAND&amp;gt;.&lt;br /&gt;
*Introduced a new refresh command to redraw the current menu page.&lt;br /&gt;
*Various bug fixes as well as improvements to OC Toolkit.&lt;br /&gt;
*Menu related bug fix (memory leak). Opening and closing selection overlay with dictionaries was not unloading the dictionary. Issue has been resolved.&lt;br /&gt;
*If a command has the footer &amp;quot;Not available&amp;quot; it will no longer function.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.5&#039;&#039;&#039;&lt;br /&gt;
*Introduction of boot_package.ini (commands that will run when your package is opened). This file is placed in the same folder as your package.ini file.&lt;br /&gt;
*Introduction of new hex_file advanced function for reading/parsing hex data from files.&lt;br /&gt;
*Introduction of command tags, i.e. [COMMAND?Tag]. Tags are not printed, but are helpful for making similar named commands unique (which is essential).&lt;br /&gt;
*New example package OC Toolkit for advanced modifications of kip files. (WIP)&lt;br /&gt;
*Update:&lt;br /&gt;
*Ive added a new function ini_file to read data from ini files.&lt;br /&gt;
**ini_file &amp;lt;ini_file_path&amp;gt; is how it is defined.&lt;br /&gt;
**{ini_file(section, key)} is how it will be called.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.4&#039;&#039;&#039;&lt;br /&gt;
* List of changes:&lt;br /&gt;
** Empty commands now define grouping sections.&lt;br /&gt;
** Empty commands with a * at the start of them define group commands. Commands defined after will show up in a dropdown menu.&lt;br /&gt;
** To end the identification of a group command, a group section must be defined.&lt;br /&gt;
** New command set-footer.&lt;br /&gt;
** Various bug fixes.&lt;br /&gt;
*Basic example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Section 1]&lt;br /&gt;
[*Test]&lt;br /&gt;
;mode=option&lt;br /&gt;
list_source &#039;(test1, test2, test3)&#039;&lt;br /&gt;
set-footer {list_source(*)}&lt;br /&gt;
&lt;br /&gt;
[*Timings]&lt;br /&gt;
;mode=option&lt;br /&gt;
list_source &#039;(1, 2, 3, 4, 5, 6)&#039;&lt;br /&gt;
set-footer {list_source(*)}&lt;br /&gt;
&lt;br /&gt;
[*Commands Group]&lt;br /&gt;
[*Test2]&lt;br /&gt;
json_source &#039;[{&amp;quot;key_1&amp;quot;:&amp;quot;entry 1&amp;quot;, &amp;quot;key_2&amp;quot;:&amp;quot;entry 2&amp;quot;, &amp;quot;key_3&amp;quot;:&amp;quot;entry 3&amp;quot;}, {&amp;quot;key_1&amp;quot;:&amp;quot;entry a&amp;quot;, &amp;quot;key_2&amp;quot;:&amp;quot;entry b&amp;quot;, &amp;quot;key_3&amp;quot;:&amp;quot;entry c&amp;quot;}]&#039; key_1&lt;br /&gt;
&lt;br /&gt;
[Section 1]&lt;br /&gt;
[*Test3]&lt;br /&gt;
;mode=option&lt;br /&gt;
list_source &#039;(test4, test5, test6)&#039;&lt;br /&gt;
set-footer {list_source(*)}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*update:&lt;br /&gt;
**Bug fix for selected footer after entering command groups. - 10/3/2023 4:48 PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.3&#039;&#039;&#039;&lt;br /&gt;
* List of changes:&lt;br /&gt;
** Fixed dropdown toggles. (Setup double click prevention to ensure commands are properly parsed.)&lt;br /&gt;
** New option command mode for selections. (useful for developing configurators scripts.)&lt;br /&gt;
** New auto-generated config.ini for each package.ini within the package folder. Settings will be parsed from package.ini if provided as a comment.&lt;br /&gt;
*** mode: this can be set to default, option, or toggle.&lt;br /&gt;
*** grouping: this can be set to default or split (split splits commands into groups based upon subfolders)&lt;br /&gt;
*** footer: null by default. When used with option mode, it can be dynamically read on the menu.&lt;br /&gt;
** DONE is now replaced by a checkmark.&lt;br /&gt;
* Basic Option Example:&lt;br /&gt;
** Package: /switch/.packages/Test/package.ini&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.2&#039;&#039;&#039;&lt;br /&gt;
* Bug fixes with interpreter allocating too much memory.&lt;br /&gt;
** This affected unzip and download in certain test cases, but is no longer an issue.&lt;br /&gt;
** Easy Installer and other download packages should now work properly again.&lt;br /&gt;
* UPDATE: (stable)&lt;br /&gt;
** Root menu commands (/switch/.packages/package.ini) now behave the same way as package menu commands.&lt;br /&gt;
** Config menu has now been fixed. (09/26/23 11:21 PM)&lt;br /&gt;
** Multiple menu related bug fixes. (09/27/23 2:25 AM)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.1&#039;&#039;&#039;&lt;br /&gt;
* json_data (the non source version) is now json_file.&lt;br /&gt;
* json is now a new non-source version of json_source for storing data within the package.ini.&lt;br /&gt;
* list_source has been fixed. Items defined in list can be called by {list_source(&amp;lt;INDEX&amp;gt;)}.&lt;br /&gt;
* list is now a new non-source version of list_source. Items defined in list can be called by {list(&amp;lt;INDEX&amp;gt;)}.&lt;br /&gt;
* Re-built interpreter and SelectionMenu/SubMenu.&lt;br /&gt;
* Introduction of selection modes ;mode=.&lt;br /&gt;
* Drop of _on and _off functions.&lt;br /&gt;
** Sections can be defined using ;mode=toggle and on: followed by the on commands and off: followed by the off commands.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3.0&#039;&#039;&#039;&lt;br /&gt;
*config.ini is now package.ini for Ultrahand packages.&lt;br /&gt;
*source is now file_source&lt;br /&gt;
*source_on is now file_source_on&lt;br /&gt;
*source_off is now file_source_off&lt;br /&gt;
*json_source is now json_file_source&lt;br /&gt;
*New function json_source for defining JSONs directly within the package.ini file.&lt;br /&gt;
**Example: json_source &#039;[{&amp;quot;key1&amp;quot;:&amp;quot;value1&amp;quot;}, {&amp;quot;key1&amp;quot;:&amp;quot;value2&amp;quot;}]&#039; key1&lt;br /&gt;
*Menu item sorting are now implemented differently.&lt;br /&gt;
**New files /config/ultrahand/overlays.ini and /config/ultrahand/packages.ini for manually specifying priority and storing information.&lt;br /&gt;
**Priority value is a number from 0 to 9999&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.2.1&#039;&#039;&#039;&lt;br /&gt;
* hide_overlay_versions and hide_package_versions are now true or false options within /config/ultrahand/config.ini.&lt;br /&gt;
* hex-by-custom-offset is now a new command for using custom string pattern offsets for more advanced hex-editing scenarios.&lt;br /&gt;
* New wildcard source command type list_source implementation for specifying list variables within package inis.&lt;br /&gt;
* Several bug fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.2.0&#039;&#039;&#039;&lt;br /&gt;
* Commands now state &amp;quot;DONE&amp;quot; after pressed.&lt;br /&gt;
* Bug fix for &amp;quot;set-ini-value&amp;quot;. Issue was that for a new entry, it would inject the new entry into every section.&lt;br /&gt;
* Simple fix, but since its bound to affect someone&#039;s project eventually, I&#039;m updating the release.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.9&#039;&#039;&#039;&lt;br /&gt;
* Bug Fixes: Static menu variable and rootFrame handling.&lt;br /&gt;
* These bug fixes potentially resolve the menu handling issue that occasionally can occur for some testers.&lt;br /&gt;
* Overall it should be more stable with static implementations of the particular variables I modified.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.8&#039;&#039;&#039;&lt;br /&gt;
* Introduction of footers for commands.&lt;br /&gt;
* Testing potential bug fix for handling menu input.&lt;br /&gt;
* This issue is not very common, but occasionally the menu can get locked into a weird orientation, preventing you from moving to packages or overlays at times. Its hard to figure out the exact trigger, but I&#039;ve attempted to address the issue here. Pre-release will be dropped after more testing. If you see this bug on this version, do let me know in issues.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.7&#039;&#039;&#039;&lt;br /&gt;
* Download and unzip files implementation has been added.&lt;br /&gt;
* Command to download:&lt;br /&gt;
** download &amp;lt;FILE_URL&amp;gt; &amp;lt;DESTINATION_FILE_OR_FOLDER&amp;gt;&lt;br /&gt;
* Command to unzip:&lt;br /&gt;
** unzip &amp;lt;SOURCE_FILE&amp;gt; &amp;lt;DESTINATION_FOLDER&amp;gt;&lt;br /&gt;
* CURL has made it a bit beefier as you can tell, but the potential benefits are pretty great for having these commands handy. Lots of new packages can be made for updating and installing software.&lt;br /&gt;
* update: slight bug fix for handling more URLs (07/07/2023)&lt;br /&gt;
* update: bug fix for unzip and createDirectories (07/08/2023)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.6&#039;&#039;&#039;&lt;br /&gt;
* Move commands now create directory if the directory does not exist.&lt;br /&gt;
* Bug fix for exiting main menu that can sometimes occur when exiting (locked users in the menu until an item is selected).&lt;br /&gt;
* Multiple filters are now implemented. filter, filter_on, filter_off calls will store your filter path into a list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.5&#039;&#039;&#039;&lt;br /&gt;
* Bug fix for those who specify their default menu mode instead of resorting to last_menu.&lt;br /&gt;
* Several cosmetic improvements.&lt;br /&gt;
* Easier transition from Tesla Menu by copying combo from sdmc:/config/tesla/config.ini if it exists and the combo is not within sdmc:/config/ultrahand/config.ini.&lt;br /&gt;
 * update: more cosmetic improvements after initial release (only difference)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.4&#039;&#039;&#039;&lt;br /&gt;
* Ultrahand is now a replacement for ovlmenu.ovl.&lt;br /&gt;
* Ultrahand packages are now relocated to sdmc:/switch/.packages/.&lt;br /&gt;
* Ultrahand specific settings are now stored in sdmc:/config/ultrahand/config.ini.&lt;br /&gt;
* Left on the menu takes you to your overlays.&lt;br /&gt;
* Right on the menu takes you to your packages and commands.&lt;br /&gt;
* More improvements to come.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.3&#039;&#039;&#039;&lt;br /&gt;
* Introduction of more selection command features.&lt;br /&gt;
* Multi-wildcard statements.&lt;br /&gt;
* New functions &#039;mirror_copy&#039; and &#039;mirror_delete&#039; for implementing mirror functions on directory contents.&lt;br /&gt;
* All copy functions now create destination directories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.2&#039;&#039;&#039;&lt;br /&gt;
* Selection (wild card commands) toggles are now implemented.&lt;br /&gt;
* Simple one line filter added. (see updated examples).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1.1&#039;&#039;&#039;&lt;br /&gt;
*Introduction of wildcard commands (new command-type).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.10.0&#039;&#039;&#039;&lt;br /&gt;
* Pre-release: Testing new hex editing functions.&lt;br /&gt;
* New commands &amp;quot;hex-by-offset&amp;quot;, &amp;quot;hex-by-swap&amp;quot;, &amp;quot;hex-by-decimal&amp;quot;, &amp;quot;hex-by-rdecimal&amp;quot;&lt;br /&gt;
* Still needs more testing to confirm full functionality, but since it appears to be compiling properly ill leave it here for now for testing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.9&#039;&#039;&#039;&lt;br /&gt;
* Implemented safeguards so you don&#039;t delete or move your entire SD card or essential files. Still have more features to implement for this version, it should be better than using 1.0.8 but since I made changes that need review I am still calling it pre-release for now.&lt;br /&gt;
* Update: More advanced pattern searching. Multiple wildcards. 2:42 AM PST 06/08/2023&lt;br /&gt;
* Update: Updated safeguards for more advanced patterns. 3:16 AM PST 06/08/2023&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.8&#039;&#039;&#039;&lt;br /&gt;
*Added new feature &amp;quot;new-ini-entry&amp;quot; and restored original example config.ini generated if no config is present.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.7&#039;&#039;&#039;&lt;br /&gt;
*Improvements to menu. Version handling for user packages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6&#039;&#039;&#039;&lt;br /&gt;
* More improvements, &amp;quot;edit-ini&amp;quot; commands have now been labeled &amp;quot;set-ini&amp;quot;. You can also press X on an individual command and see and execute individual lines within.&lt;br /&gt;
** Update: Faster copying. - 05/31/23 4:19PM PST&lt;br /&gt;
** Update: Even faster copying. - 05/31/23 4:35PM PST&lt;br /&gt;
** Update: Slight size reduction. - 06/01/23 6:34PM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.5&#039;&#039;&#039;&lt;br /&gt;
* Too many bug fixes with statement logic.&lt;br /&gt;
* Ability to execute individual commands from a package have been added (press X on package).&lt;br /&gt;
* More slight tweaks and capabilities packed into the functions.&lt;br /&gt;
** Update: Fixed editINI adding new lines by mistake. - 05/29/23 05:16 PM PST&lt;br /&gt;
** Update: Fixed copy directory not copying subdirectories. - 05/29/23 05:59 PM PST&lt;br /&gt;
** Update: Edit ini key or value now. - 05/29/23 09:40 PM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.4&#039;&#039;&#039;&lt;br /&gt;
*Slight tweaks to libtesla. This is pre-release, but it is still commits ahead of 1.0.3 and stable.&lt;br /&gt;
**Update: Got new features as well as pattern searching implemented. New documentation coming soon. 05/29/23 9:11 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.3&#039;&#039;&#039;&lt;br /&gt;
* Improvements to code structure, menu layout, new commands (reset, shutdown), etc.&lt;br /&gt;
** Update: Copy function now can rename to file as well as copy to directory. This makes it simulate &amp;quot;cp&amp;quot; a bit better. - 05/27/23 7:37 AM PST&lt;br /&gt;
** Update: Fixed edit-ini bugs. - 05/27/23 2:21 PM PST&lt;br /&gt;
** Update: Fixed even more edit-ini bugs. Should be working. - 05/27/23 3:27 PM PST&lt;br /&gt;
** Update: Fixed one last edit-ini bug for handling command. Testing safer reboot method. - 05/27/23 9:40 PM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.2&#039;&#039;&#039;&lt;br /&gt;
* Folders have now been added.&lt;br /&gt;
* Future plans: cleaner UI, separation for &amp;quot;Packages&amp;quot; and &amp;quot;Commands&amp;quot; sections with titles.&lt;br /&gt;
** Update: Fixed a bug that occurred with linking folders. - 05/28/23 05:59 PM&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0.1&#039;&#039;&#039;&lt;br /&gt;
* New feature &#039;parse-ini&#039;.&lt;br /&gt;
* Update: Delete directory bug fix. - 05/28/23 8:11 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
**Update: Improved structure and examples for testing. - 05/25/23 5:52 PM PST&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/ppkantorski/Ultrahand-Overlay&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/ultrahand-overlay-the-fully-craft-able-overlay-executor.633560/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tetris_Overlay_Switch&amp;diff=205713</id>
		<title>Tetris Overlay Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tetris_Overlay_Switch&amp;diff=205713"/>
		<updated>2026-07-17T02:09:04Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.5.2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=Tetris Overlay&lt;br /&gt;
|image=TetrisOverlaySwitch.png&lt;br /&gt;
|description=A Tetris overlay for the Nintendo Switch.&lt;br /&gt;
|author=ppkantorski&lt;br /&gt;
|lastupdated=2026/07/12&lt;br /&gt;
|type=Overlays&lt;br /&gt;
|version=0.5.2&lt;br /&gt;
|license=GPL-2.0&lt;br /&gt;
|download=https://github.com/ppkantorski/Tetris-Overlay/releases&lt;br /&gt;
|website=https://gbatemp.net/threads/tetris-overlay.661021/&lt;br /&gt;
|source=https://github.com/ppkantorski/Tetris-Overlay&lt;br /&gt;
|donation=https://ko-fi.com/ppkantorski&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Overlays) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=TetrisOverlaySwitch.png&lt;br /&gt;
|image_alt=Tetris Overlay&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--TetrisOverlaySwitch.7z--&amp;gt;&lt;br /&gt;
An [[Ultrahand Overlay Switch|Ultrahand]]-enhanced Tesla overlay that brings classic Tetris gameplay to the overlay menu. This overlay allows for in-menu gameplay with dynamic UI elements, saving and loading of game state, and high score tracking.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* &#039;&#039;&#039;Ultrahand Integration:&#039;&#039;&#039; Enhanced with Ultrahand libraries for smooth and seamless gameplay with Ultrahand system settings and improved rendering.&lt;br /&gt;
* &#039;&#039;&#039;Classic Tetris Mechanics:&#039;&#039;&#039; Enjoy traditional Tetris gameplay, including line clears, level progression, and scoring.&lt;br /&gt;
* &#039;&#039;&#039;Dynamic UI:&#039;&#039;&#039; Provides a responsive interface with previews of the next and stored Tetriminos.&lt;br /&gt;
* &#039;&#039;&#039;Save and Load:&#039;&#039;&#039; Save your game progress and load previous games seamlessly.&lt;br /&gt;
* &#039;&#039;&#039;Pause and Resume:&#039;&#039;&#039; Easily pause and resume the game without losing progress.&lt;br /&gt;
* &#039;&#039;&#039;High Score Tracking:&#039;&#039;&#039; Tracks your highest score across sessions.&lt;br /&gt;
* &#039;&#039;&#039;In-Game Access:&#039;&#039;&#039; Launch the overlay directly within games using Ultrahand Overlay (or Tesla Menu).&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Ensure you have a homebrew-enabled Nintendo Switch with [https://github.com/ppkantorski/Ultrahand-Overlay Ultrahand Overlay] (or Tesla Menu) installed.&lt;br /&gt;
&lt;br /&gt;
Download the latest release of Tetris Overlay from the [https://github.com/ppkantorski/Tetris-Overlay/releases Releases].&lt;br /&gt;
&lt;br /&gt;
Copy tetris.ovl to the sdmc:/switch/.overlays/ directory on your Nintendo Switch&#039;s SD card.&lt;br /&gt;
&lt;br /&gt;
Open the [https://github.com/ppkantorski/Ultrahand-Overlay Ultrahand Overlay] (or Tesla Menu) and launch the Tetris Overlay.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
The game state is automatically saved upon pausing or exiting the overlay.&lt;br /&gt;
&lt;br /&gt;
To load a previous session, start the overlay again.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
&#039;&#039;&#039;In game:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Left/Right - Move the Tetrimino left or right&lt;br /&gt;
&lt;br /&gt;
Down - Soft drop the Tetrimino&lt;br /&gt;
&lt;br /&gt;
Up - Hard drop the Tetrimino&lt;br /&gt;
&lt;br /&gt;
A - Rotate the Tetrimino clockwise&lt;br /&gt;
&lt;br /&gt;
B - Rotate the Tetrimino counterclockwise, Exit the game on pause&lt;br /&gt;
&lt;br /&gt;
L - Swap the current Tetrimino with the stored one&lt;br /&gt;
&lt;br /&gt;
Plus - Pause or resume the game&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On game over:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A or Plus - Restart the game&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
[[image:TetrisOverlaySwitch.png|link=]]&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
HOS 16.0.0+&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;0.5.2&#039;&#039;&#039;&lt;br /&gt;
* Re-compilation with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (v2.5.2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.5.1&#039;&#039;&#039;&lt;br /&gt;
* Hold down piece dropping bug fix.&lt;br /&gt;
** In the prior version, holding down was triggering a rapid spam of subsequent piece slams.&lt;br /&gt;
* Sleep halting of the background event poller in libultrahand (to prevent all polling activity during shallow sleep).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.5.0&#039;&#039;&#039;&lt;br /&gt;
* Compilation with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (v2.4.1).&lt;br /&gt;
* Quick Update:&lt;br /&gt;
** &amp;lt;code&amp;gt;hide_widget_border&amp;lt;/code&amp;gt; variable linking bug fix. - 04/20/2026 7:56 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.9&#039;&#039;&#039;&lt;br /&gt;
* Piece drop height correction (now always aligned with its bottom most edge directly above the game board&#039;s top).&lt;br /&gt;
* Game board, pieces, and particles now respect renderer-&amp;gt;a (the opacity limiter).&lt;br /&gt;
* Feedback corrections (for latest libultrahand) , settings sound effect for pausing / unpausing, move sound effect for piece swapping.&lt;br /&gt;
* Slight code optimizations, alignment corrections, and more.&lt;br /&gt;
* Exit feedback correction in libultrahand v2.4.0 during active notifications. - 04/19/2026 12:51 AM PST&lt;br /&gt;
* Piece swapping initial height bug fix. - 04/19/2026 8:24 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.8&#039;&#039;&#039;&lt;br /&gt;
* Wall kick bug fix for L pieces.&lt;br /&gt;
* Code cleanup / optimizations.&lt;br /&gt;
* Improved notifications and feedback (from latest libultrahand).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.7&#039;&#039;&#039;&lt;br /&gt;
* Line clearing score has been repositioned for unrestricted view of the game board.&lt;br /&gt;
* Slight code cleanup.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.6&#039;&#039;&#039;&lt;br /&gt;
* Recompilation with latest libultrahand (v2.2.7).&lt;br /&gt;
* Removal of disableSound (for click sounds when tapping on the bottom menu bar).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.5&#039;&#039;&#039;&lt;br /&gt;
* Recompilation with latest libultrahand (v2.2.3).&lt;br /&gt;
* Improved piece rotation logic.&lt;br /&gt;
* Improved haptics logic.&lt;br /&gt;
* &amp;amp;quot;Game Over&amp;amp;quot; particle rain effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.4&#039;&#039;&#039;&lt;br /&gt;
* Recompilation with latest libultrahand (v2.2.1).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.3&#039;&#039;&#039;&lt;br /&gt;
* Bug fix for save data not being stored (sdmc:/config/tetris/ was not being generated on startup).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.2&#039;&#039;&#039;&lt;br /&gt;
* Improved piece rotation logic + fixes for clicks resetting the drop timer when they should not be.&lt;br /&gt;
* Updated for proper nx-ovlloader v2.0.0 support (in libultrahand).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.1&#039;&#039;&#039;&lt;br /&gt;
* Recompiled with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (v2.1.8).&lt;br /&gt;
* &amp;lt;code&amp;gt;libnx&amp;lt;/code&amp;gt; has been updated for &amp;lt;code&amp;gt;AMS 1.10+&amp;lt;/code&amp;gt; support.&lt;br /&gt;
* Haptics have now been implemented (on when enabled in the Ultrahand settings).&lt;br /&gt;
* Slight tweaks to compilation settings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.0&#039;&#039;&#039;&lt;br /&gt;
* Recompiled with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (v2.1.4).&lt;br /&gt;
** Various fixes within &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.9&#039;&#039;&#039;&lt;br /&gt;
* New notifications implementation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.8&#039;&#039;&#039;&lt;br /&gt;
* Recompiled with latest libultrahand (v2.0.1).&lt;br /&gt;
** Underscan fixes, controller input isolation and more.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.7&#039;&#039;&#039;&lt;br /&gt;
* Recompiled with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (v2.0.0).&lt;br /&gt;
** Overlay / package launching, &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; signature, etc.&lt;br /&gt;
* Bug fix for bottom menu touch regions.&lt;br /&gt;
* Variable optimizations and removal of &amp;lt;code&amp;gt;fstream&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Quick update:&lt;br /&gt;
* Save state on exit bug fix.&lt;br /&gt;
* Better input isolation for &amp;lt;code&amp;gt;KEY_L&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.6&#039;&#039;&#039;&lt;br /&gt;
* Tetris pieces are now dropped with exactly 1 block&#039;s distance into the game-board frame.&lt;br /&gt;
* Updated with latest &amp;lt;code&amp;gt;libultrahand&amp;lt;/code&amp;gt; (v1.9.10).&lt;br /&gt;
** Improved widget, slightly improved rendering, etc.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.5&#039;&#039;&#039;&lt;br /&gt;
* Various code and compiler optimizations for smoother gameplay.&lt;br /&gt;
* Updated using latest libultrahand (from Ultrahand Overlay 1.9.6 pre-release).&lt;br /&gt;
* Faster rendering than v0.3.4; true 60fps on stock clocks with wallpapers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.4&#039;&#039;&#039;&lt;br /&gt;
* Significant rendering improvements and bug fixes in libultrahand.&lt;br /&gt;
** 60fps rendering with wallpapers.&lt;br /&gt;
** Foreground bug fix (losing input isolation during title ID changes).&lt;br /&gt;
** Various code optimizations and library updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.3&#039;&#039;&#039;&lt;br /&gt;
* Bug fix for B key exiting when it should not be.&lt;br /&gt;
* Increased duration for screenshot opacity.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.2&#039;&#039;&#039;&lt;br /&gt;
*Updated for compilation with latest libultrahand (v1.8.2).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.1&#039;&#039;&#039;&lt;br /&gt;
*Updated with new libtesla and libultra from Ultrahand v1.7.8.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.0&#039;&#039;&#039;&lt;br /&gt;
* Improved texture design.&lt;br /&gt;
* Slight fixes to rotation logic.&lt;br /&gt;
Update:&lt;br /&gt;
* Slight adjustment to kick logic. - 09/26/2024 11:15 PM PST&lt;br /&gt;
* Spawn new piece centering bug fix. - 09/26/2024 11:54 PM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.9&#039;&#039;&#039;&lt;br /&gt;
* More fixes to various Tetris piece movement / rotation (as well as auto-locking).&lt;br /&gt;
** More boundary cases have been addressed.&lt;br /&gt;
** Pieces will no longer rotate indefinitely.&lt;br /&gt;
** Pressing &amp;lt;code&amp;gt;down&amp;lt;/code&amp;gt; on the floor will now trigger a hard drop.&lt;br /&gt;
* Fixes to &amp;lt;code&amp;gt;Game Over&amp;lt;/code&amp;gt; prompt delay.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.8&#039;&#039;&#039;&lt;br /&gt;
* Slight improvement to block texture design.&lt;br /&gt;
* Bug fix for combo variables not resetting upon new game.&lt;br /&gt;
* More fixes to piece rotation, kicks and placement.&lt;br /&gt;
* Various subtle UI tweaks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.7&#039;&#039;&#039;&lt;br /&gt;
* Previews for next 2 Tetris pieces have been added.&lt;br /&gt;
* Scores for each line clearing event are now rendered, along with the clearing event. (like &amp;lt;code&amp;gt;T-Spin Double&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2x Tetris&amp;lt;/code&amp;gt;, etc)&lt;br /&gt;
* New particle effect for fast dropping pieces (clicking up).&lt;br /&gt;
* Fixes to sliding pieces left / right on floor. (limit to number of floor sides possible before locking)&lt;br /&gt;
* Fixes to pieces not automatically locking when rotation is not possible (but rotation is pressed).&lt;br /&gt;
* Improvements to the new game particle burst effect.&lt;br /&gt;
* Various minor bug fixes and subtle UI tweaks and improvements.&lt;br /&gt;
Update:&lt;br /&gt;
* Fix for next 2 Tetris pieces not resetting upon new game. - 09/24/2024 12:17 AM PST&lt;br /&gt;
* Symbol indicator for pieces. - 09/24/2024 12:34 AM PST&lt;br /&gt;
* Expansion of save states to preserve back to back combo variables. - 09/24/2024 3:37 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.6&#039;&#039;&#039;&lt;br /&gt;
* More bug fixes.&lt;br /&gt;
** Fixed a bug that caused a crash when clearing lines near the top of the board.&lt;br /&gt;
** Fixed the piece lock duration / duration reset function. (so items don&#039;t just hit the floor while you are still spinning them)&lt;br /&gt;
** Various additional safety measures.&lt;br /&gt;
* Various UI improvements.&lt;br /&gt;
** Improved clear line event indicator.&lt;br /&gt;
** New game particle effect.&lt;br /&gt;
* Dynamic color logo property is now read from Ultrahand&#039;s &amp;lt;code&amp;gt;theme.ini&amp;lt;/code&amp;gt; again.&lt;br /&gt;
Update:&lt;br /&gt;
* Bug fix for line clear event indicator causing screen flicker during paused game. - 09/23/2024 3:07 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.5&#039;&#039;&#039;&lt;br /&gt;
* New line clearing particle-burst effect.&lt;br /&gt;
* New &amp;amp;quot;ghost&amp;amp;quot; piece preview for placing Tetris pieces with higher accuracy.&lt;br /&gt;
* Improved scoring and falling speed according to level.&lt;br /&gt;
* Clear event details for number of lines cleared. (like &amp;amp;quot;Single&amp;amp;quot;, &amp;amp;quot;Double&amp;amp;quot;, &amp;amp;quot;Triple&amp;amp;quot;, or &amp;amp;quot;Tetris&amp;amp;quot;)&lt;br /&gt;
* Various minor UI improvements.&lt;br /&gt;
Update:&lt;br /&gt;
* Lines cleared logging bug fix. - 09/22/2024 3:27 AM PST&lt;br /&gt;
* &amp;amp;quot;Tetris&amp;amp;quot; event text cleanup. - 09/22/2024 3:33 AM PST&lt;br /&gt;
* Slight bug fix. - 09/22/2024 4:02 AM PST&lt;br /&gt;
* Another slight bug fix. - 09/22/2024 4:43 AM PST&lt;br /&gt;
* Piece initial position bug fix. - 09/22/2024 5:00 AM PST&lt;br /&gt;
* Potential crash related bug fix. - 09/22/2024 6:40 AM PST&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.4&#039;&#039;&#039;&lt;br /&gt;
* Improved controls.&lt;br /&gt;
** Directional click and holds now functions properly.&lt;br /&gt;
* Clean-up of UI.&lt;br /&gt;
** Ultrahand widgets are now rendered.&lt;br /&gt;
** Ultrahand swipe to open and opaque screenshots settings now function properly.&lt;br /&gt;
** Cleanup of button labels and colorization of application title.&lt;br /&gt;
* Custom wallpaper override option.&lt;br /&gt;
** This is done by placing an Ultrahand &amp;lt;code&amp;gt;wallpaper.rgba&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;sdmc:/config/tetris/&amp;lt;/code&amp;gt; and requires &amp;lt;code&amp;gt;nx-ovlloader+&amp;lt;/code&amp;gt; to function.&lt;br /&gt;
* Custom theme override option.&lt;br /&gt;
** This is done by placing an Ultrahand &amp;lt;code&amp;gt;theme.ini&amp;lt;/code&amp;gt; into &amp;lt;code&amp;gt;sdmc:/config/tetris/&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Various bug fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.3&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/ppkantorski/Tetris-Overlay&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/tetris-overlay.661021/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=NX_Mod_Manager_Switch&amp;diff=205712</id>
		<title>NX Mod Manager Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=NX_Mod_Manager_Switch&amp;diff=205712"/>
		<updated>2026-07-17T02:08:59Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 3.2.9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=NX Mod Manager&lt;br /&gt;
|image=NXModManagerSwitch.png&lt;br /&gt;
|description=Nintendo Switch Mod Manager.&lt;br /&gt;
|author=TOM-BadEN&lt;br /&gt;
|lastupdated=2026/07/13&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=3.2.9&lt;br /&gt;
|license=GPL-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/NXModManagerSwitch.7z&lt;br /&gt;
|website=https://gbatemp.net/threads/nx-mod-manager-v2-0-0-a-local-mod-manager-for-the-nintendo-switch.675101/&lt;br /&gt;
|source=https://github.com/TOM-BadEN/NX-Mod-Manager&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Utilities) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=NXModManagerSwitch.png&lt;br /&gt;
|image_alt=NX Mod Manager&lt;br /&gt;
}}&lt;br /&gt;
NX Mod Manager is a mod management tool designed specifically for the Nintendo Switch platform. The current version features a complete code rewrite and underlying architecture redesign, with significant improvements in both functionality and stability. The project is fully open-source and permanently free, with no paid content of any kind. It supports online browsing and downloading of mods, and provides a complete on-device management workflow, allowing mod acquisition and management without manually handling the SD card. The development and maintenance of online mod resources relies on the participation and contribution of the community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please use at your own risk.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Game Management - Add games from installed game list or by manually entering TID; supports game removal and favorites.&lt;br /&gt;
* Mod Management - Add, install, uninstall, and remove mods; compatible with both ZIP archives and folder formats.&lt;br /&gt;
* Patch Conversion - Automatically converts pchtxt text patches to IPS patches during mod installation.&lt;br /&gt;
* Smart Detection - Automatically identifies mod files with non-standard directory structures and detects file conflicts between mods.&lt;br /&gt;
* Smart Search - Supports pinyin, polyphone, initials, fuzzy matching and other search methods, deeply adapted for Chinese users.&lt;br /&gt;
* Mod Toggle - One-click disable or restore all mods for quick game issue troubleshooting.&lt;br /&gt;
* File Transfer - Supports MTP (USB wired) and FTP (Wi-Fi wireless) for transferring mods to the console.&lt;br /&gt;
* Online Store - Built-in mod store with browsing, searching, downloading and uploading; includes like and comment features.&lt;br /&gt;
* Customization - Customize various content such as game name, mod name, description, version, author, and type.&lt;br /&gt;
* Multi-language - Simplified Chinese, Traditional Chinese, and English interfaces.&lt;br /&gt;
* Theme Switching - Light and dark themes with automatic system-following option.&lt;br /&gt;
* Auto Update - Check and download new versions within the app.&lt;br /&gt;
* Force Cleanup - Fix reference count corruption caused by abnormal interruptions.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download the [https://github.com/TOM-BadEN/NX-Mod-Manager/releases latest .nro file] and install it on your SD card.&lt;br /&gt;
&lt;br /&gt;
For detailed usage instructions, please view the basic tutorial within the app under &amp;quot;About&amp;quot; or the [https://www.bilibili.com/video/BV1zd5o6wE5B/ video tutorial].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
{| style=&amp;quot;max-width:80%; margin-left:0em;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-02.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-03.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-04.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-05.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-06.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXModManagerSwitch-07.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v3.2.9&#039;&#039;&#039;&lt;br /&gt;
* A few users may crash after auto-update finishes&lt;br /&gt;
* No need to worry, this bug was accidentally added last version, restart your device to resolve it&lt;br /&gt;
* I’ve been busy lately, so this version is mainly for bug fixes&lt;br /&gt;
* The next version will add more support, including Don&#039;t Starve, RAR and 7z&lt;br /&gt;
* The program will force you to update if a new version is detected on startup&lt;br /&gt;
* Because many users using old versions reported to me that they couldn&#039;t find features that belong to the new version&lt;br /&gt;
* Redesigned layouts for long-text popups, more intuitive and neat&lt;br /&gt;
* Fixed auto game version update failure on firmware 21-22&lt;br /&gt;
* Fixed crashes caused by continuous popups in extreme cases&lt;br /&gt;
* Fixed store mod detail page navigation logic inconsistent with intuition&lt;br /&gt;
* Fixed missing sound when clicking buttons on the second screenshot of mod detail page&lt;br /&gt;
* Fixed progress bar briefly showing 100% during auto-update&lt;br /&gt;
* Fixed screen flicker when switching tabs on plugin page&lt;br /&gt;
* Fixed upload failure when upload page uses non-Chinese language&lt;br /&gt;
* Surprisingly, no users reported this bug&lt;br /&gt;
* Non-Simplified Chinese users shouldn’t upload on Simplified Chinese page, which breaks auto-translation&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.2.8&#039;&#039;&#039;&lt;br /&gt;
* Optimized serial number adaptation mechanism for Monster Hunter Rise mod files&lt;br /&gt;
* A bubble notification will pop up in the upper right corner when a new version is detected&lt;br /&gt;
* Game icons on the store page are cached locally to greatly improve loading speed&lt;br /&gt;
* Significantly boosted icon loading speed after searching and filtering on the store page&lt;br /&gt;
* Reorganized and categorized the function settings menu on the homepage&lt;br /&gt;
* Added an icon repair function in the function settings menu&lt;br /&gt;
* Added CPU acceleration function in the function settings menu (recommended to enable)&lt;br /&gt;
* Added a button on the store page to view the web address of uploaded mods&lt;br /&gt;
* Added author link viewing feature on the store mod detail page&lt;br /&gt;
* Fixed the issue where non-standard aspect ratio images would have stretched edges in the image viewer on the store mod detail page&lt;br /&gt;
* Fixed the problem that overly long comments cannot wrap lines correctly on the message board&lt;br /&gt;
* Adjusted partial UI texts&lt;br /&gt;
* Optimized other task workflows&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.2.7&#039;&#039;&#039;&lt;br /&gt;
* Self-update from v3.1.7 may crash. Restart to recover&lt;br /&gt;
* Added mod support for Asian and European versions of Monster Hunter Rise&lt;br /&gt;
* Supports mod install and uninstall for versions v3.4.1-v16.0.2&lt;br /&gt;
* The manager automatically corrects special mod file numbering for this game&lt;br /&gt;
* Because this game&#039;s rules are complex, please follow these rules:&lt;br /&gt;
* Clear existing Monster Hunter Rise mods from the SD card before using the manager&lt;br /&gt;
* Do not manually modify this game&#039;s mod files or use third-party tools while using the manager&lt;br /&gt;
* If an issue occurs, use Force Clean to remove all mod files for this game from the SD card&lt;br /&gt;
* Download limit messages now show the specific rules&lt;br /&gt;
* Comment nickname settings moved to the home page Settings menu&lt;br /&gt;
* A quick setup window appears when commenting in the store page without a nickname&lt;br /&gt;
* Uninstalling now always removes &amp;lt;code&amp;gt;romfs_metadata.bin&amp;lt;/code&amp;gt;&lt;br /&gt;
* Mod installation now filters out files and folders starting with &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;&lt;br /&gt;
* After searching in the store page, the B button now resets the search&lt;br /&gt;
* Fixed abnormal CPU usage caused by memory monitoring&lt;br /&gt;
* Fixed possible home page card display issues after adding a game&lt;br /&gt;
&#039;&#039;&#039;v3.1.7&#039;&#039;&#039;&lt;br /&gt;
* Emergency update to fix a bug. Monster Hunter mod support has been postponed to the next release&lt;br /&gt;
* Fixed an issue introduced in v3.1.6 that could cause the FTP server to hang during startup&lt;br /&gt;
* Anonymous users on the message board will now see their display name correctly localized based on the selected language&lt;br /&gt;
* Timestamps in update logs are now automatically converted to the local time zone&lt;br /&gt;
&#039;&#039;&#039;v3.1.6&#039;&#039;&#039;&lt;br /&gt;
* Preview: the next version will add support for Monster Hunter mods&lt;br /&gt;
* Fixed the issue where store icon loading and mod downloads became extremely slow during evening hours due to server bandwidth throttling by the service provider&lt;br /&gt;
* Thanks to @[https://github.com/huangsam04 huangsam04] for generously providing a mirror server for file acceleration&lt;br /&gt;
* Added a Y button on the store mod details page to view the mod update history&lt;br /&gt;
* The local mod details page now automatically checks whether downloaded mods have available updates&lt;br /&gt;
* When a mod file on the cloud is updated, it can now be directly updated and downloaded from the store mod details page to replace the original mod&lt;br /&gt;
* Improved mod download speed, but considering server pressure, the limit has only been raised and not completely removed&lt;br /&gt;
* Reused TCP connections to improve icon loading speed on the store game list page&lt;br /&gt;
* romts_metadata.bin is now forcibly deleted when uninstalling a mod&lt;br /&gt;
* Fixed an issue that occasionally caused the page title bar to flicker&lt;br /&gt;
* Fixed a memory leak in the store&lt;br /&gt;
* Fixed an issue where full Pinyin search could not be used in the store search function&lt;br /&gt;
&#039;&#039;&#039;v3.1.5&#039;&#039;&#039;&lt;br /&gt;
* Fixed an issue where the game version displayed in the store would not update correctly after the installed game version on the console changed&lt;br /&gt;
* Fixed an issue where local data for downloaded mods could be lost after entering the store from the mod list page (causing mod icons to appear as question marks)&lt;br /&gt;
* Improved the store&#039;s detection mechanism for downloaded mods (please do not manually delete mod files inside the SD card&#039;s mods2 directory, as doing so will still prevent the mod from being downloaded again)&lt;br /&gt;
* Fixed an issue where the focus box would briefly flicker after returning to the home page from the mod list page after adding a new mod&lt;br /&gt;
* Improved the automatic cleanup process triggered when mod installation fails, including a new warning sound effect and a red progress bar during the cleanup phase&lt;br /&gt;
* Updated the download rate limit message to: “Server resources are limited. Downloads are restricted to once every 30 seconds. Thank you for your understanding.”&lt;br /&gt;
* Minor adjustments to various UI details and text presentation&lt;br /&gt;
 &#039;&#039;&#039;v3.1.4&#039;&#039;&#039;&lt;br /&gt;
* Fixed several missing English text entries&lt;br /&gt;
* Sorry, I’ve been too busy and forgot to test the multilingual support in the previous version.&lt;br /&gt;
&#039;&#039;&#039;v3.1.3&#039;&#039;&#039;&lt;br /&gt;
* Fixed compatibility issues with certain 19.x firmware versions, such as 19.0.1&lt;br /&gt;
* Fixed an issue where the interface would not refresh immediately after closing the mod install/uninstall completion popup with the B button&lt;br /&gt;
* Fixed freezes and crashes caused by focus issues when opening the menu during page transitions&lt;br /&gt;
&#039;&#039;&#039;v3.1.2&#039;&#039;&#039;&lt;br /&gt;
* Redesigned the Home, Store, and Local Add pages from a 9-grid layout to a large card layout for a more modern UI&lt;br /&gt;
* Added page transition animations to improve visual distinction when switching between certain pages&lt;br /&gt;
* Home, Store, and Local pages can now be quickly switched using trigger buttons&lt;br /&gt;
* Added skeleton screen loading effect to the Store game list page&lt;br /&gt;
* Added &amp;amp;quot;Return to Home&amp;amp;quot; and &amp;amp;quot;Mod List&amp;amp;quot; buttons to the post-download dialog in the Store&lt;br /&gt;
* Added &amp;amp;quot;Return to Home&amp;amp;quot; button to the completion dialog in Local Add&lt;br /&gt;
* The top title on the Mod List and Store pages now displays the game version number for locally installed games&lt;br /&gt;
* Adjusted the long-press dialog text on first launch of the Home page for better guidance&lt;br /&gt;
* The Store button on the Home page has been merged into the X menu&lt;br /&gt;
* The Favorites menu option on the Home page is now triggered directly via the + button&lt;br /&gt;
* Added &amp;amp;quot;Sort by Count&amp;amp;quot; and &amp;amp;quot;Sort by Recent&amp;amp;quot; options to the Home page X menu&lt;br /&gt;
* Added a toggle to disable button sound effects in the Home page settings menu&lt;br /&gt;
* Significantly adjusted text and function option positions in the Home page X menu to improve interaction and guidance&lt;br /&gt;
* Added a long-press dialog on first entry to the Mod List page for better guidance&lt;br /&gt;
* Removed the + Store button from the Mod List page; it has been merged into the X menu&lt;br /&gt;
* Significantly adjusted text and function option positions in the Mod List page X menu to improve interaction and guidance&lt;br /&gt;
* The Mod List page now allows deletion of the last remaining mod&lt;br /&gt;
* Added quick access to the Store page and Local Add menu via trigger buttons on the Mod List page&lt;br /&gt;
* Added a long-press dialog on first entry to the Local Add page for better guidance&lt;br /&gt;
* The game list on the Local Add page is now sorted exclusively by recently played order&lt;br /&gt;
* The tutorial QR code on the About/Plugins page is now scannable&lt;br /&gt;
* Completely rebuilt asynchronous threading to enhance stability and improve page transition smoothness&lt;br /&gt;
* Fixed a crash caused by entering non-English characters via the native keyboard when using a custom keyboard&lt;br /&gt;
* Fixed a crash caused by games using the new NACP format (e.g., The Legend of Zelda: Breath of the Wild version 1.9.0)&lt;br /&gt;
&#039;&#039;&#039;v3.0.2&#039;&#039;&#039;&lt;br /&gt;
* Fixed an issue where the focus behaved incorrectly when removing the last game&lt;br /&gt;
* Fixed an issue where the homepage would not display games after adding mods via network or locally on first use of the project&lt;br /&gt;
* Reduced the number of times the SD card game directory name uses the TID when automatically adding games (thanks to [https://github.com/WE1ZARD @WE1ZARD] for the cleaning algorithm)&lt;br /&gt;
* Added a &amp;amp;quot;Reset Status&amp;amp;quot; feature, located at Home → Menu → Manage Games → Reset Status. This allows users to clear all internally saved project state data, such as mod installation status and conflict records, after reinstalling the Atmosphère modpack using a delete-and-reinstall method&lt;br /&gt;
&#039;&#039;&#039;v3.0.1&#039;&#039;&#039;&lt;br /&gt;
* Fixed the issue where using the Disable Mod, Restore Mod, or Force Clean functions failed to correctly handle IPS (exefs_patches) files&lt;br /&gt;
&#039;&#039;&#039;v3.0.0&#039;&#039;&#039;&lt;br /&gt;
*Although this is a subsequent version, it is a major overhaul: the entire project has been rewritten, and the architecture has been redesigned. It is incompatible with the old version of the manager. Users of the old version must first use the old manager to uninstall all installed mods before installing the new version.&lt;br /&gt;
*Completely new UI design, improved quality.&lt;br /&gt;
*Redesigned various interactions, enhanced user experience.&lt;br /&gt;
*Added online mod download feature, covering 200+ games and 380 mods in total, including hundreds of exclusive mods. Thanks to Qingfeng Mingyue for the free contribution.&lt;br /&gt;
*Two theme color schemes available, freely switchable.&lt;br /&gt;
*Mod store content supports Simplified Chinese, Traditional Chinese, and English, and automatically adapts to the user&#039;s system language.&lt;br /&gt;
*Mod store content supports fuzzy search by Pinyin, initials, or English.&lt;br /&gt;
*Supports &amp;lt;code&amp;gt;pchtxt&amp;lt;/code&amp;gt; files, which are automatically converted to IPS files during installation.&lt;br /&gt;
*Adopts a new custom keyboard in multiple places, improving aesthetics and smoothness.&lt;br /&gt;
*Full touch support, can be used entirely without a controller.&lt;br /&gt;
*Supports self-updating plugins, no need to monitor release pages.&lt;br /&gt;
*Game names customizable, can be fetched from the server database, supporting Simplified Chinese, Traditional Chinese, and English.&lt;br /&gt;
*Plugin text itself supports multiple languages; currently only Simplified Chinese, Traditional Chinese, and English. If you wish to add new languages, please do not submit a PR directly, as this is a release repository, not the native repository. Contact the author through the proper channels.&lt;br /&gt;
*Added one-click disable all mods function, convenient for quick debugging.&lt;br /&gt;
*Added forced clean-up feature (see in-plugin instructions for details).&lt;br /&gt;
*Optimized multi-mod file conflict detection and resolution.&lt;br /&gt;
*Added intelligent mod file path recognition, no longer need to fully follow the old mod file structure.&lt;br /&gt;
*Added FTP feature, supporting mod file transfer to a relay station via FTP.&lt;br /&gt;
*Rewritten MTP feature for more stable transfer (however, folder-based mods may still cause MTP freezing; in such cases, it is recommended to package as ZIP or use FTP).&lt;br /&gt;
&#039;&#039;&#039;v2.2.7&#039;&#039;&#039;&lt;br /&gt;
*Recompiled with the latest libnx, supporting AMS 1.10 and HOS 21.&lt;br /&gt;
*Fixed the issue where zip files with additional &amp;quot;.&amp;quot; in the filename could not be recognized.&lt;br /&gt;
&#039;&#039;&#039;v2.2.6&#039;&#039;&#039;&lt;br /&gt;
*Optimized conflict detection logic, now allowing multiple mods to share common files.&lt;br /&gt;
*Removed the feature to cancel mod uninstallation by pressing B.&lt;br /&gt;
*Fixed a critical bug in file-type mod installation.&lt;br /&gt;
&#039;&#039;&#039;v2.2.5&#039;&#039;&#039;&lt;br /&gt;
*Added Bilibili video tutorial and GitHub QR code images to the guide.&lt;br /&gt;
*Adjusted some details.&lt;br /&gt;
&#039;&#039;&#039;v2.2.4&#039;&#039;&#039;&lt;br /&gt;
*Fixed an issue where MTP transfers of large files could occasionally freeze (thanks to TotalJustice&#039;s libhaze fix).&lt;br /&gt;
*Added conflict detection when installing MODs: if the target path contains the same file, the system will compare and identify conflicting MODs.&lt;br /&gt;
*Added automatic cleanup of installed files when installation is interrupted by pressing B.&lt;br /&gt;
*Added automatic cleanup of installed files if installation fails due to an error.&lt;br /&gt;
*Adjusted the text position in confirmation dialogs: previously centered, now centered horizontally but left-aligned.&lt;br /&gt;
*Changed the Y button label from &amp;quot;Uninstall&amp;quot; to &amp;quot;Force Clean&amp;quot;.&lt;br /&gt;
*Added confirmation dialog text for Force Clean.&lt;br /&gt;
*Added dynamic timer display in the console during MTP transfers.&lt;br /&gt;
*Fixed an error in MOD list sorting.&lt;br /&gt;
&#039;&#039;&#039;v2.1.4&#039;&#039;&#039;&lt;br /&gt;
*Added transfer speed information to the MTP transfer interface&lt;br /&gt;
*Slightly improved MTP stability for LITE models&lt;br /&gt;
*Completed the missing text in languages other than Simplified Chinese&lt;br /&gt;
&#039;&#039;&#039;v2.1.3&#039;&#039;&#039;&lt;br /&gt;
*Home Screen&lt;br /&gt;
**Added favorite marking feature&lt;br /&gt;
**Added search function, supporting touch, pinyin, fuzzy, initials, and full spelling search&lt;br /&gt;
**Added MTP transfer option in the menu (experimental; known issue: on LITE, uploading files larger than 1.5 GB will freeze)&lt;br /&gt;
**Added Remove Game option in the menu; removed mods will be moved to the addmod folder&lt;br /&gt;
**Added View Location option in the menu&lt;br /&gt;
**Added pre-sorting: games are displayed in A–Z order when opening the plugin&lt;br /&gt;
*Add Game Screen&lt;br /&gt;
**Added search function&lt;br /&gt;
**Added a reminder when installing mods if the version does not match&lt;br /&gt;
*Mod Screen&lt;br /&gt;
**Added Remove Mod option in the menu&lt;br /&gt;
**Added View Location option in the menu&lt;br /&gt;
*Others&lt;br /&gt;
**Simplified version comparison rules: now only compares the numeric part&lt;br /&gt;
**Added repeat input for Up/Down keys when held&lt;br /&gt;
**Adjusted the add function: it can only be used after the home scan finishes, to avoid blocking&lt;br /&gt;
**Removed the mod count display at the bottom left of the add-mod list, since long text in other languages caused overlap&lt;br /&gt;
**Adjusted some details to improve user experience (forgot the exact changes)&lt;br /&gt;
*Bug Fixes&lt;br /&gt;
**Fixed an exception where modifying the version number did not update the corresponding JSON file&lt;br /&gt;
**Fixed an issue where some game icons failed to load&lt;br /&gt;
**Fixed an issue where folders containing a dot were misidentified as files&lt;br /&gt;
**Fixed an exception with down-key navigation in the 3×3 grid under special conditions&lt;br /&gt;
**Fixed some minor bugs that didn&#039;t affect usage (details forgotten)&lt;br /&gt;
&#039;&#039;&#039;v2.0.3&#039;&#039;&#039;&lt;br /&gt;
*Fixed an issue where the scanned game version on the Switch remained outdated after the game version changed.&lt;br /&gt;
&#039;&#039;&#039;v2.0.2&#039;&#039;&#039;&lt;br /&gt;
*Fixed a bug that caused the program to crash when adding mods.&lt;br /&gt;
&#039;&#039;&#039;v2.0.1&#039;&#039;&#039;&lt;br /&gt;
*Fix the issue where the text on the virtual keyboard is invisible when the Switch theme is set to the light theme.&lt;br /&gt;
*Newly added games will now appear at the top of the page, eliminating the need to search for them.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0&#039;&#039;&#039;&lt;br /&gt;
*Main Interface&lt;br /&gt;
**The vertical list interface has been rebuilt into a grid interface, allowing more content to be displayed at once.&lt;br /&gt;
**Added menu functionality for the X button.&lt;br /&gt;
**Supports custom game names and mod version editing (display purposes only).&lt;br /&gt;
**Added the ability to add games directly from installed games into the mod manager, avoiding the need for complex manual configuration.&lt;br /&gt;
*Installed Games Interface&lt;br /&gt;
**A new interface has been added to support the &amp;quot;Add Game&amp;quot; function from the main interface.&lt;br /&gt;
*MOD Interface&lt;br /&gt;
**Added menu functionality for the X button.&lt;br /&gt;
**Supports custom mod names, mod type modification, and adding mod descriptions.&lt;br /&gt;
**Supports appending mods freely, with mod files placed in /mods2/0000-add-mod-0000.&lt;br /&gt;
*Tutorial Interface&lt;br /&gt;
**The tutorial interface has been rebuilt. Previously, it was all text-heavy and hard to follow; now it is image-based.&lt;br /&gt;
*Others&lt;br /&gt;
**Added pinyin sorting, allowing Chinese game names to be sorted alphabetically.&lt;br /&gt;
**Fixed a bug that could cause installed mods to fail.&lt;br /&gt;
**Fixed several minor bugs that did not affect functionality.&lt;br /&gt;
&#039;&#039;&#039;v1.3.0&#039;&#039;&#039;&lt;br /&gt;
*Significantly improved ZIP MOD uninstallation speed&lt;br /&gt;
**Linkoer can now be uninstalled within 20 seconds.&lt;br /&gt;
**Princess Flower uninstallation improved from 3 minutes 30 seconds to 1 minute 30 seconds.&lt;br /&gt;
*Significantly improved installation speed for file-based MODs&lt;br /&gt;
**Linkoer installation improved from 1 minute 40–50 seconds to 1 minute–1 minute 20 seconds.&lt;br /&gt;
**Princess Flower installation previously unmeasured, now takes 7 minutes 10 seconds; using ZIP-based MOD installation is recommended.&lt;br /&gt;
*Significantly improved installation speed for ZIP-based MODs&lt;br /&gt;
**Linkoer installation improved from 1 minute 5–20 seconds to a more stable time, close to 1 minute 5 seconds.&lt;br /&gt;
**Princess Flower installation improved from 6 minutes 13 seconds to 4 minutes 50 seconds–5 minutes 10 seconds.&lt;br /&gt;
*Adjusted the file count background layer in the progress dialog to ensure it is not obscured by file names.&lt;br /&gt;
*Fixed a minor bug that does not affect usage.&lt;br /&gt;
&#039;&#039;&#039;v1.2.0&#039;&#039;&#039;&lt;br /&gt;
*Added support for installing MODs in ZIP format, primarily targeting large MODs, significantly improving installation speed.&lt;br /&gt;
*Refactored the installation and uninstallation code.&lt;br /&gt;
*For example, the Lin Ke&#039;er MOD consists of 2,732 files totaling 500 MB.&lt;br /&gt;
*Slightly improved file-based installation speed, reducing the time from 1:50–2:00 to 1:40–1:55.&lt;br /&gt;
*Slightly improved uninstallation speed, now completing in most cases within 20 seconds (previously around 20 seconds).&lt;br /&gt;
*Greatly improved installation speed for ZIP-based MODs. When the Lin Ke&#039;er MOD was packaged as a ZIP, installation time decreased from 1:40–1:55 to 1:05–1:20.&lt;br /&gt;
*The larger the MOD, the greater the relative performance improvement. For details on configuring ZIP installation, see the provided template or README.&lt;br /&gt;
&#039;&#039;&#039;v1.1.0&#039;&#039;&#039;&lt;br /&gt;
*Modified the bottom-left text in the game and mod interface from &amp;quot;Total&amp;quot; to &amp;quot;Current Index / Total&amp;quot;.&lt;br /&gt;
*Fixed two minor bugs that did not affect usability.&lt;br /&gt;
*Added a per-file copy progress bar in the installation dialog, which only appears for large files.&lt;br /&gt;
*Significantly improved mod uninstallation speed. For example, uninstalling the &amp;quot;Lin Ke&#039;er MOD&amp;quot; is reduced from over 1 minute 30 seconds to about 20 seconds.&lt;br /&gt;
*Slightly improved mod installation speed. For example, installing the &amp;quot;Lin Ke&#039;er MOD&amp;quot; is reduced from 2:00–2:10 to 1:50–2:00.&lt;br /&gt;
*The &amp;quot;Lin Ke&#039;er MOD&amp;quot; contains a total of 2732 files.&lt;br /&gt;
*Added timing display for installation and uninstallation completion. If under 1 second, it will display as 0.1s.&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== Credits &amp;amp;amp; Libraries ==&lt;br /&gt;
Thanks to the following open-source projects:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Project&lt;br /&gt;
! Description&lt;br /&gt;
! Author&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/xfangfang/borealis borealis]&lt;br /&gt;
| UI Framework&lt;br /&gt;
| [https://github.com/xfangfang xfangfang], [https://github.com/natinusala natinusala]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/Atmosphere-NX/Atmosphere/tree/master/troposphere/haze libhaze]&lt;br /&gt;
| MTP&lt;br /&gt;
| [https://github.com/ITotalJustice ITotalJustice]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ITotalJustice/ftpsrv ftpsrv]&lt;br /&gt;
| FTP&lt;br /&gt;
| [https://github.com/ITotalJustice ITotalJustice]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/ibireme/yyjson yyjson]&lt;br /&gt;
| High-performance JSON parsing&lt;br /&gt;
| [https://github.com/ibireme ibireme]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/wolfgitpr/cpp-pinyin cpp-pinyin]&lt;br /&gt;
| Pinyin search&lt;br /&gt;
| [https://github.com/wolfgitpr wolfgitpr]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sammycage/lunasvg lunasvg]&lt;br /&gt;
| SVG rendering&lt;br /&gt;
| [https://github.com/sammycage sammycage]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/nayuki/QR-Code-generator QR-Code-generator]&lt;br /&gt;
| QR code generation&lt;br /&gt;
| [https://github.com/nayuki nayuki]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/richgel999/miniz miniz]&lt;br /&gt;
| ZIP compression &amp;amp;amp; decompression&lt;br /&gt;
| [https://github.com/richgel999 richgel999]&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/DarkMatterCore/libnxtc libnxtc]&lt;br /&gt;
| Game info caching&lt;br /&gt;
| [https://github.com/DarkMatterCore DarkMatterCore]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== External links == &lt;br /&gt;
* GitHub - https://github.com/TOM-BadEN/NX-Mod-Manager&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/nx-mod-manager-v2-0-0-a-local-mod-manager-for-the-nintendo-switch.675101/&lt;br /&gt;
* Homebrew App Store - https://hb-app.store/switch/NXModManager&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=TKMM-NX_Switch&amp;diff=205711</id>
		<title>TKMM-NX Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=TKMM-NX_Switch&amp;diff=205711"/>
		<updated>2026-07-17T02:08:56Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 2.1.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=TKMM-NX&lt;br /&gt;
|image=TKMMNXSwitch.png&lt;br /&gt;
|description=Lightweight OS for the Nintendo Switch.&lt;br /&gt;
|author=TKMM-Team&lt;br /&gt;
|lastupdated=2026/07/16&lt;br /&gt;
|type=Operating Systems&lt;br /&gt;
|version=2.1.6&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://tkmm.org/downloads/index.html?tabs=switch&lt;br /&gt;
|website=https://tkmm.org/index.html&lt;br /&gt;
|source=https://github.com/TKMM-Team/TKMM-NX&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Operating Systems) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=TKMMNXSwitch.png&lt;br /&gt;
|image_alt=TKMM-NX&lt;br /&gt;
}}&amp;lt;!--TKMMNXSwitch.7z--&amp;gt;&lt;br /&gt;
​TKMM-NX is a mod manager for Tears of the Kingdom (TKMM) that runs directly on the Nintendo Switch. &lt;br /&gt;
&lt;br /&gt;
Developed by the TKMM Team, ​TKMM-NX is a Linux-based operating system built upon [https://github.com/libretro/Lakka-LibreELEC Lakka (a lightweight Linux distribution focused on emulation)].&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Download the OS Image from [https://github.com/TKMM-Team/TKMM-NX/releases Releases].&lt;br /&gt;
&lt;br /&gt;
Copy the tkmm and bootloader folders to the root directory of the SD card.&lt;br /&gt;
&lt;br /&gt;
Boot into RCM (Recovery Mode) on the Nintendo Switch.&lt;br /&gt;
&lt;br /&gt;
Inject the Hekate payload using a compatible method.&lt;br /&gt;
&lt;br /&gt;
In the Hekate menu, navigate to &amp;amp;quot;More Configs&amp;amp;quot; and select &amp;amp;quot;TKMM&amp;amp;quot; to boot into the TKMM-NX environment.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Updating:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
TKMM should prompt you when it detects an update (if connected to wifi), when selecting &amp;quot;Yes&amp;quot; on the update prompt, the update will be downloaded and your Switch will reboot to the new version.&lt;br /&gt;
&lt;br /&gt;
If you ever need to update manually, download the latest [https://github.com/TKMM-Team/TKMM-NX/releases/latest/download/update.tar update tarball] and place it under &amp;quot;tkmm/storage/.update/&amp;quot; on your micro SD card. The next time you boot to TKMM-NX, the update will be installed.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-03.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-04.png&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v2.1.6&#039;&#039;&#039;&lt;br /&gt;
* Update readme + Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.4&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.3&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.2&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.1&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.0&#039;&#039;&#039;&lt;br /&gt;
* Change OS versioning scheme.&lt;br /&gt;
&#039;&#039;&#039;v2.0.3&#039;&#039;&#039;&lt;br /&gt;
* dotnet-runtime: Updated to 10.0.9&lt;br /&gt;
* dotnet-sdk: Updated to 10.0.301&lt;br /&gt;
&#039;&#039;&#039;v2.0.2&#039;&#039;&#039;&lt;br /&gt;
* Adjust workflow.&lt;br /&gt;
&#039;&#039;&#039;v2.0.1&#039;&#039;&#039;&lt;br /&gt;
* Revert &amp;quot;Temp fix for dotnet runtime&amp;quot;.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0-rev-nx1&#039;&#039;&#039;&lt;br /&gt;
* Temp fix for dotnet runtime.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0&#039;&#039;&#039;&lt;br /&gt;
* Merge remote-tracking branch &#039;origin/main&#039; into upfs-support.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0-beta3&#039;&#039;&#039;&lt;br /&gt;
*Enabled eMMC in boot script.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0-beta2&#039;&#039;&#039;&lt;br /&gt;
* Update game dump error messages.&lt;br /&gt;
* Disable optimizer by default.&lt;br /&gt;
* Use direct index merging for game__component__ConditionParam (*).&lt;br /&gt;
* Delete UltraCam config when optimizer is disabled.&lt;br /&gt;
* Bind the home button to reboot popup.&lt;br /&gt;
* Remove manual setup from NX setup wizard.&lt;br /&gt;
* Fix auto-updater checksum parser.&lt;br /&gt;
* Fix process name resolver.&lt;br /&gt;
* Fix BYML change tracking mergeable addition resolver.&lt;br /&gt;
&lt;br /&gt;
(* Requires changelog rebuild)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
The Team:&lt;br /&gt;
* [https://github.com/ArchLeaders Arch Leaders]: Lead TKMM Developer&lt;br /&gt;
* [https://github.com/LordBubblesDev Lord Bubbles]: TKMM-NX Developer &amp;amp; Maintainer&lt;br /&gt;
* [https://github.com/AsteroidPizza39 Aster]: Co-Founder, Artist, &amp;amp;amp; Operations Manager&lt;br /&gt;
* [https://github.com/The5thTear The5thTear]: Co-Founder &amp;amp;amp; Developer&lt;br /&gt;
* [https://github.com/okmika Mikachan]: Developer&lt;br /&gt;
&lt;br /&gt;
Special Thanks:&lt;br /&gt;
* The [https://switchroot.org/ Switchroot] community for pioneering open-source development on the Nintendo Switch.&lt;br /&gt;
* The [https://www.lakka.tv/ Lakka] team, for its work that allowed us to create a custom OS for TKMM on Switch.&lt;br /&gt;
* The [https://libreelec.tv/ LibreELEC] team for creating the Linux distribution upon which all of this is built.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official Website - https://tkmm.org/index.html&lt;br /&gt;
* GitHub - https://github.com/TKMM-Team/TKMM-NX&lt;br /&gt;
* Homebrew App Store - https://hb-app.store/switch/TKMM-NX&lt;br /&gt;
* GameBanana - https://gamebanana.com/tools/19164&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=NXShare_Switch&amp;diff=205710</id>
		<title>NXShare Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=NXShare_Switch&amp;diff=205710"/>
		<updated>2026-07-17T02:08:52Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.8.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=NXShare&lt;br /&gt;
|image=NXShareSwitch.png&lt;br /&gt;
|description=A Nintendo Switch homebrew app to access the album folder via a web browser on PC or phone.&lt;br /&gt;
|author=musebrot1&lt;br /&gt;
|lastupdated=2026/07/14&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=1.8.3&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/NXShareSwitch.7z&lt;br /&gt;
|website=https://github.com/musebrot1/NXShare&lt;br /&gt;
|source=https://github.com/musebrot1/NXShare&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Utilities) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=NXShareSwitch.png&lt;br /&gt;
|image_alt=NXShare&lt;br /&gt;
}}&lt;br /&gt;
NXShare is a Nintendo Switch homebrew app to transfer screenshots and videos to any device via browser.&lt;br /&gt;
&lt;br /&gt;
NXShare starts a small web server on your Switch. Open the displayed URL in any browser on a PC, phone or tablet (same WiFi required), and you get a clean gallery view of all your screenshots and videos - with thumbnails, filters and multi-select download.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Browse and view all screenshots and videos.&lt;br /&gt;
* Filter by screenshots/videos or by game.&lt;br /&gt;
* Download individual files or select multiple files at once.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download the latest &amp;lt;code&amp;gt;NXShare.nro&amp;lt;/code&amp;gt; from the Releases page and copy it to the &amp;lt;code&amp;gt;switch/&amp;lt;/code&amp;gt; folder on your SD card.&lt;br /&gt;
&lt;br /&gt;
NXShare is also available in the [[Homebrew App Store Switch|Homebrew App Store]].&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Make sure your Switch is connected to WiFi.&lt;br /&gt;
&lt;br /&gt;
Launch NXShare from the Homebrew Launcher in Applet Mode.&lt;br /&gt;
&lt;br /&gt;
The screen shows a URL/QR code.&lt;br /&gt;
&lt;br /&gt;
Open the URL in any browser on the same network, or scan the QR code.&lt;br /&gt;
&lt;br /&gt;
Browse, preview and download your media.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
{| style=&amp;quot;&amp;quot;max-width:80%; margin-left:0em;&amp;quot;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXShareSwitch-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXShareSwitch-02.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXShareSwitch-03.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/NXShareSwitch-04.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
* Atmosphère - Tested 1.9.3 and 1.11.1&lt;br /&gt;
* Firmware - Tested 20.3.0 and 22.0.0&lt;br /&gt;
* Storage - SysMMC and emuMMC (auto-detected)&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;1.8.3&#039;&#039;&#039;&lt;br /&gt;
* New icon.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.8.2&#039;&#039;&#039;&lt;br /&gt;
* Fixed server recovery after sleep and network loss&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.8.1&#039;&#039;&#039;&lt;br /&gt;
* Web UI layout adjustments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.8.0&#039;&#039;&#039;&lt;br /&gt;
* added Date filter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.6&#039;&#039;&#039;&lt;br /&gt;
* fixed JSON escaping for control characters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.5&#039;&#039;&#039;&lt;br /&gt;
* fixed media sorting issue.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.4&#039;&#039;&#039;&lt;br /&gt;
* more fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.3&#039;&#039;&#039;&lt;br /&gt;
* fixed how png files are getting saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.2&#039;&#039;&#039;&lt;br /&gt;
* more fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.1&#039;&#039;&#039;&lt;br /&gt;
* some fixes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.7.0&#039;&#039;&#039;&lt;br /&gt;
* in full size view there are now left/right buttons to jump to the previous/next file.&lt;br /&gt;
* now also reads PNG files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.6.0&#039;&#039;&#039;&lt;br /&gt;
* added games filter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.5.0&#039;&#039;&#039;&lt;br /&gt;
* some fixes.&lt;br /&gt;
* new UI.&lt;br /&gt;
* now shows app icon in browser tab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.4.0&#039;&#039;&#039;&lt;br /&gt;
* URL now shows as QR code too.&lt;br /&gt;
* some layout adjustments for both desktop and mobile browsers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.3.1&#039;&#039;&#039;&lt;br /&gt;
* some minor fixes and layout changes.&lt;br /&gt;
* exit the app with [+].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.3.0&#039;&#039;&#039;&lt;br /&gt;
* Nintendo Switch Homebrew app to transfer screenshots and videos via browser&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* [https://github.com/switchbrew/libnx libnx] by switchbrew - Nintendo Switch homebrew library, licensed under the ISC License.&lt;br /&gt;
* [https://devkitpro.org devkitPro] - ARM toolchain and build system.&lt;br /&gt;
* [https://github.com/iUltimateLP/NXGallery NXGallery] by iUltimateLP - inspiration for capsa API usage.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/musebrot1/NXShare&lt;br /&gt;
* Homebrew App Store - https://hb-app.store/switch/NXShare&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Tico_Switch&amp;diff=205709</id>
		<title>Tico Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Tico_Switch&amp;diff=205709"/>
		<updated>2026-07-17T02:08:48Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.7.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=tico&lt;br /&gt;
|image=ticoSwitch.png&lt;br /&gt;
|description=The first custom emulation frontend for Nintendo Switch.&lt;br /&gt;
|author=dantiicu&lt;br /&gt;
|lastupdated=2026/17/16&lt;br /&gt;
|type=Other Emulators&lt;br /&gt;
|version=0.7.5&lt;br /&gt;
|license=[https://github.com/ticohq/tico/blob/main/LICENSE.md tiicu]&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/ticoSwitch.7z&lt;br /&gt;
|website=https://ticoverse.com/&lt;br /&gt;
|source=https://github.com/ticohq/tico&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Emulators (Other Emulators) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=ticoSwitch.png&lt;br /&gt;
|image_alt=tico&lt;br /&gt;
}}&lt;br /&gt;
tico is the first custom emulation frontend for Nintendo Switch, a controller-first, native C++ interface designed for performance, simplicity, and long-term portability.&lt;br /&gt;
&lt;br /&gt;
tico is a game launcher that supports libretro cores and custom emulators. It organizes your games automatically, manages assets, and launches everything from one place. No file browsers, no fragmented tools, no config menus. Just pick a game and play.&lt;br /&gt;
&lt;br /&gt;
tico does not include ROMs, BIOS files, system firmware, DRM circumvention tools, or emulator cores. Users are responsible for legal ownership of their games and compliance with local laws.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
===Interface===&lt;br /&gt;
* Redesigned UI with full dark mode&lt;br /&gt;
* Home screen with customizable game shortcuts and a dedicated favorites page&lt;br /&gt;
* Dynamic customizable cards — use custom images as console covers with swappable symbols and backgrounds&lt;br /&gt;
* Unified multi-console launcher&lt;br /&gt;
* Controller-first navigation&lt;br /&gt;
* Instant library loading with intelligent caching&lt;br /&gt;
* One-button rescan system&lt;br /&gt;
* Nintendo Switch account integration (avatar and nickname displayed in the interface)&lt;br /&gt;
* SteamGridDB integration — download cover art directly from the tico interface (API key required from steamgriddb.com)&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
* Comprehensive Settings screen with General, Display, Audio, Gamelist, and Emulator sections&lt;br /&gt;
* General settings: clock format (12-hour or 24-hour), ROM root directory picker with in-app folder navigation&lt;br /&gt;
* Per-core aspect ratio settings with unified display modes: 4:3, 16:9, Stretch, Integer 1×, and Integer 2×&lt;br /&gt;
* Per-core display configuration&lt;br /&gt;
&lt;br /&gt;
===Game Management===&lt;br /&gt;
* Automatic No-Intro and Redump naming support&lt;br /&gt;
* Auto-organization by system and region&lt;br /&gt;
* Direct pinning from library to home screen&lt;br /&gt;
* Structured save and asset directories&lt;br /&gt;
&lt;br /&gt;
===Embedded and External Emulator Cores===&lt;br /&gt;
* Built-in, statically linked cores&lt;br /&gt;
* External core support for flexible management, easier updates, and licensing compliance&lt;br /&gt;
* Resume app state support for external cores&lt;br /&gt;
* No manual installation&lt;br /&gt;
* No configuration required&lt;br /&gt;
* Optimized builds for Nintendo Switch&lt;br /&gt;
&lt;br /&gt;
===System===&lt;br /&gt;
* Auto directory initialization — tico creates the complete folder structure for all supported consoles on first launch&lt;br /&gt;
* BIOS validation — tico checks for required BIOS files before launching a game and displays a clear error if any are missing&lt;br /&gt;
&lt;br /&gt;
==Architecture==&lt;br /&gt;
* Written in modern C++&lt;br /&gt;
* Native performance&lt;br /&gt;
* No scripting languages&lt;br /&gt;
* No heavy frameworks&lt;br /&gt;
* Designed for long-term portability&lt;br /&gt;
&lt;br /&gt;
==Supported Systems==&lt;br /&gt;
* Game Boy (GB)&lt;br /&gt;
* Game Boy Color (GBC)&lt;br /&gt;
* Game Boy Advance (GBA)&lt;br /&gt;
* Nintendo Entertainment System (NES)&lt;br /&gt;
* Super Nintendo Entertainment System (SNES)&lt;br /&gt;
* Nintendo 64 (N64)&lt;br /&gt;
* GameCube (GC)&lt;br /&gt;
* Wii&lt;br /&gt;
* PlayStation 1 (PS1)&lt;br /&gt;
* PlayStation Portable (PSP)&lt;br /&gt;
* Sega Dreamcast (DC)&lt;br /&gt;
* Sega Saturn&lt;br /&gt;
* Sega Game Gear&lt;br /&gt;
* Sega Master System&lt;br /&gt;
* Sega Mega Drive (Genesis)&lt;br /&gt;
* Sega CD&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
# Copy the tico folder to the root of your SD card&lt;br /&gt;
# Place tico.nro inside the switch folder&lt;br /&gt;
# Launch any game while holding R to open the Homebrew Menu&lt;br /&gt;
# Open tico&lt;br /&gt;
# Install required cores via the in-app settings updater or manually from https://github.com/ticohq&lt;br /&gt;
# Enjoy&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; On first launch, tico auto-generates its full directory structure. After opening tico once, reconnect your Switch to a PC or phone to copy ROMs, saves, and BIOS files into the correct locations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; tico does not work in applet mode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important (0.6.0):&#039;&#039;&#039; Cores are no longer bundled with tico. Systems will not run until the required cores are installed. Cores can be installed from the in-app settings updater or manually via https://github.com/ticohq.&lt;br /&gt;
&lt;br /&gt;
===Migrating from earlier versions===&lt;br /&gt;
The project directory has been renamed from &#039;&#039;&#039;tiicu&#039;&#039;&#039; to &#039;&#039;&#039;tico&#039;&#039;&#039;. Existing users must:&lt;br /&gt;
# Navigate to the root of the SD card&lt;br /&gt;
# Rename the &#039;&#039;&#039;tiicu&#039;&#039;&#039; folder to &#039;&#039;&#039;tico&#039;&#039;&#039;&lt;br /&gt;
# Move custom assets: &#039;&#039;&#039;sdmc:/tiicu/covers&#039;&#039;&#039; → &#039;&#039;&#039;sdmc:/tico/assets/covers&#039;&#039;&#039; and &#039;&#039;&#039;sdmc:/tiicu/backgrounds&#039;&#039;&#039; → &#039;&#039;&#039;sdmc:/tico/assets/backgrounds&#039;&#039;&#039;&lt;br /&gt;
All ROMs, saves, states, and configuration will remain intact.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If you have a custom ROM path set via the old &#039;&#039;&#039;custom_roms_path&#039;&#039;&#039; field in &#039;&#039;&#039;roms.json&#039;&#039;&#039;, migrate your path through the new Settings interface — that field is deprecated and will be ignored.&lt;br /&gt;
&lt;br /&gt;
===Directory Structure===&lt;br /&gt;
ROMs should be organized in the following structure:&lt;br /&gt;
 sdmc:/tico/roms/{console}/&lt;br /&gt;
 sdmc:/tico/assets/covers/{console}/&lt;br /&gt;
 sdmc:/tico/assets/backgrounds/{console}/&lt;br /&gt;
 sdmc:/tico/saves/{console}/&lt;br /&gt;
 sdmc:/tico/states/{console}/&lt;br /&gt;
&lt;br /&gt;
Where {console} can be: gb, gbc, gba, nes, snes, n64, gc, wii, psx, psp, dc, saturn, game-gear, master-system, genesis, sega-cd&lt;br /&gt;
&lt;br /&gt;
ROMs can be organized into subfolders one level deep (e.g. psx/Resident Evil 2 (Disc 1)/).&lt;br /&gt;
&lt;br /&gt;
Artwork must match ROM names (without extension) and must be in JPG format.&lt;br /&gt;
&lt;br /&gt;
===Custom ROM Path===&lt;br /&gt;
You can set a custom ROM root directory through the built-in Settings screen under General Settings. Use the in-app folder navigation to select your preferred ROM root directory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Changing the ROM root path invalidates existing caches; a one-time rescan will be required.&lt;br /&gt;
&lt;br /&gt;
Inside your custom path, keep consoles separated in their respective folders.&lt;br /&gt;
&lt;br /&gt;
===BIOS Requirements===&lt;br /&gt;
====PlayStation (PS1)====&lt;br /&gt;
Place one of the following BIOS files in: sdmc:/tico/system/psx/&lt;br /&gt;
* scph5501.bin&lt;br /&gt;
* scph5502.bin&lt;br /&gt;
* scph5500.bin&lt;br /&gt;
* scph1001.bin&lt;br /&gt;
&lt;br /&gt;
====Sega Saturn====&lt;br /&gt;
Place one of the following BIOS files in: sdmc:/tico/system/saturn/&lt;br /&gt;
* saturn_bios.bin&lt;br /&gt;
* sega_101.bin&lt;br /&gt;
* mpr-17933.bin&lt;br /&gt;
&lt;br /&gt;
====Dreamcast====&lt;br /&gt;
Place the following BIOS file in:&lt;br /&gt;
 sdmc:/tico/system/dc/&lt;br /&gt;
&lt;br /&gt;
* dc_boot.bin — Dreamcast Boot ROM&lt;br /&gt;
&lt;br /&gt;
====Sega Systems====&lt;br /&gt;
All Sega BIOS files should be placed in:&lt;br /&gt;
 sdmc:/tico/system/sega-cd/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sega CD / Mega CD:&#039;&#039;&#039;&lt;br /&gt;
* bios_CD_U.bin — Sega CD (NTSC-U)&lt;br /&gt;
* bios_CD_E.bin — Mega CD (PAL)&lt;br /&gt;
* bios_CD_J.bin — Mega CD (NTSC-J)&lt;br /&gt;
&lt;br /&gt;
====Super Nintendo (Satellaview)====&lt;br /&gt;
For Satellaview games on SNES:&lt;br /&gt;
* Copy BS-X.bin to: sdmc:/tico/system/snes/&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
===Navigation===&lt;br /&gt;
* Type 1 — Dock: L/R, Pages: D-Pad ←/→&lt;br /&gt;
* Type 2 — Dock: ZL/ZR, Pages: L/R&lt;br /&gt;
&lt;br /&gt;
===In-Game===&lt;br /&gt;
* Press + and - together to suspend gameplay and access game options&lt;br /&gt;
* Configure aspect ratio settings per-core for optimal display&lt;br /&gt;
&lt;br /&gt;
====Sega Saturn====&lt;br /&gt;
* Press ZL and − to switch between Standard Pad and 3D Pad&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Settings Screen===&lt;br /&gt;
The built-in Settings screen provides access to:&lt;br /&gt;
* General Settings — Clock format, ROM root directory&lt;br /&gt;
* Display Settings — Visual preferences&lt;br /&gt;
* Audio Settings — Sound output and volume controls&lt;br /&gt;
* Gamelist Settings — Library organization and display options&lt;br /&gt;
* Emulator Settings — Per-core configuration, core downloads and updates&lt;br /&gt;
&lt;br /&gt;
===Core Settings===&lt;br /&gt;
PSP core settings can be customized at:&lt;br /&gt;
 sdmc:/tico/config/cores/ppsspp.jsonc&lt;br /&gt;
&lt;br /&gt;
Core improvements include:&lt;br /&gt;
* PPSSPP (PSP): 2x resolution rendering, 60fps support&lt;br /&gt;
* SwanStation (PS1): 2x resolution rendering, TrueColor mode enabled&lt;br /&gt;
* SNES9x (SNES): Overclock mode (Compatible), Flicker Reduction, Sinc Audio Resampling&lt;br /&gt;
* mGBA (GBA): Smart Color Blending, No Frameskip&lt;br /&gt;
* Gambatte (GB/GBC): Ghosting Reduction, Sinc Audio Resampling&lt;br /&gt;
* Flycast (Dreamcast): Seamless handheld-to-docked transitions, 1080p docked mode&lt;br /&gt;
* Beetle Saturn (Saturn): 720p/1080p output, FXAA, Scanlines, Bilinear filters, Standard Pad and 3D Pad support&lt;br /&gt;
* Mupen64Plus (N64): Initial support&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
{| style=&amp;quot;max-width:80%; margin-left:0em;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/ticoSwitch-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/ticoSwitch-02.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/ticoSwitch-03.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/ticoSwitch-04.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;0.7.5 2026/07/16&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** Fixed an bug an Core Update Manager caused by versions.json&lt;br /&gt;
** Locked tico startup from sdmc:/switch/tico/tico.nro to prevent confusion with core chainload back&lt;br /&gt;
** Added system folders creation for 3DS&lt;br /&gt;
** Added system name change for Azahar in Emulator Settings&lt;br /&gt;
** Added inverted screens orientation for Azahar to prevent grip to hide vents&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.7.4 2026/07/15&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s New&lt;br /&gt;
** Azahar Support for Nintendo 3DS&lt;br /&gt;
*** Nintendo 3DS emulation is now available in tico via Azahar, bringing support for a large portion of the 3DS library.&lt;br /&gt;
*** Supported ROM formats: .3ds, .3dsx, .z3dsx, .elf, .axf, .cci, .zcci, .cxi, .zcxi, .app&lt;br /&gt;
** Shader Compilation&lt;br /&gt;
*** Shaders are compiled on a game&#039;s first launch and then cached, so subsequent launches load with improved visual stability and reduced stuttering.&lt;br /&gt;
*** Quick Hotkeys&lt;br /&gt;
*** L + Minus — Change screen orientation&lt;br /&gt;
*** ZL + Minus — Change screen layout&amp;lt;br /&amp;gt;&lt;br /&gt;
These are also available from the quick menu by pressing + and − in-game.&lt;br /&gt;
* Fixes&lt;br /&gt;
** Fixed alphabetical ordering in console emulator settings&lt;br /&gt;
** Fixed a bug where resuming from a core would cause a crash&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.7.3 2026/06/14&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s new&lt;br /&gt;
** Flycast updated to 2.6+&lt;br /&gt;
*** The Dreamcast/Naomi emulator core has been updated to version 2.6+, bringing the latest upstream fixes and compatibility improvements.&lt;br /&gt;
** Atomiswave and Naomi support&lt;br /&gt;
*** You can now launch Atomiswave and Naomi arcade games directly through tico, expanding the supported library beyond Dreamcast titles.&lt;br /&gt;
** Cover compressor for existing covers&lt;br /&gt;
*** A one-time compression pass runs on your existing cover art to reduce storage usage and improve loading times going forward.&lt;br /&gt;
* Improvements&lt;br /&gt;
** Smoother navigation when holding up/down in gamelist&lt;br /&gt;
*** Holding up or down in the gamelist now scrolls more fluidly, making it easier to browse through large collections.&lt;br /&gt;
** Better assets loading and download performance&lt;br /&gt;
*** Assets such as covers and metadata are now fetched and rendered more efficiently, reducing wait times when browsing your library.&lt;br /&gt;
** Compression applied on cover downloads&lt;br /&gt;
*** Newly downloaded covers are now compressed on the fly, keeping your storage footprint smaller without any extra steps.&lt;br /&gt;
* Bug fixes&lt;br /&gt;
** Game progress in RetroAchievements screen&lt;br /&gt;
*** Fixed an issue where game progress was not displaying correctly on the RetroAchievements screen.&lt;br /&gt;
** FBNeo cover fetching&lt;br /&gt;
*** Covers for FBNeo games were not being retrieved properly; this has been resolved.&lt;br /&gt;
** Crash when adding background to consoles&lt;br /&gt;
*** Fixed a crash that occurred when trying to set a custom background image for a console entry.&lt;br /&gt;
** Update downloads failing on lower clock speeds&lt;br /&gt;
*** Resolved an issue that caused update downloads to fail on devices running at lower CPU clock speeds.&lt;br /&gt;
* Warning: On first launch after this update, existing covers will be automatically compressed. This runs once and may take a moment depending on your library size.&lt;br /&gt;
* Note: Even with the Flycast 2.6+ improvements, Windows CE-based games (e.g. Sega Rally 2) and most Naomi 2 titles remain too demanding for Switch hardware and may not run well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.7.2 2026/06/01&#039;&#039;&#039;&lt;br /&gt;
* Installation &amp;amp;amp; Updates&lt;br /&gt;
** New installer for a smoother first-time setup&lt;br /&gt;
** Built-in updater (Settings &amp;amp;gt; Updates)&lt;br /&gt;
* Home&lt;br /&gt;
** New item sizes: 1x3, 3x1, 2x3, 3x2, 2x2&lt;br /&gt;
** Custom backgrounds and decorations per item (logo and cover)&lt;br /&gt;
** Console launch shortcut from homescreen&lt;br /&gt;
** Asset Finder accessible from homescreen&lt;br /&gt;
** Game logos displayed on launcher screen&lt;br /&gt;
** Fixed D-Pad when using navigation type 2&lt;br /&gt;
** Game Select&lt;br /&gt;
** Added jump titles by using left/right for fast navigation&lt;br /&gt;
** Added support for custom background, covers and logo using Find Assets&lt;br /&gt;
** Added support for added console as shortcut to Homescreen&lt;br /&gt;
* Retro Achievements&lt;br /&gt;
** Fully redesigned screen&lt;br /&gt;
** Faster and more responsive connection&lt;br /&gt;
* Customization&lt;br /&gt;
** Full card customization — frames, overlays, badge size, style and position&lt;br /&gt;
** New screen transition animations&lt;br /&gt;
** Non-square cover support with built-in crop tool&lt;br /&gt;
* Asset Manager&lt;br /&gt;
** Browse and download covers, backgrounds and icons in-app via SteamGridDB&lt;br /&gt;
** Seamless homescreen integration for quick asset assignment&lt;br /&gt;
* Audio&lt;br /&gt;
** Soundpacks - swap UI sounds and background music from Settings &amp;amp;gt; Audio&lt;br /&gt;
** Console Colors&lt;br /&gt;
** Custom gradients per console for light and dark mode&lt;br /&gt;
** Game Library&lt;br /&gt;
** Game search across your library&lt;br /&gt;
** Fast navigation in game select screen for large collections&lt;br /&gt;
** Emulator Updates&lt;br /&gt;
** Dolphin - added support for WAD, WIA, M3U and more&lt;br /&gt;
* Fixes&lt;br /&gt;
** General smoothness improvements throughout the app&lt;br /&gt;
** Fixed UI scaling on 1080p displays&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.7.1 2026/04/25&#039;&#039;&#039;&lt;br /&gt;
* New: Vulkan backend&lt;br /&gt;
* Fixed: Updater&lt;br /&gt;
* New: Onboarding tips for new users&lt;br /&gt;
* Fixed: Passwords now fully hidden in Settings &amp;gt; Accounts&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.7.0-alpha 2026/04/20&#039;&#039;&#039;&lt;br /&gt;
* New: Experimental GameCube and Wii support via Dolphin core (enable from the new Experimental tab in Settings)&lt;br /&gt;
* New: Experimental tab added to Settings — Dolphin must be enabled here before it appears in the tico interface&lt;br /&gt;
* Note: Dolphin enables boost mode by default (1785 MHz CPU / 768 MHz GPU); monitor device temperature accordingly&lt;br /&gt;
* New (Saturn): Simulated BIOS / skip Saturn BIOS option added to Yabasanshiro core settings&lt;br /&gt;
* Cores: Fixes and updates available from the Updater in Settings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.6.0-alpha 2026/04/06&#039;&#039;&#039;&lt;br /&gt;
* Breaking: Cores are no longer bundled with tico — cores must be installed manually after updating&lt;br /&gt;
* Breaking: Systems will not run until required cores are installed&lt;br /&gt;
* New: External core distribution model — cores are now distributed and updated independently from the main application&lt;br /&gt;
* New: Core downloads and updates available directly from the settings screen&lt;br /&gt;
* New: Nintendo 64 support via Mupen64Plus (note: app must be restarted after exiting an N64 game)&lt;br /&gt;
* New: FinalBurn Neo support via FBNeo&lt;br /&gt;
* New: ROM subfolder support — ROMs can be organized into subfolders one level deep&lt;br /&gt;
* New: Multi-disc handling — multi-disc titles grouped into a single entry with Disc 1 as primary; optional setting to list each disc individually&lt;br /&gt;
* New: Localization — English, Spanish, Portuguese, French, Japanese, and Chinese&lt;br /&gt;
* New: RetroAchievements screen with online summary and progress (supported platforms: Dreamcast, FinalBurn Neo, GB, GBC, GBA, Game Gear, Master System, Mega Drive, N64, NES, PlayStation, PSP, Sega CD, Sega Saturn, SNES)&lt;br /&gt;
* New: Navigation type option — Type 1 (Dock: L/R, Pages: D-Pad ←/→) or Type 2 (Dock: ZL/ZR, Pages: L/R)&lt;br /&gt;
* New (Saturn): CHD support (.chd), 1MB and 4MB RAM cartridge support, optional async rendering, optional compute shader output, fixed SRAM save persistence&lt;br /&gt;
* New (PlayStation): Rumble support, corrected button mapping, memory card support (.mcd, .mcr), automatic multi-disc switching&lt;br /&gt;
* New: Mesa 23.3 driver — shader cache support and NIR compiler for improved GPU utilization&lt;br /&gt;
* Fixed: Cover art loading for .cue, .m3u, and .bin formats&lt;br /&gt;
* Fixed: Core startup/exit when Music and SFX is enabled&lt;br /&gt;
* Core updates: All cores updated for improved compatibility and stability&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.5.0-alpha 2026/02/18&#039;&#039;&#039;&lt;br /&gt;
* New: Sega Saturn support (720p/1080p, 60fps 2D / 30fps 3D, Standard Pad and 3D Pad, FXAA/Scanlines/Bilinear filters)&lt;br /&gt;
* New: SteamGridDB integration — download cover art directly from the interface (API key required)&lt;br /&gt;
* New: General Settings section (clock format, ROM root directory picker with in-app folder navigation)&lt;br /&gt;
* New: Unified aspect ratio display modes across all cores (4:3, 16:9, Stretch, Integer 1×, Integer 2×)&lt;br /&gt;
* New: Auto directory initialization on first launch for all supported consoles&lt;br /&gt;
* New: BIOS validation — checks for required BIOS files before launching and displays clear error messages&lt;br /&gt;
* Improvement: Flycast seamless handheld-to-docked transitions, fixed 1080p docked resolution&lt;br /&gt;
* Improvement: Expanded PS1 BIOS compatibility (scph5501.bin, scph5502.bin, scph5500.bin, scph1001.bin)&lt;br /&gt;
* Improvement: Simplified Dreamcast BIOS requirement (dc_boot.bin only)&lt;br /&gt;
* Changed: Custom ROM path configuration via roms.json is deprecated — use the Settings interface instead&lt;br /&gt;
* Various minor fixes and stability improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.4.0-alpha 2026/02/10&#039;&#039;&#039;&lt;br /&gt;
* Redesigned: Complete visual overhaul with new UI, refined colors, and sleek iconography&lt;br /&gt;
* Redesigned: Full dark mode across the entire application&lt;br /&gt;
* New: Dynamic customizable cards — custom images as console covers, swappable symbols and backgrounds&lt;br /&gt;
* New: Nintendo Switch account integration (avatar and nickname)&lt;br /&gt;
* New: Comprehensive Settings screen (Display, Audio, Gamelist, Emulator)&lt;br /&gt;
* New: Sega Dreamcast support&lt;br /&gt;
* New: Favorites page opens automatically on launch&lt;br /&gt;
* New: Per-core aspect ratio settings (stretch or integer scaling)&lt;br /&gt;
* New: External core support for flexible management and licensing compliance&lt;br /&gt;
* New: Resume app state support for external cores&lt;br /&gt;
* Changed: Project directory renamed from tiicu to tico&lt;br /&gt;
* Changed: Asset directories moved under sdmc:/tico/assets/&lt;br /&gt;
* Changed: Navigation — D-PAD Left/Right swaps home screen pages, L/R navigates docked screens&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.3.0-alpha 2026/01/23&#039;&#039;&#039;&lt;br /&gt;
* Fixed: Custom ROM paths now work correctly&lt;br /&gt;
* Fixed: Moving shortcuts no longer creates duplicates&lt;br /&gt;
* Fixed: PlayStation analog stick/axis controls now function properly&lt;br /&gt;
* Improvement: &amp;quot;Add to homescreen&amp;quot; automatically navigates to first available page&lt;br /&gt;
* New: Alert notification when all home screen pages are full&lt;br /&gt;
* New: Sega Game Gear support&lt;br /&gt;
* New: Sega Master System support&lt;br /&gt;
* New: Sega Mega Drive (Genesis) support&lt;br /&gt;
* New: Sega CD support&lt;br /&gt;
* New: PSP CHD format support&lt;br /&gt;
* New: Advanced PPSSPP settings customization via config file&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;0.0.2 2026/01/20&#039;&#039;&#039;&lt;br /&gt;
* Major: ROM scanning no longer strictly enforces No-Intro or Redump naming&lt;br /&gt;
* New: Custom ROM path configuration support&lt;br /&gt;
* New: NES (Nintendo Entertainment System) support&lt;br /&gt;
* Improvement: Desktop items now animate gracefully on startup&lt;br /&gt;
* Improvement: Consoles organized alphabetically in launcher&lt;br /&gt;
* Improvement: Better animation when entering games&lt;br /&gt;
* Bugfix: Shortcuts no longer disappear when deleting or moving other shortcuts&lt;br /&gt;
* Core: PPSSPP 2x resolution rendering, 60fps support&lt;br /&gt;
* Core: SwanStation 2x resolution rendering, TrueColor mode&lt;br /&gt;
* Core: SNES9x Overclock mode, Flicker Reduction, Sinc Audio Resampling&lt;br /&gt;
* Core: mGBA Smart Color Blending, No Frameskip&lt;br /&gt;
* Core: Gambatte Ghosting Reduction, Sinc Audio Resampling&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official website - https://ticoverse.com/&lt;br /&gt;
* GitHub - https://github.com/ticohq/tico&lt;br /&gt;
* Discord - https://discord.gg/DPgXGqJMkJ&lt;br /&gt;
* Reddit - https://www.reddit.com/r/SwitchHacks/comments/1qh2kxc/tiicu_001_is_here_the_first_custom_emulator/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Balatro3DS&amp;diff=205708</id>
		<title>Balatro3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Balatro3DS&amp;diff=205708"/>
		<updated>2026-07-17T02:08:41Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: Alpha 1.2.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=Balatro3DS&lt;br /&gt;
|image=Balatro3DS.png&lt;br /&gt;
|description=A fanmade Balatro clone for the 3DS.&lt;br /&gt;
|author=idkhan&lt;br /&gt;
|lastupdated=2026/07/16&lt;br /&gt;
|type=Card&lt;br /&gt;
|version=Alpha 1.2.0&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/Balatro3DS.7z&lt;br /&gt;
|website=https://www.reddit.com/r/3dshacks/comments/1sliqql/version_01_of_balatro3ds_released/&lt;br /&gt;
|source=https://github.com/idkhan/Balatro3DS&lt;br /&gt;
|donation=https://www.patreon.com/thegazpacho&lt;br /&gt;
}}&lt;br /&gt;
Balatro3DS is a fan-made port/implementation of the game Balatro targeting the Nintendo 3DS, built with Lua and LÖVE.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Requires a Nintendo 3DS with homebrew capabilities (for running custom software).&lt;br /&gt;
&lt;br /&gt;
Download the [https://github.com/idkhan/Balatro3DS/releases latest release].&lt;br /&gt;
&lt;br /&gt;
Copy the Balatro3DS.3dsx file into the 3ds folder on the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
Open with the Homebrew launcher.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
R or Y - Play&lt;br /&gt;
&lt;br /&gt;
L or X - Discard&lt;br /&gt;
&lt;br /&gt;
D-Pad Left - Sort by Rank&lt;br /&gt;
&lt;br /&gt;
D-Pad Right - Sort by Suit&lt;br /&gt;
&lt;br /&gt;
D-Pad Up - Show Jokers&lt;br /&gt;
&lt;br /&gt;
D-Pad Down - Hide Jokers&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.2.0&#039;&#039;&#039;&lt;br /&gt;
* Features:&lt;br /&gt;
** Revamped Gamepad Controls - Please read the How to Play section for more information&lt;br /&gt;
* Bugfixes:&lt;br /&gt;
** Fixed Booster packs having owned Jokers&lt;br /&gt;
** Fixed the very large drag zone for Buy and Use&lt;br /&gt;
** Pareidolia Joker was debuffing all cards in a boss blind&lt;br /&gt;
** Smeared Joker was not working correctly&lt;br /&gt;
** New runs started with Vampire, fixed it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.7&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes:&lt;br /&gt;
** Resized the Drag Zone for Use to prevent it from overlapping with the Consumables&lt;br /&gt;
** Fixed the Matador triggering for each time a debuffed card is selected&lt;br /&gt;
** Fixed the Vampire triggering for every card instead of just cards with an enhancement (wrote &amp;amp;quot;or&amp;amp;quot; instead of &amp;amp;quot;and&amp;amp;quot; oops)&lt;br /&gt;
** Fixed the Mark having cards be face down when opening Tarot cards. Now all Boss Effects are removed from The Shop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.6&#039;&#039;&#039;&lt;br /&gt;
* Features:&lt;br /&gt;
** Added Profiles and the ability to clear saves&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed the R button selecting and unselecting cards when tapped in card select mode&lt;br /&gt;
** Fixed the Riff Raff joker spawning duplicates&lt;br /&gt;
** Fixed the Hit the Road Joker not resetting&lt;br /&gt;
** Fixed Hologram Joker triggering for every item bought from shop. Now it only triggers when cards are added to the deck&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.5&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** Added the Collection to view all Cards, Blinds, Enhancements, etc&lt;br /&gt;
** Added More Gamepad Controls, check the How to Play menu to learn more&lt;br /&gt;
** Boss Blinds no longer repeat&lt;br /&gt;
** Added the Diet Cola Joker (it was missing before)&lt;br /&gt;
** Added a sneaky little cheat to unlock everything (Konami Code)&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Astronomer Joker now works&lt;br /&gt;
** Shop prices are recalculated after buying the discount vouchers&lt;br /&gt;
** Main Menu is now aligned properly&lt;br /&gt;
** Hitting New Run in a game saves the last run&lt;br /&gt;
** There&#039;s a bunch more I cant remember&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.3 (Fixed)&#039;&#039;&#039;&lt;br /&gt;
* Features:&lt;br /&gt;
** Menu Animation finally added&lt;br /&gt;
* Bugfixes:&lt;br /&gt;
** Fixed no price being shown on the Sell drop zone&lt;br /&gt;
** Fixed Tags and Spectral debuffs carrying over from previous runs&lt;br /&gt;
** Undiscovered cards now show their tooltips, just not their names&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.2&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** Adds Deck and Stake Unlocks&lt;br /&gt;
** Allows Discovering Jokers, Tarot, Spectral and Planet Cards&lt;br /&gt;
** Deck View now shows Deck, Stake and Blind Information&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed the Invisible Joker bug (probably)&lt;br /&gt;
** Fixed Ankh not working&lt;br /&gt;
** Fixed incorrect Blind colors in the TopUI&lt;br /&gt;
** Vagabond not spawning tarot cards at $4&lt;br /&gt;
** Gros Michel was still in the shop pool after going extinct&lt;br /&gt;
** Changes made to the hand were not copied to the deck properly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.1 (Hotfix)&#039;&#039;&#039;&lt;br /&gt;
* Fixed the volume slider not working and freezing the game&lt;br /&gt;
* Fixed skip tags not rerolling after defeating a boss blind&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.0&#039;&#039;&#039;&lt;br /&gt;
* Features:&lt;br /&gt;
** REVAMPED THE SHOP CONTROLS - drag and drop functionality similar to the Mobile UI&lt;br /&gt;
** Added a Win Screen for Ante 8 - Still no progression tracking&lt;br /&gt;
* Bugfixes:&lt;br /&gt;
** Negative, Foil, Holo, Polychrome Tags were not working. Fixed&lt;br /&gt;
** The voucher tag didn&#039;t do anything&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.0.2&#039;&#039;&#039;&lt;br /&gt;
* Skip tags were crashing the game because I used a lua keyword as the name for a function parameter [https://github.com/idkhan/Balatro3DS/issues/31 #31]&lt;br /&gt;
* All Special Decks were being scored as Plasma deck because I missed a bracket [https://github.com/idkhan/Balatro3DS/issues/31 #31]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.0.1&#039;&#039;&#039;&lt;br /&gt;
* Now you can hold L to start Card Selection mode and use the DPAD to navigate through your hand.&lt;br /&gt;
* While in Card Selection Mode, pressing Up allows you to toggle a card and holding R and moving right or left lets you batch select cards&lt;br /&gt;
* Features:&lt;br /&gt;
** Added a Settings Menu ([https://github.com/pixelkat5 @pixelkat5])&lt;br /&gt;
** Improved Menu ([https://github.com/Promaster2007 @Promaster2007]) and new How to Play screen&lt;br /&gt;
** Added Gamepad support for card selection and navigation:&lt;br /&gt;
** New Icon ([https://github.com/Promaster2007 @Promaster2007])&lt;br /&gt;
* Bug Fixes ([https://github.com/idkhan @idkhan]):&lt;br /&gt;
** Fixed issue with card rendering in deck view.&lt;br /&gt;
** Fixed cards disappearing after opening a Booster Pack&lt;br /&gt;
** Fixed bad collisions in deck view&lt;br /&gt;
** Fixed an infinite loop caused by Brainstorm and Blueprint pointing at each other&lt;br /&gt;
** Fixed Cavendish being spawnable without Gros Michel going extinct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Features Added:&lt;br /&gt;
** Added a Deck View, now you can press Select to view your deck and owned vouchers&lt;br /&gt;
** Added all the Decks&lt;br /&gt;
** Added all Stakes&lt;br /&gt;
* Bug Fixes:&lt;br /&gt;
** Fixed Legendary Jokers not showing up properly&lt;br /&gt;
** Fixed multiple jokers like the Mail-in Rebate on syncing up&lt;br /&gt;
** Fixed some Jokers not triggering properly&lt;br /&gt;
** Grabber and Nacho Tong vouchers are in the game, apparently they were just missing from the catalog, so now they are in the game and can be obtained&lt;br /&gt;
** Some other stuff I cannot remember, but I know I fixed a lot of bugs and added a lot of features, so enjoy!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.4.0&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Bigger Buy button&lt;br /&gt;
** Fixed the long delay in scoring with many jokers&lt;br /&gt;
** I can&#039;t remember them all, there&#039;s a bunch&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.6&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Score being too large to fit in the panel now resizes [https://github.com/idkhan/Balatro3DS/issues/15 #15]&lt;br /&gt;
** Castle Joker now changes suit and only picks suits present in the deck&lt;br /&gt;
** Blue Joker now counts cards in deck, used to count all cards [https://github.com/idkhan/Balatro3DS/issues/21 #21]&lt;br /&gt;
** Mr Bones not working properly [https://github.com/idkhan/Balatro3DS/issues/17 #17]&lt;br /&gt;
** Green Joker can no longer have negative mult [https://github.com/idkhan/Balatro3DS/issues/7 #7]&lt;br /&gt;
** Tarot Cards were not usable on less than the max number of cards, now they work as intended&lt;br /&gt;
** Fixed Boss blinds stopped working entirely&lt;br /&gt;
** Fixed glass break resetting score and changing hand types&lt;br /&gt;
* Noted Problems&lt;br /&gt;
** Some Jokers can be invisible, this is because of the 3DS&#039;s tiny VRAM cache filling up and not being able to display the texture. The Joker will still work. So if your booster pack comes with just one joker, the second one is probably invisible. Just tap where you expect it to be and the tooltip should show up. This will be fixed when new art assets are introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.5&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed Cavendish appearing before Gros Michel is Extinct&lt;br /&gt;
** Fixed Oops joker not counting correctly&lt;br /&gt;
** Fixed Music pitch&lt;br /&gt;
** Fixed Tooltip drawing&lt;br /&gt;
** Fixed Popcorn not destroying itself&lt;br /&gt;
** Fixed Suit order in hand&lt;br /&gt;
** Fixed Wheel of Fortune not rolling chances properly&lt;br /&gt;
* Noted Problems&lt;br /&gt;
** Some Jokers may be invisible in the shop or in booster packs, they&#039;re still intractable and can be bought. The sprites will appear when bought.&lt;br /&gt;
** Boss Blind may appear as empty&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.4&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed cards being debuffed after Boss Blinds [https://github.com/idkhan/Balatro3DS/issues/6 #6]&lt;br /&gt;
** Fixed Booster Pack layout in the shop&lt;br /&gt;
** Fixed Endless Mode (After Ante 8) chip scaling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.2 (Not Fully Tested)&#039;&#039;&#039;&lt;br /&gt;
* Additions&lt;br /&gt;
** Added Vouchers&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed Hit the Bus Joker counting not scored cards&lt;br /&gt;
** Fixed Hand Levels not resetting&lt;br /&gt;
** Fixed Two Pairs not containing Pairs [https://github.com/idkhan/Balatro3DS/issues/5 #5]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.2.3&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed check for Flush with Four Fingers&lt;br /&gt;
** Fixed Judgement Tarot card creating Legendary Jokers and implemented proper rarity distribution&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.2.2&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed Jokers not being sellable when opening Booster Packs&lt;br /&gt;
** Fixed the Fortune Teller and Stuntman Jokers not working&lt;br /&gt;
** Fixed check for hands contained in other hands&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.2&#039;&#039;&#039;&lt;br /&gt;
* Added a Menu and Pause Screen&lt;br /&gt;
* You can now save and continue runs&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Wild cards work now (completely forgot about them on the first release, oops)&lt;br /&gt;
** Fixed a bug with Booster Packs triggering Red Card even when the pack wasn&#039;t skipped&lt;br /&gt;
** Fixed Steel cards not scoring properly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.1.0&#039;&#039;&#039;&lt;br /&gt;
* 150 Jokers&lt;br /&gt;
* All Tarot, Planet, Spectral Cards&lt;br /&gt;
* All Boss Blinds&lt;br /&gt;
* No Menu or Pause Screen&lt;br /&gt;
* No Vouchers and Tags&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* itch.io - https://thegazpacho.itch.io/balatro3ds&lt;br /&gt;
* GitHub - https://github.com/idkhan/Balatro3DS&lt;br /&gt;
* Reddit - https://www.reddit.com/r/3dshacks/comments/1sliqql/version_01_of_balatro3ds_released/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Cloudpoint_3DS&amp;diff=205707</id>
		<title>Cloudpoint 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Cloudpoint_3DS&amp;diff=205707"/>
		<updated>2026-07-17T02:08:35Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.6.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=Cloudpoint&lt;br /&gt;
|image=cloudpoint3ds.png&lt;br /&gt;
|description=Bringing modern cloud save to 3DS.&lt;br /&gt;
|author=dwalker109&lt;br /&gt;
|lastupdated=2026/07/15&lt;br /&gt;
|type=Save Managers and Editors&lt;br /&gt;
|version=0.6.0&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/cloudpoint3ds.7z&lt;br /&gt;
|website=https://github.com/dwalker109/cloudpoint&lt;br /&gt;
|source=https://github.com/dwalker109/cloudpoint&lt;br /&gt;
}}&lt;br /&gt;
Cloudpoint allows you to sync all of your saves (and extdata) between all of your 3DS &amp;amp; 2DS devices, via a central server. Transfer progress between consoles effortlessly, the way you&#039;re probably used to from more modern systems. Or PS Vita.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Sync your game saves (and extdata) between all of your consoles (and, in most cases, emulators)&lt;br /&gt;
* Simple UI with minimal user intervention (works like cloud save on any other console)&lt;br /&gt;
* Public, free to use cloud available for zero setup syncing over the internet&lt;br /&gt;
* Self hosting your own instance is also supported, via the provided Docker image&lt;br /&gt;
* Auto sync all saves in one go, or sync specific game saves on demand&lt;br /&gt;
* Enable/disable specific saves from auto sync&lt;br /&gt;
* Auto discover your saves, and refresh them on demand as you add new games&lt;br /&gt;
* &amp;quot;Link&amp;quot; your consoles to enable initial setup using local ad-hoc wireless; syncs all happen directly with the server (your consoles don&#039;t all need to be online at once)&lt;br /&gt;
* Auto enable wireless on boot, disable on quit - be kind to your battery life&lt;br /&gt;
* Slightly increased performance on New... model consoles (but works on all of them really well)&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Cloudpoint is available on [[Universal-Updater 3DS|Universal Updater]], which is the best way to install it and keep it up to date.&lt;br /&gt;
&lt;br /&gt;
Or, download the [https://github.com/dwalker109/cloudpoint/releases/latest latest release] manually:&lt;br /&gt;
* 3DSX - Copy .3dsx to /3ds/cloudpoint/ on your SD card, then launch via the Homebrew Launcher.&lt;br /&gt;
* CIA - Copy .cia to your SD card and install it via [[FBI 3DS|FBI]].&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
=== If you have one console ===&lt;br /&gt;
* Run Cloudpoint on your first console (console 1) - it will scan for saves and enable them for auto sync.&lt;br /&gt;
* Press &#039;&#039;&#039;A&#039;&#039;&#039; to sync and wait for the progress bar to complete.&lt;br /&gt;
* You are synced! Take your user key to a new console or run Cloudpoint again after formatting your system to restore saves and extdata.&lt;br /&gt;
&lt;br /&gt;
=== If you have additional consoles ===&lt;br /&gt;
* On console 1, press &#039;&#039;&#039;R&#039;&#039;&#039; to reach the &amp;quot;Link screen and press &#039;&#039;&#039;X&#039;&#039;&#039; to share your user key.&lt;br /&gt;
* Run Cloudpoint on another console (console 2) - it will scan for saves and enable them for auto sync.&lt;br /&gt;
* Press &#039;&#039;&#039;R&#039;&#039;&#039; to reach the &#039;&#039;Link&#039;&#039; screen and press &#039;&#039;&#039;Y&#039;&#039;&#039; to receive your key from the first console. Follow the onscreen prompts on both consoles; Cloudpoint will restart on completion.&lt;br /&gt;
* Once Cloudpoint reloads, press &#039;&#039;&#039;A&#039;&#039;&#039; to sync and expect to be asked to resolve conflicts for any game You have installed on both consoles. You will usually see this screen &#039;&#039;the first time&#039;&#039; you sync a game on a given console, or if you progress in a game on multiple consoles without syncing.&lt;br /&gt;
* You are synced! You are now free to use a N3DSXL at home and a N3DS on the go; no more compromise!&lt;br /&gt;
&lt;br /&gt;
=== Best practice ===&lt;br /&gt;
* &#039;&#039;&#039;Keep save backups yourself&#039;&#039;&#039;. Do this from time to time. Bugs happen and I don&#039;t want you to lose your 1000 hour Pokémon saves.&lt;br /&gt;
* Make a backup of your &#039;&#039;user.key&#039;&#039; from &amp;lt;code&amp;gt;/3ds/Cloudpoint/user.key&amp;lt;/code&amp;gt; (you will need this in the event you lose your console or memory card, there is no other way to recover your saves).&lt;br /&gt;
* Auto sync when you pick up your console for a play session, auto sync again when you finish. This will avoid any need to resolve conflicts.&lt;br /&gt;
* Use the same version of a game on all your consoles. Syncing saves to different versions may lead to data loss, so avoid this.&lt;br /&gt;
* Take extra care when reinstalling titles or formatting a console; detection of title reinstallation should now work well (on real hardware at least; emulator support here is patchy), but it is the thing most likely to lead to unexpected behaviour, so please ensure you have backups before doing either of those things.&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/cloudpoint3ds2.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/cloudpoint3ds3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/cloudpoint3ds4.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/cloudpoint3ds5.png&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
Cloudpoint can&#039;t run in the background, and it can&#039;t automatically run when you launch a game. This isn&#039;t something which 3DS can natively support, so you will need to manually run syncs (see best practice).&lt;br /&gt;
&lt;br /&gt;
3DS doesn&#039;t provide a method for knowing when a save was last modified, so we can&#039;t show that in the UI. We &#039;&#039;do&#039;&#039; know when you last synced a save, so we use that in the UI instead.&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v0.6.0&#039;&#039;&#039;&lt;br /&gt;
* Chunktree store impl does not check http responses by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/122 #122]&lt;br /&gt;
* Improve app load pre-connect by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/124 #124]&lt;br /&gt;
* Document server gc and verify commands by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/127 #127]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.5.1&#039;&#039;&#039;&lt;br /&gt;
* Enable CPU/L2 enhancements for New... family consoles by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/116 #116]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.5.0&#039;&#039;&#039;&lt;br /&gt;
* Fixes &amp;amp; Tweaks&lt;br /&gt;
** Refresh hangs with region changed systems (and general resilience to crashes causes by installed titles in a not-quite-normal state) by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/104 #104] - (thanks to [https://github.com/sofauxboho @sofauxboho] for all the support)&lt;br /&gt;
** Move Read + Seek impl from CtrFile to a CtrFileReader by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/110 #110]&lt;br /&gt;
** Recover from dubious archive reads (leniency on likely uninitialised saves) by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/113 #113]&lt;br /&gt;
* Improvements&lt;br /&gt;
** Auto enable wifi &amp;amp; connect to server on load by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/106 #106] - (thanks to [https://github.com/gearmo3ds @gearmo3ds] for identifying a great path forward)&lt;br /&gt;
** Add l/r on input control to page through titles by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/112 #112]&lt;br /&gt;
** Custom server to replace beta version&#039;s DUFS placeholder by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/105 #105] (self hosters should upgrade by looking at the self hosting readme&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.4.0&#039;&#039;&#039;&lt;br /&gt;
* UI spinner &amp;amp; tweaks by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/97 #97]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.3.0&#039;&#039;&#039;&lt;br /&gt;
* Proper detection of title reinstalls and title uninstalls by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/95 #95]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.1&#039;&#039;&#039;&lt;br /&gt;
* Terraria oom on upload by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/93 #93]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.2.0&#039;&#039;&#039;&lt;br /&gt;
* Ensure title and state db&#039;s are recreated after a system format by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/89 #89]&lt;br /&gt;
* Tweak display of app version and user on sync screen by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/90 #90]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.2&#039;&#039;&#039;&lt;br /&gt;
* Add shutdown screen to display in app while we finish work and quit by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/84 #84]&lt;br /&gt;
* Display app version and user key on sync screen by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/85 #85]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.1&#039;&#039;&#039;&lt;br /&gt;
* Implement server request body size limit in Caddy to make abuse a little harder by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/79 #79]&lt;br /&gt;
* Better shutdown behaviour by [https://github.com/dwalker109 @dwalker109] in [https://github.com/dwalker109/cloudpoint/pull/81 #81]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.0&#039;&#039;&#039;&lt;br /&gt;
* Title discovery and auto sync of all discovered titles&lt;br /&gt;
* Conflict resolution on demand&lt;br /&gt;
* Per title manual sync auto sync enable/disable toggle&lt;br /&gt;
* Backup of local data on downloading saves&lt;br /&gt;
* Sharing user key between two consoles via UDS&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* [https://devkitpro.org/ devkitPro] makes all of this possible&lt;br /&gt;
* [https://github.com/rust3ds Rust3DS] packages it all up so I can actually use it&lt;br /&gt;
* [https://github.com/BernardoGiordano/Checkpoint Checkpoint] is a wonderful source of inspiration for this while thing, plus a brilliant help when trying to figure out how to do something&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
GitHub - https://github.com/dwalker109/cloudpoint&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=NetPass_3DS&amp;diff=205706</id>
		<title>NetPass 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=NetPass_3DS&amp;diff=205706"/>
		<updated>2026-07-17T02:08:31Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 2.0.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=NetPass&lt;br /&gt;
|image=NetPass3DS2.png&lt;br /&gt;
|description=A new way to experience StreetPass.&lt;br /&gt;
|author=Sorunome&lt;br /&gt;
|lastupdated=2026/07/14&lt;br /&gt;
|type=Other Apps&lt;br /&gt;
|version=2.0.3&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/NetPass3DS.7z&lt;br /&gt;
|website=https://gbatemp.net/threads/netpass-a-new-way-to-experience-streetpass.664005/&lt;br /&gt;
|source=https://gitlab.com/3ds-netpass/netpass&lt;br /&gt;
|donation=https://liberapay.com/Sorunome&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title= (Other Apps) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=NetPass3DS.png&lt;br /&gt;
|image_alt=NetPass&lt;br /&gt;
}}&lt;br /&gt;
NetPass is a homebrew that offers new way to experience StreetPass. &lt;br /&gt;
&lt;br /&gt;
The app works over the internet, you can pick various locations to go to, i.e. the train station, or a town plaza, then get passes of others who are in the same location. &lt;br /&gt;
&lt;br /&gt;
While you are at the location, others who enter it can get passes with you. But beware, you can only switch locations once every 10 hours.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Available in 3DSX and CIA formats.&lt;br /&gt;
*3DSX - Copy .3dsx to the 3ds folder on your SD card and run it via Homebrew Launcher.&lt;br /&gt;
*CIA - Install the .cia with the CIA manager of your choice.&lt;br /&gt;
&lt;br /&gt;
==FAQ==&lt;br /&gt;
&#039;&#039;&#039;Q. How do I use this thing?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You open the app and then it presents you the option to enter a virtual location. Currently there are three: the train station, the plaza and the mall. Upon entering a virtual location you can get netpasses of others who are also in that location.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q, Any time I open the app it says I am in a location. What&#039;s up?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once entering a location, a 10-hour long session is started. During those 10 hours any subsequent opening of the app will reconnect you to the same location. After 10 hours have elapsed you can choose a new location.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. I only got like one netpass when entering a location?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the first connection your data is uploaded to a database. There is a chance you receive passes immediately, however given more time your data will “pair” with someone else’s data which will then be available to download. This random pairing can occur once an hour, so there is no guarantee you will receive passes every time the database updates. &lt;br /&gt;
&lt;br /&gt;
Imagine it as someone with a 3DS walking past you, this can happen 2 times a day or 40 times a day, depending on your luck. Your uploaded data will remain in this pairing state for up to 30 days, therefore checking in and switching locations is advised, especially since each location has its&#039; own database. Patience is key.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. Do I have to leave this app open? Can I put my 3DS to sleep?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is no need to leave NetPass open to accumulate passes. The pairing of datasets happens server side, you simply need to check in every so often.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. Will normal StreetPass still work?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, it&#039;ll still work just fine.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;3DS Now Has ONLINE StreetPass&#039;&#039;&#039; ([https://www.youtube.com/watch?v=Z50tuxYvAO0 Good Vibes Gaming]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;Z50tuxYvAO0&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v2.0.3&#039;&#039;&#039;&lt;br /&gt;
* Re-register if the server says we aren&#039;t registered,&lt;br /&gt;
&#039;&#039;&#039;v2.0.2&#039;&#039;&#039;&lt;br /&gt;
* Fix error popup (Thanks @blaadeeee).&lt;br /&gt;
* Add scam warning.&lt;br /&gt;
* Add important popup about backing up nid_pwd.&lt;br /&gt;
* Add time setter for if your system time is off.&lt;br /&gt;
&#039;&#039;&#039;v2.0.1&#039;&#039;&#039;&lt;br /&gt;
* Store nid_password on the sd card.&lt;br /&gt;
* Make sure font scaling for chineese (simplified + traditional) and korean fonts work properly.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0&#039;&#039;&#039;&lt;br /&gt;
* SpotPass support.&lt;br /&gt;
* ImageShare support.&lt;br /&gt;
* Add failed auth check.&lt;br /&gt;
* Add nid-password and verify with a TOTP token.&lt;br /&gt;
* Store mac to nand and use that one.&lt;br /&gt;
* Respect the 3DS proxy settings and use those.&lt;br /&gt;
* Remove stutter of music.&lt;br /&gt;
&#039;&#039;&#039;v1.2.9&#039;&#039;&#039;&lt;br /&gt;
* Add qr code and event location music.&lt;br /&gt;
* Explicitly send LFCS.&lt;br /&gt;
* Fix potential crashes on exit.&lt;br /&gt;
* Make purchasing passes from the back alley faster.&lt;br /&gt;
* Add spinner / busy indicator on bottom screen (Thanks @Silentium).&lt;br /&gt;
* Fetch passes until none are possible to be fetched anymore (Thanks @Silentium).&lt;br /&gt;
&#039;&#039;&#039;v1.2.8&#039;&#039;&#039;&lt;br /&gt;
* Fix some issues with the back alley not producing results.&lt;br /&gt;
&#039;&#039;&#039;v1.2.7&#039;&#039;&#039;&lt;br /&gt;
* Fix bad http call which lead to a crash.&lt;br /&gt;
&#039;&#039;&#039;v1.2.6&#039;&#039;&#039;&lt;br /&gt;
* various small stability fixes.&lt;br /&gt;
* preperation for bottom screen UI.&lt;br /&gt;
* logging with target settings.&lt;br /&gt;
* make self-updater have a progress bar.&lt;br /&gt;
&#039;&#039;&#039;v1.2.5&#039;&#039;&#039;&lt;br /&gt;
* Fix the qr code scanner crashing the app.&lt;br /&gt;
&#039;&#039;&#039;v1.2.4&#039;&#039;&#039;&lt;br /&gt;
* Fix accidentally leaving code in that always triggered the new version screen.&lt;br /&gt;
&#039;&#039;&#039;v1.2.3&#039;&#039;&#039;&lt;br /&gt;
* Further stability improvements around the new text rendering.&lt;br /&gt;
* Small improvements on self-updating the 3dsx.&lt;br /&gt;
&#039;&#039;&#039;v1.2.2&#039;&#039;&#039;&lt;br /&gt;
* Fix random crashes, especially with the back alley.&lt;br /&gt;
* These were caused by the GPU CMD buffer running out of space. Since the text rendering for outline text is really inefficient this started appearing with 1.2.0, but now it is fixed.&lt;br /&gt;
&#039;&#039;&#039;v1.2.1&#039;&#039;&#039;&lt;br /&gt;
* Hotfix: prevent 3ds from crashing on loading anything except the train station and home.&lt;br /&gt;
&#039;&#039;&#039;v1.2.0&#039;&#039;&#039;&lt;br /&gt;
* update graphics&lt;br /&gt;
* add settings music&lt;br /&gt;
* add ability to override artwork with custom images on sd card&lt;br /&gt;
* make report list loading more robust&lt;br /&gt;
&#039;&#039;&#039;v1.1.1&#039;&#039;&#039;&lt;br /&gt;
* Fix corrupted report list thingy&lt;br /&gt;
* Fix music stuttering during pass imports.&lt;br /&gt;
* Add music to beach, cat cafe and back alley (thank you batteries!)&lt;br /&gt;
* Add art to back alley (thank you Lyril!)&lt;br /&gt;
* Hopefully fix the cecd wrong state warnings.&lt;br /&gt;
* Make netpass self-update on new releases.&lt;br /&gt;
* Fix issue if dsp firm wasn&#039;t dumped yet.&lt;br /&gt;
* Show only artwork on holding down L or R.&lt;br /&gt;
&#039;&#039;&#039;v1.1.0&#039;&#039;&#039;&lt;br /&gt;
* Add event locations.&lt;br /&gt;
* Add ability to dynamically load location artwork.&lt;br /&gt;
* Add music to the arcade.&lt;br /&gt;
* Various error fixes.&lt;br /&gt;
* Better the error display even more.&lt;br /&gt;
&#039;&#039;&#039;v1.0.4&#039;&#039;&#039;&lt;br /&gt;
* Fix initial wifi check breaking things completely.&lt;br /&gt;
* Other small potential fixes.&lt;br /&gt;
&#039;&#039;&#039;v1.0.3&#039;&#039;&#039;&lt;br /&gt;
* many bugfixes.&lt;br /&gt;
* nicer UI around updates.&lt;br /&gt;
* allow for banned people to download / delete their personal data.&lt;br /&gt;
* better error popups and handling.&lt;br /&gt;
* fixing of various errors.&lt;br /&gt;
&#039;&#039;&#039;v1.0.2&#039;&#039;&#039;&lt;br /&gt;
* Fix version detection being broken for people using luma locale switcher.&lt;br /&gt;
* Better error display.&lt;br /&gt;
* Preparations for new feature.&lt;br /&gt;
* Various small fixes.&lt;br /&gt;
* Gray out last location visited.&lt;br /&gt;
&#039;&#039;&#039;v1.0.1&#039;&#039;&#039;&lt;br /&gt;
* Check for firmware version on startup.&lt;br /&gt;
* Add option to remove patches.&lt;br /&gt;
* Add option to turn off background music.&lt;br /&gt;
* Fix back alley not saving properly.&lt;br /&gt;
&#039;&#039;&#039;v1.0.0&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;User on-boarding&#039;&#039;&#039;: Upon startup up NetPass the user will now be asked to review our [https://netpass.cafe/rules.html rules] and [https://netpass.cafe/privacy.html privacy policy]. After that, the user will be on-boarded easily to apply the patches to make SPR (receiving passes in the background) properly.&lt;br /&gt;
* &#039;&#039;&#039;Stand-alone&#039;&#039;&#039;: NetPass is now completely stand-alone and does not need Pretendo to work anymore. You can, of course, still use Pretendo if you want to. The two do not conflict.&lt;br /&gt;
* &#039;&#039;&#039;Integrations&#039;&#039;&#039;: You don&#039;t want to use only NetPass&#039;es SPR but also [https://pretendo.network Pretendo&#039;s]? That is easy now, just go to the integration settings and then enable Pretendo!&lt;br /&gt;
* &#039;&#039;&#039;Background music&#039;&#039;&#039;: You all have been asking for this, and waiting for this, and now it is finally here! NetPass now plays music in the background! This music is also different per-location, however not many locations have their own track yet. Stay tuned for more updates regarding this!&lt;br /&gt;
* &#039;&#039;&#039;More accurate interpretation of StreetPasses&#039;&#039;&#039;: StreetPass has a lot of features, some of them rather obscure and not a lot of titles use this. Now, more of the obscure features of streetpass should work properly, broadening the supported titles.&lt;br /&gt;
* &#039;&#039;&#039;Special Miis&#039;&#039;&#039;: If you are doing a recurring donation, you can now have the NetPass server automatically mark your Mii in Mii Plaza as special. Miis that were marked special via other means will automatically be marked as normal Miis.&lt;br /&gt;
* &#039;&#039;&#039;Various small features and fixes&#039;&#039;&#039;: A lot of small bugs/issues have been fixed, along with also some bigger ones. Also some smaller features like an in-app about screen exist now!&lt;br /&gt;
* &#039;&#039;&#039;Stability&#039;&#039;&#039;: This is a big one: Soru considers NetPass so far into development now that it is stable enough to not have any major bugs anymore (hopefully....you know how it is with software &amp;amp;gt;.&amp;amp;lt;)&lt;br /&gt;
&#039;&#039;&#039;v0.8.2&#039;&#039;&#039;&lt;br /&gt;
* Add patch to upload/download all titles, e.g. Letterbox/Swapnote.&lt;br /&gt;
* Be sure to re-write patches and re-start your console!&lt;br /&gt;
&#039;&#039;&#039;v0.8.1&#039;&#039;&#039;&lt;br /&gt;
* Hotfix: Prevent crashing on adding streetpass mii plaza to the reports.&lt;br /&gt;
&#039;&#039;&#039;v0.8.0&#039;&#039;&#039;&lt;br /&gt;
* Fix Back Alley giving white screen.&lt;br /&gt;
* Cache title names in memory.&lt;br /&gt;
* Added better report screen.&lt;br /&gt;
* Hopefully fix SPR patches crashing for some.&lt;br /&gt;
&#039;&#039;&#039;v0.7.1&#039;&#039;&#039;&lt;br /&gt;
* Fix issue where if some titles were toggled off it would refuse to upload and download any data.&lt;br /&gt;
* Fix many crashes caused by the SPR BOSS patches.&lt;br /&gt;
&#039;&#039;&#039;v0.7.0&#039;&#039;&#039;&lt;br /&gt;
* Fix reporting being broken.&lt;br /&gt;
* Make reporting for messages received via SPR work.&lt;br /&gt;
* Switch to new way to download passes: This should fix all phantom pass bugs!&lt;br /&gt;
&#039;&#039;&#039;v0.6.1&#039;&#039;&#039;&lt;br /&gt;
*Fix sending fc-ident for sprelay.&lt;br /&gt;
&#039;&#039;&#039;v0.6.0&#039;&#039;&#039;&lt;br /&gt;
*Beta StreetPass-Relay (SPR) support!&lt;br /&gt;
**To activate SPR, you are required to:&lt;br /&gt;
***Use [https://pretendo.network/ Pretendo].&lt;br /&gt;
***In luma, enable both &amp;quot;game patching&amp;quot; and &amp;quot;loading external firms/modules&amp;quot;.&lt;br /&gt;
***In NetPass settings, click on &amp;quot;Write patches&amp;quot;. If you run luma from nand, copy over the created patches to nand.&lt;br /&gt;
***In NetPass settings, click on &amp;quot;Clear spr cache&amp;quot;. This will reboot your console.&lt;br /&gt;
**To deactivate SPR, you need to:&lt;br /&gt;
***Delete the created patch files.&lt;br /&gt;
***In NetPass settings, click on &amp;quot;Clear spr cache&amp;quot;.&lt;br /&gt;
&#039;&#039;&#039;v0.5.2&#039;&#039;&#039;&lt;br /&gt;
* Add Cat Cafe Image.&lt;br /&gt;
* Slight bugfixes.&lt;br /&gt;
* Add code to make it easier for soru to test/develop sprelay.&lt;br /&gt;
&#039;&#039;&#039;v0.5.1&#039;&#039;&#039;&lt;br /&gt;
* Added new icon.&lt;br /&gt;
* Fixed report screen crashing.&lt;br /&gt;
&#039;&#039;&#039;v0.5.0&#039;&#039;&#039;&lt;br /&gt;
* Added back alley.&lt;br /&gt;
* Fix various bugs around passing.&lt;br /&gt;
* potentially fix phantom green lights.&lt;br /&gt;
&#039;&#039;&#039;v0.4.0&#039;&#039;&#039;&lt;br /&gt;
* Reports.&lt;br /&gt;
* Various small fixes.&lt;br /&gt;
* Add more trans-ness.&lt;br /&gt;
&#039;&#039;&#039;v0.3.3&#039;&#039;&#039;&lt;br /&gt;
* Fix Language Picker.&lt;br /&gt;
* Fix some languages not scaling nicely.&lt;br /&gt;
* Add new banner jingle.&lt;br /&gt;
* Add more location art.&lt;br /&gt;
&#039;&#039;&#039;v0.3.2&#039;&#039;&#039;&lt;br /&gt;
* Add language picker.&lt;br /&gt;
* Fix banner.&lt;br /&gt;
* Hide NetPass from system usage.&lt;br /&gt;
* Fix crash related to default language being wrong.&lt;br /&gt;
&#039;&#039;&#039;v0.3.1&#039;&#039;&#039;&lt;br /&gt;
* Hopefully fix crashes once an for all.&lt;br /&gt;
* Add some more backgrounds.&lt;br /&gt;
&#039;&#039;&#039;v0.3.0&#039;&#039;&#039;&lt;br /&gt;
* More translations.&lt;br /&gt;
* More locations.&lt;br /&gt;
* Can&#039;t enter same location twice in a row.&lt;br /&gt;
* stability fixes.&lt;br /&gt;
&#039;&#039;&#039;v0.2.5&#039;&#039;&#039;&lt;br /&gt;
* Hopefully fix the crashes on DL&#039;ing inbox.&lt;br /&gt;
* Nicer server-side autodetect of version upgrade.&lt;br /&gt;
* new jingle&lt;br /&gt;
* hopefully fix title names not always being 0-terminated.&lt;br /&gt;
&#039;&#039;&#039;v0.2.5&#039;&#039;&#039;&lt;br /&gt;
*hopefully fix the random crashes on startup for animal crossing.&lt;br /&gt;
&#039;&#039;&#039;v0.2.3&#039;&#039;&#039;&lt;br /&gt;
* Automatic aggregation on undiscovered streetpass data. This is so that soru can reverse-engineer streetpass bettr. This is not tied to any console at all. The only thing collected are a title_id, the name of the title and the reason why the unkown-detecter got tripped.&lt;br /&gt;
* Options to delete and download all personal data.&lt;br /&gt;
* preparation for switch from macs to unique ids.&lt;br /&gt;
* interface to allow messaging the client.&lt;br /&gt;
&#039;&#039;&#039;v0.2.2&#039;&#039;&#039;&lt;br /&gt;
*Fixed up little quirks about streetpassing rudimentary localization support.&lt;br /&gt;
&#039;&#039;&#039;v0.2.1&#039;&#039;&#039;&lt;br /&gt;
*Fixed multiple crashes, added translations.&lt;br /&gt;
&#039;&#039;&#039;v0.2.0&#039;&#039;&#039;&lt;br /&gt;
*The random crashes should be fixed now!&lt;br /&gt;
&#039;&#039;&#039;v0.1.2&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
=== Research ===&lt;br /&gt;
* [https://gist.github.com/wwylele/29a8caa6f5e5a7d88a00bedae90472ed This gist] by wwylele, describing some cecd functionality&lt;br /&gt;
* [https://github.com/NarcolepticK/CECDocs This repo] by NarcolepticK documenting some more of the cecd sysmodule&lt;br /&gt;
* [https://gbatemp.net/threads/streetpass-2-rise-from-the-ashes.526749/ StreetPass 2] for valuable data dumps&lt;br /&gt;
* 3Dbrew and all its contributors, especially of the [https://www.3dbrew.org/wiki/CECD_Services cecd service]&lt;br /&gt;
=== Translations ===&lt;br /&gt;
* English: Sorunome&lt;br /&gt;
* German: Sorunome&lt;br /&gt;
* Russian: [https://gbatemp.net/members/rednorka.575239/ Rednorka], Geo&lt;br /&gt;
* Japanese: [https://gitlab.com/Akira-SN Akira SUNADUKA]&lt;br /&gt;
* Polish: [https://gitlab.com/DanteyPL DanteyPL]&lt;br /&gt;
* Spanish: [https://gitlab.com/Gato-kun Gato-kun], [https://gitlab.com/Amnesia1000 Amnesia1000]&lt;br /&gt;
* French: [https://straky.fr/en Straky], [https://gitlab.com/Essepeius Possemelius], Tourneur&lt;br /&gt;
* Italian: [https://github.com/LNLenost LNLenost]&lt;br /&gt;
* Chinese (Traditional): ManLok Ho&lt;br /&gt;
* Ukrainian: Geo&lt;br /&gt;
* Portugese: Lia, arth&lt;br /&gt;
* Dutch: Robbin12391, aiydn&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitLab - https://gitlab.com/3ds-netpass/netpass&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/netpass-a-new-way-to-experience-streetpass.664005/&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/a-new-way-to-experience-streetpass.653810/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PocketCompiler_3DS&amp;diff=205705</id>
		<title>PocketCompiler 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PocketCompiler_3DS&amp;diff=205705"/>
		<updated>2026-07-17T02:08:23Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.48&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=PocketCompiler&lt;br /&gt;
|image=PocketCompiler3DS.png&lt;br /&gt;
|description=An almost fully featured HTML/JS/CSS compiler application made for 3DS/n3DS consoles.&lt;br /&gt;
|author=PlanetDogeCodes&lt;br /&gt;
|lastupdated=2026/07/14&lt;br /&gt;
|type=Other Apps&lt;br /&gt;
|version=0.48&lt;br /&gt;
|license=Apache-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/PocketCompiler3DS.7z&lt;br /&gt;
|website=https://github.com/PlanetDogeCodes/Pocket-Compiler&lt;br /&gt;
|source=https://github.com/PlanetDogeCodes/Pocket-Compiler&lt;br /&gt;
}}&lt;br /&gt;
PocketCompiler is an experimental Nintendo 3DS HTML/JS/CSS compiler and code editor.&lt;br /&gt;
&lt;br /&gt;
PocketCompiler is designed to let you:&lt;br /&gt;
* Write HTML/JS/CSS on the 3DS, allowing for easy development&lt;br /&gt;
* Compile and run web pages directly on the top screen with a real DOM-based rendering engine&lt;br /&gt;
* Save/load/rename/delete projects from the SD card&lt;br /&gt;
* Debug with a live JS console&lt;br /&gt;
&lt;br /&gt;
The default project path is &amp;lt;code&amp;gt;sdmc:/3ds/PocketCompiler/projects&amp;lt;/code&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* HTML parsing with DOM tree construction&lt;br /&gt;
* CSS engine with cascade, inheritance, specificity, custom properties (&amp;lt;code&amp;gt;var()&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;calc()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;@media&amp;lt;/code&amp;gt; skip, &amp;lt;code&amp;gt;:not()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:active&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:checked&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:disabled&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:first-child&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:last-child&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:nth-child()&amp;lt;/code&amp;gt;, comma selectors, &amp;lt;code&amp;gt;!important&amp;lt;/code&amp;gt;, box-sizing, flex/grid layout, transitions, box-shadow, linear-gradient, word-wrap, and 40+ CSS properties&lt;br /&gt;
* JavaScript runtime via Duktape (ES5 + subset of ES6)&lt;br /&gt;
* DOM manipulation: &amp;lt;code&amp;gt;getElementById&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;querySelector&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;querySelectorAll&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;createElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;appendChild&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;innerHTML&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;textContent&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;classList&amp;lt;/code&amp;gt;, live &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; object (Proxy-backed), &amp;lt;code&amp;gt;addEventListener&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;onclick&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;onload&amp;lt;/code&amp;gt;/etc. property handlers&lt;br /&gt;
* Keyboard, mouse, and touch events with bubbling&lt;br /&gt;
* &amp;lt;code&amp;gt;document.write()&amp;lt;/code&amp;gt; with incremental parsing&lt;br /&gt;
* Software keyboard integration for &amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; text entry and &amp;lt;code&amp;gt;window.prompt()&amp;lt;/code&amp;gt;&lt;br /&gt;
* Form submission via click on submit buttons&lt;br /&gt;
* &amp;lt;code&amp;gt;fetch()&amp;lt;/code&amp;gt; / XMLHttpRequest (SD-card backed)&lt;br /&gt;
* localStorage / sessionStorage (SD-card persisted)&lt;br /&gt;
* IndexedDB (SD-card persisted, simplified sync API)&lt;br /&gt;
* Canvas 2D rendering&lt;br /&gt;
* WebGL scaffolding (Citro3D backend)&lt;br /&gt;
* Image loading (PNG via LodePNG)&lt;br /&gt;
* Web Audio (oscillators, gain, WAV playback via NDSP)&lt;br /&gt;
* Near-complete iframe support&lt;br /&gt;
* Auto-save draft (writes to SD on compile + 10s of idle)&lt;br /&gt;
* Crash-recovery: &amp;amp;quot;Recover autosave&amp;amp;quot; action restores unsaved work&lt;br /&gt;
* Remembers last-opened file across launches&lt;br /&gt;
* File explorer: save, load, rename, delete, sort by name/size/date&lt;br /&gt;
&lt;br /&gt;
== Canvas / WebGL ==&lt;br /&gt;
PocketCompiler has rendering systems for:&lt;br /&gt;
* Canvas 2D: rectangles, paths, text, images, gradients, transforms, &amp;lt;code&amp;gt;fillText&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;strokeText&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;measureText&amp;lt;/code&amp;gt;&lt;br /&gt;
* WebGL: &amp;lt;code&amp;gt;getContext(&amp;amp;quot;webgl&amp;amp;quot;)&amp;lt;/code&amp;gt; detection, buffers, shaders/programs, uniforms/attributes, textures, draw calls, viewport/depth/blend/scissor state, Citro3D backend scaffolding&lt;br /&gt;
This is not yet full WebGL.&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
PocketCompiler includes SD-card-backed storage systems:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sdmc:/3ds/PocketCompiler/&lt;br /&gt;
    config.txt        &amp;lt;- last-opened file (auto-managed)&lt;br /&gt;
    autosave.html     &amp;lt;- crash-recovery draft (auto-managed)&lt;br /&gt;
    console_log.txt   &amp;lt;- exported JS console log (written on demand)&lt;br /&gt;
    projects/         &amp;lt;- all .html project files&lt;br /&gt;
    storage/&lt;br /&gt;
        local_*.json  &amp;lt;- localStorage data&lt;br /&gt;
        idb/          &amp;lt;- IndexedDB data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supported:&lt;br /&gt;
* IndexedDB-style databases with &amp;lt;code&amp;gt;put&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;close&amp;lt;/code&amp;gt;&lt;br /&gt;
* localStorage with SD-card persistence&lt;br /&gt;
* sessionStorage (in-memory, per session)&lt;br /&gt;
* Cookie-style storage&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
PocketCompiler includes a Web Audio-style system:&lt;br /&gt;
* AudioContext-like runtime&lt;br /&gt;
* OscillatorNode (sine/square/triangle/sawtooth)&lt;br /&gt;
* GainNode&lt;br /&gt;
* AudioBufferSourceNode with WAV file loading&lt;br /&gt;
* NDSP-backed output when available&lt;br /&gt;
* Safe fallback if audio fails&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
PocketCompiler is still in early development.&lt;br /&gt;
&lt;br /&gt;
It does not yet fully support:&lt;br /&gt;
* Full modern CSS (no CSS animations/@keyframes, no rotate()/scale() transforms, limited position: fixed)&lt;br /&gt;
* Full modern JavaScript (no ES modules, no async/await, no Proxy traps beyond get/set)&lt;br /&gt;
* Real networking (all fetch/XHR URLs resolve to SD-card files)&lt;br /&gt;
* Full WebGL 1.0 (no real GLSL shader translation)&lt;br /&gt;
* Full Canvas 2D API (no drawImage from video, no complex path fills)&lt;br /&gt;
* Full Web Audio API (no real-time effects, no offline rendering)&lt;br /&gt;
* Complete iframe isolation&lt;br /&gt;
* Pointer lock&lt;br /&gt;
&lt;br /&gt;
The 3DS also has very limited RAM, CPU, GPU power, and screen space, so PocketCompiler uses strict safety limits (bounded DOM pool, bounded event queues, bounded command buffers, 4 MB max audio buffer, recursion depth guards).&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;Edit Mode — Editor Tab:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad Up/Down - Scroll code vertically&lt;br /&gt;
&lt;br /&gt;
D-Pad Left/Right - Scroll code horizontally&lt;br /&gt;
&lt;br /&gt;
Circle Pad - Move cursor dot&lt;br /&gt;
&lt;br /&gt;
Touch - Snap cursor to tap; tap tabs / code lines / file rows&lt;br /&gt;
&lt;br /&gt;
A - Edit current line (3DS keyboard; auto-indent if empty)&lt;br /&gt;
&lt;br /&gt;
B - Undo (5-step ring)&lt;br /&gt;
&lt;br /&gt;
X - Save project (file explorer)&lt;br /&gt;
&lt;br /&gt;
Y - Load project (file explorer)&lt;br /&gt;
&lt;br /&gt;
L - Toggle JS Console tab&lt;br /&gt;
&lt;br /&gt;
R - Open Actions menu (Find, Go-to, Duplicate, Comment, Rename, Delete, Sort, Export log, Recover autosave)&lt;br /&gt;
&lt;br /&gt;
Start - Compile + run&lt;br /&gt;
&lt;br /&gt;
Select - Show controls menu (scrollable)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Edit Mode — Console Tab:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad Up/Down - Scroll console log&lt;br /&gt;
&lt;br /&gt;
A - Type &amp;amp; eval JS expression&lt;br /&gt;
&lt;br /&gt;
B - Clear console log&lt;br /&gt;
&lt;br /&gt;
L - Back to editor tab&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Run Mode:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad - Scroll web page (all directions)&lt;br /&gt;
&lt;br /&gt;
Circle Pad - Move cursor (never scrolls)&lt;br /&gt;
&lt;br /&gt;
A / L - Left-click&lt;br /&gt;
&lt;br /&gt;
B / R - Right-click&lt;br /&gt;
&lt;br /&gt;
X - Release cursor lock&lt;br /&gt;
&lt;br /&gt;
Y - Space key (sent to web content)&lt;br /&gt;
&lt;br /&gt;
Start - Stop, Return to editor&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/PocketCompiler3DS2.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/PocketCompiler3DS3.png&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v0.48&#039;&#039;&#039;&lt;br /&gt;
* The 3DS crash issue in the previous version was caused by the &#039;&#039;&#039;Duktape fatal error handler&#039;&#039;&#039; entering an infinite spin loop (&amp;lt;code&amp;gt;for(;;) svcSleepThread(...)&amp;lt;/code&amp;gt;) after JS context creation completed. When any post-creation Duktape operation triggered a fatal error (OOM, etc.), the handler froze the entire 3DS, requiring a reboot.&lt;br /&gt;
* Fixes Applied&lt;br /&gt;
** &#039;&#039;&#039;Fatal handler no longer spins infinitely (web_js.c)&#039;&#039;&#039;&lt;br /&gt;
*** Changed the post-creation fatal handler from &amp;lt;code&amp;gt;for(;;) svcSleepThread(1000000000LL)&amp;lt;/code&amp;gt; to simply &amp;lt;code&amp;gt;return&amp;lt;/code&amp;gt;. While returning from a Duktape fatal handler is technically undefined, in practice Duktape propagates the error as a JS exception or returns a safe value. The app continues running instead of freezing the 3DS.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;amp;lt;style&amp;amp;gt;&amp;lt;/code&amp;gt; block buffer increased (web_html_parser.c)&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;stbuf&amp;lt;/code&amp;gt; increased from 8192 to 16384 bytes. A 31KB HTML file can easily have &amp;amp;gt;8KB of CSS. Truncation at 8KB produced malformed CSS that could confuse the parser.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;amp;lt;script&amp;amp;gt;&amp;lt;/code&amp;gt; block buffer increased (web_html_parser.c)&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;scbuf&amp;lt;/code&amp;gt; increased from 16384 to 32768 bytes. Large inline scripts were being truncated at 16KB, causing syntax errors (caught by &amp;lt;code&amp;gt;duk_peval_string&amp;lt;/code&amp;gt; but wasteful).&lt;br /&gt;
** &#039;&#039;&#039;DOM pool sizes increased (web_dom.h)&#039;&#039;&#039;&lt;br /&gt;
*** &amp;lt;code&amp;gt;WE_MAX_NODES&amp;lt;/code&amp;gt;: 1024 → 2048 (a complex 31KB page can have &amp;amp;gt;1024 elements + text nodes)&lt;br /&gt;
*** &amp;lt;code&amp;gt;WE_MAX_ATTRS&amp;lt;/code&amp;gt;: 512 → 1024 (matching the larger node pool)&lt;br /&gt;
** &#039;&#039;&#039;C2D_TextBuf NULL checks (web_render.c)&#039;&#039;&#039;&lt;br /&gt;
*** Added OOM guards after &amp;lt;code&amp;gt;C2D_TextBufNew(4096)&amp;lt;/code&amp;gt; in both the wrapping and non-wrapping text render paths. If allocation fails, the function skips drawing that text instead of crashing.&lt;br /&gt;
** &#039;&#039;&#039;All unprotected &amp;lt;code&amp;gt;duk_eval_string&amp;lt;/code&amp;gt; calls replaced with protected versions:&#039;&#039;&#039;&lt;br /&gt;
: {| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File&lt;br /&gt;
! Call&lt;br /&gt;
! Fix&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_js.c:1346&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;duk_eval_string_noresult&amp;lt;/code&amp;gt; (polyfills)&lt;br /&gt;
| → &amp;lt;code&amp;gt;duk_peval_string_noresult&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_iframe.c:184&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;duk_eval_string_noresult&amp;lt;/code&amp;gt; (postMessage stub)&lt;br /&gt;
| → &amp;lt;code&amp;gt;duk_peval_string_noresult&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_canvas.c:369&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;duk_eval_string&amp;lt;/code&amp;gt; (canvas property setup)&lt;br /&gt;
| → &amp;lt;code&amp;gt;duk_peval_string&amp;lt;/code&amp;gt; + fallback to plain object on failure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.47&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Multi-line text rendering&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;wrender_text&amp;lt;/code&amp;gt; previously drew the entire text string as a single &amp;lt;code&amp;gt;C2D_DrawText&amp;lt;/code&amp;gt; call, so paragraphs that the layout engine had correctly wrapped to multiple lines rendered as one long line overflowing off-screen. The function now detects when text exceeds the available width, splits at word boundaries using the same &amp;lt;code&amp;gt;char_width&amp;lt;/code&amp;gt; metric as the layout engine, and draws each line separately with correct alignment, bold, italic, and decoration.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;position: fixed&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;sticky&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;position: fixed&amp;lt;/code&amp;gt; elements no longer scroll with the page — the renderer skips applying the scroll offset for &amp;lt;code&amp;gt;position==3&amp;lt;/code&amp;gt; nodes, keeping them pinned to the viewport. &amp;lt;code&amp;gt;position: sticky&amp;lt;/code&amp;gt; is now parsed (value 4) and treated like &amp;lt;code&amp;gt;relative&amp;lt;/code&amp;gt; for layout. True scroll-tracking stickiness is deferred.&lt;br /&gt;
* &#039;&#039;&#039;Dirty-only CSS cascade&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;css_cascade&amp;lt;/code&amp;gt; previously ran &amp;lt;code&amp;gt;css_compute_node&amp;lt;/code&amp;gt; on every element every frame when any node was dirty. On a 100-element page with 50 CSS rules, that&#039;s ~5000 &amp;lt;code&amp;gt;selector_matches&amp;lt;/code&amp;gt; calls per frame. Now only processes nodes where &amp;lt;code&amp;gt;dirty==1&amp;lt;/code&amp;gt;. On page load all nodes are dirty (unchanged behavior); during per-frame hover/focus updates, typically 1-2 nodes are dirty, reducing cascade cost by ~99%.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;window.getComputedStyle()&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** Returns a read-only object with 20+ computed style properties as CSS-formatted strings: &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;display&amp;lt;/code&amp;gt; (as string), &amp;lt;code&amp;gt;color&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;backgroundColor&amp;lt;/code&amp;gt; (as &amp;lt;code&amp;gt;rgba(...)&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;fontSize&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; (as 0-1 float), &amp;lt;code&amp;gt;visibility&amp;lt;/code&amp;gt;, margins, padding, border, &amp;lt;code&amp;gt;left&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;top&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;offsetLeft/Top/Width/Height&amp;lt;/code&amp;gt;. Fixed: &amp;lt;code&amp;gt;display&amp;lt;/code&amp;gt; was being set twice (boolean then string); &amp;lt;code&amp;gt;opacity&amp;lt;/code&amp;gt; was returning 0-255 instead of 0.0-1.0.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Element.matches()&amp;lt;/code&amp;gt; rewritten&#039;&#039;&#039;&lt;br /&gt;
** Previously only handled &amp;lt;code&amp;gt;#id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.class&amp;lt;/code&amp;gt;, and bare tag names. Now delegates to &amp;lt;code&amp;gt;css_selector_matches&amp;lt;/code&amp;gt; — the full selector matching engine — so it handles descendant selectors, attribute selectors, pseudo-classes (&amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:checked&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;:not()&amp;lt;/code&amp;gt;, adjacent siblings (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;), and pseudo-elements.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Element.closest()&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** New method. Walks up the ancestor chain (including self) until one matches the given selector, returning the element or &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;. Cycle-guarded with &amp;lt;code&amp;gt;g_dom_node_n&amp;lt;/code&amp;gt; bound. Uses the full &amp;lt;code&amp;gt;css_selector_matches&amp;lt;/code&amp;gt; engine for each ancestor check.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;Array.from()&amp;lt;/code&amp;gt; polyfill + &amp;lt;code&amp;gt;NodeList&amp;lt;/code&amp;gt; alias&#039;&#039;&#039;&lt;br /&gt;
** Polyfills &amp;lt;code&amp;gt;Array.from&amp;lt;/code&amp;gt; for array-like objects and iterables with optional &amp;lt;code&amp;gt;mapFn&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;thisArg&amp;lt;/code&amp;gt;. Aliases &amp;lt;code&amp;gt;NodeList&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Array&amp;lt;/code&amp;gt; so &amp;lt;code&amp;gt;instanceof NodeList&amp;lt;/code&amp;gt; checks pass and &amp;lt;code&amp;gt;NodeList.prototype.forEach&amp;lt;/code&amp;gt; exists (Duktape arrays already have &amp;lt;code&amp;gt;forEach&amp;lt;/code&amp;gt;). &amp;lt;code&amp;gt;JSON.parse&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;JSON.stringify&amp;lt;/code&amp;gt; verified working via Duktape&#039;s built-in &amp;lt;code&amp;gt;DUK_USE_JSON_BUILTIN&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Files changed&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File&lt;br /&gt;
! Changes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Multi-line text wrapping in &amp;lt;code&amp;gt;wrender_text&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;position:fixed&amp;lt;/code&amp;gt; scroll-offset skip&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_layout.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;position:fixed&amp;lt;/code&amp;gt; uses viewport (0,0); &amp;lt;code&amp;gt;position:sticky&amp;lt;/code&amp;gt; (value 4) treated like relative&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_css.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Dirty-only cascade in &amp;lt;code&amp;gt;css_cascade&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;css_selector_matches&amp;lt;/code&amp;gt; public wrapper; &amp;lt;code&amp;gt;position:sticky&amp;lt;/code&amp;gt; parser&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_css.h&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;css_selector_matches&amp;lt;/code&amp;gt; declaration; &amp;lt;code&amp;gt;CSS_SEL_LEN&amp;lt;/code&amp;gt; 64→128&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_dom.h&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;position&amp;lt;/code&amp;gt; comment updated for sticky (value 4)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_js.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;getComputedStyle&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;closest&amp;lt;/code&amp;gt;, rewritten &amp;lt;code&amp;gt;matches&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Array.from&amp;lt;/code&amp;gt; polyfill, &amp;lt;code&amp;gt;NodeList&amp;lt;/code&amp;gt; alias, opacity format fix&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.45&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;All New Stuff&#039;&#039;&#039;&lt;br /&gt;
** CSS selectors were completely failing on complex selectors&lt;br /&gt;
*** The &amp;lt;code&amp;gt;selector_matches&amp;lt;/code&amp;gt; function only handled &#039;&#039;&#039;simple selectors&#039;&#039;&#039; (tag, &amp;lt;code&amp;gt;.class&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;#id&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;tag.class&amp;lt;/code&amp;gt;). It could not match any selector containing:&lt;br /&gt;
**** &#039;&#039;&#039;Descendant combinators&#039;&#039;&#039; (spaces): &amp;lt;code&amp;gt;.tog input&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.field input[type=text]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;details:not([open]) summary&amp;lt;/code&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;Adjacent sibling combinators&#039;&#039;&#039; (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;): &amp;lt;code&amp;gt;.tog input:checked + .tog-sw&amp;lt;/code&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;Attribute selectors&#039;&#039;&#039; (&amp;lt;code&amp;gt;[type=checkbox]&amp;lt;/code&amp;gt;): &amp;lt;code&amp;gt;input[type=checkbox]&amp;lt;/code&amp;gt;&lt;br /&gt;
**** &#039;&#039;&#039;Pseudo-elements&#039;&#039;&#039; (&amp;lt;code&amp;gt;::after&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;::before&amp;lt;/code&amp;gt;): &amp;lt;code&amp;gt;summary::after&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.tog-sw::after&amp;lt;/code&amp;gt;&lt;br /&gt;
*** Since nearly every selector in the EaglerLite CSS uses at least one of these, &#039;&#039;&#039;zero CSS rules were matching&#039;&#039;&#039; — the page rendered with default styles only.&lt;br /&gt;
** DPad scroll was broken&lt;br /&gt;
*** The v0.43 DPad scroll fix (which used &amp;lt;code&amp;gt;we_page_scroll_by&amp;lt;/code&amp;gt; when the web engine was loaded) was accidentally reverted during the v0.44 bugfix pass, going back to the old text-mode-only scroll. DPad Up/Down did nothing when viewing a web page.&lt;br /&gt;
* &#039;&#039;&#039;What I fixed&#039;&#039;&#039;&lt;br /&gt;
** New &amp;lt;code&amp;gt;simple_selector_matches&amp;lt;/code&amp;gt; function&lt;br /&gt;
*** Handles a single simple selector component, now with:&lt;br /&gt;
**** &#039;&#039;&#039;Attribute selectors&#039;&#039;&#039;: &amp;lt;code&amp;gt;[attr]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[attr=val]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;[attr=&amp;amp;quot;val&amp;amp;quot;]&amp;lt;/code&amp;gt; — parses the bracket, splits on &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;, strips quotes, checks the node&#039;s attribute&lt;br /&gt;
**** &#039;&#039;&#039;Pseudo-elements&#039;&#039;&#039;: &amp;lt;code&amp;gt;::after&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;::before&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;::marker&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;::placeholder&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;::selection&amp;lt;/code&amp;gt; — always accepted (we don&#039;t render them, but the selector matches the base element so its other properties still apply)&lt;br /&gt;
**** &#039;&#039;&#039;&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; with attribute selectors&#039;&#039;&#039;: &amp;lt;code&amp;gt;*[attr=val]&amp;lt;/code&amp;gt; works&lt;br /&gt;
**** Uses &amp;lt;code&amp;gt;css_classlist_has&amp;lt;/code&amp;gt; (local, no strtok) instead of &amp;lt;code&amp;gt;classlist_has&amp;lt;/code&amp;gt; (which lives in web_js.c)&lt;br /&gt;
** Rewritten &amp;lt;code&amp;gt;selector_matches&amp;lt;/code&amp;gt; function&lt;br /&gt;
*** Now handles &#039;&#039;&#039;compound selectors&#039;&#039;&#039; with combinators:&lt;br /&gt;
**** &#039;&#039;&#039;Descendant&#039;&#039;&#039; (space): &amp;lt;code&amp;gt;.tog input&amp;lt;/code&amp;gt; — walks up ancestors checking each part right-to-left&lt;br /&gt;
**** &#039;&#039;&#039;Adjacent sibling&#039;&#039;&#039; (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;): &amp;lt;code&amp;gt;input + .tog-sw&amp;lt;/code&amp;gt; — checks the immediately preceding sibling&lt;br /&gt;
**** Splits the selector at spaces and &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (respecting &amp;lt;code&amp;gt;[bracket]&amp;lt;/code&amp;gt; depth so &amp;lt;code&amp;gt;[type=checkbox]&amp;lt;/code&amp;gt; doesn&#039;t get split)&lt;br /&gt;
**** Each part is matched via &amp;lt;code&amp;gt;simple_selector_matches&amp;lt;/code&amp;gt;&lt;br /&gt;
**** Guard counter on all ancestor walks prevents infinite loops&lt;br /&gt;
** DPad scroll restored&lt;br /&gt;
*** DPad Up/Down/Left/Right now scrolls the web page via &amp;lt;code&amp;gt;we_page_scroll_by(0, ±30)&amp;lt;/code&amp;gt; when &amp;lt;code&amp;gt;g_web_engine.loaded&amp;lt;/code&amp;gt; is true. Falls back to text-mode scroll when the engine isn&#039;t loaded. Circle Pad is always cursor-only.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.44&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CSS Custom Properties (Variables) — &amp;lt;code&amp;gt;var()&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;:root&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** The biggest addition. &amp;lt;code&amp;gt;:root { --bg: #000; }&amp;lt;/code&amp;gt; stores custom properties in a global variable table. &amp;lt;code&amp;gt;var(--bg)&amp;lt;/code&amp;gt; is resolved at parse time before any property handler runs — works in colors, lengths, and any value. Supports &amp;lt;code&amp;gt;var(--name, fallback)&amp;lt;/code&amp;gt; syntax and recursive resolution (variables referencing other variables). Up to 64 variables stored. Reset on page recompile.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;@media&amp;lt;/code&amp;gt; Queries — Graceful Skip&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;@media(max-width: 680px) { ... }&amp;lt;/code&amp;gt; is now parsed and skipped gracefully (with proper brace-nesting tracking). Previously, &amp;lt;code&amp;gt;@media&amp;lt;/code&amp;gt; would confuse the stylesheet parser and corrupt all subsequent rules. Also skips &amp;lt;code&amp;gt;@keyframes&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;@import&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;@font-face&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;@charset&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;:root&amp;lt;/code&amp;gt; Selector&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;:root { ... }&amp;lt;/code&amp;gt; declarations are applied as a universal &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; rule with the lowest specificity, so &amp;lt;code&amp;gt;:root&amp;lt;/code&amp;gt; properties cascade to all elements via inheritance. Custom properties (&amp;lt;code&amp;gt;--name: value&amp;lt;/code&amp;gt;) are stored in the variable table.&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;:not()&amp;lt;/code&amp;gt; Selector&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;:not(.hidden)&amp;lt;/code&amp;gt; now works. The inner selector is recursively matched and negated. Forward-declared to handle the mutual recursion between &amp;lt;code&amp;gt;pseudo_matches&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;pseudo_not_matches&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;selector_matches&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Comma-Separated Selectors&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;h1, h2, h3 { ... }&amp;lt;/code&amp;gt; now creates a separate rule for each sub-selector instead of creating one rule with a comma in the selector (which never matched anything).&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;!important&amp;lt;/code&amp;gt; Support&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;color: red !important&amp;lt;/code&amp;gt; is now accepted — the &amp;lt;code&amp;gt;!important&amp;lt;/code&amp;gt; suffix is stripped before parsing. All declarations are treated as having the same specificity (later wins), so &amp;lt;code&amp;gt;!important&amp;lt;/code&amp;gt; doesn&#039;t change cascade behavior but no longer causes parse failures.&lt;br /&gt;
* &#039;&#039;&#039;New CSS Properties (15 additions)&#039;&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;box-sizing&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;border-box&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;content-box&amp;lt;/code&amp;gt; (parsed, stored)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;flex&amp;lt;/code&amp;gt; shorthand&lt;br /&gt;
| &amp;lt;code&amp;gt;flex: 1&amp;lt;/code&amp;gt; → grow=1; &amp;lt;code&amp;gt;flex: 1 0 auto&amp;lt;/code&amp;gt; → grow/shrink/basis&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;flex-shrink&amp;lt;/code&amp;gt;&lt;br /&gt;
| Default 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;flex-basis&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; or length&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;pointer-events&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;user-select&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outline&amp;lt;/code&amp;gt;&lt;br /&gt;
| Width + color (simplified, no layout impact)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;outline-width&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;outline-color&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;outline-style&amp;lt;/code&amp;gt;&lt;br /&gt;
| Individual properties&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;text-transform&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;uppercase&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;lowercase&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;capitalize&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;letter-spacing&amp;lt;/code&amp;gt;&lt;br /&gt;
| px or &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;line-height&amp;lt;/code&amp;gt;&lt;br /&gt;
| px, unitless multiplier, or &amp;lt;code&amp;gt;normal&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list-style&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;list-style-type&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;disc&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;circle&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;square&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;decimal&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;object-fit&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;fill&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;contain&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;cover&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;min/max-width/height&amp;lt;/code&amp;gt;&lt;br /&gt;
| Now handles &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; correctly&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.43&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;UI: DPad = Scroll, Circle Pad = Cursor (fixed)&#039;&#039;&#039;&lt;br /&gt;
** The biggest UX fix: DPad and Circle Pad no longer conflict. Previously, DPad both scrolled the fallback text renderer AND sent arrow key events to web content — pressing Up would scroll the page &#039;&#039;and&#039;&#039; fire a &amp;lt;code&amp;gt;keydown(&amp;amp;quot;ArrowUp&amp;amp;quot;)&amp;lt;/code&amp;gt; at the same time. Circle Pad could also trigger scroll in some paths.&lt;br /&gt;
** &#039;&#039;&#039;Now:&#039;&#039;&#039;&lt;br /&gt;
*** &#039;&#039;&#039;DPad&#039;&#039;&#039; scrolls the web page (30px per press, all four directions). When the web engine isn&#039;t loaded, it scrolls the fallback text output instead.&lt;br /&gt;
*** &#039;&#039;&#039;Circle Pad&#039;&#039;&#039; always moves the cursor — it never scrolls, in any mode.&lt;br /&gt;
*** DPad was removed from the web content key map entirely, so no more phantom arrow key events.&lt;br /&gt;
*** Only &#039;&#039;&#039;Y&#039;&#039;&#039; (Space) generates a keyboard event for web content.&lt;br /&gt;
*** Controls help screen updated to reflect the new assignments.&lt;br /&gt;
* &#039;&#039;&#039;Cookie Clicker Compatibility: 3 Major JS APIs Added&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;element.classList&amp;lt;/code&amp;gt;&#039;&#039;&#039; — Cookie Clicker (and most modern JS) uses &amp;lt;code&amp;gt;classList.add()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.remove()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.toggle()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.contains()&amp;lt;/code&amp;gt; extensively. Previously only &amp;lt;code&amp;gt;className&amp;lt;/code&amp;gt; existed. Now &amp;lt;code&amp;gt;classList&amp;lt;/code&amp;gt; returns a live object with all four methods that manipulate the node&#039;s &amp;lt;code&amp;gt;class&amp;lt;/code&amp;gt; attribute and trigger &amp;lt;code&amp;gt;css_compute_node&amp;lt;/code&amp;gt; so styles re-cascade.&lt;br /&gt;
** &#039;&#039;&#039;Live &amp;lt;code&amp;gt;element.style&amp;lt;/code&amp;gt; object&#039;&#039;&#039; — Cookie Clicker does &amp;lt;code&amp;gt;element.style.display = &#039;none&#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;element.style.left = &#039;100px&#039;&amp;lt;/code&amp;gt;, etc. Previously &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; was a dead object — setting properties did nothing. Now the style object is wrapped in a &#039;&#039;&#039;Duktape Proxy&#039;&#039;&#039; that intercepts every property get/set:&lt;br /&gt;
*** &#039;&#039;&#039;Get&#039;&#039;&#039; (&amp;lt;code&amp;gt;element.style.display&amp;lt;/code&amp;gt;): parses the inline &amp;lt;code&amp;gt;style&amp;lt;/code&amp;gt; attribute and returns the property value.&lt;br /&gt;
*** &#039;&#039;&#039;Set&#039;&#039;&#039; (&amp;lt;code&amp;gt;element.style.display = &#039;none&#039;&amp;lt;/code&amp;gt;): updates the inline style string via a C-backed &amp;lt;code&amp;gt;cssText&amp;lt;/code&amp;gt; setter, triggers &amp;lt;code&amp;gt;css_compute_node&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;dom_mark_dirty&amp;lt;/code&amp;gt; so the layout and renderer pick up the change immediately.&lt;br /&gt;
** &#039;&#039;&#039;&amp;lt;code&amp;gt;onclick&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;onload&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;onerror&amp;lt;/code&amp;gt; property handlers&#039;&#039;&#039; — Cookie Clicker assigns &amp;lt;code&amp;gt;element.onclick = function(){...}&amp;lt;/code&amp;gt; instead of using &amp;lt;code&amp;gt;addEventListener&amp;lt;/code&amp;gt; or inline &amp;lt;code&amp;gt;onclick=&amp;amp;quot;...&amp;amp;quot;&amp;lt;/code&amp;gt; attributes. Previously only inline attribute handlers and &amp;lt;code&amp;gt;addEventListener&amp;lt;/code&amp;gt; worked. Now &amp;lt;code&amp;gt;we_dispatch&amp;lt;/code&amp;gt; checks for JS function properties on the node object (&amp;lt;code&amp;gt;onclick&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;onmousedown&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;onload&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;onsubmit&amp;lt;/code&amp;gt;, etc.) and calls them with a proper event object. Supports all 13 event types.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.42&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CSS Transitions&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;transition: 0.3s ease-in-out&amp;lt;/code&amp;gt; now actually animates. When a style property changes on an element with a transition duration, the old and new values are interpolated over the duration using smoothstep easing. Supports 25 numeric properties (opacity, width, height, margins, padding, position, font-size, border, transforms) plus color properties (color, background) which interpolate per-channel. The transition engine runs in the frame loop and marks transitioning nodes dirty so layout re-runs each frame to reflect the changing values.&lt;br /&gt;
* &#039;&#039;&#039;Box-Shadow&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;box-shadow: 2px 2px 4px rgba(0,0,0,0.5)&amp;lt;/code&amp;gt; is parsed into offset/blur/color and drawn as a semi-transparent rect behind the element before the background fill. No real gaussian blur (3DS hardware can&#039;t do that efficiently), but the spread approximation looks reasonable for most UI shadows.&lt;br /&gt;
* &#039;&#039;&#039;Linear-Gradient Backgrounds&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;background: linear-gradient(to right, red, blue)&amp;lt;/code&amp;gt; is parsed into start/end colors and a direction, then rendered as 16 interpolated color bands. Supports &amp;lt;code&amp;gt;to right/bottom/left/top&amp;lt;/code&amp;gt; directions and &amp;lt;code&amp;gt;Ndeg&amp;lt;/code&amp;gt; angles. Falls back to solid &amp;lt;code&amp;gt;background&amp;lt;/code&amp;gt; color when no gradient is active. Transparent colors work correctly (uses explicit &amp;amp;quot;set&amp;amp;quot; flags instead of checking for zero).&lt;br /&gt;
* &#039;&#039;&#039;CSS Grid Layout&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;display: grid&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;grid-template-columns&amp;lt;/code&amp;gt; now lays out children in a grid. Supports fixed pixel widths, &amp;lt;code&amp;gt;fr&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; (equal distribution), and &amp;lt;code&amp;gt;repeat(N, ...)&amp;lt;/code&amp;gt; syntax up to 8 columns. Rows auto-size to the tallest cell, gap is applied between cells, and children are vertically centered within their row.&lt;br /&gt;
* &#039;&#039;&#039;CSS &amp;lt;code&amp;gt;calc()&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;calc(100% - 20px)&amp;lt;/code&amp;gt; is now evaluated at layout time. Supports &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; with correct operator precedence, and all length units (px, em, rem, vw, vh, %) work inside calc terms. Self-contained in the length parser — no new systems.&lt;br /&gt;
* &#039;&#039;&#039;Form Submission&#039;&#039;&#039;&lt;br /&gt;
** Clicking a &amp;lt;code&amp;gt;&amp;amp;lt;button type=&amp;amp;quot;submit&amp;amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;input type=&amp;amp;quot;submit&amp;amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; inside a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; now fires the form&#039;s &amp;lt;code&amp;gt;onsubmit&amp;lt;/code&amp;gt; handler and dispatches a &amp;lt;code&amp;gt;submit&amp;lt;/code&amp;gt; event. This replaces the old START-key approach which conflicted with START=exit-run-mode.&lt;br /&gt;
* &#039;&#039;&#039;Keybind Conflict Fixes&#039;&#039;&#039;&lt;br /&gt;
** Resolved button assignment conflicts between the app shell and web content event system. In run mode, only DPad (arrow keys) and Y (Space) generate keyboard events for web content. A/B/X/L/R/START are exclusively mouse clicks, cursor lock, and exit-run-mode — no more phantom keydown events alongside mouse clicks.&lt;br /&gt;
* &#039;&#039;&#039;Bug Fixes&#039;&#039;&#039;&lt;br /&gt;
** IndexedDB path overflow: &amp;lt;code&amp;gt;store&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; strings from JS are now length-validated to prevent path truncation&lt;br /&gt;
** IndexedDB &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt; return logic: was returning true for empty files&lt;br /&gt;
** IndexedDB &amp;lt;code&amp;gt;clear()&amp;lt;/code&amp;gt; prefix buffer: enlarged from 80 to 128 bytes to handle longer store names&lt;br /&gt;
** Transition color precision: RGBA8 colors now stored as uint32 (not float) to avoid precision loss past 2^24&lt;br /&gt;
** Gradient transparent-color: &amp;lt;code&amp;gt;0x00000000&amp;lt;/code&amp;gt; (transparent) no longer treated as &amp;amp;quot;unset&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.41&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; text entry&#039;&#039;&#039;&lt;br /&gt;
** New &amp;lt;code&amp;gt;we_input_prompt()&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;web_events.c&amp;lt;/code&amp;gt; opens the 3DS software keyboard when a click lands on an &amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or an ancestor of one). Reads the current &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute, shows it as initial text, writes the result back, fires &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;change&amp;lt;/code&amp;gt; events, and marks the node dirty so the renderer shows the new text.&lt;br /&gt;
** New &amp;lt;code&amp;gt;we_text_input()&amp;lt;/code&amp;gt; helper wraps &amp;lt;code&amp;gt;swkbdInit&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;swkbdInputText&amp;lt;/code&amp;gt; for reuse.&lt;br /&gt;
* &#039;&#039;&#039;CSS &amp;lt;code&amp;gt;transform: translate()&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;wrender_node&amp;lt;/code&amp;gt; now applies &amp;lt;code&amp;gt;translate_x&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;translate_y&amp;lt;/code&amp;gt; to the draw position, and folds the offset into the children&#039;s &amp;lt;code&amp;gt;ox&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;oy&amp;lt;/code&amp;gt; so children move with the translated parent. ~6 lines of real logic; the parser already stored the values since v0.39.&lt;br /&gt;
* &#039;&#039;&#039;Word-wrap in the layout engine&#039;&#039;&#039;&lt;br /&gt;
** Replaced the naive &amp;lt;code&amp;gt;tw/avail_w + 1&amp;lt;/code&amp;gt; character-count wrapping with proper word-boundary wrapping. Walks the text word by word, tracks line width, breaks when the next word would overflow. Hard-breaks words longer than a full line. Respects &amp;lt;code&amp;gt;white-space: pre&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nowrap&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;CSS &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;:nth-child&amp;lt;/code&amp;gt; pseudo-classes&#039;&#039;&#039;&lt;br /&gt;
** New &amp;lt;code&amp;gt;pseudo_matches()&amp;lt;/code&amp;gt; function checks &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:active&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:checked&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:disabled&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:first-child&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:last-child&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:nth-child(n/odd/even)&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;selector_matches()&amp;lt;/code&amp;gt; rewritten to split selectors at &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; and check the pseudo-class after the base selector matches. Supports chained pseudos (&amp;lt;code&amp;gt;a:focus:hover&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Dynamic re-cascade: &amp;lt;code&amp;gt;we_events_update&amp;lt;/code&amp;gt; marks nodes dirty on hover/focus changes; &amp;lt;code&amp;gt;we_update&amp;lt;/code&amp;gt; now re-runs &amp;lt;code&amp;gt;css_cascade&amp;lt;/code&amp;gt; (not just &amp;lt;code&amp;gt;layout_document&amp;lt;/code&amp;gt;) when nodes are dirty, so &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt; styles apply dynamically.&lt;br /&gt;
* &#039;&#039;&#039;Keyboard input to web content&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;window.prompt(message, default)&amp;lt;/code&amp;gt; now opens the 3DS software keyboard and returns the typed string (was a no-op stub returning &amp;lt;code&amp;gt;undefined&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Clicking an &amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; opens the keyboard (Feature 1 above).&lt;br /&gt;
* &#039;&#039;&#039;localStorage persistence + IndexedDB completion&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;IndexedDB C API hardened&#039;&#039;&#039;: &amp;lt;code&amp;gt;ws_idb_open&amp;lt;/code&amp;gt; now checks for existing databases with the same name (no duplicates); &amp;lt;code&amp;gt;ws_idb_get&amp;lt;/code&amp;gt; validates &amp;lt;code&amp;gt;fread&amp;lt;/code&amp;gt; return (was a potential underflow); &amp;lt;code&amp;gt;ws_idb_clear&amp;lt;/code&amp;gt; is no longer a no-op — it scans the directory with &amp;lt;code&amp;gt;opendir&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;readdir&amp;lt;/code&amp;gt; and removes all files matching the store prefix; all functions now have proper NULL/bounds checks.&lt;br /&gt;
** &#039;&#039;&#039;IndexedDB JS bindings&#039;&#039;&#039;: &amp;lt;code&amp;gt;ws_install_idb&amp;lt;/code&amp;gt; now installs a real &amp;lt;code&amp;gt;indexedDB&amp;lt;/code&amp;gt; object to JS with &amp;lt;code&amp;gt;open()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;put()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clear()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;close()&amp;lt;/code&amp;gt; methods. &amp;lt;code&amp;gt;put()&amp;lt;/code&amp;gt; JSON-encodes values; &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt; safely JSON-parses them back (falls back to string if not valid JSON). The &amp;amp;quot;IndexedDB&amp;amp;quot; feature pill is now actually true.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.38&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Crash / correctness bugs:&#039;&#039;&#039;&lt;br /&gt;
** Canvas 2D silently broken — wc_install_bindings() built its property-setup script with snprintf into a 512-byte buffer, but the actual script is 854 bytes. It was truncating mid-statement, so ctx.fillStyle = &#039;red&#039; and every other canvas property setter did nothing, with zero error shown. Now passed as a literal directly to duk_eval_string — no buffer, no truncation possible.&lt;br /&gt;
** Event listeners could misfire — DOMEvent.js_ref was a uint8_t, silently wrapping after the 255th addEventListener() call in a session and firing the wrong callback. Widened to uint16_t.&lt;br /&gt;
** Listener ref counter never reset — it was a function-local static that persisted across every recompile instead of resetting with the fresh Duktape context each page load gets. Moved to file scope with an explicit reset tied to context creation.&lt;br /&gt;
** Unchecked array access in we_document_open() — switched to the existing bounds-checked accessor so a corrupted sibling chain can&#039;t read out-of-bounds memory.&lt;br /&gt;
* &#039;&#039;&#039;Stack-safety hardening (3DS has only 256KB of stack):&#039;&#039;&#039;&lt;br /&gt;
** ~3KB of stacked buffers in the CSS parser — css_parse_inline&#039;s 2048-byte buffer is called while css_parse_stylesheet&#039;s 1024-byte buffer is still live. Both made static (verified safe: parsing is never re-entrant).&lt;br /&gt;
** Unbounded layout recursion — nothing stopped a deeply-nested DOM tree (up to the 1024-node cap) from recursing that many stack frames deep. Added a depth guard capped well above any realistic page.&lt;br /&gt;
* Version v0.37 was skipped due to issues with a beta build.&lt;br /&gt;
* CIA files will be added in version 1.0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.36&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Crash / correctness fixes:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;editor_find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;editor_find_prev&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;start_line&amp;lt;/code&amp;gt; was not clamped before use — with a corrupted or uninitialized value it could make &amp;lt;code&amp;gt;editor_get_line&amp;lt;/code&amp;gt; walk off the end of the buffer. Now clamped to &amp;lt;code&amp;gt;[0, total-1]&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;editor_replace_at&amp;lt;/code&amp;gt;: added &amp;lt;code&amp;gt;col &amp;gt; llen&amp;lt;/code&amp;gt; guard so an exact-end-of-line replacement can&#039;t produce a negative memcpy count.&lt;br /&gt;
** &amp;lt;code&amp;gt;we_eval_js&amp;lt;/code&amp;gt;: added &amp;lt;code&amp;gt;!g_web_engine.loaded&amp;lt;/code&amp;gt; check — without it, a stale non-NULL &amp;lt;code&amp;gt;js_ctx&amp;lt;/code&amp;gt; pointer left from a previous &amp;lt;code&amp;gt;we_unload()&amp;lt;/code&amp;gt; call could be dereferenced.&lt;br /&gt;
** &amp;lt;code&amp;gt;draw_console&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;i &amp;lt; WJS_LOG_MAX_LINES&amp;lt;/code&amp;gt; guard added — a corrupted &amp;lt;code&amp;gt;g_wjs_log_n&amp;lt;/code&amp;gt; could have caused a read past the log array bounds.&lt;br /&gt;
* &#039;&#039;&#039;Compiler warning fixes:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;(down &amp;amp; KEY_X) &amp;amp;&amp;amp; ...&amp;lt;/code&amp;gt; — explicit parentheses added (GCC -Wall warning eliminated).&lt;br /&gt;
** Two &amp;lt;code&amp;gt;strcat()&amp;lt;/code&amp;gt; calls replaced with &amp;lt;code&amp;gt;strncat()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;LAYOUT_ED_H&amp;lt;/code&amp;gt; corrected to &amp;lt;code&amp;gt;178.0f&amp;lt;/code&amp;gt; (was &amp;lt;code&amp;gt;180.0f&amp;lt;/code&amp;gt;) — the 2px mismatch caused the cursor-to-line mapping to select the wrong line near the bottom of the editor panel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.34&#039;&#039;&#039;&lt;br /&gt;
* Slight UI changes&lt;br /&gt;
* Bordered rendering for text &amp;amp; iframe&lt;br /&gt;
* Memory usage fixes&lt;br /&gt;
* More accurate CSS parsing&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File&lt;br /&gt;
! Fixes/Changes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_layout.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Body &amp;lt;code&amp;gt;avail_w&amp;lt;/code&amp;gt; bug fixed: was &amp;lt;code&amp;gt;2×margin_left&amp;lt;/code&amp;gt;, now &amp;lt;code&amp;gt;margin_left + margin_right&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_layout.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Text node &amp;lt;code&amp;gt;lay_w&amp;lt;/code&amp;gt; uses full available container width for alignment.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Scale formula &amp;lt;code&amp;gt;size/11.0f&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;size/30.0f&amp;lt;/code&amp;gt; (correct for system font at scale 1.0 ≈ 30px).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| TEXT nodes use parent container width for proper text alignment.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Bottom border drawn on document viewport to frame the output area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_engine.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;css_apply_ua_defaults()&amp;lt;/code&amp;gt; called after &amp;lt;code&amp;gt;css_reset()&amp;lt;/code&amp;gt;, before parse — so user styles always win.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_engine.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| RUNNING bar cleaned up; conflicting title bar overlay removed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.5&#039;&#039;&#039;&lt;br /&gt;
* Hopefully fixed crashing issues&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.4&#039;&#039;&#039;&lt;br /&gt;
* MAYBE fixed crashing issues (untested, will update when tested)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.3&#039;&#039;&#039;&lt;br /&gt;
* Fixed surface-level crashing issues&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.2&#039;&#039;&#039;&lt;br /&gt;
* Maybe fixed crashing issues&lt;br /&gt;
* Stability fixes&lt;br /&gt;
* Fixed errors while compiling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33&#039;&#039;&#039;&lt;br /&gt;
* Fixed scrolling&lt;br /&gt;
* Fixed line truncation&lt;br /&gt;
* Added more complete rendering capabilities&lt;br /&gt;
* Added pointer lock integration&lt;br /&gt;
* Added page interaction&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.32&#039;&#039;&#039;&lt;br /&gt;
* Fixed the HTML rendering engine&lt;br /&gt;
* Slight UI changes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.31.1&#039;&#039;&#039;&lt;br /&gt;
* Completely overhauled the UI (AI was used to help with this)&lt;br /&gt;
* New frame buffer that minimizes the visual bug to almost unnoticeable proportions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pre-Release v0.30&#039;&#039;&#039;&lt;br /&gt;
* Fixed app crashing on file explorer open (MAYBE FR THIS TIME)&lt;br /&gt;
* Fixed the visual bug (kinda)&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
PocketCompiler project and idea by PlanetDogeCodes. Some browser runtime features, custom Canvas/WebGL Integration, and 3DS Optimizations were all made with help from GPT-5.5 (xhigh) and GLM 5.2 (max). Some UI elements and DOM-style event handling were made with help from Claude Sonnet 5 (high)&lt;br /&gt;
&lt;br /&gt;
Built with:&lt;br /&gt;
* Visual Studio Code&lt;br /&gt;
* devkitPro&lt;br /&gt;
* devkitARM&lt;br /&gt;
* libctru&lt;br /&gt;
* Citro2D&lt;br /&gt;
* Citro3D&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/PlanetDogeCodes/Pocket-Compiler&lt;br /&gt;
* Universal-DB - https://db.universal-team.net/3ds/pocket-compiler&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Chovy-sign_Vita&amp;diff=205704</id>
		<title>Chovy-sign Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Chovy-sign_Vita&amp;diff=205704"/>
		<updated>2026-07-17T02:08:16Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 2.0.7.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=Chovy-Sign&lt;br /&gt;
|image=chovysignvita.png&lt;br /&gt;
|description=Run any PS1 or PSP game on any PS Vita (including OFW).&lt;br /&gt;
|author=CBPS Team&lt;br /&gt;
|lastupdated=2026/07/14&lt;br /&gt;
|type=PC Utilities&lt;br /&gt;
|version=2.0.7.1&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://github.com/KuromeSan/chovy-sign/releases&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/12z59jd/release_chovysign_v2_now_with_ps1_support_run_any/&lt;br /&gt;
|source=https://silica.codes/SilicaAndPina/chovy-sign&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew PC Tools (PC Utilities) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=chovysignvita.png&lt;br /&gt;
|image_alt=Chovy-sign&lt;br /&gt;
}}&lt;br /&gt;
Chovy-Sign is an application that allows you to convert PSP and PS1 ISO&#039;s to be playable on unmodified PS Vita. The release was part of Project Chovy and was primarily created to allow PSP emulation on the PS Vita.&lt;br /&gt;
&lt;br /&gt;
It requires a valid (official) PSP or PS1 license to work, a PSP DLC license should also work. &lt;br /&gt;
&lt;br /&gt;
This tool is intended for making back up of the games that you actually own. The authors do not promote or condone piracy in any way.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Instructions can be found [https://silica.codes/SilicaAndPina/chovy-sign/src/branch/master/README.md here].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; ISOs made with Chovy-Sign are &amp;quot;clones&amp;quot; of the original &amp;quot;base game&amp;quot;, if you delete any of them it deletes the license.rif which breaks all the other &amp;quot;clones&amp;quot;. This can be fixed by re-downloading the base game off of the PSN or copying any &amp;quot;clone&amp;quot; over to your PS Vita again.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/chovysignvita-02.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;HOW TO Play PSP ISO&#039;s On PS VITA 3.71! NO CFW/ANY FIRMWARE! - ([https://www.youtube.com/watch?v=dSxMtWiBrEQ Tech James])&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;dSxMtWiBrEQ&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How To Play PSP Games On 3.71 FW Vita! *Without HENkaku/Trinity*&#039;&#039;&#039; ([https://www.youtube.com/watch?v=rX0swcSISTQ Nagato&#039;s Revenge]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;rX0swcSISTQ&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Works on FW 3.71 (CFW and OFW).&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v2.0.7.1&#039;&#039;&#039;&lt;br /&gt;
* Fix issue where it might download cover art even if its turned off(?)&lt;br /&gt;
* Attempt to fix icon sometimes being blank(?)&lt;br /&gt;
* Fix reading certain games with boot file prefixed with &amp;quot;CDROM:&amp;quot;.&lt;br /&gt;
* Fix __sce_ebootpbp generation when not building PSVIMG.&lt;br /&gt;
&#039;&#039;&#039;v2.0.7&#039;&#039;&#039;&lt;br /&gt;
* Add option to use atracdenc for at3 encode, instead of at3tool.&lt;br /&gt;
* Add a MacOS version.&lt;br /&gt;
* Expose elf signing code to CLI version.&lt;br /&gt;
* Add Flatpak version.&lt;br /&gt;
* Fix output paths when not building PSVIMG files.&lt;br /&gt;
* add options to change startdat and simpledat in CLI version.&lt;br /&gt;
&#039;&#039;&#039;v2.0.6&#039;&#039;&#039;&lt;br /&gt;
* Fixed saving settings on linux.&lt;br /&gt;
* Fixed an issue where clearing selected png would not reset the image used.&lt;br /&gt;
* Update to .net 10.0.&lt;br /&gt;
* Fixed simple.dat pgd key (maybe?).&lt;br /&gt;
* Fixed cover downloads.&lt;br /&gt;
* Fixed nopspemdrm option using the wrong accountid.&lt;br /&gt;
&#039;&#039;&#039;v2.0.5&#039;&#039;&#039;&lt;br /&gt;
* Added ability to use temporary files instead of doing it all in memory (useful if you dont have alot of RAM...).&lt;br /&gt;
* Added ability to use NoPspEmuDrm for users with a hacked console.&lt;br /&gt;
* Updated to .NET 9.0.&lt;br /&gt;
* Also uploaded a build of the original PBPResign tool by SquallATF (some ppl wanted it idk).&lt;br /&gt;
&#039;&#039;&#039;v2.0.4&#039;&#039;&#039;&lt;br /&gt;
* Fix a bug relating to icons&lt;br /&gt;
* Fix a bug where you cant turn on the psvimg build option again after disabling it again&lt;br /&gt;
&#039;&#039;&#039;v2.0.3&#039;&#039;&#039;&lt;br /&gt;
* PS1 or PSP eboot.pbp can now be used to obtain either PS1 or PSP versionkey.&lt;br /&gt;
* this makes non un-henkaku&#039;d vita equal with henkaku&#039;d ones again-&lt;br /&gt;
* (this also makes KEYS.TXT kind of redundant, but whatever, i kept it in anyway.&lt;br /&gt;
&#039;&#039;&#039;v2.0.2&#039;&#039;&#039;&lt;br /&gt;
* Fix some bin/cue parsing errors&lt;br /&gt;
* Add better error handling&lt;br /&gt;
* Add builds for the Linux operating system&lt;br /&gt;
&#039;&#039;&#039;v2.0.1&#039;&#039;&#039;&lt;br /&gt;
* Add Support for games protected with the LibCrypt Copy Protection.&lt;br /&gt;
* Add Support to read .SBI files.&lt;br /&gt;
* Add a little settings menu to change between libcrypt methods (magic word / subchannel).&lt;br /&gt;
* Add option to force a different disc id.&lt;br /&gt;
* Fix a bug with Multi Disc and PSP Signatures not generating properly.&lt;br /&gt;
&#039;&#039;&#039;v2.0&#039;&#039;&#039;&lt;br /&gt;
* Completely rewrote the entire thing.&lt;br /&gt;
* Added PS1 Support.&lt;br /&gt;
* Added key generation from rif using act.dat and idps.&lt;br /&gt;
* Made a command line version also.&lt;br /&gt;
&#039;&#039;&#039;beta03&#039;&#039;&#039;&lt;br /&gt;
* CHOVY-SIGN.exe now has an icon.&lt;br /&gt;
* Non-MINI&#039;s now show the #ChovyProject logo on bootup.&lt;br /&gt;
* Created my own version of PSVIMGTOOLS which runs faster and is more accurate to the .psvimg format.&lt;br /&gt;
* &amp;quot;Get keys from CMA&amp;quot; is now LIGHTSPEED.&lt;br /&gt;
* Now shows Progress Bar while signing the declaration of independance.&lt;br /&gt;
* CHOVY-GEN.exe is now intergrated into CHOVY.DLL.&lt;br /&gt;
* Fixed a bug where your CMA directory wouldnt be found automatically.&lt;br /&gt;
&#039;&#039;&#039;beta02&#039;&#039;&#039;&lt;br /&gt;
* Now works on 32-bit windows PC&#039;s&lt;br /&gt;
* MINI&#039;s games ISOs now show the &amp;quot;MINIS&amp;quot; boot screen&lt;br /&gt;
* Caught some execptions that wherent previously caught.&lt;br /&gt;
&#039;&#039;&#039;beta01&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
* SquallATF (for &amp;amp;quot;PspCrypto&amp;amp;quot; and &amp;amp;quot;PBPResigner&amp;amp;quot;, and making PS1 Game signing possible, And discovering a bug in __sce_ebootpbp handling that makes it possible to use multi-disc games.)&lt;br /&gt;
* Li: (for writing the original chovy-sign, Developing the GUI, finding the original psp bubbles method and, [https://github.com/KuromeSan/Sfo.NET/blob/master/README.md Sfo.NET] A Simple SFO Parser,&lt;br /&gt;
* Writing the PS1 Disc Compresison algorithm, making it possible to use custom ISOs, Writing C# Implementation of PSVIMGTOOLS, Being transgender)&lt;br /&gt;
* dots-tb (for [https://github.com/dots-tb/chovy-gen chovy-gen] (__sce_ebootpbp signing)&lt;br /&gt;
* Sony Computer Enterainment: (For at3tool)&lt;br /&gt;
* yifanlu &amp;amp;amp; xyz for the original [https://github.com/yifanlu/psvimgtools psvimgtools].&lt;br /&gt;
* Mathieulh (Found psp signing keys?)&lt;br /&gt;
* Motoharu (For helping dots with __sce_ebootpbp)&lt;br /&gt;
* Davee (For finding the PS1 Signing Key)&lt;br /&gt;
* xlenore (For [https://github.com/xlenore/psx-covers PS1 Cover Art])&lt;br /&gt;
* RupertAvery (For their fork of DiscUtils to add PS1 Support)&lt;br /&gt;
* SquallATF&#039;s PBPResigner and PSPCrypto were derived from :&lt;br /&gt;
** xdotnano ([https://github.com/xdotnano/PSXtract PSXTract])&lt;br /&gt;
** swarzesherz ([https://github.com/swarzesherz/sign_np sign_np])&lt;br /&gt;
** tpunix ([https://github.com/tpunix/kirk_engine kirk_engine])&lt;br /&gt;
** dcherednik (For [https://github.com/dcherednik/atracdenc atracdenc] Open source Atrac3 Encoder.)&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/12z59jd/release_chovysign_v2_now_with_ps1_support_run_any/&lt;br /&gt;
* Silica - https://silica.codes/SilicaAndPina/chovy-sign&lt;br /&gt;
* GitHub - https://github.com/KuromeSan/chovy-sign&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Unreal_Vita&amp;diff=205703</id>
		<title>Unreal Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Unreal_Vita&amp;diff=205703"/>
		<updated>2026-07-17T02:08:08Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: r7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=Unreal Vita&lt;br /&gt;
|image=UnrealVita.png&lt;br /&gt;
|description=Port of Unreal for PS Vita.&lt;br /&gt;
|author=fgsfds&lt;br /&gt;
|lastupdated=2025/11/16&lt;br /&gt;
|type=Shooter&lt;br /&gt;
|version=r7&lt;br /&gt;
|license=N/A&lt;br /&gt;
|download=https://github.com/fgsfdsfgs/UE1/releases&lt;br /&gt;
|website=https://github.com/fgsfdsfgs/UE1&lt;br /&gt;
|source=https://github.com/fgsfdsfgs/UE1&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Games (Shooter) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=UnrealVita.png&lt;br /&gt;
|image_alt=Unreal Vita&lt;br /&gt;
}}&amp;lt;!--UnrealVita.7z--&amp;gt;&lt;br /&gt;
Porting Unreal to the PS Vita involves using the reconstructed source code of Unreal Engine 1 v200. Unreal is a first-person shooter video game originally developed by Epic MegaGames and Digital Extremes, and published by GT Interactive for Microsoft Windows in May 1998.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Added SDL2 windowing/client driver (NSDLDrv).&lt;br /&gt;
* Added GLES2 and fixed pipeline GL graphics drivers (NOpenGLESDrv and NOpenGLDrv).&lt;br /&gt;
* Added OpenAL + libxmp audio driver (NOpenALDrv).&lt;br /&gt;
* Added GCC support and fixed a bunch of related bugs.&lt;br /&gt;
* Supported platforms: Windows (x86), Linux (x86, ARM32) and PSVita (ARM32).&lt;br /&gt;
* Editor UI is not supported.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
===Requirements===&lt;br /&gt;
* Assets from the original Unreal v200 retail release or from the v205 demo. Other versions have not been tested.&lt;br /&gt;
* libshacccg.suprx&lt;br /&gt;
* kubridge.skprx&lt;br /&gt;
&lt;br /&gt;
=== Linux and Windows ===&lt;br /&gt;
* Install the original retail v200 release of Unreal or the v205 demo.&lt;br /&gt;
* Copy over the new files:&lt;br /&gt;
** If you downloaded a ZIP from [https://github.com/fgsfdsfgs/UE1/releases Releases]:&lt;br /&gt;
*** Unzip said ZIP to the &amp;lt;code&amp;gt;Unreal&amp;lt;/code&amp;gt; folder. Overwrite everything.&lt;br /&gt;
** If you built the game yourself:&lt;br /&gt;
*** Copy the .dll/.so/.exe/.bin files you built to &amp;lt;code&amp;gt;Unreal/System&amp;lt;/code&amp;gt;. Overwrite everything.&lt;br /&gt;
*** Copy the contents of &amp;lt;code&amp;gt;Engine/Config&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Unreal/System&amp;lt;/code&amp;gt;. Overwrite everything.&lt;br /&gt;
* Run &amp;lt;code&amp;gt;System/Unreal.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== PS Vita ===&lt;br /&gt;
* Install the original retail v200 release of Unreal or the v205 demo onto your PC.&lt;br /&gt;
* Copy the contents of the &amp;lt;code&amp;gt;Unreal&amp;lt;/code&amp;gt; folder to &amp;lt;code&amp;gt;ux0:/data/unreal/&amp;lt;/code&amp;gt; on your PS Vita.&lt;br /&gt;
* Copy the &amp;lt;code&amp;gt;unreal&amp;lt;/code&amp;gt; folder from &amp;lt;code&amp;gt;unreal-arm-psvita-gcc.zip&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ux0:/data/&amp;lt;/code&amp;gt;. Overwrite everything.&lt;br /&gt;
* Install &amp;lt;code&amp;gt;unreal.vpk&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;unreal-arm-psvita-gcc.zip&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Run Unreal.&lt;br /&gt;
&lt;br /&gt;
Update warning: Due to how the save list works in vanilla Unreal, do not replace your current Unreal.ini when updating if you have saved games, or the save list in the Load Game menu will become empty. You still need to replace the other files, though.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/UnrealVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/UnrealVita-02.png&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;psvita-r7&#039;&#039;&#039;&lt;br /&gt;
* Performance improvements (PR [https://github.com/fgsfdsfgs/UE1/pull/45 #45]).&lt;br /&gt;
* Fixed potential collision hash-related crash.&lt;br /&gt;
* Fixed potential division by zero crash.&lt;br /&gt;
* Probably some other fixes.&lt;br /&gt;
&#039;&#039;&#039;psvita-r6&#039;&#039;&#039;&lt;br /&gt;
* Fixed the fan in Rrajigar Mines pushing you too fast at 60 FPS.&lt;br /&gt;
* Fixed lighting effects that are based on level time.&lt;br /&gt;
* Adjusted gamma calculation slightly.&lt;br /&gt;
* FOV should now be adjusted for widescreen (set &amp;lt;code&amp;gt;AutoFOV=0&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;[NOpenGLESDrv.NOpenGLESRenderDevice]&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;Unreal.ini&amp;lt;/code&amp;gt; to disable).&lt;br /&gt;
* Added a way to lock the game to 30 FPS (set &amp;lt;code&amp;gt;SwapInterval=2&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;Unreal.ini&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;[NOpenGLESDrv.NOpenGLESRenderDevice]&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Probably some other fixes.&lt;br /&gt;
&#039;&#039;&#039;psvita-r5&#039;&#039;&#039;&lt;br /&gt;
*Fixed crash at the end of the game.&lt;br /&gt;
&#039;&#039;&#039;psvita-r4&#039;&#039;&#039;&lt;br /&gt;
*Fixed saves crashing the game when WLAN is off.&lt;br /&gt;
&#039;&#039;&#039;psvita-r3&#039;&#039;&#039;&lt;br /&gt;
* Fixed overwriting saves.&lt;br /&gt;
* Dug.unr (Depths of Rrajigar) should now load.&lt;br /&gt;
* Fixed startup.png.&lt;br /&gt;
&#039;&#039;&#039;psvita-r2&#039;&#039;&#039;&lt;br /&gt;
* Possibly fixed save corruption bug.&lt;br /&gt;
* Config should now save when exiting via the PS button.&lt;br /&gt;
* Brightness is now implemented.&lt;br /&gt;
&#039;&#039;&#039;psvita-r1&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/fgsfdsfgs/UE1&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/unreal-pc-port-arm-psvita-gcc-r1-fgsfds.664671/&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1242&lt;br /&gt;
&lt;br /&gt;
[[Category:PC game ports on Vita]]&lt;br /&gt;
[[Category:Vita game ports]]&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=GimliDS&amp;diff=205702</id>
		<title>GimliDS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=GimliDS&amp;diff=205702"/>
		<updated>2026-07-17T02:08:03Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.7&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=GimliDS&lt;br /&gt;
|image=gimlids.png&lt;br /&gt;
|description=Commodore 64 emulator for the DS/DSi.&lt;br /&gt;
|author=Dave Bernazzani (wavemotion-dave)&lt;br /&gt;
|lastupdated=2026/07/014&lt;br /&gt;
|type=Computer&lt;br /&gt;
|version=1.7&lt;br /&gt;
|license=GPL-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/GimliDS.7z&lt;br /&gt;
|website=https://gbatemp.net/threads/gimlids.669877/&lt;br /&gt;
|source=https://github.com/wavemotion-dave/GimliDS&lt;br /&gt;
|donation=https://ko-fi.com/wavemotiondave&lt;br /&gt;
}}&lt;br /&gt;
GimliDS is a Commodore 64 emulator for the DS/DSi developed by Dave Bernazzani, partially based on Troy Davis&#039;s [[FrodoDS]], which itself is a port of Frodo originally written by Christian Bauer.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Commodore 64 with full 6510 CPU emulation, 64K of base memory, VIC II and SID chip rendering.&lt;br /&gt;
* PAL emulation at 50Hz provides the wide support for the C64 gaming scene.&lt;br /&gt;
* REU-1764 emulated with 256K of expanded memory.&lt;br /&gt;
* D64 disk file support for two 1541 drives (8, 9) with TrueDrive emulation optional (slower but compatible).&lt;br /&gt;
* CRT cartridge file support with writeback for EasyFlash (flash sectors) and GMOD2 (serial EE).&lt;br /&gt;
* Virtual touch-screen keyboard to replicate the C64 look and feel.&lt;br /&gt;
* Full key mapping of C64 Keyboard / Joystick to any of the main DS keys.&lt;br /&gt;
* Save/Load state so you can pickup gameplay right where you left off.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
You must have original Commodore BIOS files to run this emulator.&lt;br /&gt;
&lt;br /&gt;
Place them in /roms/bios or /roms/c64 and be sure they are named exactly as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;KERNAL.ROM   8K  with CRC32=dbe3e7c7 (901227-03)&lt;br /&gt;
BASIC.ROM    8K  with CRC32=f833d117 (901226-01)&lt;br /&gt;
CHAR.ROM     4K  with CRC32=ec4272ee (901225-01)&lt;br /&gt;
1541.ROM    16K  with CRC32=899fa3c5 (251968-03)&amp;lt;/pre&amp;gt;&lt;br /&gt;
For best performance, run it from a DSi/XL/LL via Twilight Menu++ or Unlaunch (134MHz, no frameskip, better audio). Flashcarts like R4 use a slower &amp;amp;quot;Compatibility&amp;amp;quot; mode (67MHz, light frameskip).&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
&#039;&#039;&#039;How to use:&#039;&#039;&#039;&lt;br /&gt;
* Launch GimliDS.NDS on your DS.&lt;br /&gt;
* At the CBM BASIC &amp;amp;quot;READY&amp;amp;quot; prompt, use the DISK ICON to mount a .d64 game file.&lt;br /&gt;
* Once mounted, select the exit to menu option then press the Start button to auto-type &amp;lt;code&amp;gt;LOAD &amp;amp;quot;*&amp;amp;quot;,8,1&amp;lt;/code&amp;gt; and run the game.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039;&lt;br /&gt;
* The C= key on the lower right will let you set configuration for the game, save/load game states, etc.&lt;br /&gt;
* Use the Select button to swap joystick ports.&lt;br /&gt;
* Use L/R+D-Pad to scale and offset the screen. Settings are saved per game.&lt;br /&gt;
* You can remap any DS keys to &#039;PAN UP&#039; or &#039;PAN DOWN&#039; to temporarily shift the screen by 16 pixels up/down.&lt;br /&gt;
* You can assign any DS keys to &#039;TOGGLE ZOOM&#039; in configuration for a 1:1 pixel mode to easy text reading.&lt;br /&gt;
* A few games use custom loaders that require &#039;True Drive&#039; to be enabled. It mimics the original disk drive but it could take 2-5 minutes to load a game. It is recommended to create a save state after loading to avoid waiting for it to load again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cartridge support:&#039;&#039;&#039; (up to 1MB)&lt;br /&gt;
* Standard 8K&lt;br /&gt;
* Standard 16K&lt;br /&gt;
* Ultimax Carts (8K or 16K)&lt;br /&gt;
* Final Cartridge III up to 256K&lt;br /&gt;
* Action Replay Carts (v4.x, 5.x) up to 32K&lt;br /&gt;
* Super Game Carts up to 64K&lt;br /&gt;
* FunPlay/PowerPlay Carts at 64K&lt;br /&gt;
* Westermann Carts at 16K&lt;br /&gt;
* Comal80 Cart 64K&lt;br /&gt;
* Dinamic up to 128K&lt;br /&gt;
* C64 Games System up to 512K&lt;br /&gt;
* Ocean up to 512K&lt;br /&gt;
* Magic Desk up to 1MB&lt;br /&gt;
* EasyFlash up to 1MB with 256b RAM and Flash Write support&lt;br /&gt;
* GMOD2 up to 512K with 2K of Serial EE write support&lt;br /&gt;
* Magic Desk 16K (aka Magic Desk 2) up to 2MB on DSi or above only&lt;br /&gt;
&lt;br /&gt;
Refer to the [https://github.com/wavemotion-dave/GimliDS/blob/main/README.md readme] for more details.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
L+D-Pad - Scale the screen in the X and Y directions&lt;br /&gt;
&lt;br /&gt;
R+D-Pad - Offset the screen in the X and Y directions&lt;br /&gt;
&lt;br /&gt;
Start - Issue the infamous &amp;lt;code&amp;gt;LOAD &amp;amp;quot;*&amp;amp;quot;,8,1&amp;lt;/code&amp;gt; (be sure the emulator is at the READY prompt)&lt;br /&gt;
&lt;br /&gt;
Select - Switch between port1 and port2 that the joystick is in&lt;br /&gt;
&lt;br /&gt;
D-Pad - Joystick directions&lt;br /&gt;
&lt;br /&gt;
A - FIRE (can be remapped in Configuration)&lt;br /&gt;
&lt;br /&gt;
B - SPACE (can be remapped in Configuration)&lt;br /&gt;
&lt;br /&gt;
Y - RETURN (can be remapped in Configuration)&lt;br /&gt;
&lt;br /&gt;
X - Joy Up for games where you jump (can be remapped)&lt;br /&gt;
&lt;br /&gt;
Pressing and holding both shoulder buttons together will &#039;Turbo Warp&#039; the emulator (runs as fast as it can until you release).&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew2/images/gimlids2.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew2/images/gimlids3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew2/images/gimlids4.png&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew2/images/gimlids5.png&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;Version 1.7 2026/07/14&#039;&#039;&#039;&lt;br /&gt;
* Improved cold memory initialization for better accuracy.&lt;br /&gt;
* Fix for Turrican to allow SELECT to work to get past title screen.&lt;br /&gt;
* Fix for EasyFlash cart loading to default to 16K despite what ROM header says.&lt;br /&gt;
* Improved CPU1541 Drive 2K RAM mirror handling.&lt;br /&gt;
* Improved SD Card flush so that disk files write-back immediately (so if you power off your DS the file will be properly saved).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.6 2025/12/10&#039;&#039;&#039;&lt;br /&gt;
* New 50Hz True Sync mode which changes the DS native 60Hz refresh to a 50Hz refresh and syncronizes the emulation to provide a nearly tear-free experience.&lt;br /&gt;
* New Favorites system implemented - press SELECT on game select to toggle LIKE/LOVE.&lt;br /&gt;
* Improved CPU timing accuracy for &#039;borrowed cycles&#039;, floppy cycles, etc. More games run more correctly.&lt;br /&gt;
* Improved SID emulation timing - DS-Lite gets a nice sound improvement and fixed bug on DSi for improved rendering.&lt;br /&gt;
* Major reworking of configuration options, all config options are reset with this release.&lt;br /&gt;
* Configuration changes allow you to press and hold the D-PAD to make rapid changes of things like key maps.&lt;br /&gt;
* Pressing X in configuration allow restoring of factory defaults for that game only.&lt;br /&gt;
* New CIA timer adjustment for slight tweaks that some games need (e.g. Flying Shark, Mr. Heli)&lt;br /&gt;
* New FLOPPY timer adjustment for slight tweaks that some games need (e.g. Dragon Wars now runs)&lt;br /&gt;
* Reverted CPU Adjustment to +0 (the +3 was too aggressive for some games - such as the new Sherwood!).&lt;br /&gt;
* Turrican I now works... press the DS SELECT key and hold for 1-2 seconds to get past the title screen.&lt;br /&gt;
* Fixed DS guru meditation (crash) error on some disk loads (fixes games like Barnsley Badger loading).&lt;br /&gt;
* Slight tweaks to disk icon graphics for read/writes.&lt;br /&gt;
* Slight optimization for another frame of performance.&lt;br /&gt;
* Numerous other small improvements that time forgets.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5e 2025/12/06&#039;&#039;&#039;&lt;br /&gt;
* Reverted CPU Adjustment to +0 (the +3 was too aggressive for some games - such as the new Sherwood!)&lt;br /&gt;
* New Favorites system implemented - press SELECT on game select to toggle LIKE/LOVE.&lt;br /&gt;
* Improved CPU timing accuracy for &#039;borrowed cycles&#039;, floppy cycles, etc. More games run more correctly.&lt;br /&gt;
* Major reworking of configuration options, all config options are reset with this release.&lt;br /&gt;
* New CIA timer adjustment for slight tweaks that some games need (e.g. Flying Shark, Mr. Heli)&lt;br /&gt;
* New FLOPPY timer adjustment for slight tweaks that some games need (e.g. Dragon Wars now runs)&lt;br /&gt;
* Turrican I now works... press the DS SELECT key and hold for 1-2 seconds to get past the title screen.&lt;br /&gt;
* Slight tweaks to disk icon graphics for read/writes.&lt;br /&gt;
* Slight optimization for another frame of performance.&lt;br /&gt;
&#039;&#039;&#039;Version 1.5b 2025/12/02&#039;&#039;&#039;&lt;br /&gt;
* Reverted CPU Adjustment to +0 (the +3 was too aggressive for some games - such as the new Sherwood!)&lt;br /&gt;
* Slight tweaks to disk icon flashing for read/writes.&lt;br /&gt;
* Slight optimization for another frame of performance.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.5 2025/10/08&#039;&#039;&#039;&lt;br /&gt;
* Added Ultimax support plus the first pass at some of the Freezer carts.&lt;br /&gt;
* Improved speed almost 15% across the board - helps DS-Lite run at the right speed and DSi gets additional sound improvements.&lt;br /&gt;
* Improved floppy icon handling - cosmetic change only on green/blue/red LED handling.&lt;br /&gt;
* Other minor tweaks and improvements under the hood as timer permitted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.4 2025/09/29&#039;&#039;&#039;&lt;br /&gt;
* Easyflash now supports flash writes with auto-persist to the SD card.&lt;br /&gt;
* GMOD2 cart type (60) supported with Serial EEPROM write to the SD card.&lt;br /&gt;
* Fixed Game Config so it properly restores the configuration last saved (oops!) - old configurations will be reset.&lt;br /&gt;
* Changed default keymap... B is now UP for help with platform/jumping games, X is SPACE typical for C64 games that need 2 buttons.&lt;br /&gt;
* Improved SID emulation on the DSi or above with the extra CPU horsepower.&lt;br /&gt;
* Improved keyboard screen dim handling.&lt;br /&gt;
* Fix .gss Save State names for cartridges.&lt;br /&gt;
* Save state tweaks and fixes. Old save states will be reset.&lt;br /&gt;
* Disk and Cartridges can be marked as read-only on a per game configuration basis. Use DISK/FLASH options.&lt;br /&gt;
* For the DSi and above (with the extra memory), 2MB MagicDesk 16K carts are supported (mainly for SNK vs Capcom - Stronger Edition)&lt;br /&gt;
* Added PAN LEFT / PAN RIGHT options to map keys to slide the screen left/right during gameplay.&lt;br /&gt;
* Other minor tweaks under the hood.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.3 2025/05/18&#039;&#039;&#039;&lt;br /&gt;
* New global options with a number of new configurations (dim screen, default buttons, etc).&lt;br /&gt;
* Added ability to swap LCD screens on the main Commodore menu.&lt;br /&gt;
* Slight extension of vertical pixel resolution for some games that utilize more raster lines (Gaplus, etc).&lt;br /&gt;
* Minor cleanup and refactor under the hood for improved maintainability and slight performance tweaks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.2 2025/05/16&#039;&#039;&#039;&lt;br /&gt;
* Added new DIAGONALS joystick mode for a few Q-Bert clones.&lt;br /&gt;
* Slide-n-Glide joystick mode made more responsive.&lt;br /&gt;
* Extended visual display by 4 pixels for a few games that utilize long screen renderings.&lt;br /&gt;
* Minor tweaks and efficiency improvements under the hood.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 2025/05/11&#039;&#039;&#039;&lt;br /&gt;
* Fix to CIA vars initialization so games like Chuckie Egg start properly.&lt;br /&gt;
* Fix to TOD clock counters (previous versions would not clock at all... fixes some utilities mostly).&lt;br /&gt;
* Improved REU handling for a bit more speed (gain of 1-2 frames on REU games)&lt;br /&gt;
* Improved VIC handling for a bit more speed (gain of 1-2 frames across the board)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 2025/05/09&#039;&#039;&#039;&lt;br /&gt;
* Added TOGGLE ZOOM button map to scale screen 1:1 temporarily (to make text games readable)&lt;br /&gt;
* Another proper fix for CPU jump commands not handling the extra cycle it takes.&lt;br /&gt;
* Fixed CPU zero-page wrap so it&#039;s accurate.&lt;br /&gt;
* Added 256K REU-1764 support. Still quite preliminary.&lt;br /&gt;
* A bit of polish and cleanup for the big first release!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9d 2025/05/06&#039;&#039;&#039;&lt;br /&gt;
* Added ability to remap the British Pound (£) symbol to one of the other rare missing keys (left arrow, up arrow, C=)&lt;br /&gt;
* Fix for CPU jump commands not handling the extra cycle it takes.&lt;br /&gt;
* All carts insertions do a proper reset so that we don&#039;t lock up when switching carts.&lt;br /&gt;
* Minor cartridge accuracy improvements - new LED added to cart icon for EasyFlash loading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9b/c 2025/05/05&#039;&#039;&#039;&lt;br /&gt;
* Pressing L+R shoulder buttons together is WARP mode (run emulator fast while the buttons are held)&lt;br /&gt;
* Improved L/R + DPAD scale/offset (so it doesn&#039;t also produce joystick input at the same time)&lt;br /&gt;
* Minor tweaks to TrueDrive mode for improved cycle accuracy&lt;br /&gt;
* CRT and PRG Cartridge support. Most popular game-based formats are supported. Use the new CART icon.&lt;br /&gt;
* 0.9c hot-fix release fixes the Cartridge Menu graphic and adds a bit more speed for the DS-Lite.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9a 2025/05/02&#039;&#039;&#039;&lt;br /&gt;
* Fixed TrueDrive loading so it doesn&#039;t alter the CPU speed (for games like Pang which were playing quite &#039;uneven&#039;).&lt;br /&gt;
* Bumped up volume of the SID output by 50% (was too quiet)&lt;br /&gt;
* Improved 1541 Drive emulation - mostly in the GCR and IEC areas. Nothing noticeable but should be more accurate.&lt;br /&gt;
* Fixed write floppy icon color (instead of the usual green, will flash blue).&lt;br /&gt;
* Tweaks to C64 keyboard graphic to be more authentic.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.9 2025/04/30&#039;&#039;&#039;&lt;br /&gt;
* New and improved key mapping - including the new Slide-n-Glide joysticks handling.&lt;br /&gt;
* SID filtering improved for better audio rendering (Space Taxi voice heard!).&lt;br /&gt;
* Faster across the board - even the DS-Lite/Phat is now running at (or close to) full speed.&lt;br /&gt;
* Fixed joystick handling so we sample at the correct rate - smoother motion on screen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 0.8 2025/04/27&#039;&#039;&#039;&lt;br /&gt;
* First public beta released!&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
Acknowledgements:&lt;br /&gt;
* The opening jingle was done by DeNL and comes courtesy of the roalty free jingles at pixabay.&lt;br /&gt;
* The dwarf icon on the title screen was submitted online by &#039;anonymous&#039; to an artwork site. If this is yours and you would like to be credited, please contact me.&lt;br /&gt;
* Christian Bauer - Original Frodo author - without whom none of this exists!&lt;br /&gt;
* Troy Davis(GPF) [http://gpf.dcemu.co.uk/ http://gpf.dcemu.co.uk] - FrodoDS initial porter and others who have contributed over the years.&lt;br /&gt;
* Wintermute and the contributors for devkitpro and libnds.&lt;br /&gt;
* djleviticus for his time and efforts in helping shake out some bugs during the beta testing.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/wavemotion-dave/GimliDS&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/gimlids.669877/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=CardWars-Vita&amp;diff=205701</id>
		<title>CardWars-Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=CardWars-Vita&amp;diff=205701"/>
		<updated>2026-07-17T02:07:57Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 4.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=CardWars-Vita&lt;br /&gt;
|image=CardWarsVita.png&lt;br /&gt;
|description=Native port of Adventure Time: Card Wars for PS Vita.&lt;br /&gt;
|author=Parindraaa&lt;br /&gt;
|lastupdated=2026/07/16&lt;br /&gt;
|type=Card&lt;br /&gt;
|version=4.5&lt;br /&gt;
|license=N/A&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/CardWarsVita.7z&lt;br /&gt;
|website=https://github.com/parindraaa867/AT-CardWars-Vita&lt;br /&gt;
|source=&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Games (Card) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=CardWarsVita.png&lt;br /&gt;
|image_alt=CardWars-Vita&lt;br /&gt;
}}&lt;br /&gt;
A native PS Vita port of Card Wars: Adventure Time. Originally released for iOS/Android and shut down along with its servers, this port was meant to get the PC Port running on Vita hardware for a bounty.&lt;br /&gt;
&lt;br /&gt;
Built with Unity 2017.4 (PSP2), based on the PC port of the decompiled game.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
No VPK is provided directly. Releases contain an xdelta patch that must be applied to your own copy of the original game. You need version 1.11.0 of CardWars for iOS 6.0 (CardWars 1.11.0 iOS IPA) (MUST BE ORIGINAL GAME FILES).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
* Install &amp;lt;code&amp;gt;CardWars_Stub.vpk&amp;lt;/code&amp;gt; on your Vita with [[VitaShell]].&lt;br /&gt;
* Download [[xdelta|xdelta3]] ([https://github.com/jmacd/xdelta-gpl/releases Windows builds available]) and put &amp;lt;code&amp;gt;xdelta3.exe&amp;lt;/code&amp;gt;, the IPA and &amp;lt;code&amp;gt;CardWarsData.xdelta&amp;lt;/code&amp;gt; in the same folder.&lt;br /&gt;
* Open a command prompt in that folder and run: &amp;lt;code&amp;gt;xdelta3 -d -B 536870912 -s Card_Wars_1.11.0_ios_6.0.ipa CardWarsData.xdelta CardWarsData.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract &amp;lt;code&amp;gt;CardWarsData.zip&amp;lt;/code&amp;gt; and copy its contents into &amp;lt;code&amp;gt;ux0:app/CWRS00001/&amp;lt;/code&amp;gt; and merge with the existing files. Launch Card Wars.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
* Runs much better on 444mhz/166mhz CPU/GPU clock than stock.&lt;br /&gt;
* Saves are stored in &amp;lt;code&amp;gt;ux0:/data/CardWars/&amp;lt;/code&amp;gt;. Saves survive updates and reinstalls as they are separate from the game&#039;s actual data files.&lt;br /&gt;
* When updating, new vpk must be installed, old vpk will not work with new data files.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/CardWarsVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/CardWarsVita-02.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Official Adventure Time Card Wars Launch Trailer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=5z9dX51mRrg TouchGameplay]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;5z9dX51mRrg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v4.5&#039;&#039;&#039;&lt;br /&gt;
* Touch inputs are mitigated, should not freeze anymore.&lt;br /&gt;
* Daily gift respins are 2 gems now, also rebalanced rewards received in daily gifts.&lt;br /&gt;
* Preloaded more battle assets and vfx, should lessen stutters during gameplay further.&lt;br /&gt;
* Added an option in settings for those who want a faster timing window.&lt;br /&gt;
* Languages such as German, Spanish (Spain), French, Italian, Latin American Spanish, and Portuguese should be supported.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v4&#039;&#039;&#039;&lt;br /&gt;
* Fixed persisting &amp;amp;quot;earned heart&amp;amp;quot; menu that wouldn&#039;t go away no matter what.&lt;br /&gt;
* Increased heap size for GC, should have less stutters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.5&#039;&#039;&#039;&lt;br /&gt;
* Fixed the &amp;amp;quot;You got a new HEART&amp;amp;quot; popup freezing the game after beating a mission.&lt;br /&gt;
* Fixed the infinity symbol shrinking or showing as numbers (like 14/14) on some screens.&lt;br /&gt;
* Fixed the gem confirmation popup staying on screen after closing the Daily Gift menu.&lt;br /&gt;
* Extra Daily Gift spins now cost 1 gem instead of 5.&lt;br /&gt;
* Fixed cards sometimes disappearing or clipping wrong in the card menus.&lt;br /&gt;
* Upped resolution for card art.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3&#039;&#039;&#039;&lt;br /&gt;
* THIS IS A MAJOR UPDATE WTH MIGRATION TO UNITY 2018&lt;br /&gt;
** Game rebuilt on Unity 2018 (from 2017). This resolves prevalent GPU crashes&lt;br /&gt;
** If there are GPU crashes, please make a GitHub issue. I&#039;ve tested this build for multiple hours on end and have not experienced a GPU crash. Feel free to make any GitHub issues about potential improvements and bugs too!&lt;br /&gt;
* &#039;&#039;&#039;Performance/Visuals fixes&#039;&#039;&#039;&lt;br /&gt;
** Boots up slightly faster due to unity 2018.&lt;br /&gt;
** Reduced stutters everywhere: game rescanned asset files way too often... (card frames, battle effects, spells, floop abilities, summons).&lt;br /&gt;
** Preload common battle effects, card art, and quest maps in loading screen.&lt;br /&gt;
** Card Box / Sell Cards menus optimized much better, a bit of lag with multiple cards on screen but greatly improved compared to performance previously, it actually is manageable.&lt;br /&gt;
** Quest map opens a bit faster and finger scrolling is slightly more improved.&lt;br /&gt;
** Boot music no longer crackles while the game loads.&lt;br /&gt;
** Attack effects no longer linger for a couple seconds on screen after damage.&lt;br /&gt;
** Card Wars splash screen now in place of Unity splash screen.&lt;br /&gt;
** Capped more particles to increase performance.&lt;br /&gt;
* Gameplay fixes and additions&lt;br /&gt;
** Face buttons (✕/○/□/△) now work in the timing minigame alongside touch.&lt;br /&gt;
** Fixed daily gift claiming not saving.&lt;br /&gt;
** New options in settings: MSAA 4x (anti-aliasing, restart to apply), prioritize timing (blacks out the 3d environment during the timing ring to reduce stuttering), 30 fps cap (don&#039;t know why I added this), toggle to disable camera shake, and an option to erase the save.&lt;br /&gt;
** Stamina fix: the heart now shows ∞ so you can play as much as you want. :)&lt;br /&gt;
** A small &amp;amp;quot;Saving...&amp;amp;quot; indicator appears whenever the game writes your save in the bottom right corner.&lt;br /&gt;
* &#039;&#039;&#039;Daily Gift fixes&#039;&#039;&#039;&lt;br /&gt;
** Real time clock now works with daily gift claiming.&lt;br /&gt;
** Broken timers from older versions can fix themselves.&lt;br /&gt;
** Rebalanced the reward wheel to actually be engaging for an offline game.&lt;br /&gt;
** Extra spins now cost 5 gems (was free on accident, oops).&lt;br /&gt;
** New players start with 500 coins and 10 gems.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; v2 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;To Do&#039;&#039;&#039;&lt;br /&gt;
** Reduce stutters in menu and gameplay caused by UI&lt;br /&gt;
** Make a menu to toggle anti-aliasing and other future performance/graphical settings&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Mitigated touch input loss during gameplay&lt;br /&gt;
** Fixed battle music not playing in Fionna &amp;amp; Cake quests (and a few other affected tracks)&lt;br /&gt;
** Removed invisible button in top right of quest map.&lt;br /&gt;
** Reclaimed 26MB of memory (headroom for more texture enhancements in the future)&lt;br /&gt;
** Upscaled more textures&lt;br /&gt;
** Turned up audio sampling rate (should sound better)&lt;br /&gt;
** Anti-aliasing enabled (MSAA 2x)&lt;br /&gt;
** Capped particles (reduced stuttering and mitigates chance of GPU crash)&lt;br /&gt;
** Minor performance improvements during gameplay&lt;br /&gt;
* &#039;&#039;&#039;Known Issue&#039;&#039;&#039;&lt;br /&gt;
** Very rare GPU crash that occurs as a result of GPU driver not responding to a call made from the game, (most likely cause is the game&#039;s GUI?)&lt;br /&gt;
** Happens very randomly, usually after several hours of playing on and off. (actively trying to find the root of this, I will be working on fixing this as my main focus)&lt;br /&gt;
* Saves are safe from updates! You don&#039;t need to worry about save data when installing this new patch and vpk.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; v1.5 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Optimized menus ( 30fps -&amp;gt; 60fps)&lt;br /&gt;
** Fixed heavy lag in deck manager&lt;br /&gt;
** Smoother scrolling in card lists&lt;br /&gt;
** Redid the pinch zoom gesture for quest map (much better)&lt;br /&gt;
** Slightly faster boot&lt;br /&gt;
** Removed &amp;quot;no connection&amp;quot; button in quest map (used to restart and crash app)&lt;br /&gt;
* &#039;&#039;&#039;Issues&#039;&#039;&#039;&lt;br /&gt;
** Card box can drop frames while scrolling fast through a large collection. (Cost to rebuild large UIs)&lt;br /&gt;
** Card glimmer effect on premium cards removed (as of now, huge performance boost in deck manager)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/parindraaa867/AT-CardWars-Vita&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1428&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PkHouse_Switch&amp;diff=205700</id>
		<title>PkHouse Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PkHouse_Switch&amp;diff=205700"/>
		<updated>2026-07-17T02:07:33Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.10.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=pkHouse&lt;br /&gt;
|image=pkHouseLocalPokeBankSwitch.png&lt;br /&gt;
|description=Nintendo Switch homebrew for local bank system for Pokemon Games.&lt;br /&gt;
|author=Insektaure&lt;br /&gt;
|lastupdated=2026/07/17&lt;br /&gt;
|type=Other Apps&lt;br /&gt;
|version=1.10.5&lt;br /&gt;
|license=GPL-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/pkHouseLocalPokeBankSwitch.7z&lt;br /&gt;
|website=https://gbatemp.net/threads/pkhouse-local-bank-system-for-pokemon-switch-games.679665/&lt;br /&gt;
|source=https://github.com/Insektaure/pkHouse&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Other Apps) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=pkHouseLocalPokeBankSwitch.png&lt;br /&gt;
|image_alt=pkHouse - Local PokeBank&lt;br /&gt;
}}&lt;br /&gt;
pkHouse is a Nintendo Switch homebrew application that provides a local bank system for Pokemon games. It allows moving Pokemon between save files and local bank storage directly on the console, similar to Pokemon HOME but as a free offline solution.&lt;br /&gt;
&lt;br /&gt;
The application supports multiple Pokemon games across different save formats, with automatic save backup, multi-select capabilities, search and filtering, and multiple color themes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Moving Pokemon between different games is not supported. Banks are separated by game family because transferred Pokemon would lack the HOME Tracker ID required for cross-game compatibility.&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
This software is provided &amp;quot;as-is&amp;quot; without any warranty. While the app has been tested, it may contain bugs that could corrupt or damage your save files.&lt;br /&gt;
&lt;br /&gt;
Use at your own risk. The author is not responsible for any data loss or damage to your save data.&lt;br /&gt;
&lt;br /&gt;
This is why the automatic backup system exists — always verify your backups before making changes.&lt;br /&gt;
&lt;br /&gt;
If you need to restore a backup, use a save manager such as [[Checkpoint Switch|Checkpoint]] or [[JKSV Switch|JKSV]] to import the backup files back onto your Switch.&lt;br /&gt;
&lt;br /&gt;
== Supported games ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Game !! Tested Version !! Save Format !! Boxes !! Slots/Box&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Let&#039;s Go Pikachu || 1.0.2 || BEEF blocks (&amp;lt;code&amp;gt;savedata.bin&amp;lt;/code&amp;gt;) || 40 || 25&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Let&#039;s Go Eevee || 1.0.2 || BEEF blocks (&amp;lt;code&amp;gt;savedata.bin&amp;lt;/code&amp;gt;) || 40 || 25&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Sword || 1.3.2 || SCBlock (&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;) || 32 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Shield || 1.3.2 || SCBlock (&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;) || 32 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Brilliant Diamond || 1.3.0 || Flat binary (&amp;lt;code&amp;gt;SaveData.bin&amp;lt;/code&amp;gt;) || 40 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Shining Pearl || 1.3.0 || Flat binary (&amp;lt;code&amp;gt;SaveData.bin&amp;lt;/code&amp;gt;) || 40 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Legends: Arceus || 1.1.1 || SCBlock (&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;) || 32 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Scarlet || 4.0.0 || SCBlock (&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;) || 32 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Violet || 4.0.0 || SCBlock (&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;) || 32 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon Legends: Z-A || 2.0.2 || SCBlock (&amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;) || 32 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon FireRed || 1.0.0 || GBA sectors (&amp;lt;code&amp;gt;FireRed_e.sav&amp;lt;/code&amp;gt;) || 14 || 30&lt;br /&gt;
|-&lt;br /&gt;
| Pokemon LeafGreen || 1.0.0 || GBA sectors (&amp;lt;code&amp;gt;LeafGreen_e.sav&amp;lt;/code&amp;gt;) || 14 || 30&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
=== Profile Selection ===&lt;br /&gt;
On Switch, pkHouse loads all user profiles from the system.&lt;br /&gt;
&lt;br /&gt;
Select your profile, then choose a game.&lt;br /&gt;
&lt;br /&gt;
The app detects which games have save data for the selected profile.&lt;br /&gt;
&lt;br /&gt;
Your profile name is shown alongside the game name in all views.&lt;br /&gt;
&lt;br /&gt;
=== Two-Panel Box Viewer ===&lt;br /&gt;
In &amp;quot;title override mode&amp;quot;, the main view displays your &amp;quot;game save&amp;quot; on the left and your &amp;quot;bank&amp;quot; on the right, side by side.&lt;br /&gt;
&lt;br /&gt;
In &amp;quot;applet mode&amp;quot; (bank-only), both panels show &amp;quot;banks&amp;quot;, allowing bank-to-bank transfers.&lt;br /&gt;
&lt;br /&gt;
Navigate freely between both panels to move Pokemon back and forth.&lt;br /&gt;
&lt;br /&gt;
=== View All Banks ===&lt;br /&gt;
Browse banks across all your games from a single screen. On the game selector, navigate below the game cards to the &amp;quot;View All Banks&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
Banks are displayed in a grouped list organized by game family (e.g. &amp;quot;Sword / Shield&amp;quot;, &amp;quot;Scarlet / Violet&amp;quot;), in the same order as the game cards.&lt;br /&gt;
&lt;br /&gt;
Selecting a bank opens it in dual-bank mode — no save file needed. After picking your first bank, you&#039;re prompted to pick a second bank from the same game for side-by-side management.&lt;br /&gt;
&lt;br /&gt;
=== Pick &amp;amp; Place ===&lt;br /&gt;
Press A on a Pokemon to pick it up, navigate to any slot (in either panel), and press A again to place it.&lt;br /&gt;
&lt;br /&gt;
Placing on an occupied slot swaps the two Pokemon.&lt;br /&gt;
&lt;br /&gt;
Press B to cancel and return the Pokemon to its original slot.&lt;br /&gt;
&lt;br /&gt;
Press X while holding Pokemon to delete them (with confirmation). Useful for clearing boxes of rejected eggs.&lt;br /&gt;
&lt;br /&gt;
=== Multi-Select ===&lt;br /&gt;
There are three ways to select Pokemon:&lt;br /&gt;
&lt;br /&gt;
* Tap Y on individual Pokemon to toggle selection one by one.&lt;br /&gt;
* Hold Y + D-Pad to draw a rectangular selection across multiple slots at once.&lt;br /&gt;
* Double-tap Y to select all Pokemon in the current box (shown in green).&lt;br /&gt;
&lt;br /&gt;
Only occupied slots are selected. Selected slots display a numbered badge showing the pick-up order.&lt;br /&gt;
&lt;br /&gt;
Press A to pick up all selected Pokemon, then navigate to another box and press A to place them.&lt;br /&gt;
&lt;br /&gt;
Regular selections (cyan) place Pokemon into the first available empty slots.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Select all&amp;quot; selections (green) preserve original positions — each Pokemon is placed at the same slot index in the target box. All matching slots must be empty.&lt;br /&gt;
&lt;br /&gt;
Press B to cancel and return all Pokemon to their original positions.&lt;br /&gt;
&lt;br /&gt;
Selection is cleared when switching boxes or panels.&lt;br /&gt;
&lt;br /&gt;
=== Box View ===&lt;br /&gt;
Press ZL to open a box overview of all save boxes, or ZR for all bank boxes.&lt;br /&gt;
&lt;br /&gt;
Navigate the grid with the D-Pad. A semi-transparent preview of the highlighted box&#039;s contents (Pokemon sprites) appears as you move.&lt;br /&gt;
&lt;br /&gt;
Press A to jump directly to that box, Y to rename the box (bank boxes only, max 16 characters), or B to cancel.&lt;br /&gt;
&lt;br /&gt;
=== Pokemon Details ===&lt;br /&gt;
Press X on any Pokemon to view detailed information:&lt;br /&gt;
&lt;br /&gt;
* Catch ball icon and species name, level, gender&lt;br /&gt;
* National Pokedex number&lt;br /&gt;
* Original Trainer (OT) and Trainer ID&lt;br /&gt;
* Nature and Ability&lt;br /&gt;
* Held item (or &amp;quot;---&amp;quot; if none)&lt;br /&gt;
* All 4 moves with type icons (2x2 grid layout)&lt;br /&gt;
* IVs displayed as a hexagonal radar chart (perfect 31s highlighted in gold)&lt;br /&gt;
* EVs displayed as a hexagonal radar chart&lt;br /&gt;
* Ribbons and marks (displayed as sprite icons with names)&lt;br /&gt;
* Technical data: PID, EC, raw TID/SID, and TSV&lt;br /&gt;
&lt;br /&gt;
Sprites are form-aware — alternate forms like Alolan, Galarian, Hisuian, Paldean, Origin, Therian, and many others display their correct sprite.&lt;br /&gt;
&lt;br /&gt;
Shiny Pokemon use their shiny color sprites. Both apply everywhere: box grid, detail popup, held overlay, box view preview, and wondercard list.&lt;br /&gt;
&lt;br /&gt;
If a form or shiny sprite is not available, the base sprite is used as fallback.&lt;br /&gt;
&lt;br /&gt;
Shiny names are displayed in gold.&amp;lt;br /&amp;gt;&lt;br /&gt;
Alpha Pokemon (Legends: Arceus / Z-A) show a dedicated icon.&lt;br /&gt;
&lt;br /&gt;
Use L/Rin the detail view to navigate to the next or previous non-empty slot without closing the popup.&lt;br /&gt;
&lt;br /&gt;
=== Bank System ===&lt;br /&gt;
Banks are local &amp;lt;code&amp;gt;.bin&amp;lt;/code&amp;gt; files stored per game family. Paired games share the same bank folder, so you can move Pokemon between versions (e.g. Sword and Shield).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Game Family&lt;br /&gt;
! Bank Folder&lt;br /&gt;
|-&lt;br /&gt;
| Let&#039;s Go Pikachu / Eevee&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/LetsGo/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Sword / Shield&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/SwordShield/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Brilliant Diamond / Shining Pearl&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/BDSP/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Legends: Arceus&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/LegendsArceus/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Scarlet / Violet&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/ScarletViolet/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Legends: Z-A&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/LegendsZA/&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FireRed / LeafGreen&lt;br /&gt;
| &amp;lt;code&amp;gt;banks/FireRedLeafGreen/&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
From the bank selector you can:&lt;br /&gt;
&lt;br /&gt;
* Create a new bank (up to 32-character name). On Switch, available SD card space is checked before creating — if there isn&#039;t enough room, an error is shown.&lt;br /&gt;
* Rename an existing bank&lt;br /&gt;
* Delete a bank (with confirmation)&lt;br /&gt;
&lt;br /&gt;
Each bank has the same box capacity as its game family (32 or 40 boxes).&lt;br /&gt;
&lt;br /&gt;
The bank list shows the number of occupied slots for each bank.&lt;br /&gt;
&lt;br /&gt;
You can switch between banks from the main view via the menu. Both the save and bank are saved together before switching to prevent data inconsistency.&lt;br /&gt;
&lt;br /&gt;
If no other bank is available when switching, the app offers to create a new one directly.&lt;br /&gt;
&lt;br /&gt;
You cannot delete a bank that is currently loaded.&lt;br /&gt;
&lt;br /&gt;
=== Backup System ===&lt;br /&gt;
When loading a game save on Switch, an automatic backup is created before any modifications:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;backups/&amp;lt;profile&amp;gt;/&amp;lt;game&amp;gt;/&amp;lt;profile&amp;gt;_YYYY-MM-DD_HH-MM-SS/&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a full copy of the mounted save directory.&lt;br /&gt;
&lt;br /&gt;
The backup is only created once when initially selecting a game — switching banks does not trigger additional backups.&lt;br /&gt;
&lt;br /&gt;
Before backing up, the app checks available SD card space. If there isn&#039;t enough free space (2x the save size), a warning is shown with the option to continue without a backup or cancel. If the backup itself fails, you&#039;ll see a similar prompt before proceeding.&lt;br /&gt;
&lt;br /&gt;
=== Themes ===&lt;br /&gt;
pkHouse includes 7 color themes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Theme&lt;br /&gt;
! Style&lt;br /&gt;
|-&lt;br /&gt;
| Default&lt;br /&gt;
| Dark blue-gray (original)&lt;br /&gt;
|-&lt;br /&gt;
| HOME&lt;br /&gt;
| Light pastels inspired by Pokemon HOME&lt;br /&gt;
|-&lt;br /&gt;
| HOME - Violet&lt;br /&gt;
| Purple/lavender tones from HOME&#039;s Pokedex&lt;br /&gt;
|-&lt;br /&gt;
| HOME - Blue&lt;br /&gt;
| Blue palette from HOME&#039;s GTS&lt;br /&gt;
|-&lt;br /&gt;
| HOME - Green&lt;br /&gt;
| Green variant of the HOME style&lt;br /&gt;
|-&lt;br /&gt;
| HOME - Red&lt;br /&gt;
| Red variant of the HOME style&lt;br /&gt;
|-&lt;br /&gt;
| Pikachu&lt;br /&gt;
| Yellow and brown Pikachu colors&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Change themes from the &amp;quot;menu&amp;quot; (+ button) in the main view, or press Y on the profile/game selection screens.&lt;br /&gt;
&lt;br /&gt;
A live preview is applied as you scroll through the list. Press A to confirm or B to cancel and revert.&lt;br /&gt;
&lt;br /&gt;
Your theme choice is saved automatically and persists across sessions.&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
pkHouse supports 9 languages:&lt;br /&gt;
* English (en)&lt;br /&gt;
* Deutsch (de)&lt;br /&gt;
* Español (es)&lt;br /&gt;
* Français (fr)&lt;br /&gt;
* Italiano (it)&lt;br /&gt;
* Nederlands (nl)&lt;br /&gt;
* Português (pt)&lt;br /&gt;
* Русский (ru)&lt;br /&gt;
* 日本語 (ja)&lt;br /&gt;
&lt;br /&gt;
The app automatically detects the Switch system language on startup. You can also manually override the language from the menu (+ button → Language).&lt;br /&gt;
&lt;br /&gt;
Your language choice is saved to language.txt and persists across sessions. Delete this file to revert to automatic system detection.&lt;br /&gt;
&lt;br /&gt;
Missing keys automatically fall back to English.&lt;br /&gt;
&lt;br /&gt;
Note: Korean (한국어), Simplified Chinese (简体中文), and Traditional Chinese (繁體中文) translation files are included but currently disabled. The system font (PlSharedFontType_Standard) does not include CJK/Korean glyphs - enabling these languages requires loading additional system fonts.&lt;br /&gt;
&lt;br /&gt;
=== Search / Filter ===&lt;br /&gt;
Search for Pokemon across both panels (save and bank) using the &amp;quot;menu&amp;quot; (+ button &amp;gt; Search).&lt;br /&gt;
&lt;br /&gt;
Available filters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Filter&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| Species&lt;br /&gt;
| Alphabetical picker — select a letter, then choose from species available in the current game (with sprites). Letters with no matching species are dimmed and skipped.&lt;br /&gt;
|-&lt;br /&gt;
| OT Name&lt;br /&gt;
| Text search (substring, case-insensitive)&lt;br /&gt;
|-&lt;br /&gt;
| Shiny&lt;br /&gt;
| Toggle to match shiny Pokemon only&lt;br /&gt;
|-&lt;br /&gt;
| Egg&lt;br /&gt;
| Toggle to match eggs only&lt;br /&gt;
|-&lt;br /&gt;
| Alpha&lt;br /&gt;
| Toggle to match alpha Pokemon only (Legends: Arceus / Z-A only)&lt;br /&gt;
|-&lt;br /&gt;
| Gender&lt;br /&gt;
| Cycle: Any / Male / Female / Genderless&lt;br /&gt;
|-&lt;br /&gt;
| Level&lt;br /&gt;
| Min and max level range&lt;br /&gt;
|-&lt;br /&gt;
| Perfect IVs&lt;br /&gt;
| Off / 1+ (at least one 31 IV) / 6IV (all 31)&lt;br /&gt;
|-&lt;br /&gt;
| Ribbons/Marks&lt;br /&gt;
| Off / Has Ribbon / Has Mark / Has Any&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Two result modes are available (selectable in the filter with Left/Right, defaults to Highlight):&lt;br /&gt;
&lt;br /&gt;
* Highlight (default): Returns to the box view with matching Pokemon outlined in color and non-matching Pokemon dimmed. The highlight follows Pokemon as you move them between slots. In box view (ZL/ZR), boxes containing matches are outlined and matching slots are highlighted in the preview. Press B to clear highlights, or open the menu to start a new search.&lt;br /&gt;
* List: Results are shown as a scrollable list with status badges ([S] shiny, [A] alpha, [E] egg), species name, level, gender, and location. Press A to jump directly to a result in the box view, L/R to skip 10 results (hold to auto-repeat), X to go back and adjust filters, or B to close.&lt;br /&gt;
&lt;br /&gt;
=== Wondercard Injection ===&lt;br /&gt;
Inject event wondercard files directly into your save as fully formed Pokemon. Access from the &amp;quot;menu&amp;quot; (+ button &amp;gt; Wondercard).&lt;br /&gt;
&lt;br /&gt;
Place wondercard files in the corresponding folder on your SD card:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Game Family&lt;br /&gt;
! Folder&lt;br /&gt;
! File Extension&lt;br /&gt;
|-&lt;br /&gt;
| Let&#039;s Go Pikachu / Eevee&lt;br /&gt;
| &amp;lt;code&amp;gt;wondercards/LetsGo/&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;.wb7&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;.wb7full&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Sword / Shield&lt;br /&gt;
| &amp;lt;code&amp;gt;wondercards/SwordShield/&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;.wc8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Brilliant Diamond / Shining Pearl&lt;br /&gt;
| &amp;lt;code&amp;gt;wondercards/BDSP/&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;.wb8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Legends: Arceus&lt;br /&gt;
| &amp;lt;code&amp;gt;wondercards/LegendsArceus/&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;.wa8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Scarlet / Violet&lt;br /&gt;
| &amp;lt;code&amp;gt;wondercards/ScarletViolet/&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;.wc9&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Legends: Z-A&lt;br /&gt;
| &amp;lt;code&amp;gt;wondercards/LegendsZA/&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;.wa9&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The wondercard list shows each card&#039;s species, level, and shiny status. Select a card and press A to inject it into the currently selected box slot.&lt;br /&gt;
&lt;br /&gt;
The injected Pokemon is fully generated from the wondercard data — PID, IVs, nature, ability, moves, OT, and all metadata are set according to the event&#039;s rules, matching official distribution behavior.&lt;br /&gt;
&lt;br /&gt;
Wondercard files can be downloaded from the [https://github.com/projectpokemon/EventsGallery Project Pokemon EventsGallery] repository.&lt;br /&gt;
&lt;br /&gt;
=== Pokedex Auto-Registration ===&lt;br /&gt;
When transferring Pokemon from a bank to a save file, the Pokedex is automatically updated to register the Pokemon as caught. This solves the issue where version-exclusive Pokemon transferred between paired games would not appear in the Pokedex.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Game Family&lt;br /&gt;
! What gets registered&lt;br /&gt;
|-&lt;br /&gt;
| Scarlet / Violet (+ DLCs)&lt;br /&gt;
| Caught, seen, heard, gender, language (Pokemon + save), shiny, display, neighbor discovery&lt;br /&gt;
|-&lt;br /&gt;
| Sword / Shield (+ DLCs)&lt;br /&gt;
| Caught, seen (all gender/shiny regions), language, display, battled count, Gigantamax, Alcremie forms, Eternatus&lt;br /&gt;
|-&lt;br /&gt;
| Brilliant Diamond / Shining Pearl&lt;br /&gt;
| Caught, gender, shiny, language, alternate form tracking (Unown, Rotom, Arceus, etc.)&lt;br /&gt;
|-&lt;br /&gt;
| Let&#039;s Go Pikachu / Eevee&lt;br /&gt;
| Caught, seen, display, language, size tracking (height/weight), capture count&lt;br /&gt;
|-&lt;br /&gt;
| FireRed / LeafGreen&lt;br /&gt;
| Caught, seen (with all 3 copy sync), Unown/Spinda PID&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Legends: Arceus and Legends: Z-A are excluded from auto-registration as all Pokemon are obtainable in a single playthrough without trading.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Pokedex completion rewards (Shiny Charm, diplomas) are triggered by the in-game NPC when the dex is complete.&lt;br /&gt;
&lt;br /&gt;
=== Handling Trainer Updates ===&lt;br /&gt;
When a Pokemon is placed into a save file, its handling trainer (HT) data is updated exactly as an in-game trade would.&lt;br /&gt;
&lt;br /&gt;
The games compare the full trainer identity (TID/SID, name, gender, game version), not just the trainer name, so a Pokemon moved to a save with the same OT name but different IDs is correctly treated as traded.&lt;br /&gt;
&lt;br /&gt;
* If the Pokemon belongs to the save&#039;s trainer, it is marked as being back with its OT.&lt;br /&gt;
* If it belongs to a different trainer, the save&#039;s trainer is registered as its handling trainer: HT name, gender, and language are set, HT friendship is reset to the species&#039; base value, and stale HT memories are cleared. The original OT data is never modified.&lt;br /&gt;
* &#039;&#039;&#039;No friendship loss on round-trips&#039;&#039;&#039;: re-placing a Pokemon into a save whose trainer is already its registered handler keeps the HT friendship it has earned.&lt;br /&gt;
* &#039;&#039;&#039;Eggs&#039;&#039;&#039; traded to a different trainer are marked as link-traded with the current date, as the games do.&lt;br /&gt;
* &#039;&#039;&#039;Let&#039;s Go&#039;&#039;&#039;: friendship is carried over instead of reset, so CP values are unaffected.&lt;br /&gt;
&lt;br /&gt;
This keeps friendship routing (e.g. friendship evolutions), memories, and legality checks correct after transferring Pokemon between save files with the bank.&lt;br /&gt;
&lt;br /&gt;
FireRed / LeafGreen are unaffected - Gen 3 has no handling trainer concept, so no changes are needed there.&lt;br /&gt;
&lt;br /&gt;
=== Export Pokemon ===&lt;br /&gt;
Export Pokemon as decrypted &amp;lt;code&amp;gt;.pk&amp;lt;/code&amp;gt; files compatible with PKHeX. Access from the &amp;quot;detail view&amp;quot; (single export) or the &amp;quot;menu&amp;quot; (batch export of selected Pokemon).&lt;br /&gt;
&lt;br /&gt;
Exported files are saved to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export/&amp;lt;GameFamily&amp;gt;/&amp;lt;filename&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Filenames follow the PKHeX naming convention: game tag, national dex number, form name, status flags (&amp;lt;code&amp;gt;[S]&amp;lt;/code&amp;gt;hiny/&amp;lt;code&amp;gt;[A]&amp;lt;/code&amp;gt;lpha/&amp;lt;code&amp;gt;[E]&amp;lt;/code&amp;gt;gg), species name, and checksum.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Game Family&lt;br /&gt;
! File Extension&lt;br /&gt;
|-&lt;br /&gt;
| Let&#039;s Go Pikachu / Eevee&lt;br /&gt;
| &amp;lt;code&amp;gt;.pb7&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Sword / Shield&lt;br /&gt;
| &amp;lt;code&amp;gt;.pk8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Brilliant Diamond / Shining Pearl&lt;br /&gt;
| &amp;lt;code&amp;gt;.pb8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Legends: Arceus&lt;br /&gt;
| &amp;lt;code&amp;gt;.pa8&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Scarlet / Violet&lt;br /&gt;
| &amp;lt;code&amp;gt;.pk9&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Legends: Z-A&lt;br /&gt;
| &amp;lt;code&amp;gt;.pa9&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| FireRed / LeafGreen&lt;br /&gt;
| &amp;lt;code&amp;gt;.pk3&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LED Activity Indicator ===&lt;br /&gt;
The controller notification LED blinks during save and backup operations (save writes, bank saves, backup creation) to provide visual feedback that data is being written.&lt;br /&gt;
&lt;br /&gt;
* Standard / OLED Switch: The Joy-Con or Pro Controller LED pulses briefly during writes.&lt;br /&gt;
* Switch Lite: The built-in motherboard notification LED lights up during writes and turns off when the operation completes.&lt;br /&gt;
&lt;br /&gt;
This works automatically with no configuration required.&lt;br /&gt;
&lt;br /&gt;
Note: To disable the LED Indicator, place a &amp;lt;code&amp;gt;noled.cfg&amp;lt;/code&amp;gt; file in the pkHouse folder (next to the NRO). Remove it to re-enable. The file can be empty — only its presence is checked.&lt;br /&gt;
&lt;br /&gt;
=== Save Integrity ===&lt;br /&gt;
* SCBlock saves (ZA, SV, SwSh, PLA): Decrypted, modified, and re-encrypted. A round-trip verification runs on load to confirm the cycle is lossless.&lt;br /&gt;
* BDSP saves: Flat binary with MD5 checksum, recalculated on every save.&lt;br /&gt;
* LGPE saves: BEEF block format with CRC16 checksums, recalculated on every save. Storage is compacted before writing.&lt;br /&gt;
* FRLG saves: GBA sector-based format (128KB, two save slots). CheckSum32 recalculated per sector on save. Both slots are updated.&lt;br /&gt;
* All saves are written in-place to preserve the Switch filesystem journal.&lt;br /&gt;
&lt;br /&gt;
== Controls == &lt;br /&gt;
=== Main view ===&lt;br /&gt;
D-Pad - Move cursor&lt;br /&gt;
&lt;br /&gt;
L/R - Switch box (hold to repeat)&lt;br /&gt;
&lt;br /&gt;
ZL/ZR - Box view (save / bank)&lt;br /&gt;
&lt;br /&gt;
A - Pick up, Place Pokemon&lt;br /&gt;
&lt;br /&gt;
B - Cancel, Return held Pokemon&lt;br /&gt;
&lt;br /&gt;
Y - Toggle multi-select&lt;br /&gt;
&lt;br /&gt;
X - View Pokemon details, Delete held Pokemon, Export (in detail view)&lt;br /&gt;
&lt;br /&gt;
Plus - Open menu&lt;br /&gt;
&lt;br /&gt;
Minus - About&lt;br /&gt;
&lt;br /&gt;
=== Profile selector ===&lt;br /&gt;
D-Pad Left/Right - Navigate profiles&lt;br /&gt;
&lt;br /&gt;
A - Select profile&lt;br /&gt;
&lt;br /&gt;
Y - Theme selector&lt;br /&gt;
&lt;br /&gt;
Minus - About&lt;br /&gt;
&lt;br /&gt;
Plus - Quit&lt;br /&gt;
&lt;br /&gt;
=== Game selector ===&lt;br /&gt;
D-Pad - Navigate game grid and &amp;quot;View All Banks&amp;quot; option&lt;br /&gt;
&lt;br /&gt;
A - Select game / View All Banks&lt;br /&gt;
&lt;br /&gt;
B - Back to profile selector&lt;br /&gt;
&lt;br /&gt;
Y - Theme selector&lt;br /&gt;
&lt;br /&gt;
Minus - About&lt;br /&gt;
&lt;br /&gt;
Plus - Quit&lt;br /&gt;
&lt;br /&gt;
=== Bank selector ===&lt;br /&gt;
D-Pad Up/Down - Navigate bank list&lt;br /&gt;
&lt;br /&gt;
A - Open bank&lt;br /&gt;
&lt;br /&gt;
Y - Create new bank&lt;br /&gt;
&lt;br /&gt;
X - Rename bank&lt;br /&gt;
&lt;br /&gt;
Plus - Delete bank&lt;br /&gt;
&lt;br /&gt;
B - Back (main view if bank loaded, otherwise game selector)&lt;br /&gt;
&lt;br /&gt;
Minus - About&lt;br /&gt;
&lt;br /&gt;
== Menu options ==&lt;br /&gt;
=== Title Override Mode ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Theme || Open the theme selector&lt;br /&gt;
|-&lt;br /&gt;
| Language || Open the language selector&lt;br /&gt;
|-&lt;br /&gt;
| Search || Search for Pokemon across both panels&lt;br /&gt;
|-&lt;br /&gt;
| Wondercard || Inject event wondercards as Pokemon (supported games only)&lt;br /&gt;
|-&lt;br /&gt;
| Export Selected || Export selected Pokemon as &amp;lt;code&amp;gt;.pk&amp;lt;/code&amp;gt; files (shown when Pokemon are selected)&lt;br /&gt;
|-&lt;br /&gt;
| Switch Bank || Save game and bank, return to bank selector&lt;br /&gt;
|-&lt;br /&gt;
| Change Game || Save everything, return to game selector&lt;br /&gt;
|-&lt;br /&gt;
| Save &amp;amp; Quit || Save everything and exit&lt;br /&gt;
|-&lt;br /&gt;
| Quit Without Saving || Exit without saving changes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Applet / Bank-Only Mode ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option !! Description&lt;br /&gt;
|-&lt;br /&gt;
| Theme || Open the theme selector&lt;br /&gt;
|-&lt;br /&gt;
| Search || Search for Pokemon across both panels&lt;br /&gt;
|-&lt;br /&gt;
| Wondercard || Inject event wondercards as Pokemon (supported games only)&lt;br /&gt;
|-&lt;br /&gt;
| Export Selected || Export selected Pokemon as &amp;lt;code&amp;gt;.pk&amp;lt;/code&amp;gt; files (shown when Pokemon are selected)&lt;br /&gt;
|-&lt;br /&gt;
| Switch Left Bank || Save both banks, switch the left bank&lt;br /&gt;
|-&lt;br /&gt;
| Switch Right Bank || Save both banks, switch the right bank&lt;br /&gt;
|-&lt;br /&gt;
| Change Game || Save both banks, return to game selector&lt;br /&gt;
|-&lt;br /&gt;
| Save Banks || Save both banks&lt;br /&gt;
|-&lt;br /&gt;
| Quit || Exit&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
{| style=&amp;quot;max-width:80%; margin-left:0em;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-02.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-03.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-04.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-05.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-06.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-07.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pkHouseLocalPokeBankSwitch-08.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.10.5&#039;&#039;&#039;&lt;br /&gt;
* Bank files validation&lt;br /&gt;
** Some users are dropping unrelated random .bin files in the Bank folder : we now check if the files are valid Banks&lt;br /&gt;
** Invalid files are marked as such&lt;br /&gt;
** Invalid files cannot be opened as a Bank&lt;br /&gt;
** Invalid files can be deleted from the listing (same as any valid Banks)&lt;br /&gt;
* Bank file deletion&lt;br /&gt;
** Add soft-delete system&lt;br /&gt;
** Deleted Banks are now moved inside a &amp;amp;quot;trash&amp;amp;quot; sub-folder, keeping the same game folder structure&lt;br /&gt;
** Restoring deleted Banks require manual action (moving the file back to the corresponding game folder)&lt;br /&gt;
* Bank name checks&lt;br /&gt;
** Now checks if the Bank name is already used for the target game&lt;br /&gt;
** Add UI feedback when trying to create / rename a Bank with an already existing name&lt;br /&gt;
&#039;&#039;&#039;v1.10.4&#039;&#039;&#039;&lt;br /&gt;
* Add Handling Trainer (HT) info in detailed view.&lt;br /&gt;
* Add support for SV PJCS26 Garchomp Wondercard.&lt;br /&gt;
&#039;&#039;&#039;v1.10.3&#039;&#039;&#039;&lt;br /&gt;
* Fixed: Pokemon moved between saves kept the wrong handler&lt;br /&gt;
* Until now, moving a Pokemon through the bank into another save file did a raw copy - nothing about the Pokemon was adapted to its new trainer.&lt;br /&gt;
* In the games, anytime a Pokemon changes owners through a trade, the receiving trainer is registered as its handling trainer.&lt;br /&gt;
* Skipping that step caused real problems:&lt;br /&gt;
** Friendship didn&#039;t work correctly.&lt;br /&gt;
* The game reads friendship from the OT or the handler depending on who currently holds the Pokemon. A transferred Pokemon pointed at the wrong field, so friendship gained on the new save could be lost, and friendship evolutions (Eevee → Sylveon, Golbat → Crobat, etc.) could behave unexpectedly.&lt;br /&gt;
** Legality issues.&lt;br /&gt;
* A Pokemon whose OT doesn&#039;t match the save but which claims to still be with its OT is flagged by legality checkers and looks suspicious to Pokemon HOME.&lt;br /&gt;
** Same name ≠ same trainer.&lt;br /&gt;
* Two saves with the same trainer name are still different trainers - the games compare TID/SID, gender, and more, not just the name.&lt;br /&gt;
* pkHouse now does the same.&lt;br /&gt;
* What happens now&lt;br /&gt;
* Placing a Pokemon into a save behaves exactly like a real in-game trade:&lt;br /&gt;
** If the Pokemon belongs to the save&#039;s trainer (same game version, TID/SID, name, gender, plus language in SV/Z-A), it&#039;s simply marked as being back with its OT.&lt;br /&gt;
** If it&#039;s a different trainer, that trainer is registered as the handler: handler name/gender/language are set, handler friendship resets to the species&#039; base value, and stale handler memories are cleared. The original OT data is never touched.&lt;br /&gt;
** No friendship loss on round-trips: moving a Pokemon bank ↔ save repeatedly does not keep resetting the friendship it earned with its current handler.&lt;br /&gt;
** Eggs traded to a different trainer are marked as link-traded with today&#039;s date, like the games do (including BDSP&#039;s quirk of also updating the handler, and SV&#039;s Jacq gift-egg exception).&lt;br /&gt;
** Let&#039;s Go: friendship is carried over instead of reset, so CP values are unaffected.&lt;br /&gt;
* Applies to all supported games with handler data:&lt;br /&gt;
* Legends: Z-A, Scarlet/Violet, Sword/Shield, Brilliant Diamond/Shining Pearl, Legends: Arceus, Let&#039;s Go Pikachu/Eevee.&lt;br /&gt;
* FireRed/LeafGreen are unaffected - Gen 3 has no handler concept, so transfers there were already correct.&lt;br /&gt;
** Warning: Existing Pokemon already sitting in your saves are not modified: the update applies whenever a Pokemon is next placed into a save.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.10.2&#039;&#039;&#039;&lt;br /&gt;
* Add Wondercard support for Shiny Volcanion (Legends Z-A).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.10.1&#039;&#039;&#039;&lt;br /&gt;
* Add box-state icons in ZL/ZR all-boxes overview (box cell now shows a small icon on the left indicating its state).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.10.0&#039;&#039;&#039;&lt;br /&gt;
* Multi-Language Support&lt;br /&gt;
** Internationalization (i18n): the app now supports 9 languages, with automatic detection based on the Switch system language.&lt;br /&gt;
** Support English, Deutsch, Español, Français, Italiano, Nederlands, Português, Русский, 日本語&lt;br /&gt;
** Language Selector: New &amp;amp;quot;Language&amp;amp;quot; option in the menu (+) to manually override the language at any time. Your choice is saved and persists across sessions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.9.1&#039;&#039;&#039;&lt;br /&gt;
* FireRed / LeafGreen Multiple Version Support&lt;br /&gt;
** All regional versions of FireRed / LeafGreen are now supported (English, Spanish, French, German, Italian, and Japanese)&lt;br /&gt;
** Each version is detected automatically by title ID&lt;br /&gt;
** All FRLG versions share the same bank folder, so Pokemon can be moved freely between any language version via the bank&lt;br /&gt;
** Japanese character encoding support&lt;br /&gt;
** Nicknames and OT names from Japanese FRLG saves now display correctly in hiragana / katakana&lt;br /&gt;
** Uses the per-Pokemon language byte, so Japanese Pokemon traded into other language saves (or stored in the bank) are always decoded correctly&lt;br /&gt;
** Box names in Japanese saves also display properly&lt;br /&gt;
* Game selector pagination&lt;br /&gt;
** When more than 12 games are available, the selector is paginated across multiple pages&lt;br /&gt;
** Navigate pages with L / R shoulder buttons or buttons on the left and right edges&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.9.0&#039;&#039;&#039;&lt;br /&gt;
* New: Pokedex Auto-Registration&lt;br /&gt;
** Pokemon transferred from the bank or wondercard to a save file are now automatically registered in the Pokedex as caught.&lt;br /&gt;
** This fixes the potential issue where version-exclusive Pokemon transferred between dual games would not appear in the Pokedex.&lt;br /&gt;
* Supported games:&lt;br /&gt;
** Scarlet / Violet (+DLCs)&lt;br /&gt;
** Sword / Shield (+DLCs)&lt;br /&gt;
** Brilliant Diamond / Shining Pearl&lt;br /&gt;
** Let&#039;s Go Pikachu / Eevee&lt;br /&gt;
** FireRed / LeafGreen&lt;br /&gt;
** Legends: Arceus &amp;amp;amp; Legends: Z-A are excluded since all Pokemon are available (no version exclusive).&lt;br /&gt;
* What gets registered:&lt;br /&gt;
** Caught &amp;amp;amp; Seen status&lt;br /&gt;
** Gender, Language, and shiny flags&lt;br /&gt;
** Form tracking (BDSP alternate forms, SwSh Alcremie decorations, Eternatus Gigantamax)&lt;br /&gt;
** Display entry (form, gender, shiny) on first registration&lt;br /&gt;
** Size data and capture count (LGPE)&lt;br /&gt;
** Seen copies sync (FRLG)&lt;br /&gt;
** Neighbor discovery / &amp;amp;quot;heard&amp;amp;quot; entries (SV)&lt;br /&gt;
** Battled count (SwSh)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.8.1&#039;&#039;&#039;&lt;br /&gt;
* Consolidated game format data.&lt;br /&gt;
* Unified Pokemon data field offsets.&lt;br /&gt;
* Shared binary I/O helpers.&lt;br /&gt;
* Modularized input handling.&lt;br /&gt;
* Removed dead PC debug code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.8.0&#039;&#039;&#039;&lt;br /&gt;
* Replaced the free-text keyboard species search with a visual two-step picker.&lt;br /&gt;
* First screen: alphabetical letter grid - select a letter to filter species.&lt;br /&gt;
* Second screen: species list with sprites, sorted alphabetically - select to set the filter.&lt;br /&gt;
* Only species available in the current game are shown.&lt;br /&gt;
* Letters with no matching species are dimmed and cannot be selected.&lt;br /&gt;
* Selected species appears with its sprite on the search filter screen.&lt;br /&gt;
* Select &amp;quot;-&amp;quot; to clear the species filter back to &amp;quot;any&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.6&#039;&#039;&#039;&lt;br /&gt;
* New &amp;amp;quot;View All Banks&amp;amp;quot; option:&lt;br /&gt;
** On the game selector screen - navigate below the game cards to access it.&lt;br /&gt;
** Banks are displayed in a grouped list with game headers (e.g. &amp;amp;quot;Sword / Shield&amp;amp;quot;, &amp;amp;quot;Scarlet / Violet&amp;amp;quot;).&lt;br /&gt;
** Selecting a bank opens it in dual-bank mode - no save file needed, just like applet mode.&lt;br /&gt;
** After picking your first bank, you&#039;re prompted to pick a second bank from the same game for side-by-side management.&lt;br /&gt;
** Full bank management (create, rename, delete) available once a bank is opened.&lt;br /&gt;
** Theme selector accessible from the all-banks list via Y.&lt;br /&gt;
* Navigation Improvements:&lt;br /&gt;
** Cursor now wraps between panels - pressing left at the edge of the left panel jumps to the right panel, and vice versa.&lt;br /&gt;
** When only one panel is loaded, the cursor wraps within it instead of getting stuck at the edge.&lt;br /&gt;
* Bug Fixes:&lt;br /&gt;
** Fixed bank list scroll not resetting when the cursor wraps around (top to bottom or bottom to top).&lt;br /&gt;
** Fixed left panel showing stale Pokemon data from a previously loaded bank when no left bank is loaded in dual-bank mode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.5&#039;&#039;&#039;&lt;br /&gt;
* Shiny Sprites: shiny Pokemon now display their actual shiny color sprites.&lt;br /&gt;
* Form-Aware Sprites: alternate forms (Alolan, Galarian, Hisuian, Paldean, Origin, Therian, Unown letters, and 140+ others) now show their correct sprite.&lt;br /&gt;
* LED Activity Indicator: can now be disabled by placing a noled.cfg file in the pkHouse folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.4&#039;&#039;&#039;&lt;br /&gt;
* LED Activity Indicator: the controller LED now blinks during save and backup operations (save writes, bank saves, backup creation, ...). On Switch Lite, the built-in notification LED lights up during writes instead.&lt;br /&gt;
* Optimized UI Rendering: text measurement now uses the rendering cache, eliminating redundant FreeType glyph shaping.&lt;br /&gt;
* &lt;br /&gt;
&#039;&#039;&#039;v1.7.3&#039;&#039;&#039;&lt;br /&gt;
* Reduced input lag and improved frame responsiveness across all screens.&lt;br /&gt;
* Pokemon data is now cached per box, eliminating repeated decryption overhead.&lt;br /&gt;
* Text and UI labels are now cached, reducing rendering workload.&lt;br /&gt;
* Slot display info (species, name, level, shiny, etc.) is pre-computed and cached per box.&lt;br /&gt;
* Screen only redraws when something actually changes, saving CPU/GPU cycles.&lt;br /&gt;
* App should now be smoother !&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.2&#039;&#039;&#039;&lt;br /&gt;
* Ball Icon — The Poke Ball used to catch the Pokemon is displayed next to the species name in the detail view.&lt;br /&gt;
* Move Type Icons — Each move in the detail view now shows its type icon.&lt;br /&gt;
* Moves in 2-Column Layout — Moves display in a 2x2 grid, matching the in-game battle layout.&lt;br /&gt;
* Technical Data — PID, EC, raw TID/SID, and TSV shown at the bottom of the detail view.&lt;br /&gt;
* Hold L / R shoulder buttons to auto-repeat navigating in detail view (no more mashing!)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.1&#039;&#039;&#039;&lt;br /&gt;
* Pokemon details now show all ribbons and marks as sprite icons with names.&lt;br /&gt;
* Pokemon details now display held item.&lt;br /&gt;
* Use L / R to jump to the previous / next non-empty slot without closing the detail popup.&lt;br /&gt;
* Filter Pokemon by Has Ribbon, Has Mark, or Has Any in the search menu.&lt;br /&gt;
* New: Export Pokemon to file.&lt;br /&gt;
** Export individual Pokemon as PKHeX-compatible .pk files from the detail view (X button).&lt;br /&gt;
** Select multiple Pokemon and export them all at once from the menu.&lt;br /&gt;
** Exported filenames include human-readable form names (Alolan, Galarian, Origin, etc.) instead of numeric form IDs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.0&#039;&#039;&#039;&lt;br /&gt;
* New: Wondercard Injection&lt;br /&gt;
** Inject event wondercard files directly into your saves / banks as fully formed Pokemon&lt;br /&gt;
** Support : LGPE / SWSH / BDSP / PLA / SV / LZA&lt;br /&gt;
** Fully generates the Pokemon from wondercard data (PID, IVs, nature, ability, moves, OT, ribbons, ...)&lt;br /&gt;
** Matches official distribution behavior — shiny locks, fixed IVs, ability restrictions, and date windows are all respected&lt;br /&gt;
** Game-specific stat calculations are handled correctly (LGPE awakening values + CP, PLA ganbaru values, ...)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.6.0&#039;&#039;&#039;&lt;br /&gt;
* Add FireRed / LeafGreen support (game version 1.0.0).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.5.2&#039;&#039;&#039;&lt;br /&gt;
* Rename bank boxes from the box view (ZL / ZR) — press Y on any box to set a custom name (max 16 characters).&lt;br /&gt;
* Names are saved in the bank file and persist across sessions.&lt;br /&gt;
* Existing banks are fully backward compatible — unnamed boxes display as &amp;quot;Bank 1&amp;quot;, &amp;quot;Bank 2&amp;quot;, etc.&lt;br /&gt;
* Box view overlay now shows a subtitle: bank file name for bank panels, profile and game name for save panels.&lt;br /&gt;
* Long bank file names are truncated with (..) in the panel header to prevent overflow.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.5.1&#039;&#039;&#039;&lt;br /&gt;
* Hold L / R shoulder buttons to auto-repeat box switching.&lt;br /&gt;
* Hold L / R in search results list to fast-scroll through pages.&lt;br /&gt;
* New search highlight mode: matching Pokemon outlined in box view, non-matches dimmed.&lt;br /&gt;
* Search result modes: choose between Highlight (default) and List via the Mode row in search filter.&lt;br /&gt;
* Live highlight tracking: moving, swapping, or deleting Pokemon while highlights are active updates them in real-time.&lt;br /&gt;
* Boxes containing search matches are outlined in the box view (ZL / ZR) with matching Pokemon highlighted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.5.0&#039;&#039;&#039;&lt;br /&gt;
* Search for Pokemon across both panels (save and bank) from the menu (+ → Search).&lt;br /&gt;
* Filter by species name, OT name, shiny, egg, alpha, gender, level range, and perfect IVs.&lt;br /&gt;
* Results displayed as a scrollable list with status badges: [S] shiny, [A] alpha, [E] egg.&lt;br /&gt;
* Press A to jump directly to a Pokemon in the box view; L/R to skip 10 results; X to adjust filters.&lt;br /&gt;
* Delete Pokemon: press X while holding Pokemon (single or multi-select) to delete them with confirmation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.4.0&#039;&#039;&#039;&lt;br /&gt;
* 7 color themes (Default, HOME, HOME - Violet, HOME - Blue, HOME - Green, HOME - Red, Pikachu)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.1&#039;&#039;&#039;&lt;br /&gt;
* Save backup now checks SD card free space before backing up (requires 2x save size).&lt;br /&gt;
* Warning dialog if space is low, with option to continue without backup or cancel.&lt;br /&gt;
* If backup fails, a prompt is shown before proceeding.&lt;br /&gt;
* Creating a new bank now checks available SD card space first.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* New applet mode (album/HB menu): bank-only access for all games, two banks side by side for bank-to-bank transfers.&lt;br /&gt;
* Banks that are currently in use cannot be deleted.&lt;br /&gt;
* When switching banks, the selector appears on the side being switched while the other panel stays visible.&lt;br /&gt;
* Bank switching now always saves game and bank together to prevent data corruption.&lt;br /&gt;
* Multi-select improvements: drag selection (hold Y + D-Pad) to select a rectangular group of Pokemon at once.&lt;br /&gt;
* Double-tap Y to select all Pokemon in the current box (green). Position-preserving placement for &amp;quot;select all&amp;quot; selections.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.0&#039;&#039;&#039;&lt;br /&gt;
* Implement all boxes overview for save and bank boxes (access with ZL / ZR).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.0&#039;&#039;&#039;&lt;br /&gt;
* Now supports Let&#039;s Go Pikachu / Eevee games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.1&#039;&#039;&#039;&lt;br /&gt;
* Implement full swap history to avoid losing Pokemon when doing multiple in-place swaps then canceling with B button.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Initial release.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* [https://github.com/kwsch/PKHeX PKHeX] by kwsch - PokeCrypto research and save structure reference.&lt;br /&gt;
* [https://github.com/J-D-K/JKSV JKSV] by J-D-K - Save backup and write logic reference.&lt;br /&gt;
* Built with [https://github.com/switchbrew/libnx libnx] and [https://www.libsdl.org/ SDL2].&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/Insektaure/pkHouse&lt;br /&gt;
* GBAtemp thread - https://gbatemp.net/threads/pkhouse-local-bank-system-for-pokemon-switch-games.679665/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Sys-screenuploader_Switch&amp;diff=205699</id>
		<title>Sys-screenuploader Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Sys-screenuploader_Switch&amp;diff=205699"/>
		<updated>2026-07-12T05:43:28Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=sys-screenuploader&lt;br /&gt;
|image=sysscreenuploadernx.png&lt;br /&gt;
|description=A handy screen capture extractor.&lt;br /&gt;
|author=bakatrouble&lt;br /&gt;
|lastupdated=2020/05/02&lt;br /&gt;
|type=Sysmodules&lt;br /&gt;
|version=0.0.10&lt;br /&gt;
|license=LGPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/sysscreenuploadernx.7z&lt;br /&gt;
|website=https://gbatemp.net/threads/sys-screenuploader-a-handy-screen-capture-extractor.556519/&lt;br /&gt;
|source=https://github.com/bakatrouble/sys-screenuploader&lt;br /&gt;
|donation=&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
Homebrew Nintendo Switch NSP sysmodule for automatic upload of screen captures to remote server. It monitors /Nintendo/Album directory on your SD card for new files and uploads them to this website for further processing.&lt;br /&gt;
&lt;br /&gt;
Currently available upload destinations:&lt;br /&gt;
*Telegram&lt;br /&gt;
*Discord&lt;br /&gt;
&lt;br /&gt;
Instructions can be found [https://screenuploader.bakatrouble.me/ here] ([https://github.com/bakatrouble/sys-screenuploader-web website repo]). &lt;br /&gt;
&lt;br /&gt;
Server implementations for self-hosting are available [https://github.com/bakatrouble/sys-screenuploader-servers/ here].&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Download latest [https://github.com/bakatrouble/sys-screenuploader/releases/latest sys-screenuploader.zip] and extract it to SD card root.&lt;br /&gt;
&lt;br /&gt;
SX OS users: move &amp;lt;code&amp;gt;42000062616B6101&amp;lt;/code&amp;gt; directory from &amp;lt;code&amp;gt;/atmosphere/contents&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/sxos/titles&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Signup on [https://screenuploader.bakatrouble.me this website], create a destination and put its ID (visible on the destination list page) to &amp;lt;code&amp;gt;/config/sys-screenuploader/config.ini&amp;lt;/code&amp;gt; under destinations section. &lt;br /&gt;
&lt;br /&gt;
(You may replace &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt; destination value or create a new one and set &amp;lt;code&amp;gt;default_destination&amp;lt;/code&amp;gt; value under the &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt; section to its name.)&lt;br /&gt;
&lt;br /&gt;
Default configuration uploads captures to the [https://discord.gg/c5qBqAA #default-destination] channel on the project&#039;s [https://discord.gg/k7YYK8b Discord server].&lt;br /&gt;
&lt;br /&gt;
If you want to use different destinations for some titles, add values under &amp;lt;code&amp;gt;title_settings&amp;lt;/code&amp;gt; section following the example.&lt;br /&gt;
&lt;br /&gt;
Configuration UI is TBD. For logs see &amp;lt;code&amp;gt;/config/sys-screenuploader/screenuploader.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
===FAQ===&lt;br /&gt;
&#039;&#039;&#039;Q. I can&#039;t open the log file&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log file is inaccessible while the sysmodule is running. Either stop the sysmodule (using Kosmos Toolbox or by any other means) or plug your SD card into another device.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. Media are not being sent.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The sysmodule only detects newest screenshots. Check the startup messages, if they say that the latest media has a future date, congratulations!&lt;br /&gt;
&lt;br /&gt;
This usually means that you&#039;re an Animal Crossing cheater and have took some captures &amp;quot;in future&amp;quot;, and the sysmodule will only detect media with a date later than your captures from future.&lt;br /&gt;
&lt;br /&gt;
To resolve this issue either delete all captures with a wrong date or move them outside the Album folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. My log file is large.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s safe to delete it from time to time.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v0.0.10 2020/05/02&#039;&#039;&#039;&lt;br /&gt;
* Logging was remade completely: added an option to clear logs on launch; format was changed; log file is now readable even while the sysmodule is running (mostly).&lt;br /&gt;
*https://screenuploader.bakatrouble.me now supports placeholders for captions: {date}, {time} and {title}.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.9 2020/04/25&#039;&#039;&#039;&lt;br /&gt;
*Now it&#039;s possible to add captions to your uploaded media (if you&#039;re using my service) or pass individual arbitrary url parameters for requests to your own server.&lt;br /&gt;
*Also fixed logging messages a bit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.8 2020/02/08&#039;&#039;&#039;&lt;br /&gt;
*Added option to disable uploading of certain media types globally and on per-app basis.&lt;br /&gt;
*Sysmodule version is now logged at start.&lt;br /&gt;
*A configuration builder tool was released at https://screenuploader.bakatrouble.me/cabinet/configuration/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.7 2020/01/30&#039;&#039;&#039;&lt;br /&gt;
*Destinations are now configurable on per-application basis.&lt;br /&gt;
*Album directory detection was also improved (thanks @HookedBehemoth).&lt;br /&gt;
*Default configuration is now usable and uploads to the #default-destination channel on this project&#039;s Discord server.&lt;br /&gt;
*Configuration file structure was changed, but should still be compatible with the old one.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.6 2020/01/29&#039;&#039;&#039;&lt;br /&gt;
*Old media are not reuploaded when the newest one is deleted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.5 2020/01/28&#039;&#039;&#039;&lt;br /&gt;
*Fix frequent segfaults when the file we try opening is still opened by another process.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.4 2929/01/20&#039;&#039;&#039;&lt;br /&gt;
*Reduced memory footprint.&lt;br /&gt;
*Hardcoded /Emutendo/Album album path for SX OS (just checking whether the path exists, is there any better way to either detect SX OS or retrieve path from system configuration?).&lt;br /&gt;
*Configurable album path (use album_path option if yours was detected incorrectly).&lt;br /&gt;
*Skipping incorrect directory names ([https://gbatemp.net/threads/sys-screenuploader-a-handy-screen-capture-extractor.556519/page-2#post-8925334 issue report]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.3 2020/01/19&#039;&#039;&#039;&lt;br /&gt;
*I&#039;ve finaly made libcurl work, now we support arbitrary server URLs and HTTPS.&lt;br /&gt;
*Also a toolbox.json was added for integration with Kosmos Toolbox.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.2 2020/01/18&#039;&#039;&#039;&lt;br /&gt;
*Move to cloud service.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.0.1 2020/01/14&#039;&#039;&#039;&lt;br /&gt;
*Initial release.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
This is my first nx homebrew app, a [https://github.com/vbe0201/libnx-template/ template project] by vbe0201 was used (and extended to support sysmodule building).&lt;br /&gt;
&lt;br /&gt;
Initial sysmodule code was taken from SunTheCourier&#039;s [https://github.com/SunTheCourier/SwitchPresence-Rewritten SwitchPresence-Rewritten].&lt;br /&gt;
&lt;br /&gt;
Icon by lordelan ([https://gbatemp.net/members/lordelan.359178/ GBAtemp] / [https://github.com/lordelan GitHub]).&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official website - https://screenuploader.bakatrouble.me/&lt;br /&gt;
* GitHub - https://github.com/bakatrouble/sys-screenuploader&lt;br /&gt;
* GitHub - https://github.com/bakatrouble/sys-screenuploader-web&lt;br /&gt;
* GitHub - https://github.com/bakatrouble/sys-screenuploader-servers/&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/sys-screenuploader-a-handy-screen-capture-extractor.556519/&lt;br /&gt;
* Discord - https://discord.gg/k7YYK8b&lt;br /&gt;
* Telegram - https://t.me/sys_screenuploader&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205698</id>
		<title>Pngshot-ssu Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205698"/>
		<updated>2026-07-12T05:43:10Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=pngshot-ssu&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|description=Take screenshots in PNG format and upload screen captures to remote server.&lt;br /&gt;
|author=OctoNezd&lt;br /&gt;
|lastupdated=2026/04/29&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.0.0&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/sysscreenuploaderVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;br /&gt;
|source=https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
|donation=&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|image_alt=sys-screenuploader&lt;br /&gt;
}}&lt;br /&gt;
pngshot-ssu (pngshot-sys-screen-uploader) is a modification of [[pngshot Vita|pngshot]] which allows making screenshots in PNG format. The modification is that screenshots are sent to Telegram or Discord using screenuploader.bakatrouble.me service based on the [[Sys-screenuploader Switch|sys-screenuploader Switch plugin]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download from the [https://github.com/OctoNezd/pngshot-sys-screen-uploader/releases Releases section] or [https://nightly.link/OctoNezd/pngshot-sys-screen-uploader/workflows/build.yaml/master CI].&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;pngshot-ssu.suprx&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ur0:tai&amp;lt;/code&amp;gt; and add this into config.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Upload screenshots from screenshot key&lt;br /&gt;
*main&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&lt;br /&gt;
# Swaps send to email button logic with upload to ssu button&lt;br /&gt;
*NPXS10004&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;ux0:data/pngshot-ssu&amp;lt;/code&amp;gt; directory. Write config.txt, based on the contents of [https://github.com/OctoNezd/pngshot-sys-screen-uploader/blob/master/config.sample.txt config.sample.txt] in the repository.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
PS button+Start - Take a screenshot&lt;br /&gt;
&lt;br /&gt;
Screenshots can be accessed with the Photos app, or from &amp;lt;code&amp;gt;ux0:picture/SCREENSHOT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Pngshot-sys-screen-uploader demo&#039;&#039;&#039; ([https://www.youtube.com/watch?v=NOtk0emn10Q Octo]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;NOtk0emn10Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* I think its more or less stable. I think. Hadnt been able to reproduce livearea glitches and lags after I disabled debugging plugins.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205697</id>
		<title>Pngshot-ssu Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205697"/>
		<updated>2026-07-12T05:39:10Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=pngshot-ssu&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|description=Take screenshots in PNG format.&lt;br /&gt;
|author=OctoNezd&lt;br /&gt;
|lastupdated=2026/04/29&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.0.0&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/sysscreenuploaderVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;br /&gt;
|source=https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
|donation=&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|image_alt=sys-screenuploader&lt;br /&gt;
}}&lt;br /&gt;
pngshot-ssu (pngshot-sys-screen-uploader) is a modification of [[pngshot Vita|pngshot]] which allows making screenshots in PNG format. The modification is that screenshots are sent to Telegram or Discord using screenuploader.bakatrouble.me service based on the [[Sys-screenuploader Switch|sys-screenuploader Switch plugin]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download from the [https://github.com/OctoNezd/pngshot-sys-screen-uploader/releases Releases section] or [https://nightly.link/OctoNezd/pngshot-sys-screen-uploader/workflows/build.yaml/master CI].&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;pngshot-ssu.suprx&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ur0:tai&amp;lt;/code&amp;gt; and add this into config.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Upload screenshots from screenshot key&lt;br /&gt;
*main&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&lt;br /&gt;
# Swaps send to email button logic with upload to ssu button&lt;br /&gt;
*NPXS10004&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;ux0:data/pngshot-ssu&amp;lt;/code&amp;gt; directory. Write config.txt, based on the contents of [https://github.com/OctoNezd/pngshot-sys-screen-uploader/blob/master/config.sample.txt config.sample.txt] in the repository.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
PS button+Start - Take a screenshot&lt;br /&gt;
&lt;br /&gt;
Screenshots can be accessed with the Photos app, or from &amp;lt;code&amp;gt;ux0:picture/SCREENSHOT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Pngshot-sys-screen-uploader demo&#039;&#039;&#039; ([https://www.youtube.com/watch?v=NOtk0emn10Q Octo]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;NOtk0emn10Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* I think its more or less stable. I think. Hadnt been able to reproduce livearea glitches and lags after I disabled debugging plugins.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205695</id>
		<title>Pngshot-ssu Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205695"/>
		<updated>2026-07-12T05:35:42Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: HydeWing moved page Sys-screenuploader Vita to Pngshot-ssu Vita&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=sys-screenuploader&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|description=Take screenshots in PNG format.&lt;br /&gt;
|author=OctoNezd&lt;br /&gt;
|lastupdated=2026/04/29&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.0.0&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/sysscreenuploaderVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;br /&gt;
|source=https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|image_alt=sys-screenuploader&lt;br /&gt;
}}&lt;br /&gt;
pngshot-ssu (pngshot-sys-screen-uploader) is a modification of [[pngshot Vita|pngshot]] which allows making screenshots in PNG format. The modification is that screenshots are sent to Telegram or Discord using screenuploader.bakatrouble.me service based on the [[Sys-screenuploader Switch|sys-screenuploader Switch plugin]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download from the [https://github.com/OctoNezd/pngshot-sys-screen-uploader/releases Releases section] or [https://nightly.link/OctoNezd/pngshot-sys-screen-uploader/workflows/build.yaml/master CI].&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;pngshot-ssu.suprx&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ur0:tai&amp;lt;/code&amp;gt; and add this into config.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Upload screenshots from screenshot key&lt;br /&gt;
*main&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&lt;br /&gt;
# Swaps send to email button logic with upload to ssu button&lt;br /&gt;
*NPXS10004&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;ux0:data/pngshot-ssu&amp;lt;/code&amp;gt; directory. Write config.txt, based on the contents of [https://github.com/OctoNezd/pngshot-sys-screen-uploader/blob/master/config.sample.txt config.sample.txt] in the repository.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
PS button+Start - Take a screenshot&lt;br /&gt;
&lt;br /&gt;
Screenshots can be accessed with the Photos app, or from &amp;lt;code&amp;gt;ux0:picture/SCREENSHOT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Pngshot-sys-screen-uploader demo&#039;&#039;&#039; ([https://www.youtube.com/watch?v=NOtk0emn10Q Octo]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;NOtk0emn10Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* I think its more or less stable. I think. Hadnt been able to reproduce livearea glitches and lags after I disabled debugging plugins.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Geometrizer_Vita&amp;diff=205693</id>
		<title>Geometrizer Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Geometrizer_Vita&amp;diff=205693"/>
		<updated>2026-07-12T05:35:17Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=Geometrizer Vita&lt;br /&gt;
|image=GeometrizerVita.png&lt;br /&gt;
|description=Sega Model 1 emulator for PSVita.&lt;br /&gt;
|author=frangarcj&lt;br /&gt;
|lastupdated=2026/07/01&lt;br /&gt;
|type=Arcade&lt;br /&gt;
|version=20260711&lt;br /&gt;
|license=N/A&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/GeometrizerVita.7z&lt;br /&gt;
|website=https://github.com/frangarcj/geometrizer&lt;br /&gt;
|source=https://github.com/frangarcj/geometrizer&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Emulators (Arcade) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=GeometrizerVita.png&lt;br /&gt;
|image_alt=Geometrizer Vita&lt;br /&gt;
}}&lt;br /&gt;
Geometrizer is a Sega Model 1 arcade-board emulator written in C11, targeting Virtua Racing, running on macOS and the PlayStation Vita. &lt;br /&gt;
&lt;br /&gt;
The project is a playground for AI-assisted development: most of the code is written by an AI coding agent iterating in a tight loop against real hardware, reference traces, and an emulator oracle. The goal is less &amp;quot;ship a polished emulator&amp;quot; and more &amp;quot;see how far an AI can drive a hard, low-level systems project&amp;quot; - cycle-accurate CPU cores, a custom geometry DSP, a software 3D pipeline, and a from-scratch GPU renderer on a 2012 handheld.&lt;br /&gt;
&lt;br /&gt;
Status: experimental / work-in-progress. Virtua Racing boots, renders, and plays on both targets.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/GeometrizerVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/GeometrizerVita-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/GeometrizerVita-03.png&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v2026-07-11&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/frangarcj/geometrizer&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1432&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=MOTHER_Encore_Vita&amp;diff=205694</id>
		<title>MOTHER Encore Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=MOTHER_Encore_Vita&amp;diff=205694"/>
		<updated>2026-07-12T05:35:15Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: xxx&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=MOTHER Encore Vita&lt;br /&gt;
|image=MOTHEREncoreVita.png&lt;br /&gt;
|description=Port of MOTHER Encore for PSVita.&lt;br /&gt;
|author=Wolff&lt;br /&gt;
|lastupdated=2026/07/09&lt;br /&gt;
|type=Role Playing&lt;br /&gt;
|version=0.2b&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/MOTHEREncoreVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1urf516/mother_encore_act_2_psvita_port_beta/&lt;br /&gt;
|source=https://github.com/WolffsRoom/MotherEncore-PSVita&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Games (Role Playing) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=MOTHEREncoreVita.png&lt;br /&gt;
|image_alt=MOTHER Encore Vita&lt;br /&gt;
}}&lt;br /&gt;
A native PlayStation Vita port of MOTHER: Encore, the free fan-made reimagining of MOTHER 1, adapted from its original Godot Engine PC release. This project contains the source patches, control rewrites, and tooling created to make the game run natively on the PS Vita hardware.&lt;br /&gt;
&lt;br /&gt;
Improvements &amp;amp; Adaptations for the PS Vita:&lt;br /&gt;
* Memory &amp;amp; loading (boot crash fix):&lt;br /&gt;
** Lazy UI loading - the UI manager previously preloaded around 11 heavy scenes (battle system, shops, storage, ATM, save/keyboard/ocarina screens, dialogue boxes) at boot; these now load on demand.&lt;br /&gt;
** Lazy map loading - maps now load individually when opened, instead of every map being instanced at startup.&lt;br /&gt;
** Result: boot RAM usage dropped from 365/365 MB (an out-of-memory crash) to around 181/365 MB, letting the game boot to the title screen and beyond.&lt;br /&gt;
* Data packaging:&lt;br /&gt;
** The game is fully data-driven (900+ &amp;lt;code&amp;gt;.yaml&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.ecs&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;.dat&amp;lt;/code&amp;gt; files). These raw data files were explicitly included in the Vita export so the runtime stops looping on missing data.&lt;br /&gt;
* Engine compatibility (Godot 3.6 → 3.5 Vita fork):&#039;&#039;&#039;&lt;br /&gt;
** Replaced a Godot 3.6-only API call (&amp;lt;code&amp;gt;is_node_ready&amp;lt;/code&amp;gt;) with its 3.5 equivalent and restored a dropped &amp;lt;code&amp;gt;class_name&amp;lt;/code&amp;gt; registration from the decompile.&lt;br /&gt;
* Controls and input:&lt;br /&gt;
** Gamepad-first prompts - on-screen prompts show real PS Vita buttons instead of PC keyboard keys by default.&lt;br /&gt;
** Touch L2/R2 - the Vita&#039;s missing L2/R2 buttons are mapped to the left/right halves of the touchscreen.&lt;br /&gt;
** PC hints removed - the title screen&#039;s &amp;quot;Fullscreen (F11) / Window Size (F5)&amp;quot; hints are hidden on console.&lt;br /&gt;
* Display:&lt;br /&gt;
** Adapted the game to the Vita&#039;s 960×544 screen.&lt;br /&gt;
&lt;br /&gt;
Based on MOTHER: Encore ACT 2 - v0.4.0.3 (Windows). Original game by Pkdotts and team: https://mother-encore.itch.io/mother-encore&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Every release ships two files: the .vpk (the app itself) and a -GameData.zip (the game data, i.e. game_data/game.pck). Both are required.&lt;br /&gt;
&lt;br /&gt;
Go to [https://github.com/WolffsRoom/MotherEncore-PSVita/releases Releases], download the latest MotherEncore-Vita-x.x.x.vpk and MotherEncore-Vita-x.x.x-GameData.zip.&lt;br /&gt;
&lt;br /&gt;
Install the .vpk on the PS Vita using [[VitaShell]] or [[FMVita]] (a personalized VitaShell fork by the author).&lt;br /&gt;
&lt;br /&gt;
Extract the -GameData.zip to get a game_data folder containing game.pck.&lt;br /&gt;
&lt;br /&gt;
Connect the Vita via FTP or USB and copy the game_data folder into &amp;lt;code&amp;gt;ux0:app/MOTHER001/&amp;lt;/code&amp;gt;, so that the file ends up exactly at &amp;lt;code&amp;gt;ux0:app/MOTHER001/game_data/game.pck&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When updating, always install both the new .vpk and the new -GameData.zip, a newer VPK is not guaranteed to work with an older game.pck, and vice versa. &lt;br /&gt;
&lt;br /&gt;
Save files are not lost when uninstalling or updating (stored under &amp;lt;code&amp;gt;ux0:data/godot/app_userdata/MOTHER Encore/...&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
D-Pad or Left Analog - Move&lt;br /&gt;
&lt;br /&gt;
Cross - Confirm / Interact&lt;br /&gt;
&lt;br /&gt;
Triangle - Menu&lt;br /&gt;
&lt;br /&gt;
Circle - Cancel, Back&lt;br /&gt;
&lt;br /&gt;
Square - Crouch, Telepathy (hold)&lt;br /&gt;
&lt;br /&gt;
Right Analog - Camera&lt;br /&gt;
&lt;br /&gt;
L1 - Previous party member&lt;br /&gt;
&lt;br /&gt;
R1 - Next party member&lt;br /&gt;
&lt;br /&gt;
Touchscreen, left half (emulated L2) - Scope, Markers&lt;br /&gt;
&lt;br /&gt;
Touchscreen, right half (emulated R2) - Crouch, Telepathy&lt;br /&gt;
&lt;br /&gt;
The PS Vita has no physical L2/R2 (nor L3/R3) buttons; these are emulated by touching the left and right halves of the front touchscreen.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/MOTHEREncoreVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/MOTHEREncoreVita-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/MOTHEREncoreVita-03.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;MOTHER: Encore Act 2 LAUNCH TRAILER&#039;&#039;&#039; ([https://www.youtube.com/watch?v=rVubWY0Ubzs Mother Encore]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;rVubWY0Ubzs&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
This is an early technical beta - expect rough edges:&lt;br /&gt;
* Battle crashes: The game still crashes when entering the first battle. Fix planned for the next version.&lt;br /&gt;
* Performance: GPU load is high and frame rate is currently low in the overworld/title; performance tuning is still in progress.&lt;br /&gt;
* Some scenes are still being optimized for the PowerVR GPU.&lt;br /&gt;
* Three unrecoverable developer/joke dialogue sheets from the decompile (Snowman, Testing, shitpost) were removed; they are not part of normal gameplay.&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v0.2b&#039;&#039;&#039;&lt;br /&gt;
* Fixed touch L2/R2: touching the left/right half of the screen now correctly presses L2 (Scope) and R2 (Crouch/Telepathy) in-game, not just on the polling checks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1b&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* MOTHER: Encore - created by Pkdotts and team - https://mother-encore.itch.io/mother-encore&lt;br /&gt;
* Please support the original developers and the official MOTHER series.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Author&#039;s website - https://wolffsroom.wordpress.com/&lt;br /&gt;
* GitHub - https://github.com/WolffsRoom/MotherEncore-PSVita&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1urf516/mother_encore_act_2_psvita_port_beta/&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1431&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205692</id>
		<title>Pngshot-ssu Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Pngshot-ssu_Vita&amp;diff=205692"/>
		<updated>2026-07-12T05:35:15Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=sys-screenuploader&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|description=Take screenshots in PNG format.&lt;br /&gt;
|author=OctoNezd&lt;br /&gt;
|lastupdated=2026/04/29&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.0.0&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/sysscreenuploaderVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;br /&gt;
|source=https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=sysscreenuploaderVita.png&lt;br /&gt;
|image_alt=sys-screenuploader&lt;br /&gt;
}}&lt;br /&gt;
pngshot-ssu (pngshot-sys-screen-uploader) is a modification of [[pngshot Vita|pngshot]] which allows making screenshots in PNG format. The modification is that screenshots are sent to Telegram or Discord using screenuploader.bakatrouble.me service based on the [[Sys-screenuploader Switch|sys-screenuploader Switch plugin]].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download from the [https://github.com/OctoNezd/pngshot-sys-screen-uploader/releases Releases section] or [https://nightly.link/OctoNezd/pngshot-sys-screen-uploader/workflows/build.yaml/master CI].&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;pngshot-ssu.suprx&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ur0:tai&amp;lt;/code&amp;gt; and add this into config.txt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Upload screenshots from screenshot key&lt;br /&gt;
*main&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&lt;br /&gt;
# Swaps send to email button logic with upload to ssu button&lt;br /&gt;
*NPXS10004&lt;br /&gt;
ur0:tai/pngshot-ssu.suprx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create a &amp;lt;code&amp;gt;ux0:data/pngshot-ssu&amp;lt;/code&amp;gt; directory. Write config.txt, based on the contents of [https://github.com/OctoNezd/pngshot-sys-screen-uploader/blob/master/config.sample.txt config.sample.txt] in the repository.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
PS button+Start - Take a screenshot&lt;br /&gt;
&lt;br /&gt;
Screenshots can be accessed with the Photos app, or from &amp;lt;code&amp;gt;ux0:picture/SCREENSHOT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Pngshot-sys-screen-uploader demo&#039;&#039;&#039; ([https://www.youtube.com/watch?v=NOtk0emn10Q Octo]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;NOtk0emn10Q&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* I think its more or less stable. I think. Hadnt been able to reproduce livearea glitches and lags after I disabled debugging plugins.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/OctoNezd/pngshot-sys-screen-uploader&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1sw3hfl/kinda_ported_sysscreenuploader_from_switch_to_vita/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Noled_Vita_by_Falkenhawk&amp;diff=205691</id>
		<title>Noled Vita by Falkenhawk</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Noled_Vita_by_Falkenhawk&amp;diff=205691"/>
		<updated>2026-07-12T05:35:14Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=noled by falkenhawk&lt;br /&gt;
|image=noledVitabyFalkenhawk.png&lt;br /&gt;
|description=A simple plugin to turn off the home button led of PS Vita.&lt;br /&gt;
|author=falkenhawk&lt;br /&gt;
|lastupdated=2026/07/05&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=2.1&lt;br /&gt;
|license=N/A&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/noledVitabyFalkenhawk.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1unpf0m/noled_v20_vita_slim_night_owls_rejoice/&lt;br /&gt;
|source=https://github.com/falkenhawk/noled&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=noledVitabyFalkenhawk.png&lt;br /&gt;
|image_alt=noled by falkenhawk&lt;br /&gt;
}}&lt;br /&gt;
A simple plugin to turn off PS Vita status LEDs, especially useful at night. &lt;br /&gt;
&lt;br /&gt;
It is a fork of the original [[Noled Vita|noled]] and adds the first known software control of the PCH-2000 green power LED. Fully automatic, no configuration:&lt;br /&gt;
* Power LED dark whenever the console is on.&lt;br /&gt;
* Orange charging indication preserved - shows while actually charging, also in standby.&lt;br /&gt;
* Re-applied by itself ~2 s after every wake; the standby blink sequence is gone too.&lt;br /&gt;
* Vita 1000 autodetected and keeps the classic behavior; removal restores everything stock.&lt;br /&gt;
&lt;br /&gt;
The LED is not a SoC GPIO; it hangs off the syscon MCU (&amp;quot;Ernie&amp;quot;) and is driven by its autonomous power/charge policy, which is why every GPIO-based approach failed for years. The off switch is &amp;lt;code&amp;gt;ksceSysconCtrlLedBlinkType2&amp;lt;/code&amp;gt; (syscon command &amp;lt;code&amp;gt;0x89F&amp;lt;/code&amp;gt;): an off-pattern for device 1 parks the indicator dark, and claiming the engine&#039;s single pattern slot for device 0 releases it back to syscon policy. The full story - syscon LED command reference, the power LED state model, hardware-verified results and the dead ends - is in [https://github.com/falkenhawk/noled/blob/master/docs/pch2000-power-led-research.md docs/pch2000-power-led-research.md]; the other files in docs/ are the raw session-by-session research trail.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Copy &amp;lt;code&amp;gt;noled.skprx&amp;lt;/code&amp;gt; to your tai folder (&amp;lt;code&amp;gt;ur0:tai/&amp;lt;/code&amp;gt; recommended - internal memory, works without a memory card; &amp;lt;code&amp;gt;ux0:tai/&amp;lt;/code&amp;gt; works too) and add it to the &amp;lt;code&amp;gt;*KERNEL&amp;lt;/code&amp;gt; section of your taiHEN &amp;lt;code&amp;gt;config.txt&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
 *KERNEL&lt;br /&gt;
 ur0:tai/noled.skprx&lt;br /&gt;
&lt;br /&gt;
Note: taiHEN reads &amp;lt;code&amp;gt;ur0:tai/config.txt&amp;lt;/code&amp;gt; only when &amp;lt;code&amp;gt;ux0:tai/config.txt&amp;lt;/code&amp;gt; does not exist - add the line to whichever config is active on your system. Reboot afterwards.&lt;br /&gt;
&lt;br /&gt;
No configuration file is needed - the plugin reads no config and writes no files at all. Removing it from the taiHEN config (plus a reboot) restores everything stock.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Disabling the led on Vita&#039;&#039;&#039; ([https://www.youtube.com/watch?v=YbxpdJ67VgE Mithat Temizer]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;YbxpdJ67VgE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v2.1 - slim release build&#039;&#039;&#039;&lt;br /&gt;
* the release plugin was slimmed down to the production policy only: 5.3 KB filesize, under 1 KB of resident kernel memory (v2.0: 30 KB / ~186 KB)&lt;br /&gt;
* zero file I/O: no config file read, no logs written - fixes v2.0 appending a heartbeat line to &amp;lt;code&amp;gt;ux0:data/noled/probe.log&amp;lt;/code&amp;gt; every 10 s without bound; &amp;lt;code&amp;gt;ux0:data/noled/&amp;lt;/code&amp;gt; is no longer used and can be deleted&lt;br /&gt;
* all research/diagnostic machinery moved to a build-it-yourself dev harness (&amp;lt;code&amp;gt;dev/&amp;lt;/code&amp;gt;); releases ship only &amp;lt;code&amp;gt;noled.skprx&amp;lt;/code&amp;gt;&lt;br /&gt;
* LED behavior is unchanged and was re-verified on hardware&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.0 - Vita 2000 power LED support&#039;&#039;&#039;&lt;br /&gt;
* First known software control of the PCH-2000 (Vita Slim / Vita 2000) green power LED - the feature requested in [https://github.com/rereprep/noled/issues/3 rereprep#3] since 2018.&lt;br /&gt;
* &#039;&#039;&#039;Vita 2000 / PCH-2000&#039;&#039;&#039;: power LED dark whenever the console is on; orange charging indication preserved (shows while actually charging, incl. in standby); re-applied automatically ~2s after every wake&lt;br /&gt;
* &#039;&#039;&#039;Vita 1000&#039;&#039;&#039;: unchanged classic behavior (home button + game card LED off) - the plugin autodetects the model&lt;br /&gt;
* boot plugin only: no app, no configuration file needed&lt;br /&gt;
* bonus: the standby blink sequence is suppressed too (one short final blink remains, generated inside the syscon MCU)&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/falkenhawk/noled&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1unpf0m/noled_v20_vita_slim_night_owls_rejoice/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=CardWars-Vita&amp;diff=205690</id>
		<title>CardWars-Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=CardWars-Vita&amp;diff=205690"/>
		<updated>2026-07-12T05:35:14Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=CardWars-Vita&lt;br /&gt;
|image=CardWarsVita.png&lt;br /&gt;
|description=Native port of Adventure Time: Card Wars for PSVita.&lt;br /&gt;
|author=Parindraaa&lt;br /&gt;
|lastupdated=2026/07/10&lt;br /&gt;
|type=Card&lt;br /&gt;
|version=2.0&lt;br /&gt;
|license=N/A&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/CardWarsVita.7z&lt;br /&gt;
|website=https://github.com/parindraaa867/AT-CardWars-Vita&lt;br /&gt;
|source=&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Games (Card) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=CardWarsVita.png&lt;br /&gt;
|image_alt=CardWars-Vita&lt;br /&gt;
}}&lt;br /&gt;
A native PS Vita port of Card Wars: Adventure Time. Originally released for iOS/Android and shut down along with its servers, this port was meant to get the PC Port running on Vita hardware for a bounty.&lt;br /&gt;
&lt;br /&gt;
Built with Unity 2017.4 (PSP2), based on the PC port of the decompiled game.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
No VPK is provided directly. Releases contain an xdelta patch that must be applied to your own copy of the original game. You need version 1.11.0 of CardWars for iOS 6.0 (CardWars 1.11.0 iOS IPA) (MUST BE ORIGINAL GAME FILES).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
* Install &amp;lt;code&amp;gt;CardWars_Stub.vpk&amp;lt;/code&amp;gt; on your Vita with [[VitaShell]].&lt;br /&gt;
* Download [[xdelta|xdelta3]] ([https://github.com/jmacd/xdelta-gpl/releases Windows builds available]) and put &amp;lt;code&amp;gt;xdelta3.exe&amp;lt;/code&amp;gt;, the IPA and &amp;lt;code&amp;gt;CardWarsData.xdelta&amp;lt;/code&amp;gt; in the same folder.&lt;br /&gt;
* Open a command prompt in that folder and run: &amp;lt;code&amp;gt;xdelta3 -d -B 536870912 -s Card_Wars_1.11.0_ios_6.0.ipa CardWarsData.xdelta CardWarsData.zip&amp;lt;/code&amp;gt;&lt;br /&gt;
* Extract &amp;lt;code&amp;gt;CardWarsData.zip&amp;lt;/code&amp;gt; and copy its contents into &amp;lt;code&amp;gt;ux0:app/CWRS00001/&amp;lt;/code&amp;gt; and merge with the existing files. Launch Card Wars.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes:&#039;&#039;&#039; &lt;br /&gt;
* Runs much better on 444mhz/166mhz CPU/GPU clock than stock.&lt;br /&gt;
* Saves are stored in &amp;lt;code&amp;gt;ux0:/data/CardWars/&amp;lt;/code&amp;gt;. Saves survive updates and reinstalls as they are separate from the game&#039;s actual data files.&lt;br /&gt;
* When updating, new vpk must be installed, old vpk will not work with new data files.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/CardWarsVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/CardWarsVita-02.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Official Adventure Time Card Wars Launch Trailer&#039;&#039;&#039; ([https://www.youtube.com/watch?v=5z9dX51mRrg TouchGameplay]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;640&amp;quot;&amp;gt;5z9dX51mRrg&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039; v2 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;To Do&#039;&#039;&#039;&lt;br /&gt;
** Reduce stutters in menu and gameplay caused by UI&lt;br /&gt;
** Make a menu to toggle anti-aliasing and other future performance/graphical settings&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Mitigated touch input loss during gameplay&lt;br /&gt;
** Fixed battle music not playing in Fionna &amp;amp; Cake quests (and a few other affected tracks)&lt;br /&gt;
** Removed invisible button in top right of quest map.&lt;br /&gt;
** Reclaimed 26MB of memory (headroom for more texture enhancements in the future)&lt;br /&gt;
** Upscaled more textures&lt;br /&gt;
** Turned up audio sampling rate (should sound better)&lt;br /&gt;
** Anti-aliasing enabled (MSAA 2x)&lt;br /&gt;
** Capped particles (reduced stuttering and mitigates chance of GPU crash)&lt;br /&gt;
** Minor performance improvements during gameplay&lt;br /&gt;
* &#039;&#039;&#039;Known Issue&#039;&#039;&#039;&lt;br /&gt;
** Very rare GPU crash that occurs as a result of GPU driver not responding to a call made from the game, (most likely cause is the game&#039;s GUI?)&lt;br /&gt;
** Happens very randomly, usually after several hours of playing on and off. (actively trying to find the root of this, I will be working on fixing this as my main focus)&lt;br /&gt;
* Saves are safe from updates! You don&#039;t need to worry about save data when installing this new patch and vpk.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; v1.5 &#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Optimized menus ( 30fps -&amp;gt; 60fps)&lt;br /&gt;
** Fixed heavy lag in deck manager&lt;br /&gt;
** Smoother scrolling in card lists&lt;br /&gt;
** Redid the pinch zoom gesture for quest map (much better)&lt;br /&gt;
** Slightly faster boot&lt;br /&gt;
** Removed &amp;quot;no connection&amp;quot; button in quest map (used to restart and crash app)&lt;br /&gt;
* &#039;&#039;&#039;Issues&#039;&#039;&#039;&lt;br /&gt;
** Card box can drop frames while scrolling fast through a large collection. (Cost to rebuild large UIs)&lt;br /&gt;
** Card glimmer effect on premium cards removed (as of now, huge performance boost in deck manager)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/parindraaa867/AT-CardWars-Vita&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1428&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Save_Keeper_Vita&amp;diff=205689</id>
		<title>Save Keeper Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Save_Keeper_Vita&amp;diff=205689"/>
		<updated>2026-07-12T05:35:13Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=Save Keeper&lt;br /&gt;
|image=SaveKeeperVita.png&lt;br /&gt;
|description=PS Vita save backup manager with Google Drive sync - QR sign-in, timestamped snapshots, multi-device.&lt;br /&gt;
|author=falkenhawk&lt;br /&gt;
|lastupdated=2026/07/05&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=1.0.0&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/SaveKeeperVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1unp5ey/save_keeper_back_up_and_sync_saves_via_google/&lt;br /&gt;
|source=https://github.com/falkenhawk/vita-save-keeper&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Utilities) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=SaveKeeperVita.png&lt;br /&gt;
|image_alt=Save Keeper&lt;br /&gt;
}}&lt;br /&gt;
Back up your PS Vita and PSP save games and sync them to your own Google Drive. Made for people with more than one Vita (or a PS TV) who want their saves to follow them.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Creates timestamped ZIP snapshots of Vita, game card, and PSP/Adrenaline saves&lt;br /&gt;
* Uploads snapshots to a &amp;lt;code&amp;gt;PSV Saves&amp;lt;/code&amp;gt; folder in your own Google Drive&lt;br /&gt;
* Downloads and restores snapshots on any of your devices, so a save made on one Vita can be picked up on another Vita or a PS TV&lt;br /&gt;
* Shows your games in a grid with real titles and icons, grouped into Vita / Homebrew / PSP tabs&lt;br /&gt;
* Sorts by name, by last saved, or by last synced (whatever was uploaded most recently, from any device, bubbles to the top)&lt;br /&gt;
* Signs in to Google by scanning a QR code with your phone - no typing on the Vita, and you stay signed in until you disconnect&lt;br /&gt;
* Keeps multiple snapshots per game, so you can go back to an older save at any time&lt;br /&gt;
* Before a restore overwrites anything, the current save is snapshotted automatically (shown as &amp;lt;code&amp;gt;[AUTO]&amp;lt;/code&amp;gt;), unless an identical backup already exists&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&#039;&#039;&#039;What you need:&#039;&#039;&#039;&lt;br /&gt;
* A PS Vita or PS TV with HENkaku / h-encore homebrew enabled&lt;br /&gt;
* &amp;quot;Enable unsafe homebrew&amp;quot; turned on in HENkaku settings (the app reads save folders and the system app database)&lt;br /&gt;
* VitaShell (or another way to install a VPK)&lt;br /&gt;
* A Google account and about ten minutes for the [https://github.com/falkenhawk/vita-save-keeper#google-drive-setup-one-time one-time Google setup]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Install:&#039;&#039;&#039;&lt;br /&gt;
* Copy &amp;lt;code&amp;gt;save-keeper.vpk&amp;lt;/code&amp;gt; to your Vita (for example over FTP to &amp;lt;code&amp;gt;ux0:/data/&amp;lt;/code&amp;gt;)&lt;br /&gt;
* In [[VitaShell]], press X on the file and confirm the install, including the extended permissions prompt&lt;br /&gt;
* Do the one-time Google setup, then launch Save Keeper from the LiveArea&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Google Drive setup (one time):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Save Keeper talks to your own Google Drive, so it needs credentials that belong to you. Follow [https://github.com/falkenhawk/vita-save-keeper/blob/master/docs/google-drive-setup.md docs/google-drive-setup.md] - it walks through creating a free Google Cloud project (&amp;quot;PSV Save Keeper&amp;quot;), enabling the Drive API, and creating a &amp;quot;TVs and Limited Input devices&amp;quot; OAuth client.&lt;br /&gt;
&lt;br /&gt;
The short version of what you end up with: a small &amp;lt;code&amp;gt;google-client.json&amp;lt;/code&amp;gt; file at &amp;lt;code&amp;gt;ux0:data/save-keeper/google-client.json&amp;lt;/code&amp;gt; on each device. After that, connecting is a single Triangle press: scan the QR code with your phone, approve, done. The sign-in survives app exits, reboots, and reinstalls.&lt;br /&gt;
&lt;br /&gt;
The app can only see files it created itself. It cannot read anything else in your Drive.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
D-Pad - Move through the game grid&lt;br /&gt;
&lt;br /&gt;
L/R - Switch between the Vita/Homebrew/PSP tabs&lt;br /&gt;
&lt;br /&gt;
Right Stick - Move through the backup list&lt;br /&gt;
&lt;br /&gt;
Cross - Create a backup (on &amp;quot;New Backup&amp;quot;) or restore the selected one (press twice)&lt;br /&gt;
&lt;br /&gt;
Select - Upload the selected local backup to Google Drive&lt;br /&gt;
&lt;br /&gt;
Start - Delete the selected backup, locally or from Drive (press twice)&lt;br /&gt;
&lt;br /&gt;
Square - Change sorting: by name, last saved, or last synced&lt;br /&gt;
&lt;br /&gt;
Triangle - Connect Google Drive, or re-sync the remote backup list&lt;br /&gt;
&lt;br /&gt;
Circle - Cancel a pending confirmation or the Google sign-in&lt;br /&gt;
&lt;br /&gt;
On Japanese-region consoles Cross and Circle swap automatically, following the system setting. Backups from Google Drive show a &amp;lt;code&amp;gt;[GD]&amp;lt;/code&amp;gt; prefix in the list. Use the PS button to leave the app.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/SaveKeeperVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/SaveKeeperVita-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/SaveKeeperVita-03.png&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/falkenhawk/vita-save-keeper&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1unp5ey/save_keeper_back_up_and_sync_saves_via_google/&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1430&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Picture_Poker_Vita&amp;diff=205688</id>
		<title>Picture Poker Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Picture_Poker_Vita&amp;diff=205688"/>
		<updated>2026-07-12T05:35:12Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=Picture Poker&lt;br /&gt;
|image=PicturePokerVita.png&lt;br /&gt;
|description=A game inspired by Luigi&#039;s Picture Poker.&lt;br /&gt;
|author=4brm01&lt;br /&gt;
|lastupdated=2026/07/07&lt;br /&gt;
|type=Card&lt;br /&gt;
|version=1.0&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/PicturePokerVita.7z&lt;br /&gt;
|website=https://www.reddit.com/r/vitahacks/comments/1up4dt6/am_making_picture_poker_for_the_vita_d/&lt;br /&gt;
|source=https://github.com/4brm01/Picture-Poker&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Games (Card) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=PicturePokerVita.png&lt;br /&gt;
|image_alt=Picture Poker&lt;br /&gt;
}}&lt;br /&gt;
Picture-Poker is a game inspired by Luigi&#039;s picture poker.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download the &amp;quot;PicturePoker.vpk&amp;quot; and install it on the Vita via [[VitaShell]].&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/PicturePokerVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/PicturePokerVita-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/PicturePokerVita-03.png&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/4brm01/Picture-Poker&lt;br /&gt;
* Reddit - https://www.reddit.com/r/vitahacks/comments/1up4dt6/am_making_picture_poker_for_the_vita_d/&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1429&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Pngshot_Vita&amp;diff=205687</id>
		<title>Pngshot Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Pngshot_Vita&amp;diff=205687"/>
		<updated>2026-07-12T05:15:07Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=pngshotvita2.png&lt;br /&gt;
|image_alt=pngshot&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Vita Homebrews&lt;br /&gt;
|title=pngshot&lt;br /&gt;
|image=pngshotvita2.png&lt;br /&gt;
|description=Take PNG screenshots in any app + remove watermark.&lt;br /&gt;
|author=xyzz&lt;br /&gt;
|lastupdated=2019/04/06&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.3&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/pngshotvita.7z&lt;br /&gt;
|website=https://github.com/xyzz/pngshot&lt;br /&gt;
|source=https://github.com/xyzz/pngshot&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
pngshot is a plugin that replaces standard compressed JPG screenshots with PNG screenshots without watermark.&lt;br /&gt;
&lt;br /&gt;
It also enables screenshots taking in every game.&lt;br /&gt;
&lt;br /&gt;
==Features ==&lt;br /&gt;
* Takes screenshots in png format.&lt;br /&gt;
* No watermark.&lt;br /&gt;
* Take screenshots in any app.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Copy pngshot.suprx to ur0:tai and add ur0:tai/pngshot.suprx below *main in ur0:tai/config.txt&lt;br /&gt;
&lt;br /&gt;
 *main&lt;br /&gt;
 ur0:tai/pngshot.suprx&lt;br /&gt;
&lt;br /&gt;
You can access screenshots with the Photos app, or from ux0:picture/SCREENSHOT/.&lt;br /&gt;
&lt;br /&gt;
Note that this was only tested with retail SceShell. If, for some reason, you have some modifications done to your SceShell, this plugin will probably crash your Vita.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
PS button+Start - Take a screenshot&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
Will not work if you installed a DEX SceShell to your Vita (by [https://www.reddit.com/r/vitahacks/comments/6maxu9/comment/dk07ta5/?utm_source=share&amp;amp;utm_medium=web2x&amp;amp;context=3 devnoname120]).&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v1.3&#039;&#039;&#039;&lt;br /&gt;
* Added Testkit/DEX support.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2&#039;&#039;&#039;&lt;br /&gt;
*Added support for 3.68&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1&#039;&#039;&#039;&lt;br /&gt;
*Added support for 3.65/3.67&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/xyzz/pngshot&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/283&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Noled_Vita&amp;diff=205686</id>
		<title>Noled Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Noled_Vita&amp;diff=205686"/>
		<updated>2026-07-12T05:09:55Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=noled&lt;br /&gt;
|image=noledvita2.png&lt;br /&gt;
|description=Home button light disabler for PS Vita.&lt;br /&gt;
|author=xerpi, reprep&lt;br /&gt;
|lastupdated=2017/08/16&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.2&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/noledvita.7z?k33p0fil35 1.1 &amp;amp; 1.2&lt;br /&gt;
|website=https://gbatemp.net/threads/release-noled-plugin-to-turn-off-the-home-button-led.466963/&lt;br /&gt;
|source=https://github.com/rereprep/noled&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=noledvita2.png&lt;br /&gt;
|image_alt=noled&lt;br /&gt;
}}&lt;br /&gt;
noled is a simple plugin to turn off the blue home button led of PS Vita. Especially useful at night. &lt;br /&gt;
&lt;br /&gt;
With the release of v1.2, it will now disable both the Home Button LED and Game Cartridge LED.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
It is a kernel plugin so enable it in kernel section of your config.txt.&lt;br /&gt;
&lt;br /&gt;
To install, copy noled.skprx to ux0:tai/ or ur0:tai/. &lt;br /&gt;
&lt;br /&gt;
Edit tai/config.txt (change to ur0 if you store the plugin there)&lt;br /&gt;
&lt;br /&gt;
 *KERNEL&lt;br /&gt;
 ux0:tai/noled.skprx&lt;br /&gt;
&lt;br /&gt;
After that, reboot your vita and restart henkaku.&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Disabling the led on Vita&#039;&#039;&#039; ([https://www.youtube.com/watch?v=YbxpdJ67VgE Mithat Temizer]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;YbxpdJ67VgE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Compatible with Henkaku Ensō.&lt;br /&gt;
&lt;br /&gt;
==Known issue==&lt;br /&gt;
After resuming from standby, blue light will turn on for a second and then turn off.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v1.2&#039;&#039;&#039;&lt;br /&gt;
* It now disables both Home Button LED and Game Cartridge LED. If you only want Home Button LED disabled, please download v1.1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1&#039;&#039;&#039;&lt;br /&gt;
* compatible with Henkaku Ensō, thanks to Celeste for the tip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
All credits to @xerpi, all i did was to compile the source.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/rereprep/noled&lt;br /&gt;
* Wololo - https://wololo.net/talk/viewtopic.php?t=48017&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/release-noled-plugin-to-turn-off-the-home-button-led.466963/&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/233&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=TomoToolNX_Switch&amp;diff=205685</id>
		<title>TomoToolNX Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=TomoToolNX_Switch&amp;diff=205685"/>
		<updated>2026-07-12T04:53:29Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=TomoToolNX&lt;br /&gt;
|image=TomoToolNXSwitch.png&lt;br /&gt;
|description=A tool for managing Tomodachi Life Ltd directly on the Nintendo Switch.&lt;br /&gt;
|author=miiazertyy&lt;br /&gt;
|lastupdated=2026/07/06&lt;br /&gt;
|type=Save Managers and Editors&lt;br /&gt;
|version=1.3.8&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/TomoToolNXSwitch.7z&lt;br /&gt;
|website=https://github.com/miiazertyy/TomoToolNX&lt;br /&gt;
|source=https://github.com/miiazertyy/TomoToolNX&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Save Managers and Editors) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=TomoToolNXSwitch.png&lt;br /&gt;
|image_alt=TomoToolNX&lt;br /&gt;
}}&lt;br /&gt;
TomoToolNX is a Nintendo Switch homebrew tool for editing Tomodachi Life save data directly from the console. Both WebUI and on-Switch modes are supported.&lt;br /&gt;
&lt;br /&gt;
The project is based on [https://gamebanana.com/tools/22435 LivinTheDreamToolkit] by the UGC editor contributors. Mii sharing is based on [https://github.com/Star-F0rce/ShareMii ShareMii] by Star-F0rce. The save-file parser, generated data tables (wishes, habits, clothes, coordinates, treasures), Map.sav schema hashes, UGC kind table, housing-edit safety rules, and the Custom BC1/BC3 texture encoder are derived from [https://github.com/alexislours/ltd-save-editor alexislours/ltd-save-editor] (AGPL-3.0-or-later). Early reference for save key hashes came from [https://github.com/tlmodding/ltd-gamedata tlmodding/ltd-gamedata].&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* &#039;&#039;&#039;Textures - swap any UGC texture (FacePaint, Food, Goods, Thumbs) by importing a PNG. Images are resized, alpha-cleaned, and re-encoded automatically.&lt;br /&gt;
* &#039;&#039;&#039;Miis&#039;&#039;&#039; - edit just about everything visible: stats, words, habits, belongings, relationships, housing, and the social graph. Import / export individual Miis as &amp;lt;code&amp;gt;.ltd&amp;lt;/code&amp;gt; files.&lt;br /&gt;
* &#039;&#039;&#039;TomodachiShare&#039;&#039;&#039; - browse the online catalogue, search and filter, preview, and download shared Miis directly into a save slot.&lt;br /&gt;
* &#039;&#039;&#039;Player save&#039;&#039;&#039; - adjust the global player fields: name, island, money, currency, birthday, region, languages, wishes, fountain, island size, and more.&lt;br /&gt;
* &#039;&#039;&#039;Map&#039;&#039;&#039; - view your island as a 120×80 tile grid, click any object to inspect and edit its position, rotation, linked map ID, or which Miis live in it; place new objects or remove existing ones. Works on both the WebUI and the on-Switch controller / touch UI.&lt;br /&gt;
* &#039;&#039;&#039;Backups&#039;&#039;&#039; - your save is copied to the SD card before any edit, and every texture import keeps a per-file backup. Restore from inside the app.&lt;br /&gt;
* &#039;&#039;&#039;MTP over USB&#039;&#039;&#039; - the SD card mounts as a USB drive while the WebUI is running (via [https://github.com/ITotalJustice/libhaze libhaze]).&lt;br /&gt;
* &#039;&#039;&#039;Translations&#039;&#039;&#039; - both the WebUI and the on-Switch UI can be translated by editing plain text files. Contributions welcome.&lt;br /&gt;
* &#039;&#039;&#039;Update check&#039;&#039;&#039; - on launch, lets you know when a newer release is up on GitHub.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Copy &amp;lt;code&amp;gt;TomoToolNX.nro&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/switch/TomoToolNX/&amp;lt;/code&amp;gt; on your SD card and launch from the homebrew menu.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
Launch the app, pick a user account, decide what to do with any existing save backup, then choose a mode:&lt;br /&gt;
* WebUI - starts a local HTTP server. Open &amp;lt;code&amp;gt;http://&amp;lt;switch-ip&amp;gt;:8080&amp;lt;/code&amp;gt; on any device on the same network and edit from the browser. The SD card also mounts over USB while the server is running.&lt;br /&gt;
* On-Switch - browse and edit directly with the controller. Tabs are switched with L / R (or ZL / ZR); each tab shows its own controls at the bottom of the screen.&lt;br /&gt;
&lt;br /&gt;
Press B to back out at any point. The app prompts before discarding unsaved changes.&lt;br /&gt;
&lt;br /&gt;
A few notes on textures: PNGs are auto-resized to the target format, a transparent background with clean edges gives the best result, and encoding is sRGB-aware to match the game&#039;s color reproduction. The default Custom encoder is a faithful port of [https://github.com/alexislours/ltd-save-editor ltd-save-editor]&#039;s BC1/BC3 encoder; a faster PCA-only fallback is available in the settings.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
{| style=&amp;quot;max-width:80%; margin-left:0em;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TomoToolNXSwitch-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TomoToolNXSwitch-02.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TomoToolNXSwitch-03.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.3.8&#039;&#039;&#039;&lt;br /&gt;
* Added create blank UGC and Mii buttons&lt;br /&gt;
* Added a cursor inspired by hekate (Right stick to enable and left stick to click)&lt;br /&gt;
* Added a Penality travel clearer in the player tab&lt;br /&gt;
* UI Enhancements&lt;br /&gt;
* Bug fixes&lt;br /&gt;
* Prob more things I dont remember tbh&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.7&#039;&#039;&#039;&lt;br /&gt;
* Added Japanese translation&lt;br /&gt;
* Libhazefix directly wired with make setup for easier building&lt;br /&gt;
* Customizable theme colors because why not&lt;br /&gt;
* UI enhancements&lt;br /&gt;
* Bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.6&#039;&#039;&#039;&lt;br /&gt;
* Added WebUI translations and sync from hb app language&lt;br /&gt;
* Added island stats (WebUI only) in the Player tab&lt;br /&gt;
* More editing features in the Map tab&lt;br /&gt;
* Bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.5&#039;&#039;&#039;&lt;br /&gt;
* QoL features and bug fixes&lt;br /&gt;
* Compressed the bundled save file (-4mo)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.4&#039;&#039;&#039;&lt;br /&gt;
* WIP island &amp;quot;generator&amp;quot;, overwrite a user with a mostly well generated map &#039;seed system&#039;, you can also choose to use the 100% base save file&lt;br /&gt;
* Search and filter features in the texture tab&lt;br /&gt;
* Added mtp toggling to prevent crashes on emulator&lt;br /&gt;
* Parameter to change texture uploading resolution (for book and tv UGCs)&lt;br /&gt;
* Per user backup&lt;br /&gt;
* UI fixes, bug fixes and better emulator support&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.3&#039;&#039;&#039;&lt;br /&gt;
* Fixed update checker&lt;br /&gt;
* Fixed .ltd* file support&lt;br /&gt;
* Better tomodachishare loading logic&lt;br /&gt;
* Updated for latest LTD update&lt;br /&gt;
* UI fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.2&#039;&#039;&#039;&lt;br /&gt;
* Better network loading spree&lt;br /&gt;
* AI-Translated new languages (send a pr if any translation is incorrect)&lt;br /&gt;
* New UI layout and sounds (revertable in the settings tab)&lt;br /&gt;
* Social tab rewritten&lt;br /&gt;
* Manual code optimization not ai&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.1&#039;&#039;&#039;&lt;br /&gt;
* Removed the auto updater, it&#039;s a pain to maintain and because the app was added to the homebrew appstore it&#039;s more straight forward to update than before&lt;br /&gt;
* Added game assets icon for the item tab (only webui)&lt;br /&gt;
* New Credits button&lt;br /&gt;
* New Map tab&lt;br /&gt;
* New batch know relations buttons&lt;br /&gt;
* Bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.0&#039;&#039;&#039;&lt;br /&gt;
* Added multiple Language support, you can contribute with pull requests&lt;br /&gt;
* Added TomodachiShare Mii browser in the stats subtab (little export logo button)&lt;br /&gt;
* Added more bulk unlock features&lt;br /&gt;
* Added a straight forward Housing subtab to assign houses to Miis&lt;br /&gt;
* Items tab now straightforward on the app&lt;br /&gt;
* Bug fixes and qol features&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.5&#039;&#039;&#039;&lt;br /&gt;
* Added MTP file sharing for people that don&#039;t want to enable Wifi&lt;br /&gt;
* Added color encoding settings&lt;br /&gt;
* Bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.4&#039;&#039;&#039;&lt;br /&gt;
* Importing now supports every ugc files&lt;br /&gt;
* Touch screen now works in the belonging and habits tab&lt;br /&gt;
* Updater fixed&lt;br /&gt;
* Bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.3&#039;&#039;&#039;&lt;br /&gt;
* Added U-2-Netp ai to remove background of ugcs easily&lt;br /&gt;
* Thumb is now written automatically&lt;br /&gt;
* Touch screen fixes&lt;br /&gt;
* New Habits tab&lt;br /&gt;
* QoL UI additions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.2&#039;&#039;&#039;&lt;br /&gt;
* Subtabs are now implemented in the WebUI&lt;br /&gt;
* Now shows a prompt when running applet mode because of the &amp;quot;Error - User not found&amp;quot; confusion&lt;br /&gt;
* Added ability to change encounter dates in the relation tab&lt;br /&gt;
* Backup now saves up to 8 saves by default so there&#039;s less chances of overwriting an incorrect backup&lt;br /&gt;
* Added a belongings tab&lt;br /&gt;
* New settings tab in the user menu&lt;br /&gt;
* ShareMii version v3.2.3 fixes implemented&lt;br /&gt;
* Better UI logic and bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.1&#039;&#039;&#039;&lt;br /&gt;
* UI and WebUI bug fixes, better logic and additions&lt;br /&gt;
* Added more editing features in mii stats and player tabs&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.0&#039;&#039;&#039;&lt;br /&gt;
* Added save editing features for player file and miis&lt;br /&gt;
* QoL changes and bug fixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.6&#039;&#039;&#039;&lt;br /&gt;
* Added touch screen support&lt;br /&gt;
* Added the ability to choose the export path&lt;br /&gt;
* Exporting now shows the path where it&#039;s importing&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.5&#039;&#039;&#039;&lt;br /&gt;
* Added drag to import on webui&lt;br /&gt;
* Bug fixes from ShareMii v3.2.2&lt;br /&gt;
* Fixed crash when exiting app&lt;br /&gt;
* Now shows the actual name of the ugcs instead of the file name&lt;br /&gt;
* Fixed random hb menu crashing when closing the app&lt;br /&gt;
* Lots of UI logic enhancements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.4&#039;&#039;&#039;&lt;br /&gt;
* Fixed webui importing issue&lt;br /&gt;
* Added free file browsing&lt;br /&gt;
* Pictures now keep the current aspect ratio when importing&lt;br /&gt;
* UI enhancements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.3&#039;&#039;&#039;&lt;br /&gt;
* UI enhancements&lt;br /&gt;
* Fixed reddish color preview for the ugcs&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.2&#039;&#039;&#039;&lt;br /&gt;
* Revamped the UI so On-Switch and WebUI aren&#039;t separated anymore&lt;br /&gt;
* Added a skip button while update&#039;s being checked&lt;br /&gt;
* QoL features&lt;br /&gt;
* Known issue: reddish color on preview but everything works ingame&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.1&#039;&#039;&#039;&lt;br /&gt;
* Added an auto update feature, from github&lt;br /&gt;
* Added a QR code to the WebUI and the Wifi status&lt;br /&gt;
* Made the Mii tab phone compatible&lt;br /&gt;
* Miis load on computer correctly now&lt;br /&gt;
* Known issue: Reddish preview, still works perfectly ingame&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.0&#039;&#039;&#039;&lt;br /&gt;
* Fixed semi transparent pixels and a weird outline appearing with certain pictures&lt;br /&gt;
* Added Mii Exporting and Importing as LTD thanks to the ShareMii project&lt;br /&gt;
* Added mikhak font locally&lt;br /&gt;
* Known issue: Reddish preview, still works perfectly ingame&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.1&#039;&#039;&#039;&lt;br /&gt;
* Thumb files not listed anymore for ugcs&lt;br /&gt;
* Added a savefile backup feature and prompt&lt;br /&gt;
* Logs now go to &amp;quot;TomoToolNX&amp;quot; folder instead of &amp;quot;tomodachi-ugc&amp;quot;&lt;br /&gt;
* Made the UI cleaner&lt;br /&gt;
* Added ability to choose either webui or directly on switch&lt;br /&gt;
* QoL features&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Initial Release&lt;br /&gt;
* Uses only WebUI atm&lt;br /&gt;
* Supports UGC importing&lt;br /&gt;
* Be careful and backup your files using jksv before using this, no backup feature yet&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/miiazertyy/TomoToolNX&lt;br /&gt;
* Homebrew App Store - https://hb-app.store/switch/TomoToolNX&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Checkpoint_Switch&amp;diff=205684</id>
		<title>Checkpoint Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Checkpoint_Switch&amp;diff=205684"/>
		<updated>2026-07-12T04:53:29Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=Checkpoint&lt;br /&gt;
|image=checkpointnx.png&lt;br /&gt;
|description=Fast and simple homebrew save manager for 3DS and Switch.&lt;br /&gt;
|author=FlagBrew&lt;br /&gt;
|lastupdated=2026/07/11&lt;br /&gt;
|type=Save Managers and Editors&lt;br /&gt;
|version=4.0.0&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://github.com/BernardoGiordano/Checkpoint/releases&lt;br /&gt;
|website=https://flagbrew.org/&lt;br /&gt;
|source=https://github.com/FlagBrew/Checkpoint&lt;br /&gt;
|donation=https://www.patreon.com/FlagBrew&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--checkpointnx.7z--&amp;gt;&lt;br /&gt;
A fast and simple homebrew save manager for [[Checkpoint 3DS|3DS]] and Switch written in C++.&lt;br /&gt;
&lt;br /&gt;
Checkpoint is created following ideas of simplicity and efficiency. The UI has been designed to condense as many options as possible, while keeping it simple to work with.&lt;br /&gt;
&lt;br /&gt;
Moreover, Checkpoint is extremely lightweight - while being packaged with a nice graphic user interface - and is built using the most recent libraries available.&lt;br /&gt;
&lt;br /&gt;
Checkpoint for Switch natively supports NAND saves for the titles you have played. Title information are loaded automatically.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Checkpoint backs up and restores save data for:&lt;br /&gt;
* 3DS: 3DS cartridges and digital titles (including demos), extdata, DS cartridges, DSiWare and GBA Virtual Console titles&lt;br /&gt;
* Switch: saves for the titles you have played, with title information loaded automatically&lt;br /&gt;
Both versions share the same core feature set:&lt;br /&gt;
* A completely redesigned user interface, with light and dark mode theming&lt;br /&gt;
* A Settings section to configure everything directly from the console: favorites, filters, additional save folders and more, with no manual file editing required&lt;br /&gt;
* Internationalization support: English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Chinese&lt;br /&gt;
* Fast, responsive file operations: backups and restores run on a worker thread, and backups can be cancelled while in progress&lt;br /&gt;
* Additional save folders, configurable per title through a built-in folder browser&lt;br /&gt;
* A background FTP server, to access your save backups directly from your PC&lt;br /&gt;
* Wireless save transfer between consoles&lt;br /&gt;
* An HTTP log server, to view Checkpoint&#039;s logs in real time from any browser on your network&lt;br /&gt;
On Switch, Checkpoint also provides:&lt;br /&gt;
* A rendering backend built on deko3d, which makes the application ~70% smaller than before&lt;br /&gt;
* 1080p docked mode support, alongside 720p in handheld&lt;br /&gt;
* File-by-file verification after restore, and safer handling of large save restores&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Place the .nro to the /switch/ folder on the SD card.&lt;br /&gt;
&lt;br /&gt;
Checkpoint for Switch runs on homebrew launcher. Make sure you&#039;re running up-to-date payloads.&lt;br /&gt;
&lt;br /&gt;
==chlink==&lt;br /&gt;
Checkpoint comes with chlink, a companion command line app for your PC that talks to Checkpoint&#039;s wireless save transfer feature. With chlink you can send save backups from your PC to the console and receive backups from the console to your PC, over your local network - no cables and no SD card swapping required.&lt;br /&gt;
&lt;br /&gt;
Transfers are protected by a 4-digit PIN displayed on the console, and chlink automatically recognizes backups coming from a Checkpoint SD card layout, so title and backup information are filled in for you.&lt;br /&gt;
&lt;br /&gt;
chlink is a single, dependency-free executable available for Windows, macOS and Linux. You can download it from the [https://github.com/BernardoGiordano/Checkpoint/releases/latest releases page], or build it yourself from the &amp;lt;code&amp;gt;tools/chlink&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
===Working path===&lt;br /&gt;
Checkpoint relies on the following folders to store the files it generates. Note that all the working directories are automatically generated on first launch (or when Checkpoint finds a new title that doesn&#039;t have a working directory yet).&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;sdmc:/switch/Checkpoint&amp;lt;/code&amp;gt;: root path&lt;br /&gt;
*&amp;lt;code&amp;gt;sdmc:/switch/Checkpoint/logs&amp;lt;/code&amp;gt;: log files&lt;br /&gt;
*&amp;lt;code&amp;gt;sdmc:/switch/Checkpoint/config.json&amp;lt;/code&amp;gt;: custom configuration file&lt;br /&gt;
*&amp;lt;code&amp;gt;sdmc:/switch/Checkpoint/saves/&amp;lt;title id&amp;gt; &amp;lt;game title&amp;gt;&amp;lt;/code&amp;gt;: root path for all the save backups for a generic game&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
You can configure Checkpoint directly from the console through the Settings section. All the options that used to require manual edits to the configuration file can now be managed from there. The &amp;lt;code&amp;gt;config.json&amp;lt;/code&amp;gt; file is still stored in Checkpoint&#039;s working directory, but you&#039;re not required to touch it anymore.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
Checkpoint displays error codes when something weird happens or operations fail. If you have any issues, please ensure they haven&#039;t already been addressed, and report the error code and a summary of your operations to reproduce it.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can receive real-time support by joining FlagBrew&#039;s [https://discord.gg/bGKEyfY Discord] server.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Minus - Instructions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title selection:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
D-Pad/Joystick - Scroll between titles&lt;br /&gt;
&lt;br /&gt;
L/R - Scroll between pages&lt;br /&gt;
&lt;br /&gt;
A - Enter selected title&lt;br /&gt;
&lt;br /&gt;
B - Exit the selected title&lt;br /&gt;
&lt;br /&gt;
Y - Multiselect title&lt;br /&gt;
&lt;br /&gt;
Hold Y - Selection all titles &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Menu options:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L - Backup save&lt;br /&gt;
&lt;br /&gt;
R - Restore save&lt;br /&gt;
&lt;br /&gt;
X - Delete a backup&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/checkpointnx2.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/checkpointnx3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/checkpointnx4.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;[Switch] How To Backup &amp;amp; Restore Saves Using Checkpoint&#039;&#039;&#039; ([https://www.youtube.com/watch?v=U908bDIgxcE DarkFlare]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;U908bDIgxcE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
https://github.com/BernardoGiordano/Checkpoint/issues&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;4.0.0 2026/07/11&#039;&#039;&#039;&lt;br /&gt;
* Added: &#039;&#039;&#039;complete UI/UX redesign&#039;&#039;&#039;&lt;br /&gt;
* Added: internazionalization support.&lt;br /&gt;
** Translations have been done through the use of LLMs. If you&#039;re a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.&lt;br /&gt;
** Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Chinese&lt;br /&gt;
* Added: a brand new &#039;&#039;&#039;Settings section&#039;&#039;&#039;: it is now possible to edit Checkpoint&#039;s config.json file directly from the console with a nice settings interface.&lt;br /&gt;
** Added: &#039;&#039;&#039;light and dark mode&#039;&#039;&#039; theming&lt;br /&gt;
** Added: a folder browser to navigate the SD card and choose additional save folders on device&lt;br /&gt;
** Added: quick backup toggle to use the default backup name without any prompt&lt;br /&gt;
** Added: confirm restore toggle to avoid being asked for confirmation for save restore operations&lt;br /&gt;
** Added: file-by-file verification after restore&lt;br /&gt;
* Added: &#039;&#039;&#039;complete graphics backend migration from SDL2 to deko3d&#039;&#039;&#039;&lt;br /&gt;
** Among all the benefits that the rewrite brought to the software, the application size is now &#039;&#039;&#039;~70% smaller&#039;&#039;&#039;&lt;br /&gt;
* Added: &#039;&#039;&#039;HTTP log server on port 8000&#039;&#039;&#039; — view logs in real-time from any browser on your network.&lt;br /&gt;
** Logs can now be accessed from the application directly via Settings &amp;gt; Connectivity &amp;gt; Logs.&lt;br /&gt;
* Added: 1080p docked mode support (alongside 720p handheld).&lt;br /&gt;
* Fixed: async IO makes file operations faster and more efficient by running them in a worker thread, separated from the main UI thread&lt;br /&gt;
* Fixed: backup list navigation is now massively more intuitive&lt;br /&gt;
* Added: large save restore with journal pre-extend and mid-file commits, preventing out-of-space failures (fixes [https://github.com/BernardoGiordano/Checkpoint/issues/541 #541]).&lt;br /&gt;
* Fixed: avoid restoring files after a corruption error occurred during copy.&lt;br /&gt;
* Fixed: the project&#039;s code architecture has been greatly improved.&lt;br /&gt;
** The codebase is now 9 years old and has never seen an architecture overhaul like this before.&lt;br /&gt;
** Dozens of performance, security and safety bugfixes have been pushed to the project, making the app more secure and efficient.&lt;br /&gt;
* Removed: &#039;&#039;&#039;pksmbridge save transfer feature&#039;&#039;&#039;&lt;br /&gt;
* Removed: &#039;&#039;&#039;cheats feature&#039;&#039;&#039;.&lt;br /&gt;
** The cheat database required constant updates to stay in sync with game updates, and its maintenance wasn&#039;t sustainable.&lt;br /&gt;
* Removed: the HTML settings page accessible through local network, and all its dependencies&lt;br /&gt;
* Removed: unneeded dependencies like the SDL2 suite and libpng.&lt;br /&gt;
* Added: &#039;&#039;&#039;chlink&#039;&#039;&#039;, a companion command line app for your PC that works together with Checkpoint&#039;s wireless save transfer feature.&lt;br /&gt;
** Send save backups from your PC to the console, or receive them from the console to your PC, over your local network.&lt;br /&gt;
** Transfers are protected by a 4-digit PIN displayed on the console.&lt;br /&gt;
** chlink automatically recognizes backups stored in a Checkpoint SD card layout, so title and backup information are inferred for you.&lt;br /&gt;
** It ships as a single, dependency-free executable for Windows, macOS and Linux, attached to this release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.13.0 2026/06/21&#039;&#039;&#039;&lt;br /&gt;
* Added: support for 8MB DS cartridges.&lt;br /&gt;
* Added: wireless save transfer between 3DS consoles (thanks! [https://github.com/edu1010 @edu1010])&lt;br /&gt;
** The feature needs to be enabled via a flag in Checkpoint&#039;s configuration file.&lt;br /&gt;
* Added: show progress bars for DS cartridge backup and restore operations.&lt;br /&gt;
** The previous behaviour made Checkpoint look like it froze. The UX is more interactive now.&lt;br /&gt;
* Added: show an additional progress bar for multi-backup operations.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* Fixed: support for latest toolchains and libraries versions.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.12.0 2026/05/13&#039;&#039;&#039;&lt;br /&gt;
* Added: &#039;&#039;&#039;support BCAT saves&#039;&#039;&#039; on the Switch version of the app.&lt;br /&gt;
* Added: &#039;&#039;&#039;support device saves&#039;&#039;&#039; on the Switch version of the app.&lt;br /&gt;
* Added: &#039;&#039;&#039;support system saves&#039;&#039;&#039; on the Switch version of the app.&lt;br /&gt;
** The UI of the app has been slightly upgraded to account for these new save types.&lt;br /&gt;
* Added: per-file progress bar.&lt;br /&gt;
** The UI will now display two progress bars, one for the overall save progress and one for each file in the save archive.&lt;br /&gt;
* Fixed: occasional crash when loading NAND saves on the 3DS version of the app.&lt;br /&gt;
* Fixed: Checkpoint should not freeze anymore when performing backup or restore operations.&lt;br /&gt;
* Fixed: support asian system fonts in the Switch version of the app.&lt;br /&gt;
** This solves an issue where special characters were not rendered in the UI.&lt;br /&gt;
* Fixed: add not-empty validation for backup names.&lt;br /&gt;
* Fixed: file paths could contain multiple &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; characters one after the other, causing folder deletion issues.&lt;br /&gt;
* Fixed: undefined behaviour when trying to close directories that were not opened.&lt;br /&gt;
* Fixed: undefined behaviour could occur when reading a file&#039;s size.&lt;br /&gt;
* Fixed: log directory read errors.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.11.0 2026/02/25&#039;&#039;&#039;&lt;br /&gt;
* Added: backup and restore modal UI has been greatly improved with a proper progress bar.&lt;br /&gt;
* Fixed: an issue with title cache persistence preventing new title installations from being recognized from Checkpoint.&lt;br /&gt;
* Fixed: occasional crashes when moving the buttons too fast on the 3DS version of the app.&lt;br /&gt;
* Fixed: an issue with the app freezing when holding B to refresh the title cache.&lt;br /&gt;
* Fixed: crash when no titles available on the Switch version of the app.&lt;br /&gt;
* Fixed: occasional crash when quitting the Switch version of the app.&lt;br /&gt;
* Fixed: name and icon of the selected account not updating on certain conditions.&lt;br /&gt;
* Fixed: various memory leaks here and there when disposing the application on quit.&lt;br /&gt;
* Fixed: properly print strings with percent characters in the logfile.&lt;br /&gt;
* Fixed: compiled with latest version of the needed dependencies.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.10.2 2025/11/22&#039;&#039;&#039;&lt;br /&gt;
* Fixed: breaking compatibility issue with latest Switch OS version.&lt;br /&gt;
* Fixed: compiled with latest version of the needed dependencies.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.10.1 2025/06/22&#039;&#039;&#039;&lt;br /&gt;
* Fixed: add support for archived, hidden and readonly 3ds save backup folders.&lt;br /&gt;
** This bug has been in the codebase from the very beginning. Eventually, we fixed it.&lt;br /&gt;
* Fixed: a bug where some text could not be rendered on screen properly.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.10.0 2025/04/19&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixed: startup time has been drastically improved: ~50% speedup on uncached boot, ~90% speedup on cached boot.&#039;&#039;&#039;&lt;br /&gt;
** This has been achieved by profiling the application boot process, and realizing that title cache persistence on the SD card took majority of the loading time. Now this operation is lazily done in a separate thread. It&#039;s funny to realize that a badly implemented optimization can become a bottleneck of its own, so take my mistake as a lesson.&lt;br /&gt;
** Here&#039;s the improvements I had on my console (improvements may vary since they depend on how many games you have on your console):&lt;br /&gt;
*** Uncached startup went down from 9.8s to 5.7s&lt;br /&gt;
*** Cached startup went down from 5.7s to 0.6s&lt;br /&gt;
* &#039;&#039;&#039;Added: due to requests from multiple users, Checkpoint can now be updated from Universal Updater.&#039;&#039;&#039;&lt;br /&gt;
* Fixed: cartridge loading now runs immediately rather than waiting for the title cache to be persisted on the SD card.&lt;br /&gt;
* Fixed: properly quit the application gracefully when an handled exception occurs.&lt;br /&gt;
* Fixed: initial code refactoring.&lt;br /&gt;
* Removed: some redundant logs in the title loader.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&#039;&#039;&#039;v3.9.0 2025/04/14&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixed: the startup crash issue affecting all version since 3.8.0 has been identified and patched.&#039;&#039;&#039;&lt;br /&gt;
** Huge shoutout to achinech on Discord who volunteered to debug the issue on their console.&lt;br /&gt;
** If you still encounter startup crash issues, please notify the team immediately on [https://discord.gg/bGKEyfY Discord] and on GitHub issues.&lt;br /&gt;
* &#039;&#039;&#039;Fixed: cartridge scanning has been refactored to be way more efficient.&#039;&#039;&#039;&lt;br /&gt;
** Previously, the software used to poll the cartridge synchronously for every frame of the UI thread. Cartridge scanning is now happening on a separate thread which only runs twice per second.&lt;br /&gt;
* Added: a more advanced threading framework ported from PKSM.&lt;br /&gt;
* Added: networking support and an integrated HTTP server. This is currently used to provide real-time online access to the application logs, but this code will be useful for future features like self-updating.&lt;br /&gt;
* Added: more robust logging ported from PKSM. Logs are stored in the &amp;lt;code&amp;gt;/3ds/Checkpoint/logs&amp;lt;/code&amp;gt; folder and are split by date.&lt;br /&gt;
** Logs are also accessible at runtime through the integrated HTTP server at the following addresses:&lt;br /&gt;
*** &amp;lt;code&amp;gt;http://3ds-ip-address:8000/logs/memory&amp;lt;/code&amp;gt; for the logs of Checkpoint&#039;s current run&lt;br /&gt;
*** &amp;lt;code&amp;gt;http://3ds-ip-address:8000/logs/file&amp;lt;/code&amp;gt; for all the logs for the current date&lt;br /&gt;
* Added: compiler optimizations are back. This includes link-time optimization and an upgrade from &amp;lt;code&amp;gt;O2&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;O3&amp;lt;/code&amp;gt; compared to v.3.7.4.&lt;br /&gt;
* Fixed: better configuration file handling ported from PKSM.&lt;br /&gt;
* Fixed: better thread synchronization between UI thread and title loading thread.&lt;br /&gt;
* Fixed: wrap the entire program into try-catch blocks to prevent crashes caused by other unhandled exceptions in the future.&lt;br /&gt;
* Fixed: few graphics improvements.&lt;br /&gt;
* Fixed: readme has been updated with latest screenshots.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&#039;&#039;&#039;v3.8.2 2025/04/02&#039;&#039;&#039;&lt;br /&gt;
* Added: Initial upgrade from C++17 to C++20&lt;br /&gt;
* Added: Built with latest Sharkive&#039;s cheats repository&lt;br /&gt;
* Fixed: UI has been improved and rendering has been simplified in order to make the screen render faster&lt;br /&gt;
* Fixed: the color scheme has been improved (to my liking)&lt;br /&gt;
* Fixed: a crash when playing certain games and then going directly into checkpoint afterwards&lt;br /&gt;
* Fixed: logs on the Switch version are now split by day. This avoids keeping a huge &amp;lt;code&amp;gt;checkpoint.log&amp;lt;/code&amp;gt; file after years of use.&lt;br /&gt;
** You can safely remove &amp;lt;code&amp;gt;/switch/Checkpoint/checkpoint.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
** You can find the new logs under &amp;lt;code&amp;gt;/switch/Checkpoint/logs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
** Logs for the 3DS version will be added in the next releases.&lt;br /&gt;
* Fixed: dependencies have been updated to their latest version&lt;br /&gt;
* Fixed: displayed play time is now rendered correctly&lt;br /&gt;
* Fixed: L/R buttons double binding (thanks [https://github.com/Noxor11 @Noxor11])&lt;br /&gt;
* Fixed: source compilation (thanks [https://github.com/mrhappyasthma @mrhappyasthma] and [https://github.com/l-austenfeld @l-austenfeld])&lt;br /&gt;
* Removed: link time optimizations have been disabled.&lt;br /&gt;
** These were originally introduced to strip down some weight off the compiled executable, but the difference is too small to consider this feature useful. LTO has caused some trouble in v3.8.0 on the 3DS version.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.8.1 2025/03/23&#039;&#039;&#039;&lt;br /&gt;
* Updated dependencies to their latest version&lt;br /&gt;
* Disabled link time optimizations&lt;br /&gt;
* Initial upgrade from C++17 to C++20&lt;br /&gt;
* Built with latest Sharkive&#039;s cheats repository&lt;br /&gt;
* Fixed displayed play time&lt;br /&gt;
* Fixed L/R buttons double binding (thanks [https://github.com/Noxor11 @Noxor11])&lt;br /&gt;
* Fixed source compilation (thanks [https://github.com/mrhappyasthma @mrhappyasthma] and [https://github.com/l-austenfeld @l-austenfeld])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.8.0 2021/11/13&#039;&#039;&#039;&lt;br /&gt;
*Fixed: Checkpoint is now compatible again with latest firmware. Compatibility with latest Atmosphère has also been fixed.&lt;br /&gt;
**It took some time to this release to be fully working, but it is finally out.&lt;br /&gt;
*Added: title sorting by Alphabetical, Last Played and Played Time. (thanks @diwo)&lt;br /&gt;
**You can now sort your title list by pressing X. More details are available holding minus.&lt;br /&gt;
*Added: Sword &amp;amp; Shield PKSM Bridge support.&lt;br /&gt;
**This is a bonus feature for PKSM users. You can enable the PKSM Bridge functionality from the web configuration panel.&lt;br /&gt;
*Added: [https://github.com/FlagBrew/Sharkive embedded Sharkive&#039;s cheat database] has been updated.&lt;br /&gt;
**This counts ~2 years of cheat updates.&lt;br /&gt;
*Fixed: support for games containing character ū in their title.&lt;br /&gt;
*Fixed: documentation.&lt;br /&gt;
*Fixed: compilation with latest libraries (such as libnx 4.2.0).&lt;br /&gt;
*Stability improvements and tons of minor code improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.7.4 2019/12/09&#039;&#039;&#039;&lt;br /&gt;
*Added compatibility for Atmosphere 0.10.0+. This changes the cheats path from &amp;lt;code&amp;gt;/atmosphere/titles&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/atmosphere/contents&amp;lt;/code&amp;gt;, so that means this version won&#039;t be able to put cheats in place for older Atmosphere versions.&lt;br /&gt;
*Fixed: the &amp;lt;code&amp;gt;Aborted by user&amp;lt;/code&amp;gt; issue occurring when trying to perform a backup in Applet mode.&lt;br /&gt;
**This means that if you&#039;re running Checkpoint in Applet mode, you won&#039;t be prompted to decide a name for your backup and the default name will be used instead.&lt;br /&gt;
**This also solves incompatibilities for CFWs that don&#039;t properly support title takeover.&lt;br /&gt;
*Fixed: the Account Selection applet won&#039;t cause Checkpoint to hang anymore if using Applet mode, if you&#039;re running Atmosphere 0.10.0+.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.7.3 2019/10/26&#039;&#039;&#039;&lt;br /&gt;
*Fixed: built in FTP server is now able to open the Checkpoint folder, finally letting this feature to be useful for easy and fast save retrieval.&lt;br /&gt;
*Fixed: removed red watermark if Checkpoint was launched in applet mode.&lt;br /&gt;
**Pro Tip: you shouldn&#039;t launch Checkpoint or homebrew in general in applet mode anyways. Please don&#039;t.&lt;br /&gt;
*Fixed: latest cheats submissions are built in this release through Sharkive.&lt;br /&gt;
**If you have cheat codes that are not already available in this release, please submit them to Sharkive&#039;s databases here.&lt;br /&gt;
*Fixed: unused folders in the SD card are not created anymore.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.7.2 2019/09/15&#039;&#039;&#039;&lt;br /&gt;
*Fixed: build compiled with support for system version 9.0.0. Please update to Checkpoint 3.7.2+ in order to be able to run this software on system versions 9.0.0 or superior.&lt;br /&gt;
*Fixed: graphics fixes and routine dependancies updates.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.7.1 2019/09/12&#039;&#039;&#039;&lt;br /&gt;
*Added: Checkpoint can now run again under applet mode, but:&lt;br /&gt;
**It will be very annoying.&lt;br /&gt;
**Functionalities may not work properly and memory corruption may happen. Occasionally, the application could hang when trying to access one of the system applets.[https://www.youtube.com/watch?v=-1uxh6wsNLY  Watch this video for an example].&lt;br /&gt;
**Please do not run Checkpoint in applet mode.&lt;br /&gt;
*Fixed: changed port of built in FTP server to 50000.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.7.0 2019/09/09&#039;&#039;&#039;&lt;br /&gt;
*Added: Sharkive feature for the Switch as well. A brand new Cheat menu has been implemented inside Checkpoint to be able to manage cheats for Atmosphere.&lt;br /&gt;
**The entire cheat database is offline and bundled inside of Checkpoint.&lt;br /&gt;
**You&#039;re able to select and enable just the cheats you really want to have. This is an alternative approach to cheat toggles.&lt;br /&gt;
**Cheat updates will happen when:&lt;br /&gt;
***Checkpoint updates.&lt;br /&gt;
***You build Checkpoint from source.&lt;br /&gt;
***You build the cheat database and place it into the sd card in the expected location, so that it&#039;ll be loaded instead of the bundled one.&lt;br /&gt;
*Added: Online configurations. You can now configure Checkpoint from your internet browser. Checkpoint will behave as an HTTP server while running.&lt;br /&gt;
**Connect to &amp;lt;code&amp;gt;SWITCH_IP_ADDRESS:8000&amp;lt;/code&amp;gt; from any device connected to the same network as your Switch to be able to access configurations.&lt;br /&gt;
*Added: FTP server. You probably want to be able to get your saves out of the switch once they have been backed up. While I come up with handier solutions, enjoy this non blocking FTP server. You can access connecting to &amp;lt;code&amp;gt;SWITCH_IP_ADDRESS:5000&amp;lt;/code&amp;gt; (As of v3.7.1, &amp;lt;code&amp;gt;SWITCH_IP_ADDRESS:50000&amp;lt;/code&amp;gt;) with empty username and password.&lt;br /&gt;
*Added: redesigned UI. Enjoy it while it&#039;s fresh.&lt;br /&gt;
*Added: system keyboard support. The custom keyboard originally setup has been removed from Checkpoint to fully take advantage of the system keyboard applet.&lt;br /&gt;
*Added: switch pages with L/R.&lt;br /&gt;
*Added: logging. Logs will be written to &amp;lt;code&amp;gt;/switch/Checkpoint/checkpoint.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
*Fixed: favorite sorting now works properly again.&lt;br /&gt;
*Fixed: cut down size of the executable. It now stores an entire cheat database inside and still manages to be ~1MB lighter than the previous stable release.&lt;br /&gt;
*Fixed: Checkpoint doesn&#039;t run anymore if nx-hbmenu is launched over a system applet (like Album).&lt;br /&gt;
*Refactoring, refactoring, refactoring...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.6.0 2019/01/01&#039;&#039;&#039;&lt;br /&gt;
*Added: a bridge functionality between Checkpoint for Switch and [https://github.com/FlagBrew/PKSM PKSM] (for 3DS, v6.0.0 and above) has been implemented.&lt;br /&gt;
**It allows to send (and then receive back) a save file over the network, to allow manipulations without having to browse your save backups manually on your PC.&lt;br /&gt;
**It also needs to be manually enabled by editing your configuration file. Once it&#039;s enabled, you can access the bridge by pressing &amp;lt;code&amp;gt;L+R&amp;lt;/code&amp;gt; on a valid game.&lt;br /&gt;
**This feature currently works only with LGPE.&lt;br /&gt;
*Fixed: buttons are now responsive as before while navigating the UI.&lt;br /&gt;
*Fixed: titles with black background are now displayed properly.&lt;br /&gt;
*Fixed: checkmark color doesn&#039;t confuse with title icons anymore.&lt;br /&gt;
*Fixed: text doesn&#039;t bleed textboxes like before anymore.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.5.0 2019/10/28&#039;&#039;&#039;&lt;br /&gt;
*Added support for Hardware Acceleration. Checkpoint now relies on the GPU to render graphics and text, removing load from the CPU.&lt;br /&gt;
**The interface now relies on SDL2 to render images and text.&lt;br /&gt;
**Text rendering is optimized by using a customized version of SDL_FontCache which caches glyphs in memory rather than creating textures every frame. This also allows to use the system font already available in the console.&lt;br /&gt;
**Checkpoint caches from PlSharedFontType_Standard and PlSharedFontType_NintendoExt fonts, so both regular characters and symbols are now supported to be rendered on screen.&lt;br /&gt;
*Added option to set a title as Favorite. You can now edit your configuration file to set a title id to be a favorite title, so this will always appear at the top of the title list.&lt;br /&gt;
*Fixed crashes caused by too many file descriptors opened.&lt;br /&gt;
*Key behaviour changed. ( thanks @IBNobody )&lt;br /&gt;
**You can now select rows in the backup list, creating backups and restoring a backup just with the button A.&lt;br /&gt;
**Pressing Y will select the current title but deactivate/reset the backup list. It will also enable the backup touch button only. Creating a backup will then disable the backup touch button. This makes it more clear to the user what buttons / UI elements are relevant to multi-backup.&lt;br /&gt;
*Fixed occasional crashes while changing account.&lt;br /&gt;
*Checkpoint now uses latest libnx 1.5.0, which supports timezone and fixes wrong default backup names if your console never connected to internet.&lt;br /&gt;
*Checkpoint is now compiled using C++17.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.4.2 2019/09/04&#039;&#039;&#039;&lt;br /&gt;
*Fix compatibility with certain games and CFWs. Now Checkpoint is fully compatible with custom firmwares using &amp;lt;code&amp;gt;fs_mitm&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;layeredfs&amp;lt;/code&amp;gt; and other modules massively relying on file operations.&lt;br /&gt;
**Confirmed working on both hekate, Atmosphere and ReiNX using said modules.&lt;br /&gt;
**Other CFWs may be compatible as well, even if not directly tested.&lt;br /&gt;
**The issue was caused by a poorly optimized function to recursively delete folders, which has been now replaced by the one available on JKSV, too.&lt;br /&gt;
*Fixed configuration override after updating Checkpoint version.&lt;br /&gt;
*Avoid using a separate thread to populate titles.&lt;br /&gt;
*Default selected button for the homebrew keyboard is now &amp;lt;code&amp;gt;OK&amp;lt;/code&amp;gt; (thanks @fennectech).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.4.1 2018/08/17&#039;&#039;&#039;&lt;br /&gt;
*Fixed corrupted save backup folders if your Account name contains non-ascii characters.&lt;br /&gt;
*You can now properly cancel a backup if you press B from the keyboard screen.&lt;br /&gt;
*Fixed parallel building.&lt;br /&gt;
*Code cleanup and multiple minor fixes.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/BernardoGiordano/Checkpoint/releases Release notes.]&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
devkitA64 is required to compile Checkpoint for Switch. Learn more at [https://devkitpro.org/wiki/Getting_Started devkitpro.org]. Install or update dependencies with &amp;lt;code&amp;gt;dkp-pacman -S libnx switch-pkg-config deko3d switch-freetype switch-libjpeg-turbo&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Build from the repository root with &amp;lt;code&amp;gt;make switch&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
This project is licensed under the GNU GPLv3. Additional Terms 7.b and 7.c of GPLv3 apply to this. See [https://github.com/BernardoGiordano/Checkpoint/blob/master/LICENSE LICENSE.md] for details.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
*[https://github.com/BernardoGiordano/ Bernardo] for creating Checkpoint.&lt;br /&gt;
*[https://github.com/J-D-K J-D-K] for the original [https://github.com/J-D-K/JKSM JKSM] version.&lt;br /&gt;
*[https://github.com/tuxsh TuxSH] for [https://github.com/TuxSH/TWLSaveTool TWLSaveTool], from which SPI code has been taken.&lt;br /&gt;
*WinterMute, fincs and [https://devkitpro.org/ devkitPro] contributors for devkitARM, devkitA64 and [https://github.com/devkitPro/pacman/releases dkp-pacman].&lt;br /&gt;
*Yellows8 and all the mantainers for [https://github.com/switchbrew/switch-examples switch-examples].&lt;br /&gt;
*[https://twitter.com/rakujira rakujira] for the awesome Checkpoint logo.&lt;br /&gt;
*Fellow testers and troubleshooters for their help.&lt;br /&gt;
*The huge amount of supporters that this project has gained over the years.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official website - https://flagbrew.org/&lt;br /&gt;
* GitHub - https://github.com/FlagBrew/Checkpoint&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/release-checkpoint-a-fast-and-simple-save-manager-for-3ds-and-switch.503899/&lt;br /&gt;
* Homebrew App Store - https://apps.fortheusers.org/switch/Checkpoint&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Checkpoint_3DS&amp;diff=205683</id>
		<title>Checkpoint 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Checkpoint_3DS&amp;diff=205683"/>
		<updated>2026-07-12T04:53:28Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=Checkpoint&lt;br /&gt;
|image=Checkpoint2.png&lt;br /&gt;
|description=Fast and simple homebrew save manager for 3DS and Switch.&lt;br /&gt;
|author=FlagBrew&lt;br /&gt;
|lastupdated=2026/07/11&lt;br /&gt;
|type=Save Managers and Editors&lt;br /&gt;
|version=4.0.0&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://github.com/BernardoGiordano/Checkpoint/releases&lt;br /&gt;
|website=https://flagbrew.org/&lt;br /&gt;
|source=https://github.com/FlagBrew/Checkpoint&lt;br /&gt;
|donation=https://patreon.com/FlagBrew&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--checkpoint3ds.7z--&amp;gt;&lt;br /&gt;
Checkpoint is a fast and simple homebrew save manager for 3DS and [[Checkpoint Switch|Switch]] written in C++. The UI has been designed to condense as many options as possible, while keeping it simple to work with.&lt;br /&gt;
&lt;br /&gt;
Checkpoint for 3DS natively supports 3DS and DS cartridges, digital standard titles and demo titles. It also automatically checks and filters homebrew titles which may not have a save archive to backup or restore, which is done without an external title list and filters. For this reason, Checkpoint doesn&#039;t need constant user maintenance to retain full functionality.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
Checkpoint backs up and restores save data for:&lt;br /&gt;
* 3DS: 3DS cartridges and digital titles (including demos), extdata, DS cartridges, DSiWare and GBA Virtual Console titles&lt;br /&gt;
* Switch: saves for the titles you have played, with title information loaded automatically&lt;br /&gt;
Both versions share the same core feature set:&lt;br /&gt;
* A completely redesigned user interface, with light and dark mode theming&lt;br /&gt;
* A Settings section to configure everything directly from the console: favorites, filters, additional save folders and more, with no manual file editing required&lt;br /&gt;
* Internationalization support: English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Chinese&lt;br /&gt;
* Fast, responsive file operations: backups and restores run on a worker thread, and backups can be cancelled while in progress&lt;br /&gt;
* Additional save folders, configurable per title through a built-in folder browser&lt;br /&gt;
* A background FTP server, to access your save backups directly from your PC&lt;br /&gt;
* Wireless save transfer between consoles&lt;br /&gt;
* An HTTP log server, to view Checkpoint&#039;s logs in real time from any browser on your network&lt;br /&gt;
On Switch, Checkpoint also provides:&lt;br /&gt;
* A rendering backend built on deko3d, which makes the application ~70% smaller than before&lt;br /&gt;
* 1080p docked mode support, alongside 720p in handheld&lt;br /&gt;
* File-by-file verification after restore, and safer handling of large save restores&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
3DS version is available in 3DSX and CIA ([https://github.com/FlagBrew/Checkpoint/releases QR code]). &lt;br /&gt;
&lt;br /&gt;
Works for both CFW ​and Rosalina-based Homebrew Launchers (hax-based Homebrew Launchers are not supported by Checkpoint).&lt;br /&gt;
&lt;br /&gt;
==chlink==&lt;br /&gt;
Checkpoint comes with chlink, a companion command line app for your PC that talks to Checkpoint&#039;s wireless save transfer feature. With chlink you can send save backups from your PC to the console and receive backups from the console to your PC, over your local network - no cables and no SD card swapping required.&lt;br /&gt;
&lt;br /&gt;
Transfers are protected by a 4-digit PIN displayed on the console, and chlink automatically recognizes backups coming from a Checkpoint SD card layout, so title and backup information are filled in for you.&lt;br /&gt;
&lt;br /&gt;
chlink is a single, dependency-free executable available for Windows, macOS and Linux. You can download it from the [https://github.com/BernardoGiordano/Checkpoint/releases/latest releases page], or build it yourself from the &amp;lt;code&amp;gt;tools/chlink&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
You can use Checkpoint for 3DS with both cfw and Rosalina-based Homebrew Launchers. *hax-based Homebrew Launchers are not supported by Checkpoint.&lt;br /&gt;
&lt;br /&gt;
The first launch will take longer than usual, due to the working directories being created - Checkpoint will be significantly faster upon launch from then on.&lt;br /&gt;
&lt;br /&gt;
===Working path===&lt;br /&gt;
Checkpoint relies on the following folders to store the files it generates. Note that all the working directories are automatically generated on first launch (or when Checkpoint finds a new title that doesn&#039;t have a working directory yet).&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;sdmc:/3ds/Checkpoint&amp;lt;/code&amp;gt; Root path.&lt;br /&gt;
* &amp;lt;code&amp;gt;sdmc:/3ds/Checkpoint/config.json&amp;lt;/code&amp;gt; Configuration file.&lt;br /&gt;
* &amp;lt;code&amp;gt;sdmc:/3ds/Checkpoint/logs&amp;lt;/code&amp;gt; Log files&lt;br /&gt;
* &amp;lt;code&amp;gt;sdmc:/3ds/Checkpoint/saves/&amp;lt;unique id&amp;gt; &amp;lt;game title&amp;gt;&amp;lt;/code&amp;gt; Root path for all the save backups for a generic game.&lt;br /&gt;
* &amp;lt;code&amp;gt;sdmc:/3ds/Checkpoint/extdata/&amp;lt;unique id&amp;gt; &amp;lt;game title&amp;gt;&amp;lt;/code&amp;gt; Root path for all the extdata backups for a generic game.&lt;br /&gt;
&lt;br /&gt;
===FAQ===&lt;br /&gt;
&#039;&#039;&#039;Q. Checkpoint displays error codes.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You may see error codes when something weird happens or operations fail. If you have any issues:&lt;br /&gt;
* Please ensure if they haven&#039;t already been addressed ([https://github.com/FlagBrew/Checkpoint/issues Reported List]).&lt;br /&gt;
* Report the error code and a summary of your operations to reproduce it.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can receive real-time support by joining FlagBrew&#039;s [https://discord.gg/bGKEyfY Discord server].&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
D-Pad/L/R - Scroll between the title list&lt;br /&gt;
&lt;br /&gt;
A - Target a title&lt;br /&gt;
&lt;br /&gt;
D-Pad or Touchscreen - Choose a target backup to restore/overwrite&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/checkpoint2.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;Checkpoint cheats tutorial&#039;&#039;&#039; ([https://www.youtube.com/watch?v=o7mdfoZbJE0 Ikeb0mb]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;o7mdfoZbJE0&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;4.0.0 2026/07/11&#039;&#039;&#039;&lt;br /&gt;
* Added: &#039;&#039;&#039;GBA Virtual Console save backup and restore&#039;&#039;&#039; (thanks [https://github.com/LiquidFenrir @LiquidFenrir])&lt;br /&gt;
* Added: &#039;&#039;&#039;DSiWare save backup and restore&#039;&#039;&#039; (thanks [https://github.com/SNBeast @SNBeast] for the feature PoC)&lt;br /&gt;
* Added: &#039;&#039;&#039;complete UI/UX redesign&#039;&#039;&#039;&lt;br /&gt;
* Added: &#039;&#039;&#039;background FTP server&#039;&#039;&#039;. Access your save backups from the PC directly through Checkpoint&lt;br /&gt;
* Added: a brand new &#039;&#039;&#039;Settings section&#039;&#039;&#039;: it is now possible to edit Checkpoint&#039;s config.json file directly from the console with a nice settings interface.&lt;br /&gt;
** Added: &#039;&#039;&#039;light and dark mode&#039;&#039;&#039; theming&lt;br /&gt;
** Added: a folder browser to navigate the SD card and choose additional save folders on device&lt;br /&gt;
** Added: quick backup toggle to use the default backup name without any prompt&lt;br /&gt;
** Added: confirm restore toggle to avoid being asked for confirmation for save restore operations&lt;br /&gt;
* Added: it is now possible to configure additional save folders for DS titles.&lt;br /&gt;
* Added: internazionalization support.&lt;br /&gt;
** Translations have been done through the use of LLMs. If you&#039;re a native speaker and think that text wording and appearance in the UI can be improved, please submit a pull request or open an issue on this repository.&lt;br /&gt;
** Current language support includes English, Italian, French, German, Portuguese, Spanish, Dutch, Japanese and Chinese&lt;br /&gt;
* Added: backup cancellation by holding B during backup&lt;br /&gt;
* Fixed: backup list navigation is now massively more intuitive&lt;br /&gt;
* Fixed: async IO makes file operations faster and more efficient by running them in a worker thread, separated from the main UI thread&lt;br /&gt;
* Fixed: greatly improved cached and uncached title loading times&lt;br /&gt;
* Fixed: cached text storage now allows faster rendering for all the text in the interface&lt;br /&gt;
* Fixed: the project&#039;s code architecture has been greatly improved.&lt;br /&gt;
** The codebase is now 9 years old and has never seen an architecture overhaul like this before.&lt;br /&gt;
** Dozens of performance, security and safety bugfixes have been pushed to the project, making the app more secure and efficient.&lt;br /&gt;
* Fixed: an issue where swapping DS carts would crash Checkpoint because of a stack-smashing bug&lt;br /&gt;
* Removed: &#039;&#039;&#039;cheats feature&#039;&#039;&#039;.&lt;br /&gt;
** The cheat database required constant updates to stay in sync with game updates, and its maintenance wasn&#039;t sustainable.&lt;br /&gt;
* Added: &#039;&#039;&#039;chlink&#039;&#039;&#039;, a companion command line app for your PC that works together with Checkpoint&#039;s wireless save transfer feature.&lt;br /&gt;
** Send save backups from your PC to the console, or receive them from the console to your PC, over your local network.&lt;br /&gt;
** Transfers are protected by a 4-digit PIN displayed on the console.&lt;br /&gt;
** chlink automatically recognizes backups stored in a Checkpoint SD card layout, so title and backup information are inferred for you.&lt;br /&gt;
** It ships as a single, dependency-free executable for Windows, macOS and Linux, attached to this release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.13.0 2026/06/21&#039;&#039;&#039;&lt;br /&gt;
* Added: support for 8MB DS cartridges.&lt;br /&gt;
* Added: wireless save transfer between 3DS consoles (thanks! [https://github.com/edu1010 @edu1010])&lt;br /&gt;
** The feature needs to be enabled via a flag in Checkpoint&#039;s configuration file.&lt;br /&gt;
* Added: show progress bars for DS cartridge backup and restore operations.&lt;br /&gt;
** The previous behaviour made Checkpoint look like it froze. The UX is more interactive now.&lt;br /&gt;
* Added: show an additional progress bar for multi-backup operations.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* Fixed: support for latest toolchains and libraries versions.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.12.0 2026/05/13&#039;&#039;&#039;&lt;br /&gt;
* Added: &#039;&#039;&#039;support BCAT saves&#039;&#039;&#039; on the Switch version of the app.&lt;br /&gt;
* Added: &#039;&#039;&#039;support device saves&#039;&#039;&#039; on the Switch version of the app.&lt;br /&gt;
* Added: &#039;&#039;&#039;support system saves&#039;&#039;&#039; on the Switch version of the app.&lt;br /&gt;
** The UI of the app has been slightly upgraded to account for these new save types.&lt;br /&gt;
* Added: per-file progress bar.&lt;br /&gt;
** The UI will now display two progress bars, one for the overall save progress and one for each file in the save archive.&lt;br /&gt;
* Fixed: occasional crash when loading NAND saves on the 3DS version of the app.&lt;br /&gt;
* Fixed: Checkpoint should not freeze anymore when performing backup or restore operations.&lt;br /&gt;
* Fixed: support asian system fonts in the Switch version of the app.&lt;br /&gt;
** This solves an issue where special characters were not rendered in the UI.&lt;br /&gt;
* Fixed: add not-empty validation for backup names.&lt;br /&gt;
* Fixed: file paths could contain multiple &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; characters one after the other, causing folder deletion issues.&lt;br /&gt;
* Fixed: undefined behaviour when trying to close directories that were not opened.&lt;br /&gt;
* Fixed: undefined behaviour could occur when reading a file&#039;s size.&lt;br /&gt;
* Fixed: log directory read errors.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.11.0 2026/02/25&#039;&#039;&#039;&lt;br /&gt;
* Added: backup and restore modal UI has been greatly improved with a proper progress bar.&lt;br /&gt;
* Fixed: an issue with title cache persistence preventing new title installations from being recognized from Checkpoint.&lt;br /&gt;
* Fixed: occasional crashes when moving the buttons too fast on the 3DS version of the app.&lt;br /&gt;
* Fixed: an issue with the app freezing when holding B to refresh the title cache.&lt;br /&gt;
* Fixed: crash when no titles available on the Switch version of the app.&lt;br /&gt;
* Fixed: occasional crash when quitting the Switch version of the app.&lt;br /&gt;
* Fixed: name and icon of the selected account not updating on certain conditions.&lt;br /&gt;
* Fixed: various memory leaks here and there when disposing the application on quit.&lt;br /&gt;
* Fixed: properly print strings with percent characters in the logfile.&lt;br /&gt;
* Fixed: compiled with latest version of the needed dependencies.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V3.10.2 2025/11/22&#039;&#039;&#039;&lt;br /&gt;
* Fixed: breaking compatibility issue with latest Switch OS version.&lt;br /&gt;
* Fixed: compiled with latest version of the needed dependencies.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.10.1 2025/06/22&#039;&#039;&#039;&lt;br /&gt;
* Fixed: add support for archived, hidden and readonly 3ds save backup folders.&lt;br /&gt;
** This bug has been in the codebase from the very beginning. Eventually, we fixed it.&lt;br /&gt;
* Fixed: a bug where some text could not be rendered on screen properly.&lt;br /&gt;
* Added: cheat database updated to latest [https://github.com/FlagBrew/Sharkive Sharkive] release.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.10.0 2025/04/19&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixed: startup time has been drastically improved: ~50% speedup on uncached boot, ~90% speedup on cached boot.&#039;&#039;&#039;&lt;br /&gt;
** This has been achieved by profiling the application boot process, and realizing that title cache persistence on the SD card took majority of the loading time. Now this operation is lazily done in a separate thread. It&#039;s funny to realize that a badly implemented optimization can become a bottleneck of its own, so take my mistake as a lesson.&lt;br /&gt;
** Here&#039;s the improvements I had on my console (improvements may vary since they depend on how many games you have on your console):&lt;br /&gt;
*** Uncached startup went down from 9.8s to 5.7s&lt;br /&gt;
*** Cached startup went down from 5.7s to 0.6s&lt;br /&gt;
* &#039;&#039;&#039;Added: due to requests from multiple users, Checkpoint can now be updated from Universal Updater.&#039;&#039;&#039;&lt;br /&gt;
* Fixed: cartridge loading now runs immediately rather than waiting for the title cache to be persisted on the SD card.&lt;br /&gt;
* Fixed: properly quit the application gracefully when an handled exception occurs.&lt;br /&gt;
* Fixed: initial code refactoring.&lt;br /&gt;
* Removed: some redundant logs in the title loader.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&#039;&#039;&#039;v3.9.0 2025/04/14&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixed: the startup crash issue affecting all version since 3.8.0 has been identified and patched.&#039;&#039;&#039;&lt;br /&gt;
** Huge shoutout to achinech on Discord who volunteered to debug the issue on their console.&lt;br /&gt;
** If you still encounter startup crash issues, please notify the team immediately on [https://discord.gg/bGKEyfY Discord] and on GitHub issues.&lt;br /&gt;
* &#039;&#039;&#039;Fixed: cartridge scanning has been refactored to be way more efficient.&#039;&#039;&#039;&lt;br /&gt;
** Previously, the software used to poll the cartridge synchronously for every frame of the UI thread. Cartridge scanning is now happening on a separate thread which only runs twice per second.&lt;br /&gt;
* Added: a more advanced threading framework ported from PKSM.&lt;br /&gt;
* Added: networking support and an integrated HTTP server. This is currently used to provide real-time online access to the application logs, but this code will be useful for future features like self-updating.&lt;br /&gt;
* Added: more robust logging ported from PKSM. Logs are stored in the &amp;lt;code&amp;gt;/3ds/Checkpoint/logs&amp;lt;/code&amp;gt; folder and are split by date.&lt;br /&gt;
** Logs are also accessible at runtime through the integrated HTTP server at the following addresses:&lt;br /&gt;
*** &amp;lt;code&amp;gt;http://3ds-ip-address:8000/logs/memory&amp;lt;/code&amp;gt; for the logs of Checkpoint&#039;s current run&lt;br /&gt;
*** &amp;lt;code&amp;gt;http://3ds-ip-address:8000/logs/file&amp;lt;/code&amp;gt; for all the logs for the current date&lt;br /&gt;
* Added: compiler optimizations are back. This includes link-time optimization and an upgrade from &amp;lt;code&amp;gt;O2&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;O3&amp;lt;/code&amp;gt; compared to v.3.7.4.&lt;br /&gt;
* Fixed: better configuration file handling ported from PKSM.&lt;br /&gt;
* Fixed: better thread synchronization between UI thread and title loading thread.&lt;br /&gt;
* Fixed: wrap the entire program into try-catch blocks to prevent crashes caused by other unhandled exceptions in the future.&lt;br /&gt;
* Fixed: few graphics improvements.&lt;br /&gt;
* Fixed: readme has been updated with latest screenshots.&lt;br /&gt;
* General system stability improvements to enhance the user&#039;s experience.&lt;br /&gt;
&#039;&#039;&#039;v3.8.2 2025/04/02&#039;&#039;&#039;&lt;br /&gt;
* Added: Initial upgrade from C++17 to C++20&lt;br /&gt;
* Added: Built with latest Sharkive&#039;s cheats repository&lt;br /&gt;
* Fixed: UI has been improved and rendering has been simplified in order to make the screen render faster&lt;br /&gt;
* Fixed: the color scheme has been improved (to my liking)&lt;br /&gt;
* Fixed: a crash when playing certain games and then going directly into checkpoint afterwards&lt;br /&gt;
* Fixed: logs on the Switch version are now split by day. This avoids keeping a huge &amp;lt;code&amp;gt;checkpoint.log&amp;lt;/code&amp;gt; file after years of use.&lt;br /&gt;
** You can safely remove &amp;lt;code&amp;gt;/switch/Checkpoint/checkpoint.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
** You can find the new logs under &amp;lt;code&amp;gt;/switch/Checkpoint/logs&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
** Logs for the 3DS version will be added in the next releases.&lt;br /&gt;
* Fixed: dependencies have been updated to their latest version&lt;br /&gt;
* Fixed: displayed play time is now rendered correctly&lt;br /&gt;
* Fixed: L/R buttons double binding (thanks [https://github.com/Noxor11 @Noxor11])&lt;br /&gt;
* Fixed: source compilation (thanks [https://github.com/mrhappyasthma @mrhappyasthma] and [https://github.com/l-austenfeld @l-austenfeld])&lt;br /&gt;
* Removed: link time optimizations have been disabled.&lt;br /&gt;
** These were originally introduced to strip down some weight off the compiled executable, but the difference is too small to consider this feature useful. LTO has caused some trouble in v3.8.0 on the 3DS version.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.8.1 2025/03/23&#039;&#039;&#039;&lt;br /&gt;
* Updated dependencies to their latest version&lt;br /&gt;
* Disabled link time optimizations&lt;br /&gt;
* Initial upgrade from C++17 to C++20&lt;br /&gt;
* Built with latest Sharkive&#039;s cheats repository&lt;br /&gt;
* Fixed displayed play time&lt;br /&gt;
* Fixed L/R buttons double binding (thanks [https://github.com/Noxor11 @Noxor11])&lt;br /&gt;
* Fixed source compilation (thanks [https://github.com/mrhappyasthma @mrhappyasthma] and [https://github.com/l-austenfeld @l-austenfeld])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.8.0 2021/11/13&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3DS:&lt;br /&gt;
* Added: embedded Sharkive&#039;s cheat database has been updated.&lt;br /&gt;
** This counts ~2 years of cheat updates.&lt;br /&gt;
* Fixed: optional 3DS cartridge polling.&lt;br /&gt;
* Fixed: documentation.&lt;br /&gt;
* Stability improvements and tons of minor code improvements.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.7.3 2019/10/26&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3DS:&lt;br /&gt;
* Added: Checkpoint now shows the original icon for DS cartridges.&lt;br /&gt;
* Fixed: a very annoying crash during startup if you had a very little amount of games has been fixed.&lt;br /&gt;
* Fixed: latest cheats submissions are built in this release through Sharkive.&lt;br /&gt;
** If you have cheat codes that are not already available in this release, please submit them to Sharkive&#039;s databases here.&lt;br /&gt;
* Fixed: unused folders in the SD card are not created anymore.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.7.1 2019/09/12&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3DS:&lt;br /&gt;
* Fixed: hard crash on startup has been fixed.&lt;br /&gt;
** Card scanning has been permanently shut down for this release to mitigate the error.&lt;br /&gt;
** If you still encounter this issue, please file an issue on this repo so that we can research about it more.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.7.0 2019/09/09&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3DS:&lt;br /&gt;
* Added: Sharkive is now merged into Checkpoint. A brand new Cheat menu has been implemented inside Checkpoint to be able to manage cheats for Luma3DS.&lt;br /&gt;
** The entire cheat database is offline and bundled inside of Checkpoint. No more internet required, no more molasses slow loading times caused by cheat downloads.&lt;br /&gt;
** You&#039;re able to select and enable just the cheats you really want to have. This solves issues caused by cheat files too big to be fully displayed in Luma3DS&#039; cheat engine.&lt;br /&gt;
** Cheat updates will happen when:&lt;br /&gt;
*** Checkpoint updates.&lt;br /&gt;
*** You build Checkpoint from source.&lt;br /&gt;
*** You build the cheat database and place it into the sd card in the expected location, so that it&#039;ll be loaded instead of the bundled one.&lt;br /&gt;
** This feature deprecates Sharkive.&lt;br /&gt;
* Added: ability to change play coins. Lots of you kept requesting this all the time. I don&#039;t know why you want this feature so much, but here it is. You can access it by hovering the Activity Log NAND title or by pressing SELECT + tapping the top-right corner.&lt;br /&gt;
* Added: redesigned UI. Enjoy it while it&#039;s fresh.&lt;br /&gt;
* Added: optional cartridge hotswap. You can now choose from the configuration if you want to be able to hotswap the cartridge while Checkpoint is running.&lt;br /&gt;
** This is disabled by default. Downside of this feature being enabled is that the UI slows down for a couple seconds before being responsive during boot time.&lt;br /&gt;
* Added: logging. Logs will be written to /3ds/Checkpoint/checkpoint.log.&lt;br /&gt;
** This feature deprecates JEDECheck.&lt;br /&gt;
* Fixed: cart is not cached anymore. This means cache won&#039;t be rebuilt every time you swap cartridges before running Checkpoint.&lt;br /&gt;
* Fixed: favorite sorting now works properly again.&lt;br /&gt;
* Fixed: cut down size of the executable. It now stores an entire cheat database inside of it (~1.6MB json), functionalities from other two different applications and still manages to be basically equal in size compared to the old stable release.&lt;br /&gt;
* Refactoring, refactoring, refactoring.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.6.0 2019/01/01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
3DS:&lt;br /&gt;
* Added: a check for *hax environment has been introduced to avoid Checkpoint loading without CFW.&lt;br /&gt;
* Fixed: buttons are now responsive as before while navigating the UI.&lt;br /&gt;
* Fixed: Extdata is now restored properly even when files change size.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/BernardoGiordano/Checkpoint/releases Revision history.]&lt;br /&gt;
&lt;br /&gt;
==Building==&lt;br /&gt;
devkitARM is required to compile Checkpoint for 3DS. Learn more at [https://devkitpro.org/wiki/Getting_Started devkitpro.org]. Install or update dependencies with &amp;lt;code&amp;gt;dkp-pacman -S libctru citro3d citro2d tex3ds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Build from the repository root with &amp;lt;code&amp;gt;make 3ds&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
This project is licensed under the GNU GPLv3. Additional Terms 7.b and 7.c of GPLv3 apply to this. See [https://github.com/BernardoGiordano/Checkpoint/blob/master/LICENSE LICENSE.md] for details.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Even though this is the result of independent research and work, Checkpoint for 3DS couldn&#039;t be possible without J-D-K&#039;s original [[JKSM 3DS|JKSM]] version.&lt;br /&gt;
&lt;br /&gt;
TuxSH for [https://github.com/TuxSH/TWLSaveTool TWLSaveTool], from which SPI code has been taken.&lt;br /&gt;
&lt;br /&gt;
WinterMute, fincs and [https://devkitpro.org devkitPro] contributors for devkitARM, devkitA64 and [https://github.com/devkitPro/pacman/releases dkp-pacman].&lt;br /&gt;
&lt;br /&gt;
Yellows8 and all the mantainers for [https://github.com/switchbrew/switch-examples switch-examples].&lt;br /&gt;
&lt;br /&gt;
[https://twitter.com/rakujira rakujira] for the Checkpoint logo.&lt;br /&gt;
&lt;br /&gt;
Fellow testers and troubleshooters for the help.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* Discord - https://discord.gg/bGKEyfY&lt;br /&gt;
* GitHub - https://github.com/FlagBrew/Checkpoint&lt;br /&gt;
* Bountysource - https://www.bountysource.com/teams/checkpoint&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/release-checkpoint-a-fast-and-simple-save-manager-for-3ds-and-switch.503899&lt;br /&gt;
&amp;lt;!--mirror: https://dlhb.gamebrew.org/3dshomebrews/checkpoint3ds.7z--&amp;gt;&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PKHeX_3DS&amp;diff=205654</id>
		<title>PKHeX 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PKHeX_3DS&amp;diff=205654"/>
		<updated>2026-07-10T03:30:38Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 26.07.07&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=PKHeX&lt;br /&gt;
|image=Pkhex2.png&lt;br /&gt;
|description=Pokemon core series save editor, programmed in C#.&lt;br /&gt;
|author=Kaphotics&lt;br /&gt;
|lastupdated=2026/07/07&lt;br /&gt;
|type=Save Editors&lt;br /&gt;
|version=26.07.07&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/pkhex.7z&lt;br /&gt;
|website=https://projectpokemon.org/home/files/file/1-pkhex&lt;br /&gt;
|source=https://github.com/kwsch/PKHeX&lt;br /&gt;
}}&lt;br /&gt;
PKHeX is an open-source save file editor for the main series of Pokémon games, allowing you to transfer Pokémon data between saves, customize them to your liking, and much more.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
PKHeX expects save files that are not encrypted with console-specific keys. Use a savedata manager to import and export savedata from the console ([[Checkpoint 3DS|Checkpoint]], save_manager, [[JKSM 3DS|JKSM]], or SaveDataFiler).&lt;br /&gt;
&lt;br /&gt;
===Supported files===&lt;br /&gt;
* Save files (&amp;quot;main&amp;quot;, *.sav, *.dsv, *.dat, *.gci, *.bin).&lt;br /&gt;
* GameCube Memory Card files (*.raw, *.bin) containing GC Pokémon savegames.&lt;br /&gt;
* Individual Pokémon entity files (.pk*, *.ck3, *.xk3, *.pb7, *.sk2, *.bk4).&lt;br /&gt;
* Mystery Gift files (*.pgt, *.pcd, *.pgf, .wc*) including conversion to .pk*.&lt;br /&gt;
* Importing GO Park entities (*.gp1) including conversion to .pb7.&lt;br /&gt;
* Importing teams from Decrypted 3DS Battle Videos.&lt;br /&gt;
* Transferring from one generation to another, converting formats along the way.&lt;br /&gt;
* Data is displayed in a view which can be edited and saved. The interface can be translated with resource/external text files so that different languages can be supported.&lt;br /&gt;
&lt;br /&gt;
===Showdown Sets===&lt;br /&gt;
Showdown sets can be imported and exported for the Pokémon currently loaded to the tabs. Party and Battle Box may only be exported.&lt;br /&gt;
&lt;br /&gt;
To export a showdown set from tabs:&lt;br /&gt;
* Press CTRL-SHIFT-T, or&lt;br /&gt;
* ALT click the Species label, or&lt;br /&gt;
* Tools &amp;gt; Showdown &amp;gt; Export Set to Clipboard.&lt;br /&gt;
&lt;br /&gt;
To import a showdown set to tabs:&lt;br /&gt;
* Press CTRL-T, or&lt;br /&gt;
* CTRL click the Species label, or&lt;br /&gt;
* Tools &amp;gt; Showdown &amp;gt; Import Set from Clipboard.&lt;br /&gt;
 &lt;br /&gt;
Exporting Party/Battle Box sets:&lt;br /&gt;
* Click on the &amp;quot;Party&amp;quot; or &amp;quot;Battle Box&amp;quot; label directly above the sprites, or&lt;br /&gt;
* Tools &amp;gt; Showdown &amp;gt; Export Party to Clipboard, or&lt;br /&gt;
* Tools &amp;gt; Showdown &amp;gt; Export Battle Box to Clipboard.&lt;br /&gt;
&lt;br /&gt;
===PKHeX&#039;s Database===&lt;br /&gt;
PKHeX is able to create a &#039;pkmdb&#039; folder and store pkm files from all generations for later use. Consider it like a Pokémon Bank.&lt;br /&gt;
* The Database may be accessed via Tools &amp;gt; Data &amp;gt; Database, or by pressing CTRL-D. &lt;br /&gt;
* Pokémon from the active save file will also appear in the Database. &lt;br /&gt;
* You can search to find certain properties via the options on the right side of the window. &lt;br /&gt;
&lt;br /&gt;
What can you do with the results?&lt;br /&gt;
* View - Loads into the Main window to view all properties, and can be set into the save file.&lt;br /&gt;
* Delete - Can be removed from the database (no undo).&lt;br /&gt;
&lt;br /&gt;
You may additionally use the script command format used by the Batch Editor to do more advanced searching:&lt;br /&gt;
* To access the input region, Tools &amp;gt; Search Settings &amp;gt; Advanced Search or press CTRL-A.&lt;br /&gt;
* Advanced Search filtering is done after the regular GUI filters on the right side are processed. &lt;br /&gt;
* Refer to the Batch Editor tutorial for questions regarding figuring out what to enter.&lt;br /&gt;
&lt;br /&gt;
===Transferring between Generations===&lt;br /&gt;
PKHeX only supports methods of transfer that the games support, emulating the official method of transferring for you.&lt;br /&gt;
&lt;br /&gt;
Transferring can only be done forwards. For example, a pk7 cannot be imported to previous generations. There are multiple ways to accomplish a transfer:&lt;br /&gt;
* Individual Transfer:&lt;br /&gt;
** Open two instances of PKHeX, one with the source save and one with the destination save.&lt;br /&gt;
** Drag and Drop between the two windows.&lt;br /&gt;
* Bulk Transfer:&lt;br /&gt;
** Open the source Save File. At the top of the main window, select Tools &amp;gt; Data &amp;gt; Dump Boxes.&lt;br /&gt;
** You may choose to save to PKHeX&#039;s Database, or you may save to a Folder (highly recommend).&lt;br /&gt;
** Open the destination Save File in another instance of PKHeX.&lt;br /&gt;
** Drop the folder of PKM&#039;s on the save file.&lt;br /&gt;
** The box contents of the destination save file will be overwritten so that all PKM files have been imported.&lt;br /&gt;
&lt;br /&gt;
===Using the Batch Editor===&lt;br /&gt;
Be cautious when using Batch Editor, because there is no undo:&lt;br /&gt;
* If you modify the contents of a Folder, the changes are permanent to those files.&lt;br /&gt;
* If you modify the contents of a Save File, the changes are permanent unless you re-load the Save File.&lt;br /&gt;
&lt;br /&gt;
The Batch Editor is a powerful tool in which the user can make mass modifications to Pokémon in either their save file or supplied folder. By using the built in &#039;script builder&#039;, you may select from properties to either &#039;set&#039; them or filter according to its value. There are three types of &#039;script commands&#039; that may be entered:&lt;br /&gt;
* &amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt; - This sets the property of the Pokémon equal to the value.&lt;br /&gt;
* &amp;lt;code&amp;gt;.=&amp;lt;/code&amp;gt; - This requires the property to be EQUAL to the value.&lt;br /&gt;
* &amp;lt;code&amp;gt;.!&amp;lt;/code&amp;gt; - This requires the property to be NOT EQUAL to the valueIf a &#039;filter&#039; (=,!) is not satisfied, the Pokémon is skipped.&lt;br /&gt;
 &lt;br /&gt;
The script interpreter is smart enough to understand the difference between numbers, strings, and booleans; quotation marks are interpreted literally and should not be used. A hint of the value type is provided beneath the dropdown.&lt;br /&gt;
&lt;br /&gt;
Empty or invalid slots are skipped by default. A slot / file must have a valid Pokémon in order to be modified. Example:&lt;br /&gt;
 =Box=1&lt;br /&gt;
 !Slot=1&lt;br /&gt;
 .Species=7&lt;br /&gt;
 =IsNicknamed=false&lt;br /&gt;
&lt;br /&gt;
Filters are interpreted first. Even though the &amp;quot;=IsNicknamed=false&amp;quot; appears after the &amp;quot;.Species=7&amp;quot; command, the batch editor will require all filters to be satisfied before any modifications are made. To explain what the above script does, it requires the Pokémon to be in the first box, but not in the first slot, and to be not nicknamed. It then sets the Species ID to 7 (Squirtle).&lt;br /&gt;
&lt;br /&gt;
===Batch Editor Special Tricks===&lt;br /&gt;
* The Batch Editor window references the PKM that is currently viewed in the editing tabs.&lt;br /&gt;
** If you select a property name, the Batch Editor will indicate whether or not the tabs PKM has that property.&lt;br /&gt;
** If the tabs PKM has that property, the Batch Editor will display the property&#039;s current value as well as the data type (number, text, etc).&lt;br /&gt;
* To Randomize a PID, use &amp;quot;.PID=$rand&amp;quot;.&lt;br /&gt;
* To Randomize EncryptionConstant, use &amp;quot;.EncryptionConstant=$rand&amp;quot;&lt;br /&gt;
* To Randomize a value within a range, use &amp;quot;.Nature=$x,y&amp;quot; for an inclusive range of [x,y].&lt;br /&gt;
* To make a Pokémon Shiny: use &amp;quot;.PID=$shiny&amp;quot;.&lt;br /&gt;
* To copy the Encryption Constant to the PID, use &amp;quot;.EC=PID&amp;quot;.&lt;br /&gt;
* To delete a Pokémon, use &amp;quot;.Species=0&amp;quot;.&lt;br /&gt;
* To set a date (Met / EggMet), use yyyyMMdd for the string.&lt;br /&gt;
** Example: &amp;quot;.MetDate=20160409&amp;quot; will set the Met Date to April 9th, 2016.&lt;br /&gt;
* Suggestions can be automatically applied for Moves, RelearnMoves, and Met_Location.&lt;br /&gt;
** Example: &amp;quot;Moves=$suggest&amp;quot; will retrieve and apply suggested moves from the legality interpreter, same as if you clicked on the Moves groupbox in the tabs editor.&lt;br /&gt;
* Legality can be used as a filter. Use &amp;quot;=Legal=false&amp;quot; to only modify illegal Pokémon.&lt;br /&gt;
* A full up to date list is available by reading the source code (BatchEditor.cs, ProcessPKM method).&lt;br /&gt;
&lt;br /&gt;
Remember that certain formats/generations do not always have future properties. There are many applications of the Batch Editor including mass hatching, deleting, making everything shiny, or clearing EVs from all applicable Pokémon.&lt;br /&gt;
&lt;br /&gt;
===FAQ===&lt;br /&gt;
&#039;&#039;&#039;Q. Is PKHeX available for the Macintosh OS or Linux?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No. You can use software like Wine/Mono to run it on these operating systems, however the program may not function as intended.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q&amp;gt; My Pokémon won&#039;t work on WiFi battles or can&#039;t be traded. Why?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is usually a Pokémon legality issue. These problems aren&#039;t dealt with in the PKHeX subforum; see the announcement regarding cheating online.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. What is the Mystery Gift &amp;quot;Received List&amp;quot;?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Every Gift has a unique ID associated with it. When you receive a Mystery Gift the game flags your save file as having obtained the gift, and doesn&#039;t allow it to be obtained again. &lt;br /&gt;
&lt;br /&gt;
PKHeX will set the used IDs for you; an ID can be deleted by right clicking the ID and choosing to &amp;quot;Delete&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. Can PKHeX create backups automatically?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Yes, create a &amp;quot;bak&amp;quot; folder in the same location as the executable, and PKHeX will export a backup of every new save you load.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. (Gen 7, 6) Is PKHeX compatible with Powersaves or Sky3DS?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
No. It never will be. Save files must be decrypted in order to load &amp;amp; save, and must be resigned before put back into your cart data.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. (Gen 5, 4, 3) I&#039;m using a flash card (R4, Acekard, etc) or emulator and my save file isn&#039;t able to be loaded. What&#039;s going wrong?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Make sure the save data is in 4 megabit format (512KB) for Gen4/5 games, and 128KB flash for Gen3 games.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. (Gen 2, 1) Does PKHeX support these games?&lt;br /&gt;
&lt;br /&gt;
Yes Be sure you are exporting your save file in the &amp;quot;Battery&amp;quot; format (raw save file, not emulator specific).&lt;br /&gt;
&lt;br /&gt;
===Useful links===&lt;br /&gt;
* [https://projectpokemon.org/home/files/file/1-pkhex/ PKHex Project page].&lt;br /&gt;
* [https://projectpokemon.org/home/forums/topic/38168-frequently-asked-questions/ Frequently Asked Questions].&lt;br /&gt;
* [https://projectpokemon.org/home/tutorials/save-editing/using-pkhex/ Using PKHeX] - A set of tutorials about how to use certain aspects of PKHeX.&lt;br /&gt;
* [https://projectpokemon.org/home/forums/forum/83-pkhex/ Support Forum] - Post here if you have questions or found bugs.&lt;br /&gt;
* [https://www.reddit.com/r/PokemonCreate/wiki/pkhex/ The Beginner&#039;s Guide to PKHeX] - From PokemonCreate Reddit.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pkhex3.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pkhex4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pkhex7.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pkhex8.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pkhex5.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/pkhex6.png&lt;br /&gt;
&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;How To Use PKHeX - Official Tutorial (2022) Sword/Shield/BDSP/Legends Arceus&#039;&#039;&#039; ([https://www.youtube.com/watch?v=t7uQ26s_pkY KlutchxGaming]) &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;t7uQ26s_pkY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
GNU/Linux is not the main Operating System of developers of this program so there may be bugs; some may come from non GNU/Linux specific code of Mono/Wine, so other users may not be able to reproduce the error you are experiencing.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;26/07/07&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added: Handling for HOME 4.0.0 absolute (float) size mismatches with Legends: Arceus.&lt;br /&gt;
** Added: Handling for HOME BD/SP &amp;amp;quot;None&amp;amp;quot; location remapping unused location IDs.&lt;br /&gt;
** Added: Handling for Gen1/2=&amp;amp;gt;Gen7 Virtual Console bugged current PP values. Thanks [https://github.com/Lusamine @Lusamine], [https://github.com/santacrab2 @santacrab2], [https://github.com/Bowarcky @Bowarcky] !&lt;br /&gt;
** Added: New check for Effort Value gains when not possible (no EXP gained or any other mechanic), like on Eggs.&lt;br /&gt;
** Fixed: Matching errors for HG/SS swarm &amp;amp;amp; safari and R/S/E swarms resolved.&lt;br /&gt;
** Fixed: Mystery Gifts generated from encounter now respect IVs if requested.&lt;br /&gt;
** Fixed: Gen5 handling of Basculin ability mismatches is now correct while in Gen5 format.&lt;br /&gt;
** Fixed: Relaxed rules for Gen4 Korean &amp;amp;lt;-&amp;amp;gt; International trades via GTS. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Added: Inventory editor now displays item sprite (if available) for a better visual editing experience.&lt;br /&gt;
* Added: Experience Bar is now indicated in the PKM editor. Can be hidden via Settings. Scroll/Drag &amp;amp;amp; Shift/Alt modifiers can edge.&lt;br /&gt;
* Added: Tools/Troubleshooting - Hex Import (from Clipboard) and Plugin Info.&lt;br /&gt;
* Added: Tools/Troubleshooting - Save file force loader added to bypass sanity checks for corrupted save files.&lt;br /&gt;
* Added: Gen4 HG/SS Pokéathlon editor added.&lt;br /&gt;
* Added: Gen5 B2/W2 Join Avenue editor added.&lt;br /&gt;
* Added: Gen5 B2/W2 Medal dedicated editor added.&lt;br /&gt;
* Added: Gen5 Pokémon Global Link status editor added.&lt;br /&gt;
* Added: Settings now auto-detects dark mode on new settings.&lt;br /&gt;
* Added: Settings can now configure high Dpi text for high Dpi monitors.&lt;br /&gt;
* Added: Settings can now configure hover/set exports to show Champions-style EVs.&lt;br /&gt;
* Added: Settings can now configure the number of rows the Encounter/PKM/Mystery Gift Database.&lt;br /&gt;
* Fixed: Gen3 RSBox Pokémon no longer read erroneous status conditions.&lt;br /&gt;
* Fixed: Gen8a/9 inventory give all items no longer gives unobtainable items.&lt;br /&gt;
* Fixed: Gen8a extra byte indexes fixed, now shows correct unused data structure indexes. Thanks [https://github.com/gcolotti @gcolotti] !&lt;br /&gt;
* Changed: Stat Nature renamed to Stat Alignment to match official terminology.&lt;br /&gt;
* Changed: Save File editor buttons in the SAV tab are now bigger, and the quick-actions are auto-sized.&lt;br /&gt;
* Changed: Program settings editor now shows horizontal tabs for each settings category rather than vertical.&lt;br /&gt;
* Changed: Program language selection now displays all options in a list rather than having to click a drop-down.&lt;br /&gt;
* Changed: Translations for the Settings editor, box export, and About/Shortcuts now provided. Thanks [https://github.com/doomsday616 @doomsday616] !&lt;br /&gt;
&#039;&#039;&#039;26/05/05&#039;&#039;&#039;&lt;br /&gt;
* Legality: Updated handling for HOME=&amp;amp;gt;ZA transfers.&lt;br /&gt;
** Added: Gen9a HOME gifts are now recognized. Thanks [https://github.com/Manu098vm @Manu098vm] !&lt;br /&gt;
** Added: Gen9a HOME 4.0.0 scale reset handling. Thanks ILCA !&lt;br /&gt;
** Added: Gen9 Hisuian Zoroark WC9 being forced to Max size is now recognized as legal.&lt;br /&gt;
** Added: Gen3 default trainer trash bytes are now handled, and regular OT trash bytes are more tightly checked.&lt;br /&gt;
** Fixed: Gen8+ Shedinja with affixed ribbons now correctly check when ribbon is missing (due to evolution creation).&lt;br /&gt;
** Fixed: Gen4 Evolution Move checks now work properly when transferred to Gen8+ with a met level of 100 (Gen4=&amp;amp;gt;Gen5).&lt;br /&gt;
** Fixed: Gen4 HG/SS Bug Catching Contest/Safari encounters now correctly check for the 4x 31IV reroll attempts. Thanks Unknown Warrior!&lt;br /&gt;
** Fixed: Gen2 Odd Egg IVs are now enforced. Thanks [https://github.com/ry4242 @ry4242] !&lt;br /&gt;
** Fixed: Gen1 Trade Evolution outsider check no longer throws an error. Thanks MrCMFTRBLE !&lt;br /&gt;
* Added: Gen6 XY Battle Chateau Rank can now be changed. Thanks [https://github.com/joelsrzalvarez @joelsrzalvarez] !&lt;br /&gt;
* Added: Gen4 HG/SS save files now differentiate between versions.&lt;br /&gt;
* Added: Gen3 Mirage Island appear cheat button to match first party slot PID, making the island appear for the day.&lt;br /&gt;
* Fixed: Box export now always saves party stats rather than leaving blank.&lt;br /&gt;
* Fixed: Gen9a pc data import now behaves as expected.&lt;br /&gt;
* Fixed: Gen3 French LeafGreen now detects better instead of assuming FireRed (&amp;amp;quot;feu&amp;amp;quot;).&lt;br /&gt;
* Fixed: Transparent sprite pixel handling for hovering over sprites improved. Thanks [https://github.com/BtEtta @BtEtta] &amp;amp;amp; [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Updated: PK2 transfers Korean&amp;amp;lt;-&amp;amp;gt;English now work for anything with western text chars. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Updated: Drag Drop threshold setting added to lessen click accidents. Thanks [https://github.com/BtEtta @BtEtta] !&lt;br /&gt;
* Updated: Translations improved for all languages. Thanks [https://github.com/Ka-n00b @Ka-n00b], [https://github.com/Coki628 @Coki628] !&lt;br /&gt;
&#039;&#039;&#039;26/04/11&#039;&#039;&#039;&lt;br /&gt;
* Added handling for HOME&#039;s update for Z-A transfers.&lt;br /&gt;
* Added backwards transfer logic for Z-A and LATAM language to previous Gen8/9 games.&lt;br /&gt;
* Added: Sound setting to disable all other beeping sounds the program makes where appropriate.&lt;br /&gt;
* Added: Gen9a donut generator.&lt;br /&gt;
* Added: Champions set imports now upscale EVs for mainline entities the set is applied to.&lt;br /&gt;
* Fixed: Gen5 imports for Pokédex Skin and Musicals revised.&lt;br /&gt;
* Fixed: Gen3 Options (sound, set/switch, etc) read/write fixed.&lt;br /&gt;
* Changed: Gen5 Nicknames in the PKM editor now better detect all-caps transfer permissions for Gen3/4 origin entities.&lt;br /&gt;
* Changed: Some internal API methods have been rewritten for performance (exporting/importing/reading/writing slots).&lt;br /&gt;
* Changed: Form Argument editing in the PKM editor improved, now shows the decomposed values.&lt;br /&gt;
* Changed: Main and OT tabs of the PKM editor revised, some controls widened/spaced.&lt;br /&gt;
* Changed: LATAM met locations for past games added, thanks [https://github.com/sora10pls @sora10pls] !&lt;br /&gt;
* Changed: Updated translations for various languages. Thanks [https://github.com/Ka-n00b @Ka-n00b] !&lt;br /&gt;
&#039;&#039;&#039;26/03/20&#039;&#039;&#039;&lt;br /&gt;
* Added handling for ZA&#039;s new patch revision tag.&lt;br /&gt;
* Legality: Gen3 Updated nickname checks for Japanese language origin.&lt;br /&gt;
* Changed: Hover preview in boxes now renders much quicker.&lt;br /&gt;
* Added: Gen8 encounters via the Encounter Database now respect requests for Shiny.&lt;br /&gt;
* Added: Gen1-5 Trainer editors can now edit OT trash bytes via CTRL-Click, same as the main entity GUI.&lt;br /&gt;
* Added: Gen3 Hall of Fame can now set current party to the selected entry.&lt;br /&gt;
* Fixed: Gen4 chatter and Records now read from the correct save block (rather than potentially the backup).&lt;br /&gt;
* Fixed: Performing many thousand Drag-drop operations will no longer crash the program (handle leak).&lt;br /&gt;
&#039;&#039;&#039;26/03/06&#039;&#039;&#039;&lt;br /&gt;
* Legality: Added Gen3 FR/LG virtual console legality restrictions and trash byte checks.&lt;br /&gt;
* Added: Gen3 FR/LG dex editing will clear unavailable captured dex flags.&lt;br /&gt;
* Added: Gen3 FR/LG item lists for virtual console no longer permit items exclusively from R/S/E/C/XD.&lt;br /&gt;
* Added: Folder Browser can now delete backup/recent save files via right click context menu.&lt;br /&gt;
* Changed: Minor improvement to some translatable GUI elements. Thanks @jcx521lj1315, @easyworld, @wubinwww &amp;amp; @Mimigris !&lt;br /&gt;
&#039;&#039;&#039;26/02/27&#039;&#039;&#039;&lt;br /&gt;
**Added: Garchompite Z &amp;amp; Blazikenite now released, can exist in inventory/held.&lt;br /&gt;
**Changed: Invalid PP Up count message now indicates the exact invalid value (relevant for Gen1/2 VC =&amp;gt; Gen7).&lt;br /&gt;
**Fixed: Gen4 transfers from Gen3 now handle HG/SS&#039;s ball value correctly.&lt;br /&gt;
*Note: Gen3 FR/LG save files from Nintendo Switch are able to be loaded (no additional handling/conversion needed). Undecided on Legality handling.&lt;br /&gt;
*Added: Box Search button now available; can apply a filter to all slots (faded out) for easier searching your save data. Thanks @RandomGuy155 !&lt;br /&gt;
*Added: Box Popout button now available; the previous shortcut (double clicking the box tab) still exists. Now more accessible/discoverable.&lt;br /&gt;
*Added: Batch Editor can now perform math operations (+-/* and bitwise operators); refer to the dropdown menu.&lt;br /&gt;
*Added: PKM Editor now alerts when exporting a save file with unsaved PKM Editor changes.&lt;br /&gt;
*Added: Gen9a gender changing via Trainer Editor now resets clothing selection to default to avoid game startup crashes. Thanks @abcboy101 !&lt;br /&gt;
*Fixed: Gen9a Inventory edits for Mega Shards can now manually enter 4 digits (up from 3).&lt;br /&gt;
*Fixed: Gen8a Move Mastery/Purchased flags changed via Batch Editor now are set as per legality rules (rather than invalid).&lt;br /&gt;
*Fixed: Gen3 Emerald PC stored items now allow all item types (except Key items). Thanks @ShadowMario3 !&lt;br /&gt;
*Changed: Square shiny sprites now only appear when in SW/SH context.&lt;br /&gt;
*Changed: More translations for event flags in prior games. Thanks @Mimigris &amp;amp; @Ka-n00b !&lt;br /&gt;
&#039;&#039;&#039;26/01/31&#039;&#039;&#039;&lt;br /&gt;
* Legality: Swampertite now released, can exist in inventory/held.&lt;br /&gt;
* Added: Gen9a handling for 9,999 Mega Shards&lt;br /&gt;
* Fixed: Showdown Set parsing now recognizes IVs/EVs entered in non-standard order.&lt;br /&gt;
&#039;&#039;&#039;26/01/22&#039;&#039;&#039;&lt;br /&gt;
* Added: Gen9a file size recognition for Z-A patch 2.0.1&lt;br /&gt;
* Legality:&lt;br /&gt;
** Changed: Height/Weight/Scale messages now show the expected value, when applicable.&lt;br /&gt;
** Fixed: Alpha Pokémon without the requisite scale value are now flagged.&lt;br /&gt;
** Fixed: Forgotten initial moves (via HOME) are now extrapolated for cross-game transfers that expect specific moves.&lt;br /&gt;
* Changed: Gen4 Battle Revolution saves now load faster (more performant checksum algorithm).&lt;br /&gt;
&#039;&#039;&#039;26/01/07&#039;&#039;&#039;&lt;br /&gt;
* Changed: PKHeX now uses .NET 10 for its runtime (updated from .NET 9)! Dark Mode (Options-&amp;amp;gt;Settings-&amp;amp;gt;Startup-&amp;amp;gt;DarkMode) is now better supported.&lt;br /&gt;
* Legality: Sceptilite now released, can exist in inventory/held.&lt;br /&gt;
* ** Fixed: Gen9a handling for Rotom/Hoopa plus move flags.&lt;br /&gt;
* ** Fixed: Gen4 EV verifier for Level100 gifts now only allows Vitamin increments rather than allowing any 0-100 range. Thanks [https://github.com/andrebastosdias @andrebastosdias] !&lt;br /&gt;
* ** Fixed: BattleForm logic updated to differentiate Zygarde and Greninja better. Thanks [https://github.com/Parnassius @Parnassius] !&lt;br /&gt;
* ** Added: Gen9a Bulk checker now verifies Primal Orb unique assignment.&lt;br /&gt;
* Added: Gen9a Donut editor now displays the flavor profile of a donut in a visual manner. Thanks [https://github.com/RandomGuy155 @RandomGuy155] !&lt;br /&gt;
* Fixed: Gen9a Donut editor timestamp now correctly updates. Thanks [https://github.com/foohyfooh @foohyfooh] !&lt;br /&gt;
&#039;&#039;&#039;25/12/15&#039;&#039;&#039;&lt;br /&gt;
* Legality: Improved location ID detection of wild encounters, should work for 99.9%.&lt;br /&gt;
** Crossovers are not currently handled for detecting location IDs. Generating from encounter template is 100% legal.&lt;br /&gt;
* Added: Gen9a Donut editor. Can randomize, clone, fill, export, import, and manually edit individual donuts. Thanks [https://github.com/Lusamine @Lusamine] &amp;amp;amp; [https://github.com/sora10pls @sora10pls] !&lt;br /&gt;
* Added: Gen9a Trainer Editor can now change Hyperspace Survey Points. Refer to the DLC tab in the editor.&lt;br /&gt;
* Fixed: Gen9a Meowstic/Magearna mega entries now update the Pokédex as expected.&lt;br /&gt;
* Fixed: Gen9a Event Flag editor no longer sometimes opens with a popup warning.&lt;br /&gt;
* Fixed: Gen3 Battle Frontier streak edits no longer reset adjacent streak values. Thanks [https://github.com/rjgabel @rjgabel] !&lt;br /&gt;
&#039;&#039;&#039;25/12/02&#039;&#039;&#039;&lt;br /&gt;
* Added Mewtwonite X/Y as released items, and Mewtwo encounter data.&lt;br /&gt;
* Legality:&lt;br /&gt;
** Fixed: Gen9a Plus moves from level-up learnset now allow Seed of Mastery to mark as Plus, without the Plus level threshold.&lt;br /&gt;
&#039;&#039;&#039;25/11/30&#039;&#039;&#039;&lt;br /&gt;
* Added Chesnaughtite, Dream Ball as released items.&lt;br /&gt;
* Legality:&lt;br /&gt;
** Fixed: Gen9a Gift encounters now enforce IV correlation when the template does not have any fixed/flawless IVs.&lt;br /&gt;
** Fixed: Gen9 transfers to SW/SH now recognized again.&lt;br /&gt;
** Fixed: Gen7 breeding ball inheritance for Gen2-5 starters now allow Gen4 balls via Island Scan encounter parents. Thanks manolin18 !&lt;br /&gt;
** Fixed: Gen4 Pokewalker IVs now recognize seed skipping via Mic Test. Thanks [https://github.com/John-0902 @John-0902] !&lt;br /&gt;
** Fixed: Gen3 GCEA PID/IV enforcing now uses BACD_R_A rather than BACD_U_AX (PCNY Antishiny).&lt;br /&gt;
* Added: Gen9a Player Appearance can now be changed via Block Data editor. Thanks [https://github.com/pasqualenardiello @pasqualenardiello] !&lt;br /&gt;
* Fixed: Gen9a suggesting of Plus Moves for Alphas now recommends the guaranteed Alpha Move as plus (as intended).&lt;br /&gt;
&#039;&#039;&#039;25/11/16&#039;&#039;&#039;&lt;br /&gt;
* Legality: Improved location ID detection of wild encounters, should work for 99.9%.&lt;br /&gt;
** Crossovers are not currently handled for detecting location IDs. Generating from encounter template is 100% legal.&lt;br /&gt;
** Fixed: Gen9a Ability change rules for Z-A have been updated to reflect form change behavior and encounter selection.&lt;br /&gt;
** Fixed: Gen9a minimum move count rules have been updated to ignore optional relearn moves (still not perfect).&lt;br /&gt;
** Fixed: Gen8 Raid shinies no longer flagged illegal, rather unverified like before.&lt;br /&gt;
** Fixed: Gen8/8b now allow Rare Candy @ lvl100 triggering evolution. Thanks JeongJeong !&lt;br /&gt;
* Fixed: Running PKHeX with LATAM language selected no longer crashes for past-gen string fetches.&lt;br /&gt;
* Fixed: Gen9a Colorful Screw quantity can now be edited again. Previous release had prevented changes so Give All did not set to 995.&lt;br /&gt;
* Changed: Gen9a Alpha IVs from generated templates are more random than before.&lt;br /&gt;
* Changed: Entity Editor move edit dropdown now shows egg moves/encounter moves in green if possible for the current entity.&lt;br /&gt;
&#039;&#039;&#039;25/11/07&#039;&#039;&#039;&lt;br /&gt;
* Fixed inventory edits.&lt;br /&gt;
* Added Diancite, Delphoxite, Sport Ball as released items.&lt;br /&gt;
* Legality:&lt;br /&gt;
** Checks for Z-A improved, but wild encounter location ID recognition outside of Wild Areas still needs work.&lt;br /&gt;
** Please do not report issues with this release&#039;s handling with legality/encounters. We are aware of what still needs work.&lt;br /&gt;
* Fixed: Gen9a Pokédex edits now retain Charizard-Y mega seen bitflag.&lt;br /&gt;
* Fixed: Gen9a Pokédex registering now sets applicable alternate form flags the same way the game normally grants.&lt;br /&gt;
* Fixed: Gen9a Species names for LATAM language now load correctly.&lt;br /&gt;
* Fixed: Gen9a Inventory editor no longer treats all acquired items as &amp;quot;NEW&amp;quot; when saving.&lt;br /&gt;
* Fixed: Gen9a Inventory editor no longer modifies Colorful Screw quantity when giving all.&lt;br /&gt;
* Fixed: Gen9a Scale evaluation now uses the less-detailed size labels to match the appearance in-game.&lt;br /&gt;
* Fixed: Gen9a Box/PC data file I/O now works as expected.&lt;br /&gt;
* Fixed: Friendship value now loads correctly when viewing a PKM. Thanks @DiogoOliveiraReis !&lt;br /&gt;
* Changed: Gen9a Event Flag editor now shows more event block tabs; existing tabs have been renamed to match their block&#039;s function.&lt;br /&gt;
* Added: Gen9a Fashion editor can now give all as owned via a button at the bottom of the form. Hold shift to give all for every tab.&lt;br /&gt;
* Added: Gen9a Trainer editor now has a button for collecting all Colorful Screws, which updates your inventory count.&lt;br /&gt;
* Added: Gen9a ConfigSave in Block Data can be used to change the Text speed to 3 (instant).&lt;br /&gt;
* Added: Gen9 S/V Fashion Editor added, matching the features available in Z-A&#039;s new fashion editor. Thanks @foohyfooh !&lt;br /&gt;
* Added: Encounter Database can now modify the Encounter Criteria directly instead of inferring from main window tabs.&lt;br /&gt;
&#039;&#039;&#039;25/10/26&#039;&#039;&#039;&lt;br /&gt;
* Added: Support for Legends: Z-A.&lt;br /&gt;
* Legality:&lt;br /&gt;
** Initial handling for recognizing and generating encounters from Z-A.&lt;br /&gt;
** Please do not report issues with this release&#039;s handling with legality/encounters. We are aware of what still needs work.&lt;br /&gt;
* Notes:&lt;br /&gt;
** All encounters can be traced back to an RNG seed.&lt;br /&gt;
** With multiple shiny rolls (wild only) or shinies, this calculation is not instant (&amp;amp;gt;15 seconds), so it is only done for non-shiny 1-rolls.&lt;br /&gt;
** Do not be lulled into a false sense of safety that PKHeX does not flag your modified Pokémon&#039;s PID/IVs.&lt;br /&gt;
** Cheat codes that modify the RNG generation routine is detectable in the resulting Pokémon, as previously mentioned in Discord.&lt;br /&gt;
** Ability editing via the GUI has been forced into All-Abilities mode due to GameFreak not updating a Pokémon&#039;s ability on evolution.&lt;br /&gt;
* Added: Gen9a: Pokédex and Trainer Info editor are available.&lt;br /&gt;
* Added: Gen9a: Event block editors are available. 64-bit hash =&amp;amp;gt; text is not provided at this time.&lt;br /&gt;
* Added: Gen9a: Fashion block editors are available. Fashion-item ID =&amp;amp;gt; text is not provided at this time.&lt;br /&gt;
* Added: Bulk (Verify All) checks for issues with the save file, such as mismatched Fused slots or Mega stone inventory state issues.&lt;br /&gt;
&#039;&#039;&#039;25.09.25&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added the Shiny Miraidon/Koraidon mystery gifts, and the other Ruins gifts.&lt;br /&gt;
** Added Reg J mythical participation ribbon legality.&lt;br /&gt;
* Added: Loading of zipped save file/folders is now supported, and can export-update the same zip. Thanks @nitz !&lt;br /&gt;
* Added: Status (paralyze, sleep, etc) browser is now localized. Thanks @abcboy101 !&lt;br /&gt;
* Fixed: PK1=&amp;gt;PK2 conversion no longer errors.&lt;br /&gt;
* Fixed: Gen2 Japanese Crystal save files now detect correctly.&lt;br /&gt;
&#039;&#039;&#039;25.06.09&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Fixed: Gen3 XD trainer ID checks no longer required for PAL copies of the game.&lt;br /&gt;
** Fixed: Gen8 PLA purchased/master flag check regression fixed.&lt;br /&gt;
** Changed: Updated badwords list. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Added: Gen4 PBR box names and play time now available for edits. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Fixed: Gen9 inventory edits with duplicate/cleared item slots now behaves correctly for editing items near the end of the list.&lt;br /&gt;
* Fixed: Gen3 nickname encoding is better handled when transferring between international and Japanese games.&lt;br /&gt;
* Fixed: PokePreview hover form no longer flickers the main GUI.&lt;br /&gt;
* Fixed: Stat abbreviations for other languages have been updated for easier parsing.&lt;br /&gt;
* Changed: Legality resources for levelup/eggmove/evolve have been re-serialized to a more compact &amp;amp;amp; straightforward format, improving startup time.&lt;br /&gt;
* Changed: Plugin loading logic reworked for better containerization.&lt;br /&gt;
&#039;&#039;&#039;25.05.18&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added: Gen3/4 egg PID types can be allowed to be any PID type by the user if changed via program settings.&lt;br /&gt;
** Added: Gen3 XD Poké Spot IV animation is now checked for legality.&lt;br /&gt;
** Added: Gen2 Stadium&#039;s move reminder learnset is now implemented for GB-Era relearning.&lt;br /&gt;
** Fixed: Gen3 Colo Murkrow added rebattle team locks (lack thereof). Thanks Unknown Warrior !&lt;br /&gt;
** Fixed: Gen4 Eggs now permit a PID of 0 (Masuda method re-rolling into 0 when receiving egg).&lt;br /&gt;
** Fixed: Gen8 PLA handling of un-transferred mid-scale fixed Alpha encounter sizing checks. Thanks Yorhu !&lt;br /&gt;
** Changed: Encounter Templates for eggs are now context-specific rather than a shared implementation for all games.&lt;br /&gt;
* Added: ShowdownSet localization - separate settings for Exporting to clipboard and Hovering slots.&lt;br /&gt;
* Added: Scrolling the mouse within the EXP/Level/IV/EV/Friendship text boxes will increment/decrement (nuzlocke edging/etc).&lt;br /&gt;
* Added: Gen1 Stadium boxes will now initialize boxes if not yet used, and hide empty slots/compress storage on save.&lt;br /&gt;
* Added: Gen4 Battle Revolution now recognizes the save file language. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Added: Gen4 Group seed editing. Thanks [https://github.com/taxicat1 @taxicat1] !&lt;br /&gt;
* Fixed: Gen4 PCD active flag now activates correctly. Thanks [https://github.com/glencoe2004 @glencoe2004] !&lt;br /&gt;
* Fixed: Gen4 Pokédex now un-sees forms correctly. Thanks [https://github.com/rganhoto @rganhoto] !&lt;br /&gt;
* Fixed: Gen6 PP for Submission is now correctly updated to 20. Thanks [https://github.com/FrostedGeulleisia @FrostedGeulleisia] !&lt;br /&gt;
* Fixed: Gen9 SV picnic inventory is no longer bumped to at least 1 when saving inventory edits.&lt;br /&gt;
* Fixed: Gen9 now shows the Battle Memory Ribbon in gold if 7 ribbons instead of 8 (to match the game behavior).&lt;br /&gt;
* Changed: Gen9 SV save file sizes now check for a range of sizes rather than specific sizes.&lt;br /&gt;
* Changed: Translations updated. Thanks [https://github.com/mk360 @mk360], [https://github.com/easyworld @easyworld], [https://github.com/Mimigris @Mimigris] !&lt;br /&gt;
* Changed: Intel CPUs might work better with the recent .NET 9 runtime. Thanks [https://github.com/hewenhan @hewenhan] !&lt;br /&gt;
* Changed: ShowdownSet parsing/exporting was rewritten for more flexibility (localization) as well as new formats/representations.&lt;br /&gt;
&#039;&#039;&#039;25.02.23&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added: Handling for new HOME gifts (Meltan, Keldeo, Manaphy, Enamorus).&lt;br /&gt;
** Added: Gen7b Received DateTime validation. This was missed for how many years? Use the batch editor to fix any affected.&lt;br /&gt;
** Added: Gen1 recognition for Japanese tour Mews. Thanks [https://github.com/ShadowMario3 @ShadowMario3] !&lt;br /&gt;
** Added: Separated word filter for NDS, 3DS, and Switch contexts. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
** Added: Gen3 encounters now show nearest initial seeds and frame counts elapsed.&lt;br /&gt;
** Added: Gen4 Pokewalker IV spreads are now validated and show initial seeds.&lt;br /&gt;
** Added: Current PP verifier. This is a naive check to highlight box mons that haven&#039;t been healed since capture. Will be improved in future.&lt;br /&gt;
* Added: Gen1 Hall of Fame editor.&lt;br /&gt;
* Added: Gen3 Hall of Fame editor.&lt;br /&gt;
* Added: Gen3 Secret Base editor. Thanks [https://github.com/pasqualenardiello @pasqualenardiello] !&lt;br /&gt;
* Fixed: Gen7b encounters now generate with a valid Received DateTime.&lt;br /&gt;
* Fixed: Gen6 Link data now saves correctly. Thanks [https://github.com/R-YaTian @R-YaTian] !&lt;br /&gt;
* Changed: Gen3 RSBox now shows boxes similar to visual row order in-game rather than by order in the save file.&lt;br /&gt;
* Changed: Sprite generating performance improved (less allocation).&lt;br /&gt;
* Changed: Encounter template generating loops have been improved to better seek input criteria (IVs, nature, etc).&lt;br /&gt;
* Now requires .NET 9.0 runtime.&lt;br /&gt;
&#039;&#039;&#039;24.11.11&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added: Gen3/4 Nidoran eggs now recognize their PID correlation. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
** Added: Gen7 LGPE crossover locations added. Thanks [https://github.com/Lusamine @Lusamine] !&lt;br /&gt;
** Changed: Gen3 event recognition enhanced to verify OT genders and complete PID/IV correlations. Thanks [https://github.com/kamronbatman @kamronbatman] !&lt;br /&gt;
** Fixed: Gen3 encounter slots now generate &amp;amp;amp; recognize their encounter conditions more accurately. Thanks [https://github.com/ymaniz09 @ymaniz09] &amp;amp;amp; TFS!&lt;br /&gt;
* Added: Encounter Database: New setting to enable displaying detailed information about each template on hover.&lt;br /&gt;
* Added: Encounter Database, mgdb: New tab to allow toggling settings used when generating templates.&lt;br /&gt;
* Added: PKM Database: New tab to allow toggling settings used when searching. Requires reopening the form.&lt;br /&gt;
* Added: Gen9 SV personal data now exposes the computed BaseEXP property instead of 0.&lt;br /&gt;
* Added: Gen6/7/SWSH trainer editor can now change the save file&#039;s trainer gender, by updating model data. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Added: Gen5 DLC editor added. In addition to the C-Gear skin editor, can load/export Musicals, Pokedex skins, Battle Videos, etc!&lt;br /&gt;
* Added: Gen5 DLC supports reading/writing the never-distributed Battle Test data.&lt;br /&gt;
* Added: Gen5 misc editor can now change more Battle Subway properties. Thanks [https://github.com/Mowstyl @Mowstyl] !&lt;br /&gt;
* Added: Gen3 misc editor can now change Lilycove Museum paintings (RNG abuse). Thanks [https://github.com/pasqualenardiello @pasqualenardiello] !&lt;br /&gt;
* Added: Gen2 misc editor for Crystal added button to enable the GS Ball event.&lt;br /&gt;
* Added: Gen2 mail formats now read/write for all languages. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Fixed: Complete Dex cheat (BDSP, SV, etc) now retains already set shiny flag records for entries. Thanks [https://github.com/TankedThomas @TankedThomas] !&lt;br /&gt;
* Fixed: Partner Ribbon now shows up in the Affixed Ribbon list.&lt;br /&gt;
* Fixed: Met tab now loads Version/Location correctly when starting up with a RBY save and loading a future game save.&lt;br /&gt;
* Fixed: Gen8 BDSP Manaphy egg now generates correctly.&lt;br /&gt;
* Fixed: Gen4 HGSS box modification corruption on single in-game save issue fixed. Thanks [https://github.com/Lusamine @Lusamine], [https://github.com/gingrentse @gingrentse], [https://github.com/WonderSquid @WonderSquid] !&lt;br /&gt;
* Fixed: Gen3 GameCube OT names that are 7 characters long now convert to PK3 correctly.&lt;br /&gt;
* Changed: Gen5 C-Gear Skins loaded from image files no longer completely fail when too many tiles, instead showing partial results.&lt;br /&gt;
* Changed: Errors generated by plugins are now more clearly indicated that they are caused by the plugin, for error reporting.&lt;br /&gt;
&#039;&#039;&#039;24.07.27&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added: Most Gen3 events from Japan are now recognized.&lt;br /&gt;
* Fixed: Gen6 box name editing now edits the right offset. Thanks @javierhimura !&lt;br /&gt;
* Fixed: Other small regressions/oddities reported have been resolved.&lt;br /&gt;
* Fixed: Save files with uncommon appended footer types no longer cause issue when saving/closing subforms.&lt;br /&gt;
&#039;&#039;&#039;24.07.03&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Added: Slot source legality checks for miscellaneous slots like Daycare. Shouldn&#039;t flag anyone ;)&lt;br /&gt;
* Added: Gen4 trainer stat record editor. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Added: Gen3 memory cards can now be auto-detected as the latest save file on startup/request.&lt;br /&gt;
* Added: Gen3 Berry Powder, Pokéblock, and Decoration editors. Thanks [https://github.com/abcboy101 @abcboy101] !&lt;br /&gt;
* Fixed: Gen9 eggs now no longer auto-clear trash bytes for nicknames (and no longer flag in doing so).&lt;br /&gt;
* Fixed: Gen5 misc editor now opens correctly for editing the Key system.&lt;br /&gt;
* Fixed: Gen4 pk4-&amp;amp;gt;ranch conversion no longer throws an error.&lt;br /&gt;
* Fixed: Gen4 battle revolution nickname/OT now reads correctly.&lt;br /&gt;
* Fixed: Gen1-3 saves with misc footers are retained as intended.&lt;br /&gt;
* Changed: Some internals changed to better work with web browsers (wasm). Thanks [https://github.com/arleypadua @arleypadua] !&lt;br /&gt;
* Changed: Resource fetching abstraction extracted for better reuse with plugins.&lt;br /&gt;
&#039;&#039;&#039;24.05.05&#039;&#039;&#039;&lt;br /&gt;
* Legality: Added Regulation G.&lt;br /&gt;
* Added: Entity editor can now modify battle-Status effects (Burn, Paralyze, etc). Click the bottom right corner of the window for the GUI.&lt;br /&gt;
* Added: Gen5 trainer records can now be edited via Misc editor. Not documented well, but exposes the values for editing.&lt;br /&gt;
* Added: Gen1-3 games now detect language/version based on the save file name. If not detected, can be overridden via settings before loading.&lt;br /&gt;
* Added: Gen1 can now show an Entity&#039;s gender if enabled via settings, using Gen2 IV gender determination logic.&lt;br /&gt;
* Fixed: Gen7 Chinese species names now write correctly.&lt;br /&gt;
* Fixed: Gen6 OR/AS DexNav count read/write fixed.&lt;br /&gt;
* Fixed: Gen3 trash bytes now reference the Entity for translating the string, rather than the save file.&lt;br /&gt;
* Fixed: Gen2 Box Names now read/write ligatures correctly.&lt;br /&gt;
* Fixed: Gen1/2 box data now retains empty slot data instead of reformatting into empty box lists (glitching friendly).&lt;br /&gt;
* Changed: Legality settings have been extracted to a more easily customized settings object.&lt;br /&gt;
* Changed: Translations updated for Chinese &amp;amp; Japanese. Thanks @ppllouf &amp;amp; @902PM !&lt;br /&gt;
&#039;&#039;&#039;24.03.26&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Fixed: Handled some edge cases with latest release RNG Frame checks for Gen4.&lt;br /&gt;
** Added: Verification for Gen3 CHANNEL and MYSTRY seed patterns.&lt;br /&gt;
* Added: Gen4/5 API now supports reading/writing battle videos to the savefile object.&lt;br /&gt;
* Fixed: Gen5 Entree Forest in Misc now saves correctly. If broken, open the editor on the previous release and save again.&lt;br /&gt;
* Fixed: Event Flag diff now works as intended. Pokedex button restored for some save formats (regression from last release).&lt;br /&gt;
* Changed: Plugin error messages will now more clearly indicate they are an issue with plugins rather than PKHeX&#039;s fault.&lt;br /&gt;
* Fixed: Gen4 Daycare seed set now works as intended, no longer corrupts Daycare slot 2.&lt;br /&gt;
* Fixed: Gen4 Mystery Gift now reads correctly.&lt;br /&gt;
&#039;&#039;&#039;24.03.10&#039;&#039;&#039;&lt;br /&gt;
* Legality: Added Encounter Slot RNG correlation checks for Gen4 (and Gen3). Because Encounter Type PID mismatch wasn&#039;t enough!&lt;br /&gt;
** When hovering over a slot, the program will indicate a possible method to encounter the slot with a lead &amp;amp; initial seed (not Method 1).&lt;br /&gt;
** Added: Gen8+ RNG seeds that are 64bit correlation (like SW/SH raids) will now indicate the detected RNG seed.&lt;br /&gt;
** Added: Gen1/2 Event Gifts are now recognized completely. Thanks @ShadowMario3!&lt;br /&gt;
* Changed: Save Block handling reworked to better match the real game behavior of managing chunks of memory. Thanks @foohyfooh!&lt;br /&gt;
* Changed: Gen6 O-Power editor now edits individual indexes and usage counts.&lt;br /&gt;
* Added: Out-of-bounds text entry characters are now indicated with a [?] next to the Nickname/OT text entry. Thanks @abcboy101!&lt;br /&gt;
* Added: Batch Editor commands are kept when the window is closed, while the program remains open.&lt;br /&gt;
* Added: Loading empty save files (all 00 or FF) will now give a more detailed error message indicating failure.&lt;br /&gt;
* Added: More games indicate Daycare status completely. Maybe editing in the future?&lt;br /&gt;
* Added: Gen1/2 NSO save files are now able to be loaded, edited, and exported without needing an external tool.&lt;br /&gt;
* Added: Gen2 player color palette now editable via Block Data editor. Thanks @Bl4ckSh4rk!&lt;br /&gt;
* Added: Gen4/5 Battle Videos can now be extracted &amp;amp; interacted with via PKHeX.Core API code.&lt;br /&gt;
* Fixed: Gen3 FR/LG National Dex unlock fixed. Thanks @Bl4ckSh4rk!&lt;br /&gt;
* Fixed: Gen9 Alcremie formarg handling for Pokédex fixed. Thanks @sora10pls!&lt;br /&gt;
&#039;&#039;&#039;24.01.12&#039;&#039;&#039;&lt;br /&gt;
* Legality: Added Mochi Mayhem Pecharunt, Regulation F, and Blaziken Tera Raid recognition.&lt;br /&gt;
** Fixed: Level 100 encounters that were evolved in S/V with level-up methods (Eevee, Magikarp) now recognize correctly.&lt;br /&gt;
** Fixed: Gen1/2 transfers to Gen7+ will now recognize filtered OT names as valid. Thanks @abcboy101!&lt;br /&gt;
** Fixed: Recognition of Gen8 Hidden Ability patched raids now works as intended.&lt;br /&gt;
** Fixed: Recognition of Gen8+ GO encounters that evolve via form arguments now are recognized as intended.&lt;br /&gt;
* Added: MarkingCircle/Triangle/Square/etc now reimplemented, able to be used in Batch Editor commands.&lt;br /&gt;
* Added: Gen1/2 transfers to Gen7 can now override the default transfer version via program settings.&lt;br /&gt;
* Fixed: Gen9 Stellar type can now be set via Batch Editor with its corresponding type value (99).&lt;br /&gt;
* Fixed: Hover preview custom tooltip shows Hidden Power type correctly (was off by 1).&lt;br /&gt;
* Changed: Box Dump now uses a GUI to allow changing settings with more flexibility.&lt;br /&gt;
&#039;&#039;&#039;23.12.22&#039;&#039;&#039;&lt;br /&gt;
* Legality: Updates for Scarlet &amp;amp; Violet 3.0.0 behaviors revised to fix inaccuracies.&lt;br /&gt;
** Fixed: Recognition of marks, stellar fixed encounters, and underdepths encounters.&lt;br /&gt;
** Gold Bottle Cap on flawless IVs in S/V is now flagged; upload to HOME &amp;amp; back to get the official fix.&lt;br /&gt;
* Fixed: Gen9 S/V 7-Star Raid records now can be edited with the revised raid block editor. Thanks @foohyfooh!&lt;br /&gt;
* Fixed: Other misc regressions too insignificant to note (but observed &amp;amp; reported by many -- thanks!)&lt;br /&gt;
&#039;&#039;&#039;23.10.11&#039;&#039;&#039;&lt;br /&gt;
* Added support for Scarlet &amp;amp; Violet 2.0.2 save file sizes.&lt;br /&gt;
* Legality:&lt;br /&gt;
** Badwords list has been updated to be more strict per latest Nintendo Switch 16.0.0 firmware. Thanks @Bl4ckSh4rk!&lt;br /&gt;
** Gen9 Distribution Outbreaks now recognized. Thanks @Lusamine &amp;amp; @sora10pls!&lt;br /&gt;
** Gen9 Crossover met location logic tweaked for better location identification in Kitakami.&lt;br /&gt;
** Gen4 Pokéwalker IV spreads are now validated. Thanks @Lincoln-LM &amp;amp; @HappyLappy1!&lt;br /&gt;
* Added: Gen8 SW/SH adventure start date can now be changed in the Trainer Editor. Thansk @foohyfooh!&lt;br /&gt;
* Added: Gen4 Pokeathlon Points can now be edited via the Block Editor.&lt;br /&gt;
* Fixed: Initial program startup now notifies all plugins when a save is loaded on startup.&lt;br /&gt;
&#039;&#039;&#039;v23.09.25&#039;&#039;&#039;&lt;br /&gt;
* Added support for more Scarlet &amp;amp; Violet 2.0.1 save file sizes.&lt;br /&gt;
* Legality: Added more Kitakami encounters (sub-zones) and basic weather mark recognition.&lt;br /&gt;
* Fixed: Encounter template recognition regressions resolved (Gen4 Pokewalker, Gen9 static encounter scale).&lt;br /&gt;
* Fixed: Gen9 S/V Pokédex for 2.0.1+ save files now references a new save file block &amp;amp; GUI editor.&lt;br /&gt;
* Added: Gen9 TM/Fly cheats now check for if a flag exists for pre-2.0.1 save files.&lt;br /&gt;
* Added: Gen9 Fashion unlock cheat now adds 2.0.1+ fashion if available.&lt;br /&gt;
&#039;&#039;&#039;23.09.16&#039;&#039;&#039;&lt;br /&gt;
* Added support for Scarlet &amp;amp; Violet 2.0.1 (Teal Mask)&lt;br /&gt;
* Legality: Added encounters / changes as per Teal Mask DLC adjustments.&lt;br /&gt;
** May still have issues with crossovers / hidden ability permissions.&lt;br /&gt;
** Changed: Evolve-Knowing-Move criteria has been rewritten for better side-game checks &amp;amp; accuracy.&lt;br /&gt;
** Changed: More encounter generator fixes implemented (missed a few properties).&lt;br /&gt;
* Fixed: Gen9 Pokédex clearing individual entries now only wipes the entry instead of everything that follows. Thanks @Alexander3a !&lt;br /&gt;
* Fixed: Gen5 CGear Skin importing now gives the correct error message when too many unique tiles are imported.&lt;br /&gt;
&#039;&#039;&#039;23.08.23&#039;&#039;&#039;&lt;br /&gt;
* Legality: Added realtime RNG correlation checks for most SW/SH raids. Thanks @SciresM &amp;amp; @Lusamine !&lt;br /&gt;
** Note: Seed details do not trickle out to the verbose legality report at this time since seeds are 64bit (not 32bit).&lt;br /&gt;
** Added: The encounter generator / matching API has been refactored for better performance and maintenance.&lt;br /&gt;
** Fixed: More evotree edge cases have been resolved since the last update.&lt;br /&gt;
** Fixed: Gen4 Move Tutor now permits correctly for alternate forms.&lt;br /&gt;
** Fixed: Gen2 Union Cave B2F fishing slots are now recognized correctly.&lt;br /&gt;
** Fixed: Gen1/2 SID check no longer indicates &amp;quot;Fishy&amp;quot; when SID is correctly zero.&lt;br /&gt;
* Added: Technical Record editor now indicates yellow for record indexes that can be legally learned by a previous evolution.&lt;br /&gt;
* Added: Gen9 origin Transfers back to PK9 format now regenerate with legal values that would be sourced from HOME.&lt;br /&gt;
* Fixed: Gen9 Hoopa-Unbound no longer sets a FormArgument value of 3 whenever set back to box slots.&lt;br /&gt;
* Fixed: Gen7 US/UM relearn moves now properly show in all PK7s when loaded to tabs.&lt;br /&gt;
* Fixed: Gen5 CGear Skin handling now behaves correctly for importing &amp;amp; saving skins.&lt;br /&gt;
* Fixed: Pokérus strains now indicate correctly again in the PKM Editor GUI.&lt;br /&gt;
&#039;&#039;&#039;23.06.03&#039;&#039;&#039;&lt;br /&gt;
* Added: HOME 3.0.0 initial support. Legality analysis is still under research. Thanks @Lusamine &amp;amp; @sora10pls !&lt;br /&gt;
** Lacks full support for cross-game transfers involving evolutions and moves. Please be patient, there&#039;s a lot of things to handle!&lt;br /&gt;
* Added: Tech Record editor GUI has been redesigned for a more visual experience. Can now sort alphabetically, owned, or move type.&lt;br /&gt;
* Added: Gen9 S/V clothing &amp;quot;cheats&amp;quot; have been added to the Trainer Editor window. Thanks @pasqualenardiello!&lt;br /&gt;
* Fixed: Small regressions in item list permissions.&lt;br /&gt;
* Changed: Gen7 Totem Form sprites now display with an Orange-colored glow, similar to Gen3 C/XD shadow purple.&lt;br /&gt;
* Changed: DPI scaling adjusted for better appearance on high resolution monitors.&lt;br /&gt;
&#039;&#039;&#039;23.05.11&#039;&#039;&#039;&lt;br /&gt;
* Legality:&lt;br /&gt;
** Changed: Creating a new PKM from template will set current moves same as the games.&lt;br /&gt;
** Changed: Pokérus strains 0 &amp;amp; 8 now permitted due to official implementation errors in Gen2 &amp;amp; Gen3.&lt;br /&gt;
** Fixed: Encounters crossing over into Mesagoza (location 8) are no longer permitted (vertical distance).&lt;br /&gt;
** Fixed: TSV=0 HOME accounts are now permitted to exist, and antishiny XOR for the fixed PID gifts now behaves correctly.&lt;br /&gt;
* Added: Batch Editor filter commands can now reference other property values (aka &amp;quot;property copy&amp;quot;) like modify commands.&lt;br /&gt;
** To copy a property, specify like so: .Stat_ATK=*Stat_DEF&lt;br /&gt;
** To filter based on the value of another property, same way.&lt;br /&gt;
* Added: Moves that have changed elemental type over generations will now indicate their type per the save file context.&lt;br /&gt;
* Added: Gen9 Player Image visualizer now shows the profile photos in the Trainer Editor. Thanks @pasqualenardiello !&lt;br /&gt;
* Added: Gen7 LGPE can now unlock all fashion via the Trainer Editor.&lt;br /&gt;
* Added: Gen5 Block editor now shows both roamer objects (Thundurus and Tornadus).&lt;br /&gt;
* Fixed: Gen9 scale indicators now reflect the &amp;gt;=1.1.0 patch scale thresholds. Thanks iD3M0N1C!&lt;br /&gt;
* Fixed: Gen5 C-Gear Skin no longer retains a file lock on imported skin image files.&lt;br /&gt;
* Fixed: Gen3 Memory Cards can now be detected as the latest save file, as well as a backup-file source for the pkmdb.&lt;br /&gt;
* Fixed: Gen3 XD un-purified shadow Pokémon no longer flag w/o Ribbon if they have a Shadow Gauge of 0 (ready to purify).&lt;br /&gt;
* Changed: Sub-form scaling mode changed to &amp;quot;Inherit&amp;quot; -- added a Display setting to revert back to Form scaling (from Dpi).&lt;br /&gt;
&lt;br /&gt;
[https://github.com/kwsch/PKHeX/releases Release notes.]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
PKHeX&#039;s QR code generation code is taken from [https://github.com/codebude/QRCoder QRCoder], which is licensed under [https://github.com/msikma/pokesprite/blob/master/LICENSE the MIT license].&lt;br /&gt;
&lt;br /&gt;
PKHeX&#039;s shiny sprite collection is taken from [https://github.com/msikma/pokesprite pokesprite], which is licensed under [https://github.com/msikma/pokesprite/blob/master/LICENSE the MIT license].&lt;br /&gt;
&lt;br /&gt;
PKHeX&#039;s Pokémon Legends: Arceus sprite collection is taken from the [https://github.com/msikma/pokesprite National Pokédex - Icon Dex project] and its abundance of collaborators and contributors.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub - https://github.com/kwsch/PKHeX&lt;br /&gt;
* Project Pokemon Forums - https://projectpokemon.org/home/forums/forum/83-pkhex&lt;br /&gt;
* Guide - https://www.reddit.com/r/3dshacks/comments/129qr7z/a_simple_guide_in_bringing_pok%C3%A9mon_from_one/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=FlashNX_Switch&amp;diff=205653</id>
		<title>FlashNX Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=FlashNX_Switch&amp;diff=205653"/>
		<updated>2026-07-10T03:30:38Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.5.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=FlashNX&lt;br /&gt;
|image=FlashNX.png&lt;br /&gt;
|description=Homebrew Flash player for Nintendo Switch (.nro). Play your .swf games from the SD card. Powered by Ruffle.&lt;br /&gt;
|author=Jonathan8520&lt;br /&gt;
|lastupdated=2026/07/09&lt;br /&gt;
|type=Other Apps&lt;br /&gt;
|version=1.5.1&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/FlashNX.7z&lt;br /&gt;
|website=https://github.com/Jonathan8520/FlashNX&lt;br /&gt;
|source=https://github.com/Jonathan8520/FlashNX&lt;br /&gt;
}}&lt;br /&gt;
FlashNX is a homebrew Flash player for Nintendo Switch. &lt;br /&gt;
&lt;br /&gt;
Run your Flash games (.swf - AS1/AS2, and part of AS3) straight from the SD card. Powered by [https://github.com/ruffle-rs/ruffle Ruffle].&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Modded Switch with Atmosphère required.&lt;br /&gt;
&lt;br /&gt;
Install via [[Homebrew App Store Switch|Homebrew App Store]] (easiest):&lt;br /&gt;
* Open the hb-appstore app on your Switch.&lt;br /&gt;
* Search for FlashNX, install. Updates follow automatically.&lt;br /&gt;
&lt;br /&gt;
Or manually:&lt;br /&gt;
* Download FlashNX.nro from the [https://github.com/Jonathan8520/FlashNX/releases Releases].&lt;br /&gt;
* Copy it to &amp;lt;code&amp;gt;sdmc:/switch/FlashNX/FlashNX.nro&amp;lt;/code&amp;gt; (the Homebrew Menu also accepts a loose &amp;lt;code&amp;gt;sdmc:/switch/FlashNX.nro&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Either way: copy your .swf files into &amp;lt;code&amp;gt;sdmc:/flashnx/&amp;lt;/code&amp;gt;, then launch FlashNX from the Homebrew Menu.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
&#039;&#039;&#039;Cover art:&#039;&#039;&#039; the library is a grid of covers, 5 per row (cropped to fill). Drop a &amp;lt;code&amp;gt;&amp;amp;lt;game&amp;amp;gt;.png&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.jpg&amp;lt;/code&amp;gt; next to the &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; to set one, or fetch artwork from the Flashpoint Archive in a game&#039;s options (pick from thumbnails).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Multi-file games:&#039;&#039;&#039; some games load companion &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; files (a title screen, a minigame, music). When you download a game from the &#039;&#039;&#039;Flashpoint search (X)&#039;&#039;&#039;, FlashNX fetches these companions automatically into a &amp;lt;code&amp;gt;&amp;amp;lt;game&amp;amp;gt;.files/&amp;lt;/code&amp;gt; folder. For a game added another way (URL import, hand-copied), put the companions in that folder yourself (so &amp;lt;code&amp;gt;Foo.swf&amp;lt;/code&amp;gt; uses &amp;lt;code&amp;gt;Foo.files/&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Foo.swf&amp;lt;/code&amp;gt; loading &amp;lt;code&amp;gt;top.swf&amp;lt;/code&amp;gt; reads &amp;lt;code&amp;gt;Foo.files/top.swf&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Home-menu shortcuts:&#039;&#039;&#039; launch FlashNX with a &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; path as its argument and it boots straight into that game (and returns to the Home menu when you quit). With a forwarder tool you can put a single Flash game on your Switch Home menu, with its cover as the icon. &#039;&#039;&#039;Sphaira&#039;&#039;&#039; users: FlashNX registers a &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; association, so you can select a game in Sphaira&#039;s file browser and &amp;amp;quot;Create a Forwarder&amp;amp;quot; &amp;amp;gt; FlashNX.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Automatic saves:&#039;&#039;&#039; for games that save (SharedObject &amp;lt;code&amp;gt;.sol&amp;lt;/code&amp;gt;), on the SD card.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Built-in key editor:&#039;&#039;&#039; 48 Flash keys, configurable per game, plus a &#039;&#039;&#039;global default&#039;&#039;&#039; layout in the Settings tab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Languages&#039;&#039;&#039;: English, French, Spanish, Russian, German, Italian, Portuguese, Chinese (Simplified, rendered from the console&#039;s own shared font), auto-detected from the console&#039;s system language, switchable from the Settings tab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tested games:&#039;&#039;&#039; (most run at 55-60 fps)&lt;br /&gt;
* Super Mario 63&lt;br /&gt;
* Super Mario World Flash&lt;br /&gt;
* Mario Forever&lt;br /&gt;
* Tetris&#039;d&lt;br /&gt;
* Flappy Bird&lt;br /&gt;
* Pursuit of Hat 2&lt;br /&gt;
* Mario 3D Racing…&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
=== In the library ===&lt;br /&gt;
L/R - Switch tabs (Play/Import/Settings)&lt;br /&gt;
&lt;br /&gt;
D-pad or sticks - Move in the cover gallery &lt;br /&gt;
&lt;br /&gt;
A - Play &lt;br /&gt;
&lt;br /&gt;
Y - Sort (name/added/played/size, X reverses) &lt;br /&gt;
&lt;br /&gt;
Minus - Search (filter by name) &lt;br /&gt;
&lt;br /&gt;
Plus - Game options (favorite, controls, rename, cover, delete).&lt;br /&gt;
&lt;br /&gt;
Favorites stay pinned to the top of the gallery. Quit, plus bug report and suggestions, from the Settings tab.&lt;br /&gt;
&lt;br /&gt;
=== Import tab ===&lt;br /&gt;
(A list of your saved URLs.)&lt;br /&gt;
&lt;br /&gt;
A - Launch one &lt;br /&gt;
&lt;br /&gt;
Plus (Add a URL row) - Enter a new one &lt;br /&gt;
&lt;br /&gt;
Plus (on a URL) - Edit or delete it&lt;br /&gt;
&lt;br /&gt;
Accepts archive.org items and direct &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; URLs. X searches the Flashpoint Archive and downloads a game (cover and real title included; Plus key on a result shows its details + download size).&lt;br /&gt;
&lt;br /&gt;
=== In game ===&lt;br /&gt;
Left Stick/D-Pad - Arrows &lt;br /&gt;
&lt;br /&gt;
A/B/X/Y - Flash keys (remappable)&lt;br /&gt;
&lt;br /&gt;
Right Stick - Mouse cursor &lt;br /&gt;
&lt;br /&gt;
Minus - Pause menu&lt;br /&gt;
&lt;br /&gt;
ZR/Touch - Left click&lt;br /&gt;
&lt;br /&gt;
ZL - Right click&lt;br /&gt;
&lt;br /&gt;
Clicking a text field opens the keyboard.&lt;br /&gt;
&lt;br /&gt;
The control editor picks any Flash key (letters, digits, arrows, F1-F12, symbols, numpad) or mouse click from a visual keyboard, and can turn the right stick into a d-pad (it also covers SL/SR and the stick presses). &lt;br /&gt;
&lt;br /&gt;
For games that need more inputs than the pad has buttons, a &amp;quot;combo layer&amp;quot; lets you hold one shoulder button (the modifier) so every other button sends a second key, e.g. ZL+A sends F1. &lt;br /&gt;
&lt;br /&gt;
In the editor, L/R move a sub-tab across NORMAL/ZL/ZR/L/R: NORMAL edits the base bindings, and picking a modifier (ZL/ZR/L/R) edits that player&#039;s combo layer (rows then read ZL+A, etc.). &lt;br /&gt;
&lt;br /&gt;
X switches the Player 1 / Player 2 tab (each has its own combo layer).&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX2.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/FlashNX5.png&lt;br /&gt;
&lt;br /&gt;
== Known limitations ==&lt;br /&gt;
* &#039;&#039;&#039;Heavy games&#039;&#039;&#039;: frame-rate drops come from &#039;&#039;&#039;Ruffle&#039;s AVM1/AVM2 interpreter&#039;&#039;&#039; (CPU-bound, no JIT) - not from our rendering. Out-of-app lever: CPU overclock (sys-clk).&lt;br /&gt;
* &#039;&#039;&#039;AS3 compatibility&#039;&#039;&#039;: partial, inherited from Ruffle (see [https://ruffle.rs/compatibility Ruffle compatibility]). AS3 games show a badge in the library.&lt;br /&gt;
* &#039;&#039;&#039;No savestate / rewind&#039;&#039;&#039;: Ruffle does not expose a snapshot of the execution state. Games&#039; native &amp;lt;code&amp;gt;.sol&amp;lt;/code&amp;gt; saves do work.&lt;br /&gt;
* &#039;&#039;&#039;Audio&#039;&#039;&#039;: occasional light crackle on very dense scenes (to be refined).&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.5.1 2026/07/09&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Games no longer turn to a red screen after a long session&#039;&#039;&#039; ([https://github.com/Jonathan8520/FlashNX/issues/62 #62], [https://github.com/Jonathan8520/FlashNX/issues/63 #63]): after playing one game for a while, launching a different one could show a full red screen. The game file is now read in small chunks instead of one large operation that could spuriously fail once memory had fragmented, so the next game loads reliably.&lt;br /&gt;
** &#039;&#039;&#039;Caps Lock can now be mapped to a button&#039;&#039;&#039; ([https://github.com/Jonathan8520/FlashNX/issues/61 #61]): a few games use the Caps Lock key for a mechanic (for example, a stage in &#039;&#039;This Is the Only Level&#039;&#039; that only opens the exit while Caps Lock is held). The visual keyboard in the control editor (TOUCHES) now has a &#039;&#039;&#039;Caps&#039;&#039;&#039; key you can bind.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.5.0 2026/07/03&#039;&#039;&#039;&lt;br /&gt;
* A rework of the control editor, plus new languages and rendering fixes.&lt;br /&gt;
* Added&lt;br /&gt;
** &#039;&#039;&#039;Visual keyboard for remapping&#039;&#039;&#039; ([https://github.com/Jonathan8520/FlashNX/issues/55 #55]): pick a key on a full on-screen PC keyboard instead of a scrolling list; keys already in use are highlighted. F1-F12, symbols and numpad operators can now be bound.&lt;br /&gt;
** &#039;&#039;&#039;Button combos, one layer per modifier&#039;&#039;&#039; ([https://github.com/Jonathan8520/FlashNX/issues/57 #57]): hold ZL/ZR/L/R and every other button sends a different key. The four modifiers are independent and work at once, so &amp;lt;code&amp;gt;ZL+A&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;R+A&amp;lt;/code&amp;gt; can differ. Player 1 and Player 2 each have their own layers.&lt;br /&gt;
** &#039;&#039;&#039;Turkish&#039;&#039;&#039;, plus a compact &#039;&#039;&#039;flag-grid language picker&#039;&#039;&#039;.&lt;br /&gt;
** &#039;&#039;&#039;Show or hide the mouse cursor per game&#039;&#039;&#039;, and a black outline on the pointer so it stays visible over any art.&lt;br /&gt;
** &#039;&#039;&#039;Shared control profiles now carry the whole setup&#039;&#039;&#039;: combos, cursor speed and the show-cursor choice, not just the base bindings.&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Very large games no longer go to a white screen&#039;&#039;&#039; ([https://github.com/Jonathan8520/FlashNX/issues/56 #56], e.g. the Henry Stickmin titles).&lt;br /&gt;
** &#039;&#039;&#039;Fewer white screens / out-of-memory on heavy games&#039;&#039;&#039; (freed-and-right-sized bitmap layers).&lt;br /&gt;
** &#039;&#039;&#039;Water and distortion effects render correctly&#039;&#039;&#039;: displacement-map filters are now supported, and a texture-packing bug that striped these scenes is fixed.&lt;br /&gt;
** Smaller fixes: a game no longer appears twice in the shared-profile catalog; cursor-speed-only changes re-enable sharing.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.4.1 2026/06/28&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Chinese (and Japanese/Korean) text now shows inside games&#039;&#039;&#039;: v1.4.0 added Chinese to the app&#039;s own menus, but text drawn by a running game still came out blank when the game used a system font for it. Games now fall back to the Switch&#039;s built-in fonts for any character a game&#039;s own font is missing, so in-game CJK text renders. ([https://github.com/Jonathan8520/FlashNX/issues/54 #54])&lt;br /&gt;
** &#039;&#039;&#039;Import from Wayback Machine links&#039;&#039;&#039;: a &amp;lt;code&amp;gt;web.archive.org&amp;lt;/code&amp;gt; snapshot URL of a &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; is now accepted and downloads the actual game (it used to be treated as an archive.org item and fail).&lt;br /&gt;
*Changed&lt;br /&gt;
** The control-profile catalog is now fully community-driven: the one bundled profile (Super Mario 63) was removed, as it only mirrored the default controls anyway. Share and apply profiles from a game&#039;s options as before.&lt;br /&gt;
&#039;&#039;&#039;v1.4.0 2026/06/25&#039;&#039;&#039;&lt;br /&gt;
* Added&lt;br /&gt;
** &#039;&#039;&#039;Community control profiles&#039;&#039;&#039;: share your key bindings for a game and download other players&#039; setups (#20). In a game&#039;s options (&#039;&#039;&#039;+&#039;&#039;&#039;), pick &amp;amp;quot;Share my controls&amp;amp;quot; to publish your profile, or &amp;amp;quot;Apply a profile&amp;amp;quot; to browse what the community has shared for that game and try it; applying a profile is non-destructive and can be reverted. Profiles you shared can be deleted again. Verified and most-applied profiles sort to the top.&lt;br /&gt;
** &#039;&#039;&#039;More languages&#039;&#039;&#039;: German, Italian, and Brazilian Portuguese join the menus, plus &#039;&#039;&#039;Simplified Chinese&#039;&#039;&#039; (#41) rendered from the Switch&#039;s own shared font.&lt;br /&gt;
** &#039;&#039;&#039;Numpad keys in the controls editor&#039;&#039;&#039;: the editor now offers Num0–Num9 (the numeric keypad), listed first, for games that read keypad keys separately from the top-row digits. Player 2 defaults to the numpad.&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint games with a non-ASCII title now import and launch&#039;&#039;&#039;: a game whose file name uses non-Latin characters (for example &#039;&#039;包丁少女幻窓曲&#039;&#039;) failed to download with an error -2. Its address is now encoded correctly. (#51)&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint games that load their assets on the fly now play&#039;&#039;&#039;: some games build the paths to their data and art files while running, so those files could not be fetched ahead of time and the game stayed on a blank screen (for example &#039;&#039;Racing is Magic&#039;&#039;). Missing files are now pulled from the Flashpoint mirror on demand and cached, for games imported from the Flashpoint search. (#51)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.1 2026/06/19&#039;&#039;&#039;&lt;br /&gt;
* Added&lt;br /&gt;
** &#039;&#039;&#039;Local two-player (two controllers)&#039;&#039;&#039;: a second controller now drives Player 2 through its own set of key bindings, for Flash games where two players share one keyboard (for example &#039;&#039;Fireboy &amp;amp;amp; Watergirl&#039;&#039;, &#039;&#039;Dragon Ball Z Devolution&#039;&#039;). The controls editor has a Player 1 / Player 2 toggle (press X), and both players&#039; keys are saved per game. Player 2 defaults to WASD so it does not clash with Player 1&#039;s arrows. Needs two full controllers (a Pro controller or a Joy-Con pair each). (#40)&lt;br /&gt;
** &#039;&#039;&#039;Touch controls in the launcher&#039;&#039;&#039;: in handheld mode you can drag the game gallery to scroll, tap a game to select it, and tap it again to launch it.&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint content filter toggle&#039;&#039;&#039;: press ZL+ZR in the Flashpoint search results to turn the content filter on or off. Importing a game also fetches its cover automatically. (#33)&lt;br /&gt;
** &#039;&#039;&#039;Download of non-zipped Flashpoint games&#039;&#039;&#039;: games served loose (not as a single archive) now download through the htdocs mirror. (#26)&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Super Smash Flash&#039;&#039;&#039;: the announcer now plays, and the game no longer freezes on a blank screen after a fight instead of showing COMPLETE. Its voices and most of its sound effects use the Nellymoser audio format, which was not enabled. (#29)&lt;br /&gt;
** &#039;&#039;&#039;No more crash when some games save&#039;&#039;&#039;: a game saving a self-referential object (for example &#039;&#039;Hemp Tycoon&#039;&#039;) used to crash the app. The save now completes. (#33)&lt;br /&gt;
** &#039;&#039;&#039;Color speckle on translucent effects fixed&#039;&#039;&#039;: semi-transparent effects (for example the smoke in &#039;&#039;Offroaders&#039;&#039;) showed cyan and magenta speckle. (#38)&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint games with a space in their name now launch the right file&#039;&#039;&#039; instead of the first one found in the archive.&lt;br /&gt;
** &#039;&#039;&#039;The &amp;amp;quot;&amp;amp;amp;&amp;amp;quot; character now shows in the menus&#039;&#039;&#039;: it was missing from the UI font, so titles like &amp;amp;quot;Fireboy &amp;amp;amp; Watergirl&amp;amp;quot; dropped it.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.0 2026/06/14&#039;&#039;&#039;&lt;br /&gt;
* Added&lt;br /&gt;
** &#039;&#039;&#039;Multi-file game support&#039;&#039;&#039;: a game that loads other &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; files at runtime (&amp;lt;code&amp;gt;loadMovie&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;loadMovieNum&amp;lt;/code&amp;gt; into a level) now finds them in a &amp;lt;code&amp;gt;&amp;amp;lt;game&amp;amp;gt;.files/&amp;lt;/code&amp;gt; folder next to the &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt;. Download a game from the Flashpoint search (X) and its companion files are fetched automatically; for a game added another way, drop the companions in that folder yourself. &#039;&#039;Garfield&#039;s Scary Scavenger Hunt&#039;&#039; now plays from start to finish.&lt;br /&gt;
** &#039;&#039;&#039;Multi-file indicator&#039;&#039;&#039;: the launch screen shows a &amp;amp;quot;MULTI-FILE (N)&amp;amp;quot; label when a game pulls in companion files, so you can tell at a glance.&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint downloads now bring the whole game&#039;&#039;&#039;: a download from the Flashpoint search now unpacks the game&#039;s full bundled set of files (alternate versions, ad-network stubs, data files) and launches the exact version the archive intends, instead of guessing. Games that used to get stuck on a sponsor or &amp;amp;quot;Download the latest Adobe Flash Player&amp;amp;quot; screen (for example &#039;&#039;Papa Louie 2: When Burgers Attack&#039;&#039;) now start and play.&lt;br /&gt;
** &#039;&#039;&#039;In-game keyboard&#039;&#039;&#039;: when a Flash game wants text (a player name, a level password, high-score initials, a text adventure), the Switch keyboard opens when you click the text field, pre-filled with its current text and set to the right type (numbers, password, multi-line). Games that were unplayable with a controller alone now work.&lt;br /&gt;
** &#039;&#039;&#039;Favorites&#039;&#039;&#039;: in a game&#039;s options (&#039;&#039;&#039;+&#039;&#039;&#039;), mark it as a favorite. Favorites are pinned to the top of the Play gallery with a gold marker, whatever the sort order.&lt;br /&gt;
** &#039;&#039;&#039;Assignable mouse clicks&#039;&#039;&#039;: the controls editor now has &#039;&#039;&#039;Left click&#039;&#039;&#039; and &#039;&#039;&#039;Right click&#039;&#039;&#039; actions you can bind to any button. By default &#039;&#039;&#039;ZR&#039;&#039;&#039; is left click and &#039;&#039;&#039;ZL&#039;&#039;&#039; is right click. The touchscreen still left-clicks.&lt;br /&gt;
** &#039;&#039;&#039;More mappable inputs&#039;&#039;&#039;: SL / SR (Joy-Con side buttons), the stick presses (L3 / R3), and the &#039;&#039;&#039;right stick as a d-pad&#039;&#039;&#039; (bind its directions and it stops being the mouse cursor; the touchscreen stays the cursor).&lt;br /&gt;
** &#039;&#039;&#039;Much faster Flashpoint downloads&#039;&#039;&#039;: downloads now batch their writes to the SD card and pump the network harder, turning what used to be a roughly two-minute download into about ten seconds for a large game.&lt;br /&gt;
** &#039;&#039;&#039;Home-menu shortcuts for a single game&#039;&#039;&#039;: FlashNX can now be launched straight into one game when its &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; path is passed as a launch argument — it skips the library and returns to the Home menu when you quit. With a homebrew forwarder tool this lets you put a specific Flash game on your Switch Home menu, with its own cover as the icon. If you use &#039;&#039;&#039;Sphaira&#039;&#039;&#039;, FlashNX registers a &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; association on launch, so you can pick a &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; in its file browser, choose &amp;amp;quot;Create a Forwarder&amp;amp;quot;, select FlashNX, and the shortcut boots straight into that game.&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Buttons mapped to letter or number keys now trigger games that read them as keyboard shortcuts&#039;&#039;&#039;: a controller button bound to a letter (or a digit or space) now fires a game&#039;s keyboard shortcuts, not just its held-key checks. For example &#039;&#039;Scooby-Doo: Mayan Monster Mayhem&#039;&#039; (H for help, S/T to switch the held item) now responds; before, only movement and pickup worked.&lt;br /&gt;
** &#039;&#039;&#039;Deleting a game also removes its &amp;lt;code&amp;gt;&amp;amp;lt;game&amp;amp;gt;.files/&amp;lt;/code&amp;gt; companion folder and its favorite mark&#039;&#039;&#039;, so nothing is left behind on the SD card.&lt;br /&gt;
** &#039;&#039;&#039;Games that rendered as a blank white screen now display correctly&#039;&#039;&#039;: very art-heavy games (thousands of on-screen vector shapes at once, for example &#039;&#039;The Binding of Isaac&#039;&#039;) exhausted the renderer&#039;s geometry buffers, which silently dropped the extra shapes and left most of the game invisible behind a few stray text glyphs. The buffers are now much larger, and a buffer overflow is reported instead of failing silently. (#16, #23)&lt;br /&gt;
** &#039;&#039;&#039;Large multi-file games now download and run&#039;&#039;&#039;: big Flashpoint games (over the old 64 MB download limit, loading dozens of companion files by relative path, for example &#039;&#039;Super Brawl 2&#039;&#039;) used to show a full download bar and then do nothing, or launch to a black screen. They now extract fully and run. This took a few fixes: a larger download limit, launching the game under its original URL so its relative asset loads resolve, and doing the extraction and asset reads through the C++ filesystem layer (the Rust one drops some files on the Switch).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.1 2026/06/11&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;PixelBender games no longer crash&#039;&#039;&#039;: some games build a Flash &amp;lt;code&amp;gt;Shader&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;ShaderFilter&amp;lt;/code&amp;gt; at runtime (for example &#039;&#039;&#039;The Terminal&#039;&#039;&#039;). They used to abort the app the moment the shader was created. They now run normally; the shader&#039;s visual effect itself is skipped (this renderer does not run PixelBender), but gameplay and input work. As a bonus, crash messages from the game thread are now captured to the crash log instead of being lost.&lt;br /&gt;
* Changes&lt;br /&gt;
** &#039;&#039;&#039;Clearer bug reports&#039;&#039;&#039;: a report now includes the game&#039;s import URL when it was added from a link, so a game imported under an arbitrary filename can still be identified. The report also reminds you that it opens a public issue on the FlashNX repository, and you can add your GitHub handle if you want a follow-up.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.0 2026/06/10&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** &#039;&#039;&#039;Tabbed navigation&#039;&#039;&#039;: a top navbar switched with &#039;&#039;&#039;L / R&#039;&#039;&#039; between &#039;&#039;&#039;Play&#039;&#039;&#039; (your games), &#039;&#039;&#039;Import&#039;&#039;&#039;, and &#039;&#039;&#039;Settings&#039;&#039;&#039;.&lt;br /&gt;
** &#039;&#039;&#039;Cover gallery&#039;&#039;&#039;: the Play tab is a grid of cover art, 5 per row (covers are cropped to fill the tile). Games with no cover get a generated tile (color + initials).&lt;br /&gt;
** &#039;&#039;&#039;Your own covers&#039;&#039;&#039;: drop a &amp;lt;code&amp;gt;&amp;amp;lt;game&amp;amp;gt;.png&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;.jpg&amp;lt;/code&amp;gt; next to the &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; and it shows up as the cover.&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint covers&#039;&#039;&#039;: a game&#039;s options has a &#039;&#039;&#039;Cover&#039;&#039;&#039; action that searches the Flashpoint Archive by name and shows the candidates as thumbnails to pick from. The search name is cleaned up automatically (download-id suffixes such as &amp;lt;code&amp;gt;game-15938d603&amp;lt;/code&amp;gt; are dropped), and &#039;&#039;&#039;−&#039;&#039;&#039; lets you retype the title when the filename does not match the catalog (for example &amp;lt;code&amp;gt;catmario&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;cat mario&amp;lt;/code&amp;gt;).&lt;br /&gt;
** &#039;&#039;&#039;Download games from Flashpoint&#039;&#039;&#039;: in the Import tab, &#039;&#039;&#039;X&#039;&#039;&#039; searches the Flashpoint Archive and shows the results as a cover grid; &#039;&#039;&#039;A&#039;&#039;&#039; downloads a game&#039;s &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; directly. Its cover is fetched automatically, and its real title is kept even when the filename cannot hold characters like &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;. Press &#039;&#039;&#039;+&#039;&#039;&#039; on a result to see its full title, developer, publisher, release date and download size.&lt;br /&gt;
** &#039;&#039;&#039;Import as a list&#039;&#039;&#039;: the Import tab is a list of your saved URLs. Press &#039;&#039;&#039;A&#039;&#039;&#039; to launch one, use the &#039;&#039;&#039;+ Add a URL&#039;&#039;&#039; row to enter a new one, and &#039;&#039;&#039;+&#039;&#039;&#039; on a URL to edit or delete it. It accepts archive.org items and direct &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; URLs.&lt;br /&gt;
** &#039;&#039;&#039;Sort your library&#039;&#039;&#039; (&#039;&#039;&#039;Y&#039;&#039;&#039; in the Play tab): by name, date added, last played, most played, or size. &#039;&#039;&#039;X&#039;&#039;&#039; reverses the order, and the choice is saved.&lt;br /&gt;
** &#039;&#039;&#039;Playtime&#039;&#039;&#039;: each game tracks how long you have played it (shown under the selected game, and used by the &amp;amp;quot;most played&amp;amp;quot; sort).&lt;br /&gt;
** &#039;&#039;&#039;Report a bug or send a suggestion&#039;&#039;&#039; (Settings tab): flag a game that renders or plays wrong, or send a feature idea. It opens an issue on the FlashNX repository, with no account and no login.&lt;br /&gt;
* Changes&lt;br /&gt;
** &#039;&#039;&#039;Controls&#039;&#039;&#039;: &#039;&#039;&#039;−&#039;&#039;&#039; is search, &#039;&#039;&#039;+&#039;&#039;&#039; is the selected game&#039;s options; default controls, language, bug report, suggestion and &#039;&#039;&#039;Quit&#039;&#039;&#039; all live in the Settings tab. Switching tabs is &#039;&#039;&#039;L / R&#039;&#039;&#039; only, and &#039;&#039;&#039;B&#039;&#039;&#039; always just backs out of a modal (the redundant &amp;amp;quot;Back&amp;amp;quot; rows were removed).&lt;br /&gt;
** &#039;&#039;&#039;Audio level&#039;&#039;&#039;: the in-app sound now matches the rest of the Switch (it used to be noticeably louder).&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;Large backgrounds no longer turn white&#039;&#039;&#039;: games whose backdrop or floor is a bitmap wider or taller than 2048px (for example Mario Combat&#039;s sky and ground) used to render as solid white blocks. They now draw correctly.&lt;br /&gt;
** &#039;&#039;&#039;Deleting a game cleans up everything&#039;&#039;&#039;: removing a game now also deletes its cached online cover and the cover sidecars saved under the plain game name (on top of the &amp;lt;code&amp;gt;.swf&amp;lt;/code&amp;gt; and its keymap/rename/save files), and clears the leftover Import-list &amp;amp;quot;downloaded&amp;amp;quot; badge and the on-screen cover, so re-importing the same game later starts fresh.&lt;br /&gt;
** &#039;&#039;&#039;Flashpoint cover grids no longer freeze the UI&#039;&#039;&#039;: logos load in the background, so a broad search with dozens of results stays responsive while the thumbnails fill in.&lt;br /&gt;
** &#039;&#039;&#039;Missing accents&#039;&#039;&#039; restored on several labels (the sort options, &amp;amp;quot;edit&amp;amp;quot;, &amp;amp;quot;download&amp;amp;quot;).&lt;br /&gt;
* Notes&lt;br /&gt;
** Covers and downloads use the public Flashpoint Archive APIs (metadata, logos, GameZIP). Downloading a game is always something you choose, one game at a time.&lt;br /&gt;
** Bug reports and suggestions are anonymous: they go through a small relay that opens a GitHub issue, so you never need an account or to log in.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.1 2026/06/05&#039;&#039;&#039;&lt;br /&gt;
* Fixes&lt;br /&gt;
** &#039;&#039;&#039;URL history no longer disappears in applet mode&#039;&#039;&#039;: history (and saves, settings, renamed-game sidecars) is now read with a bounded reader and committed to the SD card after every write, so it survives switching between applet (album takeover) and full title-takeover modes. Previously the history could read empty in applet mode, or get overwritten by the next change.&lt;br /&gt;
** &#039;&#039;&#039;HTTPS import errors are now readable&#039;&#039;&#039;: a failed import shows the real cause (libcurl code and message, HTTP status) instead of an opaque &amp;amp;quot;code -2&amp;amp;quot;, so you can tell whether it is the console clock, DNS, the certificate bundle, or a blocked link.&lt;br /&gt;
* Features&lt;br /&gt;
** &#039;&#039;&#039;Search the local library&#039;&#039;&#039;: press &#039;&#039;&#039;X&#039;&#039;&#039; to filter the game list by name (empty input clears the filter), the same way the archive.org screen already works.&lt;br /&gt;
** &#039;&#039;&#039;Clear applet-mode notice&#039;&#039;&#039;: trying to launch a game without the full app memory now shows a readable message (&amp;amp;quot;launch via title takeover&amp;amp;quot;) instead of a red screen.&lt;br /&gt;
* Changes&lt;br /&gt;
** &#039;&#039;&#039;More consistent controls&#039;&#039;&#039;: &#039;&#039;&#039;X&#039;&#039;&#039; is search on every list, and &#039;&#039;&#039;ZL&#039;&#039;&#039; manages the selected item (game options in the library, delete URL in the import history). The on-screen footers reflect the new layout.&lt;br /&gt;
** The default example URL is now a neutral placeholder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.0 2026/06/04&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** &#039;&#039;&#039;Settings modal (&amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; in the library)&#039;&#039;&#039;: a new global settings screen with two entries — &#039;&#039;&#039;default controls&#039;&#039;&#039; (edit the global default keymap used by every game without a per-game override) and &#039;&#039;&#039;language&#039;&#039;&#039;.&lt;br /&gt;
** &#039;&#039;&#039;URL history management&#039;&#039;&#039;: in the archive.org import screen, &#039;&#039;&#039;X&#039;&#039;&#039; removes the currently-shown URL from the history (with a confirmation modal).&lt;br /&gt;
** &#039;&#039;&#039;Quit returns to the right row&#039;&#039;&#039;: leaving a game (pause menu → QUIT) lands the cursor back on the game you were playing, instead of jumping to the top of the list.&lt;br /&gt;
** &#039;&#039;&#039;Pause menu shows the game&#039;s name&#039;&#039;&#039; under &amp;amp;quot;PAUSE&amp;amp;quot; (like the OPTIONS modal).&lt;br /&gt;
** &#039;&#039;&#039;Library shows 8 games&#039;&#039;&#039; at once (was 6).&lt;br /&gt;
* Notes&lt;br /&gt;
** The chosen language is persisted to &amp;lt;code&amp;gt;sdmc:/flashnx/settings.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Flash key names (&amp;lt;code&amp;gt;Space&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Shift&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;A&amp;lt;/code&amp;gt;…&amp;lt;code&amp;gt;Z&amp;lt;/code&amp;gt;) are technical identifiers and remain untranslated; only UI labels and messages are localized.&lt;br /&gt;
** Opening the settings modal returns to the previously-selected game row (like the OPTIONS modal).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.0 2026/05/31&#039;&#039;&#039;&lt;br /&gt;
* First official release. FlashNX runs AS1/AS2 Flash games (and part of AS3) straight from your Switch&#039;s SD card.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
FlashNX is only a &#039;&#039;&#039;Switch integration layer&#039;&#039;&#039; on top of remarkable projects - all credit for the Flash emulation goes to &#039;&#039;&#039;Ruffle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Core&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://github.com/ruffle-rs/ruffle Ruffle]&#039;&#039;&#039; — &#039;&#039;Apache-2.0 / MIT&#039;&#039; — Flash engine (SWF parsing + AVM1/AVM2 interpreter). FlashNX embeds &amp;lt;code&amp;gt;ruffle_core&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ruffle_render&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;swf&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;[https://devkitpro.org/ devkitPro] / libnx&#039;&#039;&#039; — &#039;&#039;ISC&#039;&#039; — Switch toolchain + Horizon API (audio &#039;&#039;&#039;audren&#039;&#039;&#039;, input &#039;&#039;&#039;hid&#039;&#039;&#039;, threads, exception handler).&lt;br /&gt;
* &#039;&#039;&#039;[https://github.com/devkitPro/pacman-packages switch-mesa]&#039;&#039;&#039; — &#039;&#039;MIT&#039;&#039; — OpenGL/GLES via Nouveau, the graphics backend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game &amp;amp;amp; cover data&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;[https://flashpointarchive.org/ Flashpoint Archive]&#039;&#039;&#039;: the Flash game preservation project. FlashNX uses its public APIs (search, logos, GameZIPs) so you can find cover art and download the games you choose. All preserved games stay the property of their original creators, and FlashNX only fetches what you explicitly request.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Network (archive.org import over HTTPS)&#039;&#039;&#039;&lt;br /&gt;
* [https://curl.se/ libcurl] · [https://github.com/Mbed-TLS/mbedtls Mbed-TLS] · [https://zlib.net/ zlib] · [https://curl.se/docs/caextract.html Mozilla] CA certificate bundle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rust libraries&#039;&#039;&#039;&lt;br /&gt;
* [https://github.com/image-rs/jpeg-decoder jpeg-decoder] (fork patched for newlib) · &amp;lt;code&amp;gt;png&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;serde&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;serde_json&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;tracing&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;flate2&amp;lt;/code&amp;gt; · &amp;lt;code&amp;gt;getrandom&amp;lt;/code&amp;gt; · + Ruffle&#039;s transitive dependencies (&amp;lt;code&amp;gt;gc-arena&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dasp&amp;lt;/code&amp;gt;…).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Acknowledgements&#039;&#039;&#039; - Switch homebrew ecosystem projects consulted during the port&#039;s R&amp;amp;amp;D (no code reused): [https://www.scummvm.org/ ScummVM] (&amp;lt;code&amp;gt;OSystem&amp;lt;/code&amp;gt; port pattern), the PPSSPP Switch port (switch-mesa GL reference), [https://github.com/ticohq/tico Tico], [https://github.com/dantiicu/dawn-switch dawn-switch] &#039;&#039;(the WebGPU alternative we evaluated)&#039;&#039;, and the devkitPro / GBAtemp community.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;License&#039;&#039;&#039;: the FlashNX integration code is distributed under the &#039;&#039;&#039;MIT&#039;&#039;&#039; license (see [https://github.com/Jonathan8520/FlashNX/blob/main/LICENSE &amp;lt;code&amp;gt;LICENSE&amp;lt;/code&amp;gt;]). Ruffle and the other dependencies keep their respective licenses.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/Jonathan8520/FlashNX&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=DBI_Switch&amp;diff=205652</id>
		<title>DBI Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=DBI_Switch&amp;diff=205652"/>
		<updated>2026-07-10T03:30:37Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=DBI&lt;br /&gt;
|image=dbinx.png&lt;br /&gt;
|description=The ultimate solution for NSP, NSZ, XCI and XCZ installation along with many advanced features.&lt;br /&gt;
|author=rashevskyv&lt;br /&gt;
|lastupdated=2026/06/19&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=902 - 898&lt;br /&gt;
|license=N/A&lt;br /&gt;
|downloadraw=[https://github.com/rashevskyv/DBIPatcher/releases Multi Languages] - [https://github.com/Morce3232/DBIPatcher/releases EN Download]&lt;br /&gt;
|website=https://github.com/rashevskyv/dbi&lt;br /&gt;
|source=https://github.com/rashevskyv/dbi&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--dbinx.7z--&amp;gt;&amp;lt;!--dbipatchernx.7z--&amp;gt;&lt;br /&gt;
DBI is the ultimate solution to install NSP, NSZ, XCI and XCZ files along with many advanced features. &lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*Install NSP, NSZ, XCI and XCZ files.&lt;br /&gt;
*Support installation over MTP, USB, http (from your personal server), external USB and more. &lt;br /&gt;
*View images in jpg, png and psd formats and work with zip and rar archives as well as with cbr/cbz containers.&lt;br /&gt;
*View text files in plain text or hex view. &lt;br /&gt;
*File manager that can copy, move or delete files and folders or create new folders. &lt;br /&gt;
*Save manager (including backup and restore).&lt;br /&gt;
*Displays activity charts in games by dates for all available users for each specific game.&lt;br /&gt;
*And more.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download DBI.nro (Patched/Compatible version) from [https://github.com/rashevskyv/DBIPatcher/releases release].&lt;br /&gt;
&lt;br /&gt;
Download the translation_XX.bin file for your desired language.&lt;br /&gt;
&lt;br /&gt;
Rename the translation file to exactly translation.bin.&lt;br /&gt;
&lt;br /&gt;
Place both DBI.nro and translation.bin into the /switch/DBI/ folder on your SD card.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:15%;&amp;quot;|Browse SD Card &lt;br /&gt;
| Install NSP/NSZ/XCI/XCZ files from the memory card.&lt;br /&gt;
|-&lt;br /&gt;
! Browse USB0 Drive&lt;br /&gt;
|Install NSP/NSZ/XCI/XCZ files from an external exFAT/FAT32 USB drive, such as a flash drive, hard drive, etc.&lt;br /&gt;
|-&lt;br /&gt;
! Install title from DBIbackend&lt;br /&gt;
|Install NSP/NSZ/XCI/XCZ files from a PC via USB 2.0 or 3.0 cable using the included program dbibackend (Hotkey for this option: Y button).&lt;br /&gt;
|-&lt;br /&gt;
! Install title from Gamecard&lt;br /&gt;
|This option appears when a game card is inserted into the Switch and allows for the installation of a game from the game card to the console&#039;s microSD card or internal NAND memory.&lt;br /&gt;
|-&lt;br /&gt;
! Home server&lt;br /&gt;
|Since v150, it is possible to install games over the network (HTTP) via WiFi without wires or a LAN-USB adapter. More details [https://github.com/rashevskyv/dbi/blob/main/README_ENG.md#home-server here].&lt;br /&gt;
|-&lt;br /&gt;
! Browse installed applications&lt;br /&gt;
|View installed games, the total number of games installed, view time spent on a game and the number of times it has been launched, check for errors, transfer game data between internal memory, memory card, and back, selectively or continuously delete games and accompanying LayeredFS mods, view the presence of updates and DLC, manually remove DLC/updates/LayeredFS (LFS) mod, and the Reset Required version function to reset the system update check for a selected game (Hotkey for this option: L button).&lt;br /&gt;
|-&lt;br /&gt;
! Cleanup orphaned files&lt;br /&gt;
|Automatic cleaning of unnecessary deleted game files, if any.&lt;br /&gt;
|-&lt;br /&gt;
! Browse tickets&lt;br /&gt;
|View and manually delete game system tickets.&lt;br /&gt;
|-&lt;br /&gt;
! Browse saves&lt;br /&gt;
|View and delete game saves.&lt;br /&gt;
|-&lt;br /&gt;
! Run MTP responder&lt;br /&gt;
|Enable the internal MTP server to connect the Switch to a PC or Android device (phone/tablet/etc., tested with Pixel 3, Xiaomi Mi A1, Lenovo Tab 4 7&amp;quot; TB-7304X), where you can view and work with the memory card (1: External SD Card) and internal console memory, view installed games (4: Installed games), backup game saves to a PC (7: Saves), and dump a game card (full/trimmed/certificate) to a PC/Android with an inserted game card (9: Gamecard) (Hotkey for this option: X button).&lt;br /&gt;
|-&lt;br /&gt;
! Run FTP server&lt;br /&gt;
|Enable the DBI FTP server for accessing microSD files through port 5000 or installing files through port 6000.&lt;br /&gt;
|-&lt;br /&gt;
! Exit&lt;br /&gt;
|Exit the program (Hotkey for this option: + button).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The bottom left corner of DBI displays the total amount of data currently on your SD card along with the full capacity. The bottom right corner gives you the same information for your NAND&#039;s usable space in HOS.&lt;br /&gt;
&lt;br /&gt;
Bottom center (dbi: XXX) is the DBI version number - you should always use the most recent version.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
==Controls==&lt;br /&gt;
&#039;&#039;&#039;General:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A - Select, confirm&lt;br /&gt;
&lt;br /&gt;
B - Cancel, Exit the program (on main menu)&lt;br /&gt;
&lt;br /&gt;
X - Select file, Hotkey for mounting MTP (on main screen)&lt;br /&gt;
&lt;br /&gt;
Y - Invert selection, Select all if nothing is selected, Install via USB using dbibackend (on main screen)&lt;br /&gt;
&lt;br /&gt;
ZL/ZR - Scroll pages in menus, Scroll through individual games when in detailed game menu&lt;br /&gt;
&lt;br /&gt;
L - Hotkey for the menu option &amp;quot;Browse installed applications&amp;quot; (on main menu)&lt;br /&gt;
&lt;br /&gt;
R - Change the displayed sort order of files/titles&lt;br /&gt;
&lt;br /&gt;
L3 - Click left stick to launch games from the application list or detailed game menu&lt;br /&gt;
&lt;br /&gt;
Plus - Display context menus (deleting, resetting the required firmware version, mounting via MTP and more)&lt;br /&gt;
&lt;br /&gt;
Minus - Turn the screen on/off when MTP mode is activated/when installing titles&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Browse SD card/USB0 drive:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A - Open the folder, Confirm/Start install&lt;br /&gt;
&lt;br /&gt;
B - Return&lt;br /&gt;
&lt;br /&gt;
X - Select single or multiple files for installation&lt;br /&gt;
&lt;br /&gt;
Y - Invert your selections (the color of the name of the selected files will change from white to light blue)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==Screenshots==&lt;br /&gt;
&#039;&#039;&#039;Browse SD card/USB0 drive&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/dbinx.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Install options&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/dbinx2.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Browse installed titles&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/dbinx3.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Title context menu&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/dbinx4.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Detailed game menu&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/dbinx5.png&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Running MTP responder&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/dbinx6.png&lt;br /&gt;
==Media==&lt;br /&gt;
&#039;&#039;&#039;WHAT IS DBI AND HOW TO USE IT ([https://www.youtube.com/watch?v=N_SlBDdkIfo sthetix])&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;youtube&amp;gt;N_SlBDdkIfo&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Thanks to [https://github.com/SciresM SciresM] for [https://github.com/SciresM/hactool hactool] (licensed under [https://en.wikipedia.org/wiki/ISC_license ISC]) - DBI uses some data struct definitions from there.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/Morce3232/DBIPatcher&lt;br /&gt;
* GitHub - https://github.com/rashevskyv/DBIPatcher&lt;br /&gt;
* GitHub - https://github.com/rashevskyv/dbi&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=COLD_START_Switch&amp;diff=205651</id>
		<title>COLD START Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=COLD_START_Switch&amp;diff=205651"/>
		<updated>2026-07-10T03:30:37Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 3.5.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=COLD START&lt;br /&gt;
|image=COLDSTARTSwitch2.png&lt;br /&gt;
|description=A roguelike top-down shooter survival game.&lt;br /&gt;
|author=etonedemid&lt;br /&gt;
|lastupdated=2026/07/04&lt;br /&gt;
|type=Shooter&lt;br /&gt;
|version=3.5.0&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://github.com/etonedemid/cold-start-nx/releases&lt;br /&gt;
|website=https://github.com/etonedemid/cold-start-nx&lt;br /&gt;
|source=https://github.com/etonedemid/cold-start-nx&lt;br /&gt;
|donation=ko-fi.com/etonedemid&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Games (Shooter) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=COLDSTARTSwitch.png&lt;br /&gt;
|image_alt=COLD START&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!--COLDSTARTSwitch.7z--&amp;gt;&lt;br /&gt;
Cold Start is a roguelike survival game featuring bombs, upgrades, parrying, and a console that allows players to spawn a car and run enemies over. It runs on PC, Nintendo Switch homebrew, and Android.&lt;br /&gt;
&lt;br /&gt;
The project is licensed under the GNU GPL, except for its music, for which authors should be consulted before distributing. Sounds are sourced from Pixabay.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* PC, Switch, and Android builds from the same codebase.&lt;br /&gt;
* Arena, co-op, deathmatch, team deathmatch, playlist, and custom-map play modes.&lt;br /&gt;
* Host-authoritative online multiplayer (ENet) with full mod sync.&lt;br /&gt;
* In-game map editor, character creator, and built-in texture editor.&lt;br /&gt;
* Mod system: maps, packs, characters, sprites, sounds, gamemodes, items (soon).&lt;br /&gt;
* Resizable window with automatic letterboxing; 4:3 mode on square/portrait displays.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
Left Stick - Move&lt;br /&gt;
&lt;br /&gt;
Right Stick - Aim&lt;br /&gt;
&lt;br /&gt;
RT - Shoot&lt;br /&gt;
&lt;br /&gt;
ZL - Parry&lt;br /&gt;
&lt;br /&gt;
LT - Bomb&lt;br /&gt;
&lt;br /&gt;
ZR - Melee&lt;br /&gt;
&lt;br /&gt;
Start - Pause&lt;br /&gt;
&lt;br /&gt;
== Modding ==&lt;br /&gt;
Mods live in the &amp;lt;code&amp;gt;mods/&amp;lt;/code&amp;gt; directory and are discovered at startup. A mod folder has the following structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 mods/mymod/&lt;br /&gt;
     mod.cfg&lt;br /&gt;
     characters/   (.cschar)&lt;br /&gt;
     maps/         (.csm)&lt;br /&gt;
     packs/        (.cspack)&lt;br /&gt;
     sprites/&lt;br /&gt;
     sounds/&lt;br /&gt;
     gamemodes/&lt;br /&gt;
     items/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Example &amp;lt;code&amp;gt;mod.cfg&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [mod]&lt;br /&gt;
 id=mymod&lt;br /&gt;
 name=My Mod&lt;br /&gt;
 version=1.0&lt;br /&gt;
 &lt;br /&gt;
 [content]&lt;br /&gt;
 characters=true&lt;br /&gt;
 maps=true&lt;br /&gt;
 sprites=true&lt;br /&gt;
 sounds=true&lt;br /&gt;
 &lt;br /&gt;
 [overrides]&lt;br /&gt;
 player_speed=600&lt;br /&gt;
 enemy_hp=5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Multiplayer mod sync ships all enabled mod content to clients before the match starts (cap: 64 MB). Character bundles sync separately (cap: 10 MB per player). Synced files land in &amp;lt;code&amp;gt;mods/_mp_sync/&amp;lt;/code&amp;gt; and are rebuilt each session.&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v3.5.0&#039;&#039;&#039;&lt;br /&gt;
* Map loading screens, a CRT power-on transition, and multiplayer readiness sync.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.4.0&#039;&#039;&#039;&lt;br /&gt;
* Endless mode: a storage-free, seeded infinite world (set Endless + Seed in the Play menu).&lt;br /&gt;
* Giant maze buildings, chained-room buildings, tiled-floor rooms.&lt;br /&gt;
* New enemies: Bomber (suicide rusher), Spitter (acid spread), Warden (armored tank) - placeable in the editor.&lt;br /&gt;
* Telegraphed bombings: static barrages and AVI plane flyovers that crater and scorch terrain.&lt;br /&gt;
* Tactical/military in-game HUD, heavier damage-impact feedback, off-screen enemy arrows.&lt;br /&gt;
* Combo system + game-feel juice, reworked car physics, player-centered minimap for huge maps, maps up to 1000 tiles.&lt;br /&gt;
* Fixes: stuck soft-keyboard breaking parry/weapon-switch, numeric input fields, supply-crate spawn distance, softer gunfire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.3.1&#039;&#039;&#039;&lt;br /&gt;
* Wii U: ENet networking ported (online/LAN multiplayer).&lt;br /&gt;
* Android: on-screen controls baked to textures (big framerate win).&lt;br /&gt;
* Dialog: gamepad choice navigation; choices can branch on a variable.&lt;br /&gt;
* Fix: enemies and upgrade boxes no longer spawn inside collision zones.&lt;br /&gt;
* PC: GLES2 renderer + batching on Linux; smaller/translucent gamepad crosshairs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.3.0&#039;&#039;&#039;&lt;br /&gt;
* Enabled batching on switch (maybe improved frametimes) and wii U (15 fps -&amp;amp;gt; ~46 fps)&lt;br /&gt;
* Fixed software keyboard, gamepad mapping, and loggoff issues for wii U&lt;br /&gt;
* gamepad cursor is smaller and transparent now&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.2.0&#039;&#039;&#039;&lt;br /&gt;
* New: Wii U homebrew support (WUHB).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.1.0&#039;&#039;&#039;&lt;br /&gt;
* Timeline bug fix; dragging now works&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v3.0.0 - cutscenes&#039;&#039;&#039;&lt;br /&gt;
* Cutscene editor and dialog system officially opened&lt;br /&gt;
* Added better enemy pathfinding&lt;br /&gt;
* Editor improvements; updated icons&lt;br /&gt;
* Workshop closed&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.5.1 - Multiplayer PvE Hotfix&#039;&#039;&#039;&lt;br /&gt;
* Multiplayer PvE: bullets and melee now correctly damage enemies in online co-op (host authority race condition resolved)&lt;br /&gt;
* Multiplayer PvE: melee kill events no longer broadcast on non-lethal hits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.5.0 - Old friend&#039;&#039;&#039;&lt;br /&gt;
* Many UI fixes; character-to-mod is fixed&lt;br /&gt;
* Sprite editor returns, but will be remade in the new UI style next update&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.4.0 - switch workshop opening!&#039;&#039;&#039;&lt;br /&gt;
* Switch workshop opening&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.3.2 - Android mod detection fix&#039;&#039;&#039;&lt;br /&gt;
* Android: mods now correctly detected and installed; mod paths now use CWD-relative &amp;lt;code&amp;gt;mods/&amp;lt;/code&amp;gt; instead of the read-only romfs assets directory&lt;br /&gt;
* Android: first-run setup now creates &amp;lt;code&amp;gt;mods/&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;maps/&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;characters/&amp;lt;/code&amp;gt; subdirectories so content can be added before launch&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.3.1&#039;&#039;&#039;&lt;br /&gt;
* Android folder picker: first-run setup lets you choose where game data and mods are stored — External (Shared, default), Internal (Private), or Browse for folder via the native picker&lt;br /&gt;
* Android workshop: HTTP downloads and ZIP extraction now use Android native Java APIs instead of curl/shell&lt;br /&gt;
* Known bug: Android does not detect mods/characters&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.3.0&#039;&#039;&#039;&lt;br /&gt;
* Workshop on Switch: browse and install mods from the workshop directly on Switch (previously crashed due to missing curl init)&lt;br /&gt;
* Multiplayer &amp;amp; splitscreen fixes: 3-player splitscreen black panel fixed, lives scale correctly in local co-op, spectator mode no longer freezes, shared-lives death transition fixed&lt;br /&gt;
* Custom map save state fixed: exiting a custom map or pack no longer carries over vehicles, boss waves, or crates&lt;br /&gt;
* Character editor: saving an invalid character falls back to default instead of loading garbage sprites&lt;br /&gt;
* Switch UI: main menu Workshop / Log Off indices fixed, weather text no longer clips, lobby chat opens the Switch system keyboard&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.2.0&#039;&#039;&#039;&lt;br /&gt;
* Release notes link to the full changelog comparison (v2.1.0...v2.2.0)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.1.0&#039;&#039;&#039;&lt;br /&gt;
* Vehicle system alpha&lt;br /&gt;
* Added support for two-layered editor mode&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v2.0.0&#039;&#039;&#039;&lt;br /&gt;
* Chat Enter key no longer starts/readies the game; typing in chat now works after clicking the field&lt;br /&gt;
* Lobby &amp;lt;code&amp;gt;&amp;lt;&amp;lt;/code&amp;gt; &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; spinner buttons no longer double-fire&lt;br /&gt;
* Floating windows (browser, media player, credits) no longer let clicks pass through to menu buttons underneath&lt;br /&gt;
* Chat cursor no longer shows both &amp;lt;code&amp;gt;|&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;_&amp;lt;/code&amp;gt; at the same time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.9.0&#039;&#039;&#039;&lt;br /&gt;
* Android Beta&lt;br /&gt;
* Visuals: letterbox / unrendered area is now pure black instead of dark gray&lt;br /&gt;
* Build &amp;amp; Platform: Android Gradle build fully integrated; Switch build fixed (PKG_CONFIG_PATH-aware invocation + &amp;lt;code&amp;gt;--static&amp;lt;/code&amp;gt;); &amp;lt;code&amp;gt;touchcontrols&amp;lt;/code&amp;gt; compiled only on Android&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.8.0&#039;&#039;&#039;&lt;br /&gt;
* Blood/scorch decals fade over time with permanent tile tint&lt;br /&gt;
* All bool upgrades now stack with scaled effects&lt;br /&gt;
* Map editor Props panel (game mode, abilities, HP/bombs/speed/damage)&lt;br /&gt;
* Post-last-boss endless mode: 1.3x enemies/wave, half spawn interval&lt;br /&gt;
* Removed Piercing upgrade&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.7.0&#039;&#039;&#039;&lt;br /&gt;
* Boss Overhaul: bosses enrage at 50% HP (+30% speed, faster attacks); enraged BossBrute charge, BossSniper 3-shot burst, BossGunner 12-round burst&lt;br /&gt;
* Enemy Changes: all enemy base speeds ×1.5, melee enemies overhauled, enemies deal contact damage, parried bullets travel at sniper speed&lt;br /&gt;
* Progression: milestone spawns (Brute wave 40, Sniper wave 60, Gunner wave 80); boolean upgrades not re-offered until wave 25+&lt;br /&gt;
* Dev Console: press &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; in single-player; commands &amp;lt;code&amp;gt;wave N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;hp N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;god&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;spawn TYPE [N]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;give NAME&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bombs N&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.6.0&#039;&#039;&#039;&lt;br /&gt;
* Music player overhaul: sequential track advance, .ogg support alongside .mp3, artist name in pause player, fixed loop toggle&lt;br /&gt;
* Low-HP vignette: screen fades to red below 40% HP, pulses at ≤20% HP, reverts on healing&lt;br /&gt;
* Editor Win98 UI: toolbar and palette converted to Win98 style; config defaults to 50×50 maps; direct keyboard input for width/height&lt;br /&gt;
* HUD cleanup: timer removed from STATUS panel; GAME panel widened&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.5.1&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.5.0&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.4.1&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.4.0&#039;&#039;&#039;&lt;br /&gt;
* Upgrade rarity tiers: Common 50%, Uncommon 30%, Rare 15%, Epic 4%, Cursed 1%; added &amp;lt;code&amp;gt;UpgradeQuality&amp;lt;/code&amp;gt; enum&lt;br /&gt;
* Three new upgrades: Auto Reloader (Uncommon), Vampire (Rare), Last Stand (Epic)&lt;br /&gt;
* Multi-bomb: holding the bomb button with multiple bombs queued launches them in rapid succession&lt;br /&gt;
* PvE kills now always credited per co-op slot on the scoreboard&lt;br /&gt;
* Discord Rich Presence: zero-dependency IPC client on Linux and Windows; stubs cleanly on Switch and dedicated server&lt;br /&gt;
* AmmoUp fix: now correctly grants +5 max ammo&lt;br /&gt;
* Split-screen visual improvements: HP bars, invulnerability blink, parry tint, box-fragment fade&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.3.0&#039;&#039;&#039;&lt;br /&gt;
* P1 hotfix: the gamepad that opened host/join stays assigned to P1 during multiplayer splitscreen&lt;br /&gt;
* Multiplayer splitscreen PvP hotfix: networked subplayers receive bullet damage and melee targeting as distinct local slots&lt;br /&gt;
* Splitscreen presentation cleanup: post-processing shader composite disabled during local and multiplayer splitscreen&lt;br /&gt;
* Primary controller routing fix&lt;br /&gt;
* Gamepad crosshair expansion across singleplayer, custom maps, packs, and multiplayer&lt;br /&gt;
* Fresh media pass: README and HB App Store screenshots updated&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.2.0&#039;&#039;&#039;&lt;br /&gt;
* Controller rumble support via SDL_GameControllerRumble (PC, Switch, Android)&lt;br /&gt;
* Automatic update checker: checks GitHub API on startup; UPDATE button appears in main menu when a newer version is available&lt;br /&gt;
* Unified menu + creator overhaul: shared visual style supporting keyboard, controller, mouse, and touch; character creator gains walking preview, frame stepping, click-to-place muzzle offsets, save-local/save-to-mod&lt;br /&gt;
* Multiplayer character sync completed: remote players render their selected default or modded characters; hosts resend bundles to late joiners&lt;br /&gt;
* Full multiplayer mod sync: maps, packs, tiles, sprites, sound and music overrides with runtime asset resolution&lt;br /&gt;
* Mod sync hardening: payloads chunked, capped at 64 MB, validated before install, written through sanitized IDs and relative paths into &amp;lt;code&amp;gt;mods/_mp_sync/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.1&#039;&#039;&#039;&lt;br /&gt;
* Security: mod sync path traversal fix — &amp;lt;code&amp;gt;deserializeAndInstallMods&amp;lt;/code&amp;gt; validates mod ID and each file&#039;s relative path; crafted payloads with &amp;lt;code&amp;gt;..&amp;lt;/code&amp;gt;, absolute paths, backslashes, or null bytes are rejected&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.1.0&#039;&#039;&#039;&lt;br /&gt;
* Character creator rebuilt with visual preview (IDLE, SHOOT, LEGS, DEATH, DETAIL), 10 FPS playback, keyboard navigation&lt;br /&gt;
* PNG sprite import: new &amp;quot;LOAD SPRITES&amp;quot; button scans mod folders, loads sprites into the preview, shows color-coded completion status&lt;br /&gt;
* Enhanced parry system: parry now triggers a dash (1050 speed, 0.15s duration)&lt;br /&gt;
* Player sprites upscaled from 32×32 to 64×64, render scale 1.5×&lt;br /&gt;
* Texture editor removed in favor of external PNG workflow and character creator preview&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.6&#039;&#039;&#039;&lt;br /&gt;
* Network: instant disconnect notification — clients send an app-level &amp;lt;code&amp;gt;Disconnect&amp;lt;/code&amp;gt; packet before tearing down the ENet connection; guarded against double-calling &amp;lt;code&amp;gt;onPlayerLeft&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.4&#039;&#039;&#039;&lt;br /&gt;
* Linux bundle: stop bundling glibc — &amp;lt;code&amp;gt;ld-linux-x86-64.so.2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;libc.so.6&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;libm.so.6&amp;lt;/code&amp;gt; no longer copied into &amp;lt;code&amp;gt;libs/&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;run.sh&amp;lt;/code&amp;gt; uses &amp;lt;code&amp;gt;LD_LIBRARY_PATH&amp;lt;/code&amp;gt; instead, fixing a SIGSEGV on launch from incompatible glibc versions&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.3&#039;&#039;&#039;&lt;br /&gt;
* Version string sync across &amp;lt;code&amp;gt;GAME_VERSION&amp;lt;/code&amp;gt;, Switch &amp;lt;code&amp;gt;APP_VERSION&amp;lt;/code&amp;gt;, and Android &amp;lt;code&amp;gt;versionName&amp;lt;/code&amp;gt;&lt;br /&gt;
* Linux bundle: loader execute permission fix (&amp;lt;code&amp;gt;chmod +x&amp;lt;/code&amp;gt; after copy)&lt;br /&gt;
* Android CI temporarily disabled while vendored codec dependency issues are resolved&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.2&#039;&#039;&#039;&lt;br /&gt;
* Parry kills sync over network&lt;br /&gt;
* Robust spawn position fallback in &amp;lt;code&amp;gt;pickSpawnPos()&amp;lt;/code&amp;gt;&lt;br /&gt;
* Enemy HP tint safety (clamped &amp;lt;code&amp;gt;hpRatio&amp;lt;/code&amp;gt;, guarded against zero &amp;lt;code&amp;gt;maxHp&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Audio shutdown fix&lt;br /&gt;
* Ceiling render guard against out-of-bounds reads&lt;br /&gt;
* CSM security hardening: map loader validates dimensions (≤ 4096) and trigger count (≤ 10 000)&lt;br /&gt;
* Network protocol hardening with bounds-checked string readers&lt;br /&gt;
* UPnP thread safety mutex&lt;br /&gt;
* Mod file sync read check&lt;br /&gt;
* Android build fix (excluded &amp;lt;code&amp;gt;server_main.cpp&amp;lt;/code&amp;gt; from JNI sweep; header-only minimp3)&lt;br /&gt;
* Windows CI DLL bundling fix using an iterative &amp;lt;code&amp;gt;objdump&amp;lt;/code&amp;gt; worklist&lt;br /&gt;
* Linux bundle: &amp;lt;code&amp;gt;libminiupnpc.so&amp;lt;/code&amp;gt; always included&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.1&#039;&#039;&#039;&lt;br /&gt;
* Fixed IP Connect UI labels/status coloring and saved-server highlighting&lt;br /&gt;
* Updated in-game title/version strings to v1.0.1&lt;br /&gt;
* Cross-platform build fixes for the dedicated entrypoint (Windows/Switch)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Shooter enemies now always face their target with smoother movement updates&lt;br /&gt;
* Dedicated server and lobby-host authority improvements from the 0.9.x line&lt;br /&gt;
* Version metadata fully synced to 1.0.0 across build files&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.9&#039;&#039;&#039;&lt;br /&gt;
* Dedicated server is no longer counted as a player&lt;br /&gt;
* First joining client becomes lobby host on dedicated servers&lt;br /&gt;
* Lobby host migrates to another player if the current host disconnects&lt;br /&gt;
* Lobby host permissions can be transferred to another player&lt;br /&gt;
* Host/admin/start permissions now follow lobby-host ownership&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.8&#039;&#039;&#039;&lt;br /&gt;
* Added dedicated server mode: &amp;lt;code&amp;gt;--dedicated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--port&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--max-players&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--password&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--name&amp;lt;/code&amp;gt;&lt;br /&gt;
* Added DigitalOcean deploy assets: systemd service and install helper&lt;br /&gt;
* Fixed lobby primary-controller behavior; carried previous networking/menu improvements&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.7&#039;&#039;&#039;&lt;br /&gt;
* Fixed multiplayer lobby input that could create an unintended local sub-player&lt;br /&gt;
* Added lobby primary-controller handling for correct confirm/ready behavior&lt;br /&gt;
* Version bump to 0.9.7&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.6&#039;&#039;&#039;&lt;br /&gt;
* Join menu: IP CONNECT address field supports text hostnames (letters, numbers, dot, dash, colon)&lt;br /&gt;
* Increased address input length for real-world server endpoints&lt;br /&gt;
* Version bump to 0.9.6&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.5 — Splitscreen in Multiplayer&#039;&#039;&#039;&lt;br /&gt;
* Release notes contain a &amp;quot;What&#039;s New&amp;quot; heading without further detail&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.1&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.9.0&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.7.1&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.7.0&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.6&#039;&#039;&#039;&lt;br /&gt;
* Map selector in lobby settings: host can cycle Generated / custom maps; selection sent to all clients&lt;br /&gt;
* Mod maps included in the lobby map list&lt;br /&gt;
* Map Width / Height disabled for custom maps&lt;br /&gt;
* Ceiling tiles in map editor write to &amp;lt;code&amp;gt;map_.ceiling[]&amp;lt;/code&amp;gt;&lt;br /&gt;
* Undo / Redo in map editor: 64-level undo stack (Ctrl+Z / Ctrl+Y / Ctrl+Shift+Z; L3 / R3)&lt;br /&gt;
* Custom tile textures bundled with maps&lt;br /&gt;
* Editor direct re-save: Ctrl+S writes directly to the existing path&lt;br /&gt;
* Wayland-first display driver (&amp;lt;code&amp;gt;SDL_VIDEODRIVER=wayland,x11&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Bomb explosions leave scorch marks (&amp;lt;code&amp;gt;DecalType::Scorch&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.5.8&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.5.7&#039;&#039;&#039;&lt;br /&gt;
* Release notes refer to the README changelog&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/etonedemid/cold-start-nx&lt;br /&gt;
* Homebrew App Store - https://hb-app.store/switch/COLDSTART&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PleNx_Switch&amp;diff=205650</id>
		<title>PleNx Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PleNx_Switch&amp;diff=205650"/>
		<updated>2026-07-10T03:30:37Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.1.14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=pleNx&lt;br /&gt;
|image=pleNxSwitch.png&lt;br /&gt;
|description=Plex client for Switch.&lt;br /&gt;
|author=thcolin&lt;br /&gt;
|lastupdated=2026/07/05&lt;br /&gt;
|type=Media Players&lt;br /&gt;
|version=0.1.14&lt;br /&gt;
|license=Apache-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/pleNxSwitch.7z&lt;br /&gt;
|website=https://thcolin.github.io/pleNx/&lt;br /&gt;
|source=https://github.com/thcolin/pleNx&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Media Players) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=pleNxSwitch.png&lt;br /&gt;
|image_alt=pleNx&lt;br /&gt;
}}&lt;br /&gt;
pleNx (/plɛn.ɛks/, &amp;quot;Plex × NX&amp;quot;) is a third-party, native, controller-first Plex client for the Nintendo Switch. It lets you browse and play the movies and shows from your Plex Media Server through a fully native interface designed for the gamepad.&lt;br /&gt;
&lt;br /&gt;
pleNx is a fork of [[Switchfin]] (a Nintendo Switch Jellyfin client) fully migrated to the Plex API, with a redesigned interface. It is a third-party project, not affiliated with or endorsed by Plex.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Sign in with Plex - enter a 4-character code on plex.tv/link, then choose your server and your Plex Home profile (PIN-protected profiles supported).&lt;br /&gt;
* Home mirrors your server - Continue Watching followed by every hub configured on your Plex, in the order your server returns them.&lt;br /&gt;
* Libraries in the sidebar - one entry per library, each with Home, Suggestions, Collections and Genres views, and server-side sorting.&lt;br /&gt;
* Rich detail pages - full-bleed backdrop with the title logo, cast with full person pages (filmography), and related rows pulled from your server.&lt;br /&gt;
* Season pages - artwork, episode count and synopsis, with one-tap full-season download.&lt;br /&gt;
* Quick actions on any poster - go to show, go to season, mark watched, download.&lt;br /&gt;
* Plex Watchlist - browse your account watchlist in the sidebar, add or remove any movie or show from its detail page or the quick actions menu.&lt;br /&gt;
* Playback with MPV - direct play and universal transcode (HLS), resume, chapters, external and embedded subtitles, audio track selection.&lt;br /&gt;
* Offline downloads for playback without a connection (original quality).&lt;br /&gt;
* Remote file browser for WebDAV / Apache / Nginx / FTP / SFTP servers.&lt;br /&gt;
* Available in 14 languages.&lt;br /&gt;
* MPV decodes H.264, H.265, VP8, VP9 and AV1 video; Opus, FLAC, MP3, AAC, AC-3, E-AC-3, TrueHD and DTS audio; and SRT, VTT, SSA/ASS and DVDSUB subtitles.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Requires a Nintendo Switch running Atmosphère CFW (full-memory mode is required for playback).&lt;br /&gt;
&lt;br /&gt;
Copy &amp;lt;code&amp;gt;pleNx.nro&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;sdmc:/switch/&amp;lt;/code&amp;gt; and launch it from the homebrew menu.&lt;br /&gt;
&lt;br /&gt;
On first launch in applet mode, pleNx offers to install a HOME menu tile: press the button, confirm, and the app relaunches as a regular title with full memory (required for video playback). Alternatively, hold R while launching any game (title takeover).&lt;br /&gt;
&lt;br /&gt;
Sign in with your Plex account at plex.tv/link.&lt;br /&gt;
&lt;br /&gt;
Video playback needs full-memory mode. Applet mode is fine for browsing, but install the HOME tile (or use title takeover) before starting a movie.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
&#039;&#039;&#039;During playback:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A - Play, Pause&lt;br /&gt;
&lt;br /&gt;
B - Stop&lt;br /&gt;
&lt;br /&gt;
Y - Toggle OSD&lt;br /&gt;
&lt;br /&gt;
X - Menu&lt;br /&gt;
&lt;br /&gt;
R/L - Seek forward/back&lt;br /&gt;
&lt;br /&gt;
Plus - Video profile&lt;br /&gt;
&lt;br /&gt;
Right Stick - Video quality&lt;br /&gt;
&lt;br /&gt;
Left Stick - Playback speed&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
{| style=&amp;quot;&amp;quot;max-width:80%; margin-left:0em;&amp;quot;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pleNxSwitch-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pleNxSwitch-02.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pleNxSwitch-03.png&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/pleNxSwitch-04.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v0.1.14&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;PS Vita&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;The in-app updater now installs the new version directly instead of opening a broken browser page.&#039;&#039;&#039; When an update was available, the Vita opened the GitHub release page in the system browser — a page its ageing WebKit cannot render, so it hung and the download never showed up. The Vita now self-updates in place like the Switch does: it downloads the VPK, unpacks it and installs it through the system package installer, then drops you back to the LiveArea to relaunch the updated bubble. (The VitaDB &amp;amp;quot;downgrade to 0.1.4&amp;amp;quot; prompt reported alongside this is a stale VitaDB store entry, not a pleNx bug; see &amp;lt;code&amp;gt;RELEASING.md&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.13&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Series and movie logos no longer smear.&#039;&#039;&#039; The transparent title logos on detail pages are drawn in &amp;amp;quot;fit&amp;amp;quot; mode, so the image is smaller than its box and sits letterboxed inside it. The empty area around it was still being painted with the image, which sampled outside the texture and — because edge pixels are clamped — dragged vertical streaks down from every shape. The image now fills only its own fitted area, so logos render cleanly. Affects every platform (the fix is in the shared image renderer).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.12&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Player&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Changing the audio or subtitle track no longer stops playback with a &amp;quot;playback error&amp;quot; on PS Vita.&#039;&#039;&#039; In transcode mode a track change reloads the stream, but the reload happened in place and never released the hardware decoder, so it stalled and then failed. The reload now resets the player first (like episode navigation) and tears the previous transcode session down on the server instead of leaving it orphaned.&lt;br /&gt;
** &#039;&#039;&#039;Audio and subtitle tracks are now selectable during local playback from the file browser.&#039;&#039;&#039; The player showed the track buttons but had no handler wired, so they appeared to do nothing.&lt;br /&gt;
** &#039;&#039;&#039;A failed transcode now falls back to direct play once&#039;&#039;&#039;, instead of going straight to an error — a smoother recovery on constrained hardware.&lt;br /&gt;
** &#039;&#039;&#039;Playback errors now show the underlying mpv reason&#039;&#039;&#039; (e.g. &amp;quot;unrecognized file format&amp;quot;) instead of a bare &amp;quot;playback error&amp;quot;, making bug reports actionable.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;PS Vita: the transcoder height is capped at 1080p&#039;&#039;&#039;, the hardware decoder&#039;s limit, so a 4K source at a high bitrate no longer produces a stream the Vita cannot decode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.11&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;PS Vita: servers reached by a hostname no longer stall with an endless &amp;quot;timeout reached&amp;quot;.&#039;&#039;&#039; libcurl was built with the synchronous name resolver, so a DNS lookup issued from a background thread could not be bounded by any timeout — the synchronous resolver can only abort a slow &amp;lt;code&amp;gt;getaddrinfo()&amp;lt;/code&amp;gt; via &amp;lt;code&amp;gt;SIGALRM&amp;lt;/code&amp;gt;, which libcurl arms on the main thread alone. A slow-to-resolve hostname (e.g. a duckdns address) therefore hung every request indefinitely, and raising the request-timeout setting had no effect; only a raw LAN IP, which skips name resolution, worked. curl is now built with the threaded resolver so lookups run in a worker thread the timeout can abandon, and &amp;lt;code&amp;gt;CURLOPT_NOSIGNAL&amp;lt;/code&amp;gt; keeps libcurl off signals on its background threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.10&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** PS Vita: movie logos no longer render sheared or with a torn vertical strip. GPU texture compression always extracted a full 4×4 pixel block, so for images whose width or height isn&#039;t a multiple of 4 the edge blocks pulled in the next row&#039;s pixels (the visible vertical corruption) or read past the decoded image. Edge blocks are now clamped to the valid pixels, with the border replicated into the padding for a clean edge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Self-hosted servers on your LAN are reachable again when &amp;lt;code&amp;gt;plex.direct&amp;lt;/code&amp;gt; DNS is blocked. Server discovery only probed the &amp;lt;code&amp;gt;plex.direct&amp;lt;/code&amp;gt; hostname, whose public DNS record points at a private IP — which routers and resolvers with DNS-rebinding protection (Fritz!Box, Pi-hole, AdGuard…) refuse to resolve. A server sitting on the same network then reported &amp;amp;quot;unreachable&amp;amp;quot; even though it answered directly, while the official clients connected fine. pleNx now also probes the raw IP address for private, CGNAT and VPN endpoints, bypassing &amp;lt;code&amp;gt;plex.direct&amp;lt;/code&amp;gt; entirely — and re-discovers a working address on reconnect when the server changes IP (e.g. a new DHCP lease)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.8&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Downloads&#039;&#039;&#039;&lt;br /&gt;
** The download card now shows transfer speed and ETA. While a download is running, the progress line reads &amp;lt;code&amp;gt;123 MB / 456 MB · 5.2 MB/s · 12:30 left&amp;lt;/code&amp;gt;; the rate is a smoothed average (EMA) so the estimate stays steady instead of jumping on every tick&lt;br /&gt;
* &#039;&#039;&#039;Library&#039;&#039;&#039;&lt;br /&gt;
** Movie and show pages show critic and audience ratings with their official icons. Plex&#039;s rating sources are mapped to the Rotten Tomatoes tomato (fresh/rotten), the audience popcorn (upright/spilled), and the IMDb and TMDb marks, each sized to its own aspect; a plain star is kept as a fallback when the source is unknown&lt;br /&gt;
* &#039;&#039;&#039;Changelog&#039;&#039;&#039;&lt;br /&gt;
** The changelog is now readable in the app, from Settings ▸ Changelog — the full history, scrollable&lt;br /&gt;
** The update prompt shows the new version&#039;s release notes instead of just its number, so you can see what changed before updating&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.7&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Sign-in&#039;&#039;&#039;&lt;br /&gt;
** Selecting a server no longer looks frozen. Picking a server (or profile) during Plex sign-in blocked all input while probing the server&#039;s connections — several seconds, with nothing on screen — so the dialog just vanished and the app seemed dead. A loading overlay now sits over the pairing screen for the whole wait, with a reassurance line that fades in if it runs long&lt;br /&gt;
** Account linking survives a transient network hiccup. A single timeout or TLS blip (common on Vita) no longer aborts the whole PIN flow; only an expired/consumed code is terminal, and the 2-minute deadline stays the real give-up&lt;br /&gt;
* &#039;&#039;&#039;Player&#039;&#039;&#039;&lt;br /&gt;
** Direct-access OSD. The speed control is replaced by icon buttons for audio track, subtitle track and quality. Subtitles get a live, translucent sub-delay overlay (LEFT/RIGHT) on top of the video; audio, subtitle and sub-sync leave the settings panel. Video quality is now remembered and defaults to a 4 Mbps transcode on Vita (its decoder chokes on heavy direct play), staying Auto everywhere else&lt;br /&gt;
** Marking watched is now a targeted card refresh instead of reloading the whole view (heavy on the home screen): the single card updates optimistically&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** The synopsis no longer collapses to a single line when returning from a person page — a relayout had cut the text at an intermediate width. The action row also gains a little breathing room below the title/meta block&lt;br /&gt;
** The splash logo no longer shows a flat colored band along its edges — an edge-clamp artifact from letterboxing the non-square asset, fixed by re-exporting it square with a transparent margin&lt;br /&gt;
** Deleting the last card in a grid no longer leaves a ghost highlight, and emptying the downloads list hands focus back to the sidebar&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.6&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** PS Vita: transparent images no longer render as opaque black blocks. Images with real transparency now use DXT5 (8-bit alpha) instead of DXT1, which has no alpha channel; opaque images keep DXT1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.5&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Controller navigation no longer breaks after closing the player; focus now returns to the first home row.&lt;br /&gt;
** Docking the Switch mid-playback now switches the video to fullscreen 1080p instead of leaving it small in a corner.&lt;br /&gt;
* &#039;&#039;&#039;Player&#039;&#039;&#039;&lt;br /&gt;
** Focused controls now show a translucent orange background instead of the border halo.&lt;br /&gt;
** The close button is a round, properly centered icon.&lt;br /&gt;
** Up/down wake the OSD and focus the play/pause button.&lt;br /&gt;
** The progress bar is focusable, with accelerating left/right seek (TV-style OSD is now the default, still toggleable).&lt;br /&gt;
** Removed the always-on bottom progress bar and its settings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.4&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Every truncated row now ends with a &amp;amp;quot;+&amp;amp;quot; card opening the full list (the home rows and the Suggestions tabs of movie and show libraries previously lacked it). The card shows whenever the server reports more content than displayed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.3&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Breaking&#039;&#039;&#039;&lt;br /&gt;
** New Switch title ID for the HOME menu tile (&amp;lt;code&amp;gt;0104201312000000&amp;lt;/code&amp;gt;). Migration: delete any old tile (&amp;amp;quot;Switchlex&amp;amp;quot; or a previous pleNx) from the HOME menu, replace &amp;lt;code&amp;gt;pleNx.nro&amp;lt;/code&amp;gt; on the SD card, then reinstall the tile from the app.&lt;br /&gt;
** The forwarder NPDM &amp;lt;code&amp;gt;program_id&amp;lt;/code&amp;gt; is now generated from the single &amp;lt;code&amp;gt;PROJECT_TITLEID&amp;lt;/code&amp;gt; source of truth.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Branding harmonized across every derived asset (app icons, forwarder wordmark, scalable icon wrapper, website favicons / social image). The Android launcher icons and the PS4 / PS Vita system images now ship pleNx branding (Vita assets kept 8-bit indexed as the firmware requires).&lt;br /&gt;
* &#039;&#039;&#039;Website&#039;&#039;&#039;&lt;br /&gt;
** The hero opens with the app icon presented as a homebrew-menu tile next to the wordmark, and the floating nav no longer flashes before first paint.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Translations completed and corrected across all 13 languages (cs, de, es, fr, ja, ko, pt, ru, tr, uk, vi, zh-Hans, zh-Hant), now at full key parity with English. Filled missing strings, translated Plex sign-in and HOME-tile hint screens left in English in several locales, fixed mistranslations and typos, and restored the French &amp;amp;quot;current speed&amp;amp;quot; overlay placeholder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.1&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Working in-app self-update on Nintendo Switch: pleNx offers to update itself (checked at startup and from Settings ? &amp;amp;quot;Check for updates&amp;amp;quot;), downloads the NRO with a live progress dialog, verifies the file size against the GitHub release asset, then replaces itself and prompts to relaunch. On other platforms the dialog opens the release page in the browser.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** The app now replaces the NRO it was actually launched from (&amp;lt;code&amp;gt;argv[0]&amp;lt;/code&amp;gt;). Updating from 0.1.0 via the in-app dialog may appear to have no effect depending on NRO location; 0.1.0 users with the NRO at &amp;lt;code&amp;gt;sdmc:/switch/pleNx.nro&amp;lt;/code&amp;gt; should replace it manually once.&lt;br /&gt;
** The release-asset download URL and expected size are now taken from the GitHub API response.&lt;br /&gt;
** The startup update check now honors its intended delay.&lt;br /&gt;
** All references to the repository now use its new name &amp;lt;code&amp;gt;thcolin/pleNx&amp;lt;/code&amp;gt;.&lt;br /&gt;
** The Arch package version is now derived from &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.0&#039;&#039;&#039;&lt;br /&gt;
* First release of pleNx, a third-party native Plex client for Nintendo Switch, macOS, Windows, Linux, Android, PS4 and PS Vita; a fork of Switchfin (a Jellyfin client) fully migrated to the Plex API with a complete UI overhaul.&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Full migration from the Jellyfin API to the Plex API: plex.tv PIN sign-in (link code), server discovery and connection selection, libraries, home hub, movies, shows, collections, search, and playback (direct play and transcode) backed by mpv.&lt;br /&gt;
** Complete UI overhaul with the new pleNx branding: icon-only sidebar, full-bleed detail pages, scrollable season / playlist / collection views, redesigned search, quick-actions side panel on any poster, guaranteed 2:3 poster ratios, skeletons and empty states, pill-shaped toasts.&lt;br /&gt;
** Plex Watchlist with provider-backed sorting and filters, add/remove from detail pages and the quick-actions menu.&lt;br /&gt;
** Offline downloads with storage gauge, active/completed sections, one-tap season or whole-show download, local playback.&lt;br /&gt;
** Remote file servers (WebDAV, FTP, SFTP, HTTP(S)) managed from the UI with a mandatory connection test before saving.&lt;br /&gt;
** Genre cards illustrated with Kometa default posters, playlists, collection pages, person pages, &amp;amp;quot;Play again&amp;amp;quot; on fully-watched shows.&lt;br /&gt;
** Available in 14 languages.&lt;br /&gt;
** Nintendo Switch specifics: applet-mode warning screen with HOME tile (forwarder) installation flow, system Standard font by default, USB drives via libusbhsfs.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Fixed an infinite relayout loop, ghost focus on recycled views, NaN yoga measurements on empty text, and scroll-edge focus traps; included borealis framework patches.&lt;br /&gt;
* &#039;&#039;&#039;Build&#039;&#039;&#039;&lt;br /&gt;
** Local Nintendo Switch build via Docker; continuous delivery via GitHub Actions building all platforms (Switch NRO, macOS DMG, Windows, Linux Flatpak/Arch, Android APK, PS4 PKG, PS Vita VPK) on each &amp;lt;code&amp;gt;v*&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Jellyfin ? Plex migration plan, UI redesign reference, refreshed README.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official website - https://thcolin.github.io/pleNx/&lt;br /&gt;
* GitHub - https://github.com/thcolin/pleNx&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Nx.js_Switch&amp;diff=205649</id>
		<title>Nx.js Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Nx.js_Switch&amp;diff=205649"/>
		<updated>2026-07-10T03:30:37Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.0.0-beta.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=nx.js&lt;br /&gt;
|image=nxjsswitch.png&lt;br /&gt;
|description=JavaScript runtime for Nintendo Switch homebrew applications.&lt;br /&gt;
|author=TooTallNate&lt;br /&gt;
|lastupdated=2026/07/09&lt;br /&gt;
|type=Developments&lt;br /&gt;
|version=1.0.0-beta.6&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/nxjsswitch.7z&lt;br /&gt;
|website=https://nxjs.n8.io/&lt;br /&gt;
|source=https://github.com/TooTallNate/nx.js&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Developments) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=nxjsswitch.png&lt;br /&gt;
|image_alt=nx.js&lt;br /&gt;
}}&lt;br /&gt;
{{lowercase title}}&lt;br /&gt;
nx.js is a framework for building Nintendo Switch homebrew applications using JavaScript. Powered by the [https://bellard.org/quickjs/ QuickJS] engine, nx.js offers a streamlined and user-friendly environment for crafting homebrew apps on the Nintendo Switch console.&lt;br /&gt;
&lt;br /&gt;
With nx.js, developers can harness their JavaScript skills and tools to create captivating and interactive experiences for the Nintendo Switch platform. The framework abstracts the complexities of low-level operations and presents a high-level JavaScript API that simplifies the development workflow.&lt;br /&gt;
&lt;br /&gt;
nx.js is designed in accordance with Web standards, ensuring compatibility with familiar APIs such as setTimeout(), fetch(), new URL(), Canvas, and much more. If you&#039;re familiar with web development, you&#039;ll feel right at home with nx.js.&lt;br /&gt;
&lt;br /&gt;
For setup and usage instructions, please visit https://nxjs.n8.io/&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Write homebrew applications for the Nintendo Switch using JavaScript, a popular and widely supported programming language.&lt;br /&gt;
* Benefit from a high-level JavaScript API designed specifically for the Nintendo Switch platform, providing easy access to console-specific features and functionality.&lt;br /&gt;
* Capture and process user input with ease, including buttons, touch screen, and motion controls, to create engaging gameplay experiences.&lt;br /&gt;
* Create visually appealing and interactive user interfaces using the web [https://developer.mozilla.org/docs/Web/API/Canvas_API Canvas] API.&lt;br /&gt;
* Integrate audio playback and sound effects into your applications using the web [https://developer.mozilla.org/docs/Web/API/HTMLAudioElement/Audio Audio] API.&lt;br /&gt;
* Support for executing code compiled to [https://developer.mozilla.org/docs/WebAssembly WebAssembly (WASM)].&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official website - https://nxjs.n8.io/&lt;br /&gt;
* GitHub - https://github.com/TooTallNate/nx.js&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/nx-js-javascript-runtime-for-nintendo-switch-homebrew-applications.639171/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=TKMM-NX_Switch&amp;diff=205648</id>
		<title>TKMM-NX Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=TKMM-NX_Switch&amp;diff=205648"/>
		<updated>2026-07-10T03:30:34Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 2.1.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=TKMM-NX&lt;br /&gt;
|image=TKMMNXSwitch.png&lt;br /&gt;
|description=Lightweight OS for the Nintendo Switch.&lt;br /&gt;
|author=TKMM-Team&lt;br /&gt;
|lastupdated=2026/07/06&lt;br /&gt;
|type=Operating Systems&lt;br /&gt;
|version=2.1.4&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://tkmm.org/downloads/index.html?tabs=switch&lt;br /&gt;
|website=https://tkmm.org/index.html&lt;br /&gt;
|source=https://github.com/TKMM-Team/TKMM-NX&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew Apps (Operating Systems) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=TKMMNXSwitch.png&lt;br /&gt;
|image_alt=TKMM-NX&lt;br /&gt;
}}&amp;lt;!--TKMMNXSwitch.7z--&amp;gt;&lt;br /&gt;
​TKMM-NX is a mod manager for Tears of the Kingdom (TKMM) that runs directly on the Nintendo Switch. &lt;br /&gt;
&lt;br /&gt;
Developed by the TKMM Team, ​TKMM-NX is a Linux-based operating system built upon [https://github.com/libretro/Lakka-LibreELEC Lakka (a lightweight Linux distribution focused on emulation)].&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Download the OS Image from [https://github.com/TKMM-Team/TKMM-NX/releases Releases].&lt;br /&gt;
&lt;br /&gt;
Copy the tkmm and bootloader folders to the root directory of the SD card.&lt;br /&gt;
&lt;br /&gt;
Boot into RCM (Recovery Mode) on the Nintendo Switch.&lt;br /&gt;
&lt;br /&gt;
Inject the Hekate payload using a compatible method.&lt;br /&gt;
&lt;br /&gt;
In the Hekate menu, navigate to &amp;amp;quot;More Configs&amp;amp;quot; and select &amp;amp;quot;TKMM&amp;amp;quot; to boot into the TKMM-NX environment.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-03.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/switchhomebrews/images/TKMMNXSwitch-04.png&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v2.1.3&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.2&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.1&#039;&#039;&#039;&lt;br /&gt;
* Bump OS version.&lt;br /&gt;
&#039;&#039;&#039;v2.1.0&#039;&#039;&#039;&lt;br /&gt;
* Change OS versioning scheme.&lt;br /&gt;
&#039;&#039;&#039;v2.0.3&#039;&#039;&#039;&lt;br /&gt;
* dotnet-runtime: Updated to 10.0.9&lt;br /&gt;
* dotnet-sdk: Updated to 10.0.301&lt;br /&gt;
&#039;&#039;&#039;v2.0.2&#039;&#039;&#039;&lt;br /&gt;
* Adjust workflow.&lt;br /&gt;
&#039;&#039;&#039;v2.0.1&#039;&#039;&#039;&lt;br /&gt;
* Revert &amp;quot;Temp fix for dotnet runtime&amp;quot;.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0-rev-nx1&#039;&#039;&#039;&lt;br /&gt;
* Temp fix for dotnet runtime.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0&#039;&#039;&#039;&lt;br /&gt;
* Merge remote-tracking branch &#039;origin/main&#039; into upfs-support.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0-beta3&#039;&#039;&#039;&lt;br /&gt;
*Enabled eMMC in boot script.&lt;br /&gt;
&#039;&#039;&#039;v2.0.0-beta2&#039;&#039;&#039;&lt;br /&gt;
* Update game dump error messages.&lt;br /&gt;
* Disable optimizer by default.&lt;br /&gt;
* Use direct index merging for game__component__ConditionParam (*).&lt;br /&gt;
* Delete UltraCam config when optimizer is disabled.&lt;br /&gt;
* Bind the home button to reboot popup.&lt;br /&gt;
* Remove manual setup from NX setup wizard.&lt;br /&gt;
* Fix auto-updater checksum parser.&lt;br /&gt;
* Fix process name resolver.&lt;br /&gt;
* Fix BYML change tracking mergeable addition resolver.&lt;br /&gt;
&lt;br /&gt;
(* Requires changelog rebuild)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
The Team:&lt;br /&gt;
* [https://github.com/ArchLeaders Arch Leaders]: Lead TKMM Developer&lt;br /&gt;
* [https://github.com/LordBubblesDev Lord Bubbles]: TKMM-NX Developer&lt;br /&gt;
* [https://github.com/AsteroidPizza39 Aster]: Co-Founder, Artist, &amp;amp;amp; Operations Manager&lt;br /&gt;
* [https://github.com/The5thTear The5thTear]: Co-Founder &amp;amp;amp; Developer&lt;br /&gt;
* [https://github.com/okmika Mikachan]: Developer&lt;br /&gt;
&lt;br /&gt;
Special Thanks:&lt;br /&gt;
* The [https://switchroot.org/ Switchroot] community for pioneering open-source development on the Nintendo Switch.&lt;br /&gt;
* The [https://www.lakka.tv/ Lakka] team, for its work that allowed us to create a custom OS for TKMM on Switch.&lt;br /&gt;
* The [https://libreelec.tv/ LibreELEC] team for creating the Linux distribution upon which all of this is built.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Official Website - https://tkmm.org/index.html&lt;br /&gt;
* GitHub - https://github.com/TKMM-Team/TKMM-NX&lt;br /&gt;
* Homebrew App Store - https://hb-app.store/switch/TKMM-NX&lt;br /&gt;
* GameBanana - https://gamebanana.com/tools/19164&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=NooDS_Switch&amp;diff=205647</id>
		<title>NooDS Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=NooDS_Switch&amp;diff=205647"/>
		<updated>2026-07-10T03:30:32Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 20260710&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=NooDS&lt;br /&gt;
|image=noodsnx.png&lt;br /&gt;
|description=A multiplatform NDS emulator.&lt;br /&gt;
|author=Hydr8gon&lt;br /&gt;
|lastupdated=2026/07/10&lt;br /&gt;
|type=Handheld&lt;br /&gt;
|version=Rolling Release&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/switchhomebrews/noodsnx.7z&lt;br /&gt;
|website=https://gbatemp.net/threads/noods-a-nintendo-ds-emulator-for-the-nintendo-switch.563900/&lt;br /&gt;
|source=https://github.com/Hydr8gon/NooDS&lt;br /&gt;
|donation=http://paypal.me/Hydr8gon&lt;br /&gt;
}}&lt;br /&gt;
NooDS aims to be a fast and portable Nintendo DS emulator. It&#039;s not quite there speed-wise, but it offers most other features that you might expect from a DS emulator. It even supports GBA backwards compatibility.&lt;br /&gt;
&lt;br /&gt;
NooDS is available on Android, Linux, iOS, macOS, Switch, [[NooDS_Vita|Vita]] and Windows. Automatic builds are provided via GitHub Actions; you can download them on the [https://github.com/Hydr8gon/NooDS/releases releases page].&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
NooDS should be able to run most things without additional setups. &lt;br /&gt;
&lt;br /&gt;
DS BIOS and firmware files must be provided to boot from the DS menu, which can be dumped from a DS with [https://archive.org/details/dsbf-dumper DSBF Dumper]. The firmware must be dumped from an original DS; DSi and 3DS dumps don&#039;t have any boot code. &lt;br /&gt;
&lt;br /&gt;
A GBA BIOS file must be provided to run GBA games, which can be dumped from many systems with [https://github.com/mgba-emu/bios-dump this dumper]. The BIOS and firmware file paths can be set in the settings. &lt;br /&gt;
&lt;br /&gt;
Although not always accurate, save types are automatically detected. Manual alteration of the save type is needed if you load a new game and saving does not work.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* Author&#039;s website - https://hydr8gon.github.io/&lt;br /&gt;
* GitHub - https://github.com/Hydr8gon/NooDS&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/noods-a-nintendo-ds-emulator-for-the-nintendo-switch.563900/&lt;br /&gt;
* Discord - https://discord.gg/JbNz7y4&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PSV_Cleaner_Vita&amp;diff=205646</id>
		<title>PSV Cleaner Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PSV_Cleaner_Vita&amp;diff=205646"/>
		<updated>2026-07-10T03:30:31Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=PSV Cleaner&lt;br /&gt;
|image=PSVCleanerVita.png&lt;br /&gt;
|description=A powerful and user-friendly temporary files cleaner.&lt;br /&gt;
|author=theheroGAC&lt;br /&gt;
|lastupdated=2026/07/08&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=1.14&lt;br /&gt;
|license=N/A&lt;br /&gt;
|download=https://github.com/theheroGAC/PSV-Cleaner/releases&lt;br /&gt;
|website=https://theherogac00.itch.io/psv-cleaner-playstation-vita-temporary-files-cleaner&lt;br /&gt;
|source=https://github.com/theheroGAC/PSV-Cleaner&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Utilities) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=PSVCleanerVita.png&lt;br /&gt;
|image_alt=PSV Cleaner&lt;br /&gt;
}}&amp;lt;!--PSVCleanerVita--&amp;gt;&lt;br /&gt;
A powerful and user-friendly temporary files cleaner for the PS Vita. It can help you free up valuable storage space by safely removing temporary files, cache data, and system dumps that accumulate over time.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Removes 90+ types of temporary files including system cache, homebrew logs, and application data.&lt;br /&gt;
* Only deletes temporary files, never touches your games, saves, or important data.&lt;br /&gt;
* Safely interrupt cleaning operations at any time with the Circle button.&lt;br /&gt;
* See exactly which files will be deleted before cleaning with detailed list view.&lt;br /&gt;
* Choose what to clean with an intuitive options menu.&lt;br /&gt;
* See exactly how much space you can free before cleaning with recursive calculation.&lt;br /&gt;
* Clean, professional UI with smooth animations and scrollable file list.&lt;br /&gt;
* Designed to prevent crashes and ensure stable performance.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Download the VPK file.&lt;br /&gt;
&lt;br /&gt;
Install using VitaShell or PKGi.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
===What it cleans===&lt;br /&gt;
* System Files:&lt;br /&gt;
** System temporary files and cache&lt;br /&gt;
** System logs and SQLite temporary databases&lt;br /&gt;
** System update and patch temporary files&lt;br /&gt;
** Shader compilation logs&lt;br /&gt;
* File Managers &amp;amp;amp; Package Installers:&lt;br /&gt;
** VitaShell file manager cache, logs, and trash&lt;br /&gt;
** PKGi package installer temporary files and cache&lt;br /&gt;
** Package installation temporary files&lt;br /&gt;
** App metadata temporary files&lt;br /&gt;
* Emulators:&lt;br /&gt;
** RetroArch emulator cache, logs, and shader cache&lt;br /&gt;
** Adrenaline PSP emulator cache and crash dumps&lt;br /&gt;
** PSP emulator temporary files&lt;br /&gt;
* Homebrew Applications:&lt;br /&gt;
** VitaGrafix, reF00D, NoNpDrm cache&lt;br /&gt;
** Autoplugin 1 &amp;amp;amp; 2 cache and logs&lt;br /&gt;
** PSVshell, SaveManager logs&lt;br /&gt;
** VitaCheat, rinCheat, TropHAX logs&lt;br /&gt;
** Henkaku, TAI, 0syscall6 cache&lt;br /&gt;
** Moonlight streaming cache&lt;br /&gt;
* Media &amp;amp;amp; Web:&lt;br /&gt;
** Browser and WebKit cache&lt;br /&gt;
** Picture, video, music thumbnails (regenerable)&lt;br /&gt;
** Network temporary files&lt;br /&gt;
* Other:&lt;br /&gt;
** Crash dump files (&amp;lt;code&amp;gt;psp2core&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;psp2dmp&amp;lt;/code&amp;gt;)&lt;br /&gt;
** USB/SD card storage temporary files&lt;br /&gt;
** Background download temporary files&lt;br /&gt;
** License temporary files&lt;br /&gt;
&lt;br /&gt;
===Important notes===&lt;br /&gt;
* Backup important data before first use (though it&#039;s safe, it&#039;s always good practice).&lt;br /&gt;
* Works best with regular use to maintain optimal performance.&lt;br /&gt;
* Compatible with all major PS Vita homebrew applications.&lt;br /&gt;
&lt;br /&gt;
===How to use===&lt;br /&gt;
*Launch the application.&lt;br /&gt;
*View how much space can be freed (calculated recursively).&lt;br /&gt;
*Press Cross to preview all files that will be deleted.&lt;br /&gt;
*Review the detailed file list with sizes.&lt;br /&gt;
*Press Cross again to confirm and start cleaning.&lt;br /&gt;
*Watch the progress bar complete.&lt;br /&gt;
*See results and updated space available.&lt;br /&gt;
&lt;br /&gt;
Optional: Press Triangle on main screen to access selective cleaning options.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
[[image:PSVCleanerVita.png|640px|link=]]&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;1.14&#039;&#039;&#039;&lt;br /&gt;
* Crash Bug Fix (Cache Buffer Overflow)&lt;br /&gt;
* Add Precise &amp;amp; Responsive Progress Bar (UI Freeze Fix)&lt;br /&gt;
* Typo Fixes &amp;amp; Config Enforcement (ONEMenu &amp;amp; Helper Filter)&lt;br /&gt;
* .PKG File Cleaning support&lt;br /&gt;
&#039;&#039;&#039;1.13&#039;&#039;&#039;&lt;br /&gt;
* Fixed crashes when navigating cleaning profiles in the main menu.&lt;br /&gt;
* Improved UI alignment in Advanced Configuration to prevent selection bars from overlapping.&lt;br /&gt;
* Added dynamic color feedback for checkboxes (Active vs Inactive).&lt;br /&gt;
* Enhanced path validation to support multiple partitions (ux0:, ur0:, uma0:).&lt;br /&gt;
* Improved TitleID validation to prevent accidental deletion of installed app data.&lt;br /&gt;
&#039;&#039;&#039;1.12&#039;&#039;&#039;&lt;br /&gt;
* Added new folders and orphaned files for cleaning.&lt;br /&gt;
* We now have a more thorough control of temporary files additional options inserted.&lt;br /&gt;
&#039;&#039;&#039;1.11&#039;&#039;&#039;&lt;br /&gt;
* Speeded up the home screen.&lt;br /&gt;
&#039;&#039;&#039;1.10&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s New&lt;br /&gt;
** Folders checked for each installed app:&lt;br /&gt;
*** ux0:data/[TITLEID]/ - The app&#039;s main data folder&lt;br /&gt;
*** ux0:patch/[TITLEID]/ - The app&#039;s patches folder&lt;br /&gt;
*** ux0:addcont/[TITLEID]/ - The app&#039;s DLC/addons folder&lt;br /&gt;
*** What is cleaned in each folder:&lt;br /&gt;
*** Subfolders: cache/, temp/, tmp/, logs/, log/&lt;br /&gt;
*** Temporary files in the root with extensions: .tmp, .temp, .log, .cache, .bak, .old, .swp&lt;br /&gt;
*** Files with names containing: &amp;amp;quot;temp&amp;amp;quot;, &amp;amp;quot;tmp&amp;amp;quot;, &amp;amp;quot;cache&amp;amp;quot;, &amp;amp;quot;log&amp;amp;quot;&lt;br /&gt;
*** Folders NOT touched (for security):&lt;br /&gt;
*** ux0:user/00/savedata/[TITLEID]/ - Saved files (never touched)&lt;br /&gt;
*** ux0:app/[TITLEID]/ - Files from the app itself (never touched)&lt;br /&gt;
*** The feature now scans all three folders for each app installed, finding more temporary files and freeing up more space.&lt;br /&gt;
** Implemented feature: Selective cleaning for individual apps: Press SELECT in the main menu to open the app list.&lt;br /&gt;
*** The list shows all installed apps with occupied space.&lt;br /&gt;
*** Navigate with the D-Pad, clean with X, go back with O.&lt;br /&gt;
*** How it works:&lt;br /&gt;
*** Press SELECT in the main menu.&lt;br /&gt;
*** A list of all installed apps is displayed.&lt;br /&gt;
*** Each app displays its TITLE ID and the space occupied by temporary files.&lt;br /&gt;
*** Navigate with the D-Pad ↑↓ to select an app.&lt;br /&gt;
*** Press X to clean that app&#039;s temporary files.&lt;br /&gt;
*** A confirmation message appears with freed space.&lt;br /&gt;
*** The list updates automatically after cleaning.&lt;br /&gt;
&#039;&#039;&#039;1.09&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s New&lt;br /&gt;
** Enhanced User Experience&lt;br /&gt;
*** Intuitive navigation: Up/Down profile selection with arrows&lt;br /&gt;
*** Optimized menu: Texts and elements repositioned&lt;br /&gt;
*** Now you have the ability to delete temporary files if a game or app is uninstalled from the livearea&lt;br /&gt;
** Advanced Features&lt;br /&gt;
*** Direct flow: &amp;quot;Complete Clean&amp;quot; skips to file preview&lt;br /&gt;
*** Extended orphan cleanup: License and patch directories beyond apps&lt;br /&gt;
&#039;&#039;&#039;1.08&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s New&lt;br /&gt;
** Support for storage uma0!&lt;br /&gt;
** Selective Cleaning&lt;br /&gt;
** Removed unnecessary plugin cleaning!&lt;br /&gt;
* Fixes&lt;br /&gt;
** Fixed some wrong folder paths that were in there&lt;br /&gt;
** Better multi-partition support&lt;br /&gt;
** More accurate file detection&lt;br /&gt;
&#039;&#039;&#039;v1.07&#039;&#039;&#039;&lt;br /&gt;
* New Stuff&lt;br /&gt;
** Smart Preview Mode: You can now see all files before deleting them, sort by name or size, and filter by file type (tmp, log, cache, etc.). Super helpful for knowing exactly what you&#039;re cleaning!&lt;br /&gt;
** VitaDB Support: Added full support for cleaning VitaDB&#039;s cache and temp files. You can choose to exclude VitaDB cache if you want to keep it fast.&lt;br /&gt;
** Better Exclusions: Added options to exclude picture folders and VPK files from cleaning. More control over what gets deleted.&lt;br /&gt;
* Improved Controls&lt;br /&gt;
** Preview Screen: Use △ to sort files, □ to filter by type, D-Pad to navigate, X to clean, O to cancel&lt;br /&gt;
** Menu Scrolling: Long menus now scroll properly with a visual scrollbar&lt;br /&gt;
** Better Feedback: Everything feels more responsive and clear&lt;br /&gt;
** Expanded cleanup to cover even more temp files and caches&lt;br /&gt;
&#039;&#039;&#039;v1.06&#039;&#039;&#039;&lt;br /&gt;
* Codebase Cleanup&lt;br /&gt;
** Removed ALL comments - Completely comment-free codebase for cleaner, more professional code&lt;br /&gt;
** Streamlined structure - Minimalist C code with zero unnecessary documentation&lt;br /&gt;
* Critical Bug Fixes&lt;br /&gt;
** Fixed VPK file deletion - Now properly deletes &amp;lt;code&amp;gt;.vpk&amp;lt;/code&amp;gt; files from &amp;lt;code&amp;gt;ux0:/&amp;lt;/code&amp;gt; root directory&lt;br /&gt;
** Fixed UI button labels - Corrected duplicate and inaccurate button descriptions in advanced options&lt;br /&gt;
** Fixed wildcard pattern handling - VPK files now use proper directory scanning instead of broken wildcards&lt;br /&gt;
* Enhanced User Experience&lt;br /&gt;
** Animated progress bars - Added particle effects and smooth animations during cleaning&lt;br /&gt;
** Improved button labels - X button shows &amp;amp;quot;Toggle&amp;amp;quot;, Triangle shows &amp;amp;quot;Back&amp;amp;quot;, O shows &amp;amp;quot;Preview&amp;amp;quot;&lt;br /&gt;
** Better visual feedback - Enhanced UI with pulsing effects and animated borders&lt;br /&gt;
* Expanded Cleanup Coverage&lt;br /&gt;
** VPK files - Complete support for Vita app installation files&lt;br /&gt;
** RetroArch temp files - Comprehensive cleanup of emulator cache, logs, and temp data&lt;br /&gt;
** Crash dump files - Enhanced &amp;lt;code&amp;gt;.psp2dmp.tmp&amp;lt;/code&amp;gt; and related file detection&lt;br /&gt;
** Screenshot cleanup - Automatic removal of &amp;lt;code&amp;gt;ux0:picture/SCREENSHOT/&amp;lt;/code&amp;gt; files&lt;br /&gt;
** Package temp files - Added &amp;lt;code&amp;gt;pkgj&amp;lt;/code&amp;gt; temporary file cleanup&lt;br /&gt;
* Performance &amp;amp;amp; Features&lt;br /&gt;
** Intelligent caching system - &amp;lt;code&amp;gt;scan_cache.bin&amp;lt;/code&amp;gt; speeds up subsequent scans&lt;br /&gt;
** Emergency stop functionality - Safe interruption with O button during cleaning&lt;br /&gt;
** Profile-based cleaning - Quick, Complete, and Selective cleaning modes&lt;br /&gt;
** Preview before delete - See exactly what files will be removed&lt;br /&gt;
* UI/UX Improvements&lt;br /&gt;
** Particle effects - Animated progress bars with flying particles&lt;br /&gt;
** Better color scheme - Improved contrast and readability&lt;br /&gt;
** Responsive controls - Clear button mappings for all screens&lt;br /&gt;
** Status indicators - Real-time feedback during operations&lt;br /&gt;
&#039;&#039;&#039;v1.05&#039;&#039;&#039;&lt;br /&gt;
* Added&lt;br /&gt;
** Intelligent Caching System - Revolutionary performance improvement for file scanning&lt;br /&gt;
*** Smart Cache Storage - Saves scan results to avoid rescanning unchanged directories&lt;br /&gt;
*** Directory Change Detection - Automatically detects when directories have been modified&lt;br /&gt;
*** Cache Expiration - 24-hour cache validity with automatic refresh&lt;br /&gt;
*** Instant Loading - Up to 5x faster startup times for subsequent app launches&lt;br /&gt;
*** Memory Efficient - Optimized cache structure with validation and error handling&lt;br /&gt;
** Code Optimization &amp;amp;amp; Cleanup - Streamlined codebase for better maintainability&lt;br /&gt;
*** Removed Legacy Code - Eliminated CloneDVD sound references and unused functions&lt;br /&gt;
*** Splash Screen Removal - Removed unnecessary splash screen for faster app startup&lt;br /&gt;
*** Comment Cleanup - Removed obsolete comments and improved code documentation&lt;br /&gt;
*** Resource Optimization - Eliminated unused assets and reduced package size&lt;br /&gt;
* Performance Improvements&lt;br /&gt;
** Intelligent Scanning - Cache-based directory scanning with change detection&lt;br /&gt;
** Faster Startup - Reduced initialization time through caching system&lt;br /&gt;
** Memory Optimization - Better memory management for large file operations&lt;br /&gt;
** I/O Reduction - Minimized disk access through intelligent caching&lt;br /&gt;
* Technical Enhancements&lt;br /&gt;
** Cache Management - Automatic cache invalidation after cleaning operations&lt;br /&gt;
** Error Handling - Robust cache validation and fallback mechanisms&lt;br /&gt;
** Version Control - Cache versioning for future compatibility&lt;br /&gt;
** Resource Cleanup - Proper cleanup of cache files and temporary resources&lt;br /&gt;
* UI/UX Improvements&lt;br /&gt;
** Faster Response - Instant app responsiveness through caching&lt;br /&gt;
** Cleaner Interface - Removed visual clutter and unnecessary elements&lt;br /&gt;
** Improved Performance - Smoother operation with reduced loading times&lt;br /&gt;
&#039;&#039;&#039;v1.04&#039;&#039;&#039;&lt;br /&gt;
* Added&lt;br /&gt;
** Emergency Stop System - Safe interruption of cleaning operations&lt;br /&gt;
*** Real-time Stop - Press Circle button during cleaning to stop safely&lt;br /&gt;
*** Operation Tracking - Monitors active operations and cleanup state&lt;br /&gt;
*** Emergency Screen - Clear feedback when operation is interrupted&lt;br /&gt;
*** Partial Results - Shows statistics of files actually deleted before interruption&lt;br /&gt;
*** Safe Cleanup - Proper resource cleanup when stopping mid-operation&lt;br /&gt;
*** Visual Feedback - Progress bar shows &amp;amp;quot;Stopping operation...&amp;amp;quot; when stopping&lt;br /&gt;
** Enhanced User Safety - Improved operation control&lt;br /&gt;
*** Graceful Interruption - Handling of operation interruption with user feedback&lt;br /&gt;
*** System State Preservation - Recovery options after emergency stop&lt;br /&gt;
*** Informative Emergency Screen - Details about what happened during interruption&lt;br /&gt;
* Technical&lt;br /&gt;
** Emergency Stop Flags - Global flags for operation state tracking&lt;br /&gt;
** Safe Operation Lifecycle - Start/end/cleanup operation management&lt;br /&gt;
** Improved Progress Bar - Visual feedback for emergency stop requests&lt;br /&gt;
** Resource Cleanup Functions - Proper cleanup when operations are interrupted&lt;br /&gt;
* UI &amp;amp;amp; UX Improvements&lt;br /&gt;
** Operation Management - Better handling of long-running operations&lt;br /&gt;
** Emergency Stop Request Handling - Safe state transitions during interruptions&lt;br /&gt;
** User Confirmation for Interrupted Operations - Clear messaging about operation status&lt;br /&gt;
&#039;&#039;&#039;v1.03&#039;&#039;&#039;&lt;br /&gt;
* Added &lt;br /&gt;
** Cleaning Profiles System - Three intelligent cleaning modes&lt;br /&gt;
*** Quick Profile - Only safe cache files (VitaShell, PKGi, RetroArch, Browser, etc.)&lt;br /&gt;
*** Complete Profile - All temporary files and system cleanup (default mode)&lt;br /&gt;
*** Selective Profile - User manually chooses which categories to clean&lt;br /&gt;
** Profile Selection Screen - Elegant initial screen at app startup&lt;br /&gt;
*** Navigate profiles with D-Pad Up/Down&lt;br /&gt;
*** Detailed descriptions for each profile mode&lt;br /&gt;
*** One-time selection that configures the entire session&lt;br /&gt;
** Cleanup Counter System - Persistent statistics tracking&lt;br /&gt;
*** Saves total number of cleaning sessions&lt;br /&gt;
*** Displays &amp;quot;Cleanup #X&amp;quot; on completion screen&lt;br /&gt;
*** Persistent storage in ux0:data/PSV_Cleaner/counter.txt&lt;br /&gt;
** Additional Cleaning Paths - Extended coverage&lt;br /&gt;
*** ux0:download/ and ux0:downloads/ complete directory scanning&lt;br /&gt;
*** Enhanced download temporary file detection&lt;br /&gt;
* Improved &lt;br /&gt;
** User Interface Centering - Professional text positioning&lt;br /&gt;
*** All main titles perfectly centered on screen&lt;br /&gt;
*** Consistent button alignment and spacing&lt;br /&gt;
*** Improved visual hierarchy&lt;br /&gt;
** Profile-Based Menu Initialization - Dynamic menu configuration&lt;br /&gt;
*** Menu options automatically set based on selected profile&lt;br /&gt;
*** Quick mode: only cache categories enabled by default&lt;br /&gt;
*** Complete mode: all cleaning options enabled&lt;br /&gt;
*** Selective mode: nothing pre-selected for manual choice&lt;br /&gt;
** Navigation Experience - Enhanced user flow&lt;br /&gt;
*** Square Button: Change cleaning profile anytime&lt;br /&gt;
*** Seamless switching between profile modes&lt;br /&gt;
*** Persistent profile memory during session&lt;br /&gt;
* Technical &lt;br /&gt;
** Added PROFILE_QUICK, PROFILE_COMPLETE, PROFILE_SELECTIVE enum system&lt;br /&gt;
** Dynamic menu initialization with profile parameter&lt;br /&gt;
** Persistent counter file management&lt;br /&gt;
** Enhanced download path coverage (now 95 cleaning paths total)&lt;br /&gt;
** Improved text positioning calculations for perfect centering&lt;br /&gt;
&#039;&#039;&#039;v1.02&#039;&#039;&#039;&lt;br /&gt;
* Added &lt;br /&gt;
** File Preview System - View all files that will be deleted before cleaning with detailed list&lt;br /&gt;
*** Scrollable file list supporting thousands of files&lt;br /&gt;
*** Individual file sizes displayed&lt;br /&gt;
*** Total files count and size summary&lt;br /&gt;
*** Navigate with D-Pad Up/Down&lt;br /&gt;
*** Confirm with X or cancel with O&lt;br /&gt;
** Enhanced File Detection - Added 40+ new cleaning paths&lt;br /&gt;
*** VitaGrafix cache and logs&lt;br /&gt;
*** reF00D cache&lt;br /&gt;
*** NoNpDrm temporary files&lt;br /&gt;
*** 0syscall6 cache&lt;br /&gt;
*** TAI plugin system cache&lt;br /&gt;
*** PSVshell logs and cache&lt;br /&gt;
*** SaveManager logs&lt;br /&gt;
*** VitaCheat, rinCheat, TropHAX logs&lt;br /&gt;
*** WebKit cache and localstorage&lt;br /&gt;
*** Network temporary files&lt;br /&gt;
*** SQLite temporary databases&lt;br /&gt;
*** Package installation temp files&lt;br /&gt;
*** Media thumbnails (picture, video, music)&lt;br /&gt;
*** RetroArch shader cache&lt;br /&gt;
*** Background download temp files&lt;br /&gt;
*** And more...&lt;br /&gt;
** Statistics Display - Detailed completion screen showing:&lt;br /&gt;
*** Total space freed&lt;br /&gt;
*** Number of files deleted&lt;br /&gt;
*** Visual success indicator&lt;br /&gt;
** Dump File Detection - Special scanning for crash dump files&lt;br /&gt;
*** Detects .psp2dmp files in ux0:data/&lt;br /&gt;
*** Detects .psp2core files in ux0:data/&lt;br /&gt;
*** Shows in preview list before deletion&lt;br /&gt;
* Improved &lt;br /&gt;
** Recursive Space Calculation - Fixed space calculation to scan subdirectories&lt;br /&gt;
*** Now correctly calculates all temporary files in nested folders&lt;br /&gt;
*** More accurate space estimation before cleaning&lt;br /&gt;
** Auto-Refresh After Cleaning - Space available automatically recalculates after each cleaning session&lt;br /&gt;
*** No more stuck at zero after cleaning&lt;br /&gt;
*** Fresh calculation on every app launch&lt;br /&gt;
** Memory Management - Dynamic file list with automatic expansion&lt;br /&gt;
*** Efficient memory allocation for large file lists&lt;br /&gt;
*** Proper cleanup to prevent memory leaks&lt;br /&gt;
* Fixed &lt;br /&gt;
** Space calculation showing zero after cleaning&lt;br /&gt;
** Missing files in subdirectories during scan&lt;br /&gt;
** Crash dump files not appearing in preview&lt;br /&gt;
* Technical &lt;br /&gt;
** Total cleaning paths increased from 54 to 94&lt;br /&gt;
** Added global file counter for deletion tracking&lt;br /&gt;
** Improved recursive directory scanning algorithm&lt;br /&gt;
** Enhanced preview system with scrollbar for large lists&lt;br /&gt;
&#039;&#039;&#039;v1.01&#039;&#039;&#039;&lt;br /&gt;
* Bug fix and other features.&lt;br /&gt;
&#039;&#039;&#039;v1.0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* itch.io - https://theherogac00.itch.io/psv-cleaner-playstation-vita-temporary-files-cleaner&lt;br /&gt;
* GitHub - https://github.com/theheroGAC/PSV-Cleaner&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Snes9x_3DS_(Updated_Fork)&amp;diff=205645</id>
		<title>Snes9x 3DS (Updated Fork)</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Snes9x_3DS_(Updated_Fork)&amp;diff=205645"/>
		<updated>2026-07-10T03:30:30Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=Snes9x Fork&lt;br /&gt;
|image=snes9xfork3ds.png&lt;br /&gt;
|description=SNES9x Port for 3DS / 2DS.&lt;br /&gt;
|author=bubble2k16, willjow, matbo87, Xeddius-Network&lt;br /&gt;
|lastupdated=2026/06/28&lt;br /&gt;
|type=Console&lt;br /&gt;
|version=1.61&lt;br /&gt;
|license=[https://github.com/matbo87/snes9x_3ds/blob/master/LICENSE.md LICENSE]&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/snes9xfork3ds.7z&lt;br /&gt;
|website=https://github.com/matbo87/snes9x_3ds&lt;br /&gt;
|source=https://github.com/matbo87/snes9x_3ds&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title= (Console) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=snes9xfork3ds.png&lt;br /&gt;
|image_alt=Snes9x Fork&lt;br /&gt;
}}&lt;br /&gt;
This project is a fork of the legacy [[SNES9x 3DS|snes9x_3ds]] codebase by [https://github.com/bubble2k16/snes9x_3ds bubble2k] and continues that work with a modernized architecture and improved user experience. It builds with current devkitARM, libctru and citro3d releases (as of June 2026). Optional assets are available in the dedicated asset repository: [https://github.com/matbo87/snes9x_3ds-assets snes9x_3ds-assets].&lt;br /&gt;
&lt;br /&gt;
It works on all 2DS and 3DS models. Old 2DS/3DS mainly struggle with Super FX and SA-1 games, but most SNES titles run well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Improved rendering for HDMA-heavy games and mosaic effects.&lt;br /&gt;
* SNES refresh rate matching (60.1 Hz for NTSC, 50 Hz for PAL).&lt;br /&gt;
* NDSP audio output.&lt;br /&gt;
* Rich visual customization with thumbnails, themes, per-game backgrounds and overlays.&lt;br /&gt;
* Crop and overscan.&lt;br /&gt;
* Improved cheat management.&lt;br /&gt;
* Extended hotkey options and screen swap support.&lt;br /&gt;
* Directory caching for faster ROM list loading.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&#039;&#039;&#039;Instructions:&#039;&#039;&#039;&lt;br /&gt;
* A modded 3DS is required.&lt;br /&gt;
* Install via [[Universal-Updater 3DS|Universal Updater]], or install the latest .cia from [https://github.com/matbo87/snes9x_3ds/releases Releases].&lt;br /&gt;
* Optional: download asset packs from [https://github.com/matbo87/snes9x_3ds-assets/releases snes9x_3ds-assets releases].&lt;br /&gt;
* ROMs can be stored in any folder. ZIP files are not supported.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3DSX version:&#039;&#039;&#039;&lt;br /&gt;
* Copy snes9x_3ds.3dsx to sd:/3ds/snes9x_3ds&lt;br /&gt;
* Start it from the Homebrew Launcher&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Supported ROM formats:&#039;&#039;&#039;&lt;br /&gt;
* .smc&lt;br /&gt;
* .sfc&lt;br /&gt;
* .fig&lt;br /&gt;
* .bs&lt;br /&gt;
* .bsx&lt;br /&gt;
&lt;br /&gt;
Configs, saves and imported assets are stored in sd:/3ds/snes9x_3ds.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
=== Assets (images and cheats) ===&lt;br /&gt;
Assets are provided in dedicated asset repository: [https://github.com/matbo87/snes9x_3ds-assets matbo87/snes9x_3ds-assets]&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* The repository follows a 1G1R-style selection.&lt;br /&gt;
* Naming is strict No-Intro style for matching.&lt;br /&gt;
&lt;br /&gt;
Folder structure:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
3ds/&lt;br /&gt;
  └── snes9x_3ds/&lt;br /&gt;
      ├── backgrounds/&lt;br /&gt;
      │   ├── game_screen/&lt;br /&gt;
      │   │   ├── _default.png&lt;br /&gt;
      │   │   ├── Super Mario World.png&lt;br /&gt;
      │   │   └── ...&lt;br /&gt;
      │   └── second_screen/&lt;br /&gt;
      │       ├── _default.png&lt;br /&gt;
      │       ├── Super Mario World.png&lt;br /&gt;
      │       └── ...&lt;br /&gt;
      ├── cheats/&lt;br /&gt;
      │   └── Super Mario World.chx&lt;br /&gt;
      │   └── ...&lt;br /&gt;
      ├── overlays/&lt;br /&gt;
      │   ├── _default.png&lt;br /&gt;
      │   ├── Super Mario World.png&lt;br /&gt;
      │   └── ...&lt;br /&gt;
      └── thumbnails/&lt;br /&gt;
          ├── boxart.cache&lt;br /&gt;
          ├── gameplay.cache&lt;br /&gt;
          └── title.cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== .CHX Cheat file format ===&lt;br /&gt;
The .CHX is a cheat file format that you can create with any text editor. Each line in the file corresponds to one cheat, and is of the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; [Y/N],[CheatCode],[Name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [Y/N] represents whether the cheat is enabled. Whenever you enable/disable it in the emulator, the .CHX cheat file will be modified to save your changes.&lt;br /&gt;
* [CheatCode] must be a Game Genie or a Pro Action Replay code. &lt;br /&gt;
** A Game Genie code looks like this: F38B-6DA4. &lt;br /&gt;
** A Pro-Action Replay code looks like this: 7E00DC04.&lt;br /&gt;
* [Name] is a short name that represents this cheat. Since this will appear in the emulator, keep it short (&amp;amp;lt; 30 characters).&lt;br /&gt;
&lt;br /&gt;
The .CHX must have the same name as your ROM. This is an example of a .CHX file:&lt;br /&gt;
&lt;br /&gt;
Filename: Gradius III (U) [I].CHX&lt;br /&gt;
&lt;br /&gt;
 Y,F38B-6DA4,Start with 31 lives&lt;br /&gt;
 Y,7E00DC04,Constant Megacrush (enemies die)&lt;br /&gt;
&lt;br /&gt;
You can only have either .CHT or .CHX in your ROM folder for the same ROM. If you have both, only the .CHX file will be effective.&lt;br /&gt;
&lt;br /&gt;
=== FAQ ===&lt;br /&gt;
&#039;&#039;&#039;Q. A game runs slow. How can I improve performance?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Increase &amp;lt;code&amp;gt;Frameskips&amp;lt;/code&amp;gt; (more than 2 isn&#039;t recommended)&lt;br /&gt;
* Set &amp;lt;code&amp;gt;Frame Sync Method&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Sleep Sync&amp;lt;/code&amp;gt;&lt;br /&gt;
* Set &amp;lt;code&amp;gt;In-Frame Palette Changes&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Disabled Style 1&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Disabled Style 2&amp;lt;/code&amp;gt;&lt;br /&gt;
* Set &amp;lt;code&amp;gt;SRAM Auto-Save Delay&amp;lt;/code&amp;gt; to 60 seconds or disable it&lt;br /&gt;
* Disable 3D and/or on-screen display settings&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. A game looks or sounds wrong. What can I try?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Set &amp;lt;code&amp;gt;In-Frame Palette Changes&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Enabled&amp;lt;/code&amp;gt;&lt;br /&gt;
* Increase &amp;lt;code&amp;gt;Audio Buffer Size&amp;lt;/code&amp;gt; if audio crackles, skips or stutters&lt;br /&gt;
* Enabled cheats can break visuals or gameplay; disable cheats and reload the game&lt;br /&gt;
* Check if your ROM is valid (No-Intro is highly recommended; ROM hacks may have issues)&lt;br /&gt;
* Check the [https://github.com/matbo87/snes9x_3ds/blob/master/KNOWN_ISSUES.md Known Issues]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. Cheats are not working properly&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Cheat support is only lightly tested and some codes may not work correctly&lt;br /&gt;
* Use cheats with caution: broken codes can affect gameplay or damage save data&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Q. Satellaview (BS-X) games&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Satellaview games are supported, but compatibility is hit-or-miss. See [https://github.com/matbo87/snes9x_3ds/blob/master/KNOWN_ISSUES.md Known Issues] for details and per-game status.&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Touchscreen - Menu&lt;br /&gt;
&lt;br /&gt;
Up/Down - Choose option&lt;br /&gt;
&lt;br /&gt;
A - Confirm &lt;br /&gt;
&lt;br /&gt;
X+D-Pad Up/Down - Page Up/Page Down)&lt;br /&gt;
&lt;br /&gt;
Left/Right - Change between ROM selection and emulator options&lt;br /&gt;
&lt;br /&gt;
You can quit the emulator to your homebrew launcher/your CFW&#039;s home screen.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/snes9xfork3ds-01.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/snes9xfork3ds-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/snes9xfork3ds-03.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/snes9xfork3ds-04.png&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v1.61&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** Added 3D depth strength setting and refined splash/background depth effects ([https://github.com/matbo87/snes9x_3ds/issues/65 #65])&lt;br /&gt;
*** Custom game-screen backgrounds are now ideally 448x256 instead of 400x240; 400x240 images can expose edges at higher 3D depth settings.&lt;br /&gt;
*** Updated 448x256 game-screen backgrounds are available in the [https://github.com/matbo87/snes9x_3ds-assets/releases/tag/v1.1.0 snes9x_3ds-assets v1.1.0] release.&lt;br /&gt;
** Added save-state screenshot previews&lt;br /&gt;
** Added per-game crop/overscan control ([https://github.com/matbo87/snes9x_3ds/issues/55 #55])&lt;br /&gt;
** Added scanlines&lt;br /&gt;
** Added Mode 7 bilinear smoothing (thanks to f4mrfaux) ([https://github.com/matbo87/snes9x_3ds/pull/68 #68])&lt;br /&gt;
** Added Frame Sync setting with VBlank/Sleep pacing options&lt;br /&gt;
*** Sleep Sync can make games run smoother when they stutter or won&#039;t hold full speed, e.g. DKC2 on Old 3DS.&lt;br /&gt;
* Rendering &amp;amp;amp; Compatibility&lt;br /&gt;
** Improved HDMA/in-frame palette compatibility for games with mid-frame palette changes ([https://github.com/matbo87/snes9x_3ds/pull/73 #73])&lt;br /&gt;
*** Helps games such as Top Gear and Super Turrican.&lt;br /&gt;
** Added mosaic rendering support (thanks to f4mrfaux) ([https://github.com/matbo87/snes9x_3ds/pull/70 #70])&lt;br /&gt;
** Fixed stale core data after switching ROMs&lt;br /&gt;
** Fixed several game-specific rendering/timing issues&lt;br /&gt;
*** Includes fixes for Sim City intro, Jurassic Park transparency and Super Bases Loaded 2 crash.&lt;br /&gt;
** Optimized Mode 7 tile 0 blit (thanks to f4mrfaux) ([https://github.com/matbo87/snes9x_3ds/pull/67 #67])&lt;br /&gt;
* Audio&lt;br /&gt;
** Migrated audio output from CSND to NDSP and improved audio scheduling/stability (thanks to f4mrfaux) ([https://github.com/matbo87/snes9x_3ds/pull/58 #58], [https://github.com/matbo87/snes9x_3ds/commit/7ff81cc18ee599792788765641c46d07ad427c4a 7ff81cc])&lt;br /&gt;
** Added audio buffer size setting&lt;br /&gt;
*** Lower values reduce latency; higher values reduce the chance of crackling.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Added [https://github.com/matbo87/snes9x_3ds/blob/v1.61/KNOWN_ISSUES.md KNOWN_ISSUES.md] with compatibility notes for problematic games, Satellaview (BS-X) titles and common visual/audio issues.&lt;br /&gt;
&#039;&#039;&#039;v1.60.2&#039;&#039;&#039;&lt;br /&gt;
* Bug Fixes&lt;br /&gt;
** Fixed in-game freeze after toggling &amp;amp;quot;Disable 3D&amp;amp;quot; in menu ([https://github.com/matbo87/snes9x_3ds/issues/54 #54]) ([https://github.com/matbo87/snes9x_3ds/commit/52519966952f147694331be0f372f52deab4c3fb 5251996])&lt;br /&gt;
** Fixed SNES core regressions introduced by earlier cleanup commits ([https://github.com/matbo87/snes9x_3ds/commit/14af4191c13a28ac5b4fad388b62c22de39dd791 14af419], [https://github.com/matbo87/snes9x_3ds/commit/fb200abbcad6aa3012486172f08b7d92a9c318db fb200ab])&lt;br /&gt;
* Other Improvements&lt;br /&gt;
** Reintroduced fast-forward hold hotkey and preserved legacy config compatibility ([https://github.com/matbo87/snes9x_3ds/issues/23 #23]) ([https://github.com/matbo87/snes9x_3ds/commit/ce600fc1fe10a4f4fb59d3b0ac3c9444795ffe64 ce600fc])&lt;br /&gt;
** Minor UI adjustments ([https://github.com/matbo87/snes9x_3ds/commit/e097bb6dd31886a552e91714a4e283233b727c2b e097bb6], [https://github.com/matbo87/snes9x_3ds/commit/5b6188aab0e94bd37f6a188714d1b7b7c71193db 5b6188a])&lt;br /&gt;
&#039;&#039;&#039;v1.60.1&#039;&#039;&#039;&lt;br /&gt;
* Bug Fixes&lt;br /&gt;
** Fixed VRAM read control flow regression ([https://github.com/matbo87/snes9x_3ds/issues/46 #46]) ([https://github.com/matbo87/snes9x_3ds/commit/c32c5ab569ef104397b1ae861547ff71ff2bc27e c32c5ab])&lt;br /&gt;
** Fixed WindowLR overlap tagging when trimming black scanlines ([https://github.com/matbo87/snes9x_3ds/issues/46 #46]) ([https://github.com/matbo87/snes9x_3ds/commit/d536983fca3191096a1a91ee9110fdeb89230cc0 d536983])&lt;br /&gt;
* Reintroduced Features&lt;br /&gt;
** Reintroduced optional screen smoothing for stretched modes ([https://github.com/matbo87/snes9x_3ds/issues/51 #51]) ([https://github.com/matbo87/snes9x_3ds/commit/432d202495a751453bd1506366ec800547bb1ea2 432d202])&lt;br /&gt;
** Reintroduced per-game framerate override (Auto or Force 60 FPS) ([https://github.com/matbo87/snes9x_3ds/issues/50 #50]) ([https://github.com/matbo87/snes9x_3ds/commit/b4f45e83d9f3c52a02838da009584cffac622b01 b4f45e8])&lt;br /&gt;
* Maintenance&lt;br /&gt;
** Documented bundled makerom sources for provenance ([https://github.com/matbo87/snes9x_3ds/issues/47 #47]) ([https://github.com/matbo87/snes9x_3ds/commit/4cae63094ec24ec13fecb0a36643b24f7c023682 4cae630])&lt;br /&gt;
** CI/tooling updates for GitHub Actions compatibility ([https://github.com/matbo87/snes9x_3ds/commit/475042a9d49e7545f55a97ae69b043b07a049e71 475042a], [https://github.com/matbo87/snes9x_3ds/commit/7e1a91a4ed1859b81dd30b87de22362943a7f342 7e1a91a])&lt;br /&gt;
&#039;&#039;&#039;v1.60&#039;&#039;&#039;&lt;br /&gt;
* Major Changes&lt;br /&gt;
** &#039;&#039;&#039;Rendering backend migration&#039;&#039;&#039;: move from legacy GPU code to citro3d&lt;br /&gt;
** &#039;&#039;&#039;Draw-call batching overhaul&#039;&#039;&#039;: fewer draw calls via batched rendering and XOR-based packed render-state diffing&lt;br /&gt;
** &#039;&#039;&#039;GPU decoupling&#039;&#039;&#039;: separate &amp;lt;code&amp;gt;gfxhw&amp;lt;/code&amp;gt; state preparation from the GPU submission path for a cleaner rendering pipeline&lt;br /&gt;
* Performance&lt;br /&gt;
** &#039;&#039;&#039;Rendering throughput&#039;&#039;&#039;:&lt;br /&gt;
*** layer/section collection and merged backdrop/color-math passes to reduce redundant draws&lt;br /&gt;
*** uniform upload and render-state update optimizations (including patched citro3d max-dirty behavior)&lt;br /&gt;
** &#039;&#039;&#039;I/O and memory&#039;&#039;&#039;:&lt;br /&gt;
*** faster save/config writes and improved file I/O architecture&lt;br /&gt;
*** reduced heap fragmentation pressure&lt;br /&gt;
*** menu/file navigation streamlined, with snappier behavior on old 2DS/3DS models&lt;br /&gt;
*** improved ROM list caching&lt;br /&gt;
** &#039;&#039;&#039;Asset handling&#039;&#039;&#039;:&lt;br /&gt;
*** background assets on 16-bit texture formats (RGB565) to reduce memory bandwidth/footprint&lt;br /&gt;
*** replace &amp;lt;code&amp;gt;stb_image&amp;lt;/code&amp;gt; with a &amp;lt;code&amp;gt;libpng&amp;lt;/code&amp;gt;-based path that uses a shared file scratch buffer (&amp;lt;code&amp;gt;g_fileBuffer&amp;lt;/code&amp;gt;) and an aligned shared stream buffer (&amp;lt;code&amp;gt;g_streamBuffer&amp;lt;/code&amp;gt;) to reduce heap churn/fragmentation&lt;br /&gt;
* Features&lt;br /&gt;
** &#039;&#039;&#039;Thumbnail system&#039;&#039;&#039;:&lt;br /&gt;
*** replace fragile thumbnail background-thread loading with on-demand reads from one cache file per thumbnail type&lt;br /&gt;
*** removes shared-state race issues and keeps thumbnail loading fast and stable for large ROM folders&lt;br /&gt;
** &#039;&#039;&#039;SNES-accurate refresh-rate matching&#039;&#039;&#039;:&lt;br /&gt;
*** when gameplay starts/resumes, 3DS LCD timing is set to the game&#039;s native SNES rate (NTSC ~60.1 Hz / PAL 50 Hz)&lt;br /&gt;
** &#039;&#039;&#039;On-Screen Display&#039;&#039;&#039;:&lt;br /&gt;
*** bezel overlay with auto-fit support&lt;br /&gt;
*** FPS overlay option&lt;br /&gt;
*** GPU-accelerated notifications&lt;br /&gt;
** &#039;&#039;&#039;Stereoscopic 3D additions&#039;&#039;&#039;:&lt;br /&gt;
*** basic 3D support for splash screen, in-game scene background, and pause overlay&lt;br /&gt;
* Stability &amp;amp;amp; Code Quality&lt;br /&gt;
** &#039;&#039;&#039;Code-quality cleanup&#039;&#039;&#039;: broad typing, const/sign correctness, return-path, warning cleanup across both 3DS frontend and SNES core&lt;br /&gt;
** &#039;&#039;&#039;Build warning policy upgrade&#039;&#039;&#039;: remove old global warning suppression (&amp;lt;code&amp;gt;-w&amp;lt;/code&amp;gt;) and move to enabled warnings enforcing &amp;lt;code&amp;gt;-Werror&amp;lt;/code&amp;gt; by default&lt;br /&gt;
* Breaking Changes&lt;br /&gt;
** &#039;&#039;&#039;Config migration&#039;&#039;&#039;: &amp;lt;code&amp;gt;settings.cfg&amp;lt;/code&amp;gt; may not migrate cleanly in all cases; defaults can be applied&lt;br /&gt;
** &#039;&#039;&#039;Thumbnail assets&#039;&#039;&#039;: legacy per-image thumbnail folders are obsolete; thumbnails now load from &amp;lt;code&amp;gt;*.cache&amp;lt;/code&amp;gt; files (&amp;lt;code&amp;gt;boxart.cache&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;gameplay.cache&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;title.cache&amp;lt;/code&amp;gt;)&lt;br /&gt;
** &#039;&#039;&#039;Background asset paths&#039;&#039;&#039;:&lt;br /&gt;
*** &amp;lt;code&amp;gt;snes9x_3ds/borders&amp;lt;/code&amp;gt; -&amp;amp;gt; &amp;lt;code&amp;gt;snes9x_3ds/backgrounds/game_screen&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;snes9x_3ds/covers&amp;lt;/code&amp;gt; -&amp;amp;gt; &amp;lt;code&amp;gt;snes9x_3ds/backgrounds/second_screen&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.52&#039;&#039;&#039;&lt;br /&gt;
* Improved thread safety to prevent crashes from concurrent ROM list access.&lt;br /&gt;
* Enhanced shutdown stability by fixing resource cleanup issues.&lt;br /&gt;
* Added display options.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.51.1&#039;&#039;&#039;&lt;br /&gt;
*Bug Fixes:&lt;br /&gt;
** Old 3DS, Old 2DS: fix crash on O3DS/O2DS when user opens menu after game has loaded ([https://github.com/matbo87/snes9x_3ds/issues/11 #11]) ([https://github.com/matbo87/snes9x_3ds/commit/71ed471f3f9bfea74f42105ddbbbf3b9e9a94c07 71ed471])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.51&#039;&#039;&#039;&lt;br /&gt;
*Features:&lt;br /&gt;
** Theme option: add Dark mode and RetroArch theme ([https://github.com/matbo87/snes9x_3ds/issues/2 #4]) ([https://github.com/matbo87/snes9x_3ds/commit/d343ca60fb0e380fa9b4239c7ebf346e0ff86e6c d343ca6]).&lt;br /&gt;
** File menu: adjust navigation pattern + provide more options in file menu tab ([https://github.com/matbo87/snes9x_3ds/issues/2 #4] [https://github.com/matbo87/snes9x_3ds/commit/d343ca60fb0e380fa9b4239c7ebf346e0ff86e6c d343ca6], [https://github.com/matbo87/snes9x_3ds/commit/ea2cd3fa970f81a4384ebf0c7b014b429d4d7d34 ea2cd3f])&lt;br /&gt;
*** Going up a directory by pressing B.&lt;br /&gt;
*** Option to set a default starting folder.&lt;br /&gt;
*** Delete game option.&lt;br /&gt;
*** Random game option.&lt;br /&gt;
** Pause screen: show a decent pause screen when menu is open during gameplay ([https://github.com/matbo87/snes9x_3ds/commit/4c9f3ecb333eaf23da85e9199bdbbfa3511312dd 4c9f3ec])&lt;br /&gt;
*Bug Fixes:&lt;br /&gt;
** O2DS: fix crash on O2DS (and probably O3DS as well) when saving SRAM ([https://github.com/matbo87/snes9x_3ds/issues/2 #2] ([https://github.com/matbo87/snes9x_3ds/commit/02788b17d038e30e612dcbf0719ec45a8fc54a43 02788b1])&lt;br /&gt;
*Code Refactoring:&lt;br /&gt;
** Menu: reduce redundant code + preserve selected item index per tab ([https://github.com/matbo87/snes9x_3ds/commit/493c1a22b3975c7cb39a55dbd38140e5e3cd2a14 493c1a2], [https://github.com/matbo87/snes9x_3ds/commit/4d6378a507cb77571e4444abb6fbd0df3ff5f555 4d6378a])&lt;br /&gt;
** Dialogs: remove unnecessary animations for a snappier appearance ([https://github.com/matbo87/snes9x_3ds/commit/2bb82c69512a2ef894ee5bb049be13ba567b6e89 2bb82c6])&lt;br /&gt;
** Second screen content: clean up + prevent flickering when info dialog appears/disappears ([https://github.com/matbo87/snes9x_3ds/commit/c1899df01828b9653c3c635695e61d1ce4fbeaee c1899df])&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.50&#039;&#039;&#039;&lt;br /&gt;
*Features:&lt;br /&gt;
** Game preview option: boxart, title or gameplay.&lt;br /&gt;
** Improved cheat menu: now with available/activated indicator.&lt;br /&gt;
** Updated Banner: based on SNES VC banner.&lt;br /&gt;
** Menu clean up:&lt;br /&gt;
*** Reset config(s) option.&lt;br /&gt;
*** Autosave is now game-specific.&lt;br /&gt;
*** Show saving dialog instead of freezed menu.&lt;br /&gt;
*Bug Fixes:&lt;br /&gt;
** Cheats: Fix cheats not loaded/saved properly.&lt;br /&gt;
** Default button mappings: Fix missing default controls.&lt;br /&gt;
** Home menu button: make emulator quit properly when user exits via home menu button.&lt;br /&gt;
** Pixel perfect mode: Fix blurry image (mentioned [https://github.com/asdolo/snes9x_3ds_forwarder/pull/1 here]).&lt;br /&gt;
** Long game lists: Fix app crash on exit.&lt;br /&gt;
*Code Refactoring:&lt;br /&gt;
** Makefile &amp;amp;amp; app.rsf: use TricksterGuy&#039;s [https://github.com/TricksterGuy/3ds-template 3ds-template], update compiler options.&lt;br /&gt;
** Image loading/rendering: use stb_image instead of lodepng for faster image decoding, unify image rendering logic.&lt;br /&gt;
** Second screen content: improve performance.&lt;br /&gt;
*Breaking changes:&lt;br /&gt;
** Folder structure: All game related files are now in &amp;amp;quot;3ds/snes9x_3ds&amp;amp;quot;, similar to RetroArch folder structure.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.45&#039;&#039;&#039;&lt;br /&gt;
* Buffered file writer for faster config saves (thanks to [https://github.com/willjow/snes9x_3ds willjow]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.42&#039;&#039;&#039;&lt;br /&gt;
* Fixed screen tearing.&lt;br /&gt;
* Added option to disable 3D Slider (thanks to ramzinouri).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.41&#039;&#039;&#039;&lt;br /&gt;
* Fixed hotkey for making screenshot.&lt;br /&gt;
* Fixed quick save/load (no data abort exceptions anymore).&lt;br /&gt;
* Fixed Errors if cover image is missing.&lt;br /&gt;
* Updated assets (icon, banner, border, cover).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.40&#039;&#039;&#039;&lt;br /&gt;
* Added Swap Game Screen option.&lt;br /&gt;
* Added switch controller option like in official Virtual Console (SF2 &amp;amp;quot;Training Mode&amp;amp;quot;, Konami cheat, ...).&lt;br /&gt;
* Custom second screen image and border for every game (thanks to ramzinouri and Asdolo).&lt;br /&gt;
* Game Info option for second screen.&lt;br /&gt;
* Provide more Hotkeys (Quick Save/Load, Swap Controllers).&lt;br /&gt;
* Disable Analog to Digital Type option which allows you to use circle pad for hotkeys as well.&lt;br /&gt;
* All game related files like cheats or save states are now in a single folder (folder name = rom name).&lt;br /&gt;
* Screenshots are now in PNG format (thanks to ramzinouri).&lt;br /&gt;
* Removed BlargSNES DSP Core, updated dsp-1, added dsp-2 -3 and -4 (thanks to ramzinouri).&lt;br /&gt;
&lt;br /&gt;
=== bubble2k versions ===&lt;br /&gt;
&#039;&#039;&#039;v1.30&#039;&#039;&#039;&lt;br /&gt;
* Improved sound synchronization.&lt;br /&gt;
* Added BlargSNES DSP Core (experimental) for performance. The original Snes9X DSP core (default) suffers from sound skipping in some games like Aladdin and Gradius 3. You can choose which DSP core to use from the Options menu. The BlargSNES DSP Core sounds similar to the Snes9x Core for most games. Sounds like Final Fantasy 3&#039;s the howling wind sound different.&lt;br /&gt;
* Added support for Tengai Makyou Zero English Patch (for hopefully all future versions).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.21&#039;&#039;&#039;&lt;br /&gt;
* Fixed the ZL/ZR button problem when installing the CIA version.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.20&#039;&#039;&#039;&lt;br /&gt;
* Fixed slider problem in New 3DS (where one of the eyes always sees a black screen).&lt;br /&gt;
* Added button mappings and rapid fire settings like VirtuaNES / TemperPCE 3DS (thanks to AdmiralCurtiss).&lt;br /&gt;
* Added button configuration to open emulator menu and fast-forward (thanks to AdmiralCurtiss). Use with care, though. In some games, fast-forwarding can freeze/corrupt your game.&lt;br /&gt;
* Added a frame rate option to v-sync with the 60Hz 3DS refresh rate (thanks AdmiralCurtiss).&lt;br /&gt;
* Added an option to auto-save state when exiting and loading when starting a new game. (thanks AdmiralCurtiss).&lt;br /&gt;
* Added an option to force saving of SRAM, required by Yoshi&#039;s Island. (thanks AdmiralCurtiss).&lt;br /&gt;
* Show 3DS battery level in the bottom right of the menu (thanks ramzinouri).&lt;br /&gt;
* Increased scrolling speed in menu when holding down the D-pad.&lt;br /&gt;
* Added memory mapper support for Tengai Makyou Zero English Patch (version 1.0 released 22 Oct 2017).&lt;br /&gt;
* Supports most original BS Zelda (1-4, Map 2 1-4, Ancient Stone Tablets 1-4), except for the Remix version which still boots into black screen (thanks ramzinouri).&lt;br /&gt;
* And other text changes (thanks FateForWindows).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.11&#039;&#039;&#039;&lt;br /&gt;
* Fixed crashing bug when loading CHX cheat files.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.10&#039;&#039;&#039;&lt;br /&gt;
* Implemented SA-1 sleep speed-hacks on the following games. These games run faster and some are able to run at 60 fps on the Old 3DS when things on-screen aren&#039;t too busy. Super Mario RPG; Kirby’s Dreamland; Jikkyou Oshaberi Parodius; Kirby Super Star; Marvelous; Super Robot Taisen; Panic Bomber World; Dragon Ball Hyper Dimension; SD Gundam Next; Power Rangers Zeo; Daisenryaku Expert 2; Masters New Augusta 3; Bass Fishing; J96 Dream Stadium; Shining Scorpion; Pebble Beach New; PGA European Tour; SD F1 Grand Prix;&lt;br /&gt;
* Fixed mode 7’s CLIP_10_BIT_SIGNED formula to use the original Snes9x’s formula. This fixes Super Chase HQ’s mode 7 intro.&lt;br /&gt;
* Imported SPC7110 decompressor chip code from Snes9x 1.52. Now Tengai Makyou Zero (Far East of Eden Zero) can boot after 2 restarts, and in-game graphics appears without problems.&lt;br /&gt;
* Fixed important bug in cheat engine so that it doesn&#039;t not increment the 65816 processor&#039;s clock cycles when enabling/disabling cheats.&lt;br /&gt;
* Fixed the problem of the menu not using the correct font when the emulator first boots up.&lt;br /&gt;
* Added one more mode when using the 3D slider for a sharper image.&lt;br /&gt;
* Major refactoring of code.&lt;br /&gt;
* Fixed SA1 MMC&#039;s memory map code by copying it from Snes9x 1.54.2. Now Super Mario World hack VLDC 9 boots.&lt;br /&gt;
* Fixed Mode 0 rendering bug. The original bug was there since day 1 and with this fix, Lagoon&#039;s title screen looks right.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.00&#039;&#039;&#039;&lt;br /&gt;
* Transplanted the full SPC700 + DSP source codes from Snes9x v1.51 into this emulator. As a result, the sound emulation now supports Gaussian Interpolation, and has better accuracy. This fixes some sound problems in Clay Fighter and Mortal Kombat I and II.&lt;br /&gt;
* Fixed Mode 7 priorities in games that use this: Contra III&#039;s stage 1 (at the loss of some color fidelity). Implementing this required the use of some crazy math hacks and hardware tricks to pull this off.&lt;br /&gt;
* Implemented some experimental speed hacks for Super Mario RPG and Kirby&#039;s Dreamland. Runs slightly faster (still not full speed) on Old 3DS.&lt;br /&gt;
* Implemented hi-res translucency. We get non-flickering emulation of hi-res screens (Secret of Mana, Seiken Densetsu 3, A.S.P. Air Strike Patrol) now as a bonus. As a result, Kirby&#039;s Dreamland is now playable.&lt;br /&gt;
* Invented a new cheat file format .CHX (text file) so that players can add cheats by using any text editor.&lt;br /&gt;
* Centralized the SNES output screen vertically on the top screen.&lt;br /&gt;
* Overhauled the user interface to give a more modern look as well as provide additional fonts.&lt;br /&gt;
* Added more screen stretch options as requested by many users.&lt;br /&gt;
* Added 3D slider support. Pushing up the 3D slider doesn&#039;t create any 3D effect, but may create a better viewing experience.&lt;br /&gt;
* Removed unnecessary debug messages during start up / shut down of the emulator.&lt;br /&gt;
* Fixed a bug when the SRAM still saves randomly when it is set to Disabled.&lt;br /&gt;
* Reduced memory footprint for storing texture position caches.&lt;br /&gt;
* Made this version buildable with libctru v1.2.0 (thanks to Maki-chan) [Note: Building with devkitARM r46 and libctru v1.2.0 will cause a bug where the emulator cannot utilize the full clock speed of the New 3DS.]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.80&#039;&#039;&#039;&lt;br /&gt;
* Fixed NMI interrupt for specific games such as Cu-On-Pa. This allows Cu-On-Pa to get past the selection screen.&lt;br /&gt;
* Fixed ROM size calculation for Wonder Project J (English Patch). The game no longer hangs at the menu.&lt;br /&gt;
* Implemented optimized rendering for offset-per-tile modes. This gives many games a major performance boost. Games such as Strike Gunner STG, Tetris Attack, Kirby&#039;s Avalanche, Contra&#039;s Stage 1 Boss, Super Mario All-Stars&#039; Super Mario 2 all benefit from this improvement.&lt;br /&gt;
* Implemented optimized rendering for sprites for modest performance boost.&lt;br /&gt;
* Used SPC700 core from Snes9x v1.51.&lt;br /&gt;
* Re-implemented an moderately optimized SA-1 core. Now games like Kirby Super Star, Super Mario RPG can boot. It will NOT run well on the old 3DS currently, but it will run smooth on a new 3DS with full clock speed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.71&#039;&#039;&#039;&lt;br /&gt;
* Fixed nasty bug that breaks loading of the second ROM, if the first ROM was loaded from a directory path that has spaces in it.&lt;br /&gt;
* Added feature to allow users to page up/down the options in the menu while holding down X.&lt;br /&gt;
* Minor optimizations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.70&#039;&#039;&#039;&lt;br /&gt;
* Fixed sprites priority issues. This fixes sprites problems of Shadowrun, Chrono Trigger, Super Mario All Stars&#039; (and possibly other games too).&lt;br /&gt;
* The newly implemented rendering engine also provides some modest speed improvements in some games.&lt;br /&gt;
* Added feature to save the directory of the previously loaded ROM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.63&#039;&#039;&#039;&lt;br /&gt;
* Fixed bug in DMA when the source address comes from Save RAM. This fixes a number of Super Mario World Hacks so that text is readable on BG layer 3.&lt;br /&gt;
* Fixed menu key lock issue to improve usability when exiting from menu back into the game.&lt;br /&gt;
* Fixed DKC tile corruption issue. This probably also fixes most (if not all) tile corruption issues in other games, if you play a game for too long in a single sitting.&lt;br /&gt;
* Fixed sound problems when auto-saving SRAM. Somehow the hardware or the library doesn&#039;t like us stopping and starting the CSND too often. Not too sure what the problem is.&lt;br /&gt;
* Added an auto-save SRAM option to tell the emulator when to save SRAM (1 second, 10 seconds, 60 seconds, or disable auto-save). Note that regardless of the setting, the emulator will always save any modified SRAM every time you touch the bottom screen to activate the menu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.62&#039;&#039;&#039;&lt;br /&gt;
* Improved Mode 7 zoomed-in textures. Games like Seiken Densetsu, ActRaiser 1/2 look better when viewing the Mode 7 textures near to the ground. Thanks for Discostew for the motivation.&lt;br /&gt;
* Improved sound handling to ensure that the left speaker plays at the same volume as the right speaker.&lt;br /&gt;
* Added option to change in-frame palette handling. There are three options to choose from:&lt;br /&gt;
** Enabled. (Slow, accurate, but never as accurate as software) &lt;br /&gt;
** Disabled Style 1 (faster, less accurate) &lt;br /&gt;
** Disabled Style 2 (faster, less accurate) works a little differently from Style 1 Most games are by default Disabled Style 2.&lt;br /&gt;
** Bahamut Lagoon and Front Mission Gun Hazard are by default Disabled Style 1. Wild Guns, Judge Dredd, Batman Forever are by default Enabled.&lt;br /&gt;
* Fixed Clock Tower to boot properly again.&lt;br /&gt;
* Fixed Star Fox flickering problem when there are frameskips.&lt;br /&gt;
* Fixed outside-of-track texture problem with Super Mario Kart’s Bowser Castle stages.&lt;br /&gt;
* Fixed Final Fantasy V Intro logo cutout problem.&lt;br /&gt;
* Fixed Donkey Kong Country&#039;s tile colour corruption bug.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.61&#039;&#039;&#039;&lt;br /&gt;
* Fixed DSP bug that causes some games like Dragon Ball - Super Budoten 3, Umihara Kawase to mute.&lt;br /&gt;
* Fixed bug that doesn&#039;t stop sound from playing when saving to SRAM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.6&#039;&#039;&#039;&lt;br /&gt;
* Default sound amplification to 2x …&lt;br /&gt;
* Reduced GPU freezing problem after loading new ROMs / resetting too many times.&lt;br /&gt;
* Resynchronise sound when you go into the menu (you can reset the sync this way after waking your 3DS from sleep mode).&lt;br /&gt;
* Improved sound sample rate to 32 KHz, and added echo and interpolation. The result is overall better sound quality.&lt;br /&gt;
* Improved sync between SPC700 emulation and the DSP.&lt;br /&gt;
* Fixed Contra III Mode 7 EXTBG colors again.&lt;br /&gt;
* Enabled the SPC700 Envelope Height reading.&lt;br /&gt;
* Fixed Chrono Trigger music not resuming after any battle music or “sealed by mysterious force” music.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.51&#039;&#039;&#039;&lt;br /&gt;
* Implemented pseudo hi-res mode 5 using alternate frame flickering to achieve the pseudo hi-res mode. Games that use this mode include: Secret of Mana, Seiken Densetsu 3, Air Strike Patrol, and a number of others.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.5&#039;&#039;&#039;&lt;br /&gt;
* Implemented major graphic rendering optimizations for color handling, transparency and window effects. Although codes from BlargSNES was not used directly, ideas came from BlargSNES. Some games that use windowing effects should see some / significant performance increase. F-Zero (US / EUR versions) run full speed. Super Mario Kart (EUR) runs full speed. Axelay (US) runs at a playable speed. Breath of Fire 2 battle transition effects are smooth. Super Mario World circular window fade-in/out effects are smooth. etc.&lt;br /&gt;
* Fixed sprite flickering problems in Yoshi&#039;s Island and DKC2.&lt;br /&gt;
* Fixed 256-color background problems. DKC1/2 and Earthworm Jim 2 intro shows up correctly.&lt;br /&gt;
* Fixed Mode 7 BG2 problems. Now Super Star Wars - Empire Strikes Back (snowspeeder stage) works correctly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.42&#039;&#039;&#039;&lt;br /&gt;
* Minor optimisation to GPU drawing.&lt;br /&gt;
* Increased maximum number of cheats to 200.&lt;br /&gt;
* Fix the crashing problem if there are too many cheats in the .CHT file.&lt;br /&gt;
* Fixed the too many sprites on screen problem (fixes Shadowrun freezing).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.41&#039;&#039;&#039;&lt;br /&gt;
* Fixed some transparency issues with Saturday Night Slam Master and Ghost Chaser Densei.&lt;br /&gt;
* Updated SRAM saving timing.&lt;br /&gt;
* Minor optimisation for SuperFX emulation.&lt;br /&gt;
* First implementation of speed hacks (experimental for F-Zero, Axelay, Super Mario Kart, Yoshi’s Island)&lt;br /&gt;
* Modified some debugging stuff.&lt;br /&gt;
* Fixed some mode 7 glitches when a mode 7 game (like Super Mario Kart has been running for more than a few minutes).&lt;br /&gt;
* Implemented palette flickering hack for Front Mission Gun Hazard, Bahamut Lagoon.&lt;br /&gt;
* Implemented hack for Power Rangers Fighting Edition to prevent graphical glitches&lt;br /&gt;
* Implemented hack for delayed SRAM (per 1 minute) saving for Star Ocean&lt;br /&gt;
* Fixed the problem of loading up too many different ROMs once after another, causing the loading to finally fail.&lt;br /&gt;
* When loading a game without settings, reset the frame rate setting to be based on the game&#039;s region.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.4&#039;&#039;&#039;&lt;br /&gt;
* Experimental cheat feature. Requires you to have the .CHT file (May corrupt your save game, use at your own risk).&lt;br /&gt;
* Added settings to enable turbo buttons (per game).&lt;br /&gt;
* Added settings to allow user to amplify volume (per game) (beware of sound clipping that results in terrible sounds).&lt;br /&gt;
* Palette hack for Secret of Mana to ensure that the dialog borders are blue (the bottom status window still behaves oddly due to palette changes).&lt;br /&gt;
* Transparency fixes: o Legend of Zelda&#039;s prologue&#039;s dark room o Reported dark tints on several games like Doremi Fantasy, Bomberman, Secret of Mana, Chrono Trigger o Gradient shading on dialog boxes for Chrono Trigger and Final Fantasy III (battles) appear correct.&lt;br /&gt;
* Fixed window clip problems.&lt;br /&gt;
* Fixed mode 7 glitches causing mode 7 bugs in Secret of Mana, NHL 94, Magical Quest 3.&lt;br /&gt;
* Fixed a number of sprite clipping problems o Megaman 7&#039;s Dr Wily&#039;s spaceship in the intro now pans in from the left correctly o Tales of Phantasia&#039;s trainee&#039;s sprites (after the intro) now clips correct.&lt;br /&gt;
* Fixed color inconsistency causing some white sprites to be visible on a white background (eg. in NHL&#039;s EA Sports intro screen).&lt;br /&gt;
* Added speed hack for games that use the WAI instruction (esp Donkey Kong Country 1, 2, 3 should see a good speed increase).&lt;br /&gt;
* Added hack to avoid hiding sprites even if they exceed the maximum number the real hardware can display. Apparently, this fixes the missing cursor in Final Fantasy III.&lt;br /&gt;
* And other bugs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.35&#039;&#039;&#039;&lt;br /&gt;
* Fixed Super Mario Kart grass area texture outside of the track. This fix should work for all cases.&lt;br /&gt;
* Some minor performance and UI adjustments.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.34&#039;&#039;&#039;&lt;br /&gt;
* Mode 7 minor performance improvements and update to draw Super Mario Kart&#039;s grass outside of the racing track. (some it works only under some conditions).&lt;br /&gt;
* Taking of screenshot now only captures the upper screen.&lt;br /&gt;
* Option of forcing frame rate to 50 FPS / 60 FPS / or based on the selected ROM&#039;s region.&lt;br /&gt;
* Additional screen scaling option to 320x240.&lt;br /&gt;
* Fixed the crashing problem when selecting options without any ROM running.&lt;br /&gt;
* Fixed DKC1 piracy problem. The wrong mask logic was used when writing to SRAM.&lt;br /&gt;
* Improved the logic to save SRAM to SD card about 1-2 seconds after your game was saved in the emulator.&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
* The Snes9x team for the SNES emulator core, and the libretro Snes9x core maintainers for ongoing reference work&lt;br /&gt;
* bubble2k, original author of [https://github.com/bubble2k16/snes9x_3ds snes9x_3ds], for creating the excellent base this fork builds on&lt;br /&gt;
* Wyatt-James for his [https://github.com/Wyatt-James/snes9x_3ds snes9x_3ds fork]; this fork adapts a few safety, audio and stability fixes from his work&lt;br /&gt;
* ramzinouri&#039;s [https://github.com/ramzinouri/snes9x_3ds snes9x_3ds fork] inspired the image border/background and theme support&lt;br /&gt;
* willjow&#039;s [https://github.com/willjow/snes9x_3ds snes9x_3ds fork] revived the project after development had gone quiet&lt;br /&gt;
* The Citra/Azahar teams for making 3DS emulator testing and debugging practical&lt;br /&gt;
* Everyone reporting issues, testing games and suggesting improvements&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/Xeddius-Network/snes9x_3ds&lt;br /&gt;
* GitHub - https://github.com/matbo87/snes9x_3ds&lt;br /&gt;
* Universal-DB - https://db.universal-team.net/3ds/snes9x-updated-fork&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Mono-nx_Switch&amp;diff=205644</id>
		<title>Mono-nx Switch</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Mono-nx_Switch&amp;diff=205644"/>
		<updated>2026-07-10T03:30:30Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Switch Homebrews&lt;br /&gt;
|title=mono-nx&lt;br /&gt;
|image=monoNXSwitch.png&lt;br /&gt;
|description=An unofficial port of the mono runtime as a switch homebrew.&lt;br /&gt;
|author=exelix11&lt;br /&gt;
|lastupdated=2026/07/03&lt;br /&gt;
|type=Developments&lt;br /&gt;
|version=1&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://github.com/exelix11/mono-nx/releases&lt;br /&gt;
|website=https://www.reddit.com/r/dotnet/comments/1ks83mq/i_ported_the_mono_runtime_as_a_switch_homebrew/&lt;br /&gt;
|source=https://github.com/exelix11/mono-nx&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Switch Homebrew PC Tools (Developments) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=monoNXSwitch.png&lt;br /&gt;
|image_alt=mono-nx&lt;br /&gt;
}}{{lowercase title}}&lt;br /&gt;
&amp;lt;!--https://dlhb.gamebrew.org/switchhomebrews/monoNXSwitch.7z--&amp;gt;&lt;br /&gt;
This is an unofficial port of the mono runtime to the Switch homebrew toolchain. It can run dotnet 9.0 applications using the mono interpreter by loading the dll or exe files directly on console. It can also build .NET assemblies as static libraries using mono AOT.&lt;br /&gt;
&lt;br /&gt;
The mono-interpreter.zip release contains the mono interpreter, all the dotnet runtime libraries and the file .dll/.exe file association for hbmenu allowing you to copy .net dll programs to your Switch folder and running them directly. To build and use mono-nx, please follow the detailed step-by-step instructions provided in the [https://github.com/exelix11/mono-nx GitHub repository].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What works:&#039;&#039;&#039;&lt;br /&gt;
* Common BCL classes such as &amp;lt;code&amp;gt;List&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;StringBuilder&amp;lt;/code&amp;gt; and so on.&lt;br /&gt;
* P/Invoke, but only with libraries that were statically linked beforehand.&lt;br /&gt;
* Threads and async.&lt;br /&gt;
* Most of filesystem APIs.&lt;br /&gt;
* Sockets and http-only support for &amp;lt;code&amp;gt;HttpClient&amp;lt;/code&amp;gt;.&lt;br /&gt;
* .NET wrappers for SDL2 and [https://github.com/ocornut/imgui dear imgui] which are included as static libraries.&lt;br /&gt;
* The interpreter seems rather stable even when running more complex programs, I did not test the AOT builds as much.&lt;br /&gt;
* Unit tests with XHarness (some dotnet repo tests are even passing!).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What does not work:&#039;&#039;&#039;&lt;br /&gt;
* HTTPS and most of &amp;lt;code&amp;gt;System.Security&amp;lt;/code&amp;gt; doesn&#039;t work because we have no openssl port on Switch.&lt;br /&gt;
* Arbitrary P/Invoke doesn&#039;t work due to the lack of dynamic linking, all native function entrypoints must be defined beforehand and statically linked.&lt;br /&gt;
* Any other OS-dependant API that was not mentioned previously will likely not work because it was not explicitly implemented. Examples are &amp;lt;code&amp;gt;Console.Read&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Console.Clear&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Process&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WinForms&amp;lt;/code&amp;gt; and many more.&lt;br /&gt;
* Also, exiting the interpreter and launching another dll or sometimes homebrew in the same hbmenu session will eventually crash. I&#039;m not sure why this happens, historically mono has had problems [https://github.com/mono/mono/issues/20191 cleaning up resources] but it could also be an issue related to the homebrew environment. I tried to do [https://github.com/exelix11/mono-nx/blob/master/notes/writeup.md#the-smoke-test some debugging] but ultimately my workaround is to just terminate the process on exit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Included demos:&#039;&#039;&#039;&lt;br /&gt;
* aot_example.nro is a fully self-contained AOT-complied C# application. It generates a random number and asks you to guess it.&lt;br /&gt;
* (*) pad_input.dll is a C# program that reads the controls with the native libnx api.&lt;br /&gt;
* (*) example.dll is a C# program that shows most of the APIs that are currently implemented.&lt;br /&gt;
* (*) explorer_demo.dll is a C# program that shows a file explorer-like GUI using imgui and SDL2. This will also work on windows and linux with no code changes if you use [https://github.com/exelix11/CimguiSDL2Cross/releases/tag/r2 the author&#039;s cimgui fork].&lt;br /&gt;
* (*) guess_number.exe is the source from aot_example built with plain csc.exe on a windows vm to show off loading exe files as well. I&#039;m not aware of any way to build this on linux so there&#039;s no build script for it.&lt;br /&gt;
&lt;br /&gt;
(*) These will add the dll and exe file association to the hbmenu allowing you to launch them directly.&lt;br /&gt;
&lt;br /&gt;
==Changelog== &lt;br /&gt;
&#039;&#039;&#039;v1&#039;&#039;&#039;&lt;br /&gt;
* This build fixes various stability issues, including one related to thread local storage that would crash mono at random.&lt;br /&gt;
* I&#039;m also providing an &amp;quot;sdk build&amp;quot; of the toolchain, that is, the final binaries, header files and static libraries needed to build the interpreter without having to build the whole dotnet runtime on your own. To use the sdk zip extract it in the root of the repo, it contains all the correct paths where all the icu and mono artifacts should be. At this point you should be able to build &amp;lt;code&amp;gt;native/interpreter&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;native/aot&amp;lt;/code&amp;gt; directly. I don&#039;t expect this setup to survive libnx/gcc/portlibs updates via dkp-pacman so only use it with the monobuild docker container at the commit of this release, as of writing it is based on &amp;lt;code&amp;gt;devkitpro/devkita64:20260219&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/exelix11/mono-nx&lt;br /&gt;
* GBAtemp - https://www.reddit.com/r/dotnet/comments/1ks83mq/i_ported_the_mono_runtime_as_a_switch_homebrew/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=StellaDS_Phoenix_Edition&amp;diff=205643</id>
		<title>StellaDS Phoenix Edition</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=StellaDS_Phoenix_Edition&amp;diff=205643"/>
		<updated>2026-07-10T03:30:30Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: /* Champ Games Support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox DS Homebrews&lt;br /&gt;
|title=StellaDS Phoenix Edition&lt;br /&gt;
|image=stelladsphoenix4.png&lt;br /&gt;
|description=Atari VCS 2600 emulator for DS and DSi, an improved version of StellaDS by Alekmaul.&lt;br /&gt;
|author=Dave Bernazzani (wavemotion-dave)&lt;br /&gt;
|lastupdated=2026/06/28&lt;br /&gt;
|type=Console&lt;br /&gt;
|version=8.4a&lt;br /&gt;
|license=Mixed&lt;br /&gt;
|download=https://dlhb.gamebrew.org/dshomebrew2/stelladswav.7z?8.4a&lt;br /&gt;
|website=https://github.com/wavemotion-dave/StellaDS&lt;br /&gt;
|source=https://github.com/wavemotion-dave/StellaDS&lt;br /&gt;
|donation=https://ko-fi.com/wavemotiondave&lt;br /&gt;
}}&lt;br /&gt;
StellaDS is an Atari 2600 console emulator for the DS/DSi improved based on AlekMaul&#039;s [[StellaDS|StellaDS]].&lt;br /&gt;
&lt;br /&gt;
This Phoenix Edition brings greater speed, compatibility and accuracy to the emulation on the DSi. It also added new features such as instruction manuals and high score support.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
* Full console emulation including Reset, Select, Difficulty Switches, TV Type as touch-screen switches.&lt;br /&gt;
* Virtually all popular bankswitching is supported up to 512K of ROM and 32K of RAM (similar to the Harmony Encore specifications).&lt;br /&gt;
* Wide range of controllers including joystick, paddles, driving controller, booster grip, keypad, Genesis 2-button and more.&lt;br /&gt;
* Savekey Support with backing 32K EEPROM.&lt;br /&gt;
* DPC+ Arm-Assisted games supported! (DSi or above needed for full speed).&lt;br /&gt;
* CDF/CDFJ/CDFJ+ Arm-Assisted games supported! (DSi or above needed for full speed).&lt;br /&gt;
* FA2 and Cherity supported with backing EEPROM support.&lt;br /&gt;
* High score support with up to 10 scores for each game.&lt;br /&gt;
* Manuals included for more than 100 of the common games.&lt;br /&gt;
* Keypad overlay for Star Raiders.&lt;br /&gt;
* Frame Blending to help smooth out flicker and make the games shine.&lt;br /&gt;
* Ability to set Favorites on your game collection - press SELECT to mark a game as &#039;LIKE&#039; or &#039;LOVE&#039;.&lt;br /&gt;
* Save/Restore state for all game carts.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
[[DLDI|DIDL]] patch the StellaDS.nds file depending on the flash card (if it does not have auto-patching).&lt;br /&gt;
&lt;br /&gt;
Copy it into a directory of your flash/(micro)SD/MMC card.&lt;br /&gt;
&lt;br /&gt;
Put the a26/bin files where you want on your flashcard. If you are using Twilight Menu++, you will need to need to rename the .bin to .a26 in order to use.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
When the emulator starts, click on the cartridge slot to choose a file. &lt;br /&gt;
&lt;br /&gt;
Use Up/Down to select a file, then use A to load it.&lt;br /&gt;
&lt;br /&gt;
===Game Autodetection===&lt;br /&gt;
The Atari 2600 utilizes a growing number of bankswitching scheme. StellaDS currently supports 36 different bank switching schemes (refer to the [https://github.com/wavemotion-dave/StellaDS/blob/master/README.md readme] for the full list) - and it usually will auto-detect the right one. If for some reason it does not, you can go into the configuration (gear icon) and manually select a new scheme. &lt;br /&gt;
&lt;br /&gt;
Be sure to hit START to save your config and then try re-loading the game (the bank switching requires a reload of the game). In the catastrophic event that the detected bankswitching scheme causes the emulation to crash, you can try loading the game using the Y (instead of A) button which will load the game but NOT start it running... this should let you go in and adjust the back switching scheme and other settings (PAL vs NTSC, etc).&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The gear icon on the main screen allows you to set a number of configuration parameters related specifically to the game you are running. In addition to the parameters shown, the difficulty switches (Left/Right A/B) are also saved on a per-game basis. If you change any configuration settings, you really should re-load the game after saving out your configuration - some settings such as Bank Switching and NTSC vs PAL are only applied when the game is first loaded.&lt;br /&gt;
&lt;br /&gt;
Here is a description of the configuration items you can adjust. Be sure to press the START button to save out your configuration after making changes:&lt;br /&gt;
&lt;br /&gt;
* Controller - Most games use the Left-Joystick (with a Savekey in the right port) but you can change this.&lt;br /&gt;
* Bankswitch - The system tries to auto-detect the correct bankswitching scheme but you can override that here if needed.&lt;br /&gt;
* Frame Blend - Normal is fastest. Flicker free combines even/odd frames and it&#039;s pretty fast (10% hit to emulation speed which is no problem on most games) and effective at eliminating flicker. Background/Black mode is the slowest and will help with games that show background/black on one frame and sprites on the other (a simple blending will cause the sprites to disappear - Missile Command is one such game).&lt;br /&gt;
* TV Type - NTSC vs PAL. Reload your game after saving this setting.&lt;br /&gt;
* Palette - Three different palette types are supported. One optmized for the DS (default), the mainline Stella palette and the Z26 palette. You can also set the global palette for loading up all future games (page 2 of options).&lt;br /&gt;
* Sound - Four different levels including the new WAVE DIRECT if you&#039;re using a game that does direct sound output (such as Quadrun, Stay Frosty 2, Mappy or Draconian). Most games should auto-detect this correctly. You can also set the global sound for loading up all future games (page 2 of options).&lt;br /&gt;
* ABXY Button - Default to FIRE button but you can change this. You can now set to Screen Pan UP or Screen Pan DN to scroll the screen for more complex games. See Screen Settings below.&lt;br /&gt;
* HBLANK Zero - Whether system clears pixels on horizontal blanks. Turn off at your own risk (it will speed up emulation which helps with older DS-LITE)&lt;br /&gt;
* VBLANK Zero - Whether system clears pixels on vertical blanks. Turn off at your own risk (it will speed up emulation which helps with older DS-LITE)&lt;br /&gt;
* Analog Sens - Default is 10 (1.0x speed). You can ajust how the paddle emulation responds.&lt;br /&gt;
* Start Scanline - Starting Scanline setting. When the TV first starts output of scanlines.&lt;br /&gt;
* Num Scanlines - Number of scanlines to display. Don&#039;t touch if you don&#039;t understand this.&lt;br /&gt;
* Offset/Scale - You can ajust the screen scaling and offset positions for the game. If you scale down, be aware that some pixel lines will not render - such is life with a very small 256x192 pixel DS screen.&lt;br /&gt;
* ARM THUMB - SAFE and Optimized are roughly the same - Optmized is preferred as is slightly faster and recommended for ARM-assisted games. Optimized-No-Collisions is generally fine for most of the new CDF/CDFJ/CDFJ+ games that don&#039;t need TIA hardware collision detection. One final experimental setting is to enable some level of frameskip for the really hard-hitting newest ARM games (e.g. Elevator Agent).&lt;br /&gt;
* BUS Mode - For the DSi and above, this will default to &#039;Accurate&#039; and for the older DS hardware (or running in DS compatibility mode on an R4 cart) it will be set to &#039;Optimized&#039; to gain speed. If you encounter a glitch with a game, try setting this to &#039;Accurate&#039;.&lt;br /&gt;
* RAM Clear - Normally set to &#039;Random&#039; but you can force the Atari VCS RAM to all zeros. A few games might care - but most won&#039;t.&lt;br /&gt;
&lt;br /&gt;
These options are spread across two (2) pages, use the L/R shoulder buttons to switch pages. This gets you access to some global settings for sound quality and default color palette (after saving, new games loaded will use the global settings by default and you can tweak individual games as desired).&lt;br /&gt;
&lt;br /&gt;
===Screen settings===&lt;br /&gt;
If you are only running Classic games - the default screen settings should be fine. But if you&#039;re running some of the newer homebrews created over the past decade, you will want to configure your screen properly. For many games, you simply can&#039;t fit all the content on the 192 pixel lines of a DS/DSi. For these you can either cut off the top, bottom or scale the screen. &lt;br /&gt;
&lt;br /&gt;
When these options aren&#039;t enough, you can set your Y offset so that some of the screen is cut-off top or bottom and then you can map one of the DS buttons to &#039;SCREEN PAN UP&#039; or &#039;SCREEN PAN DOWN&#039; which will momentarily pan up or down. This works great for Champ Games offerings where the score display is normally off-screen while you play and then you can tap a button to briefly see it.&lt;br /&gt;
&lt;br /&gt;
===Backing files used by StellaDS===&lt;br /&gt;
In the /data directory of your SD card you will see some files auto-created by StellaDS. You are free to delete or back these files up as you see fit. If you delete a file, it will be re-created &#039;clean&#039; on the next boot of the emulator.&lt;br /&gt;
&lt;br /&gt;
*StellaDS.DAT - this contains the per-game settings (basically when you press START on the Configuration screen and it saves out your settings for the current game). The easiest way to set all your games back to default settings is to remove this file.&lt;br /&gt;
*StellaDS.HI - this is the high-score file on a per-game basis. Up to 10 scores are saved per game by pressing the little Golden Chalice icon on the main screen.&lt;br /&gt;
*StellaDS.EE - this is the SaveKey 32K EEPROM file for games that utilize a SaveKey. If you remove it, a new clean blank copy will be created.&lt;br /&gt;
*StellaDS.FAV - this is the 4K favorites file where up to 1024 favorites (like/love - using the SELECT key on the file menu) are stored.&lt;br /&gt;
*Various .SAV files - these are the Save State / Restore files (one per game with the same base name as the game ROM).&lt;br /&gt;
&lt;br /&gt;
===Champ Games Support===&lt;br /&gt;
StellaDS supports all current Champ Games offerings through June 2026 (Zaxxon Demo is the latest release). These games represent the cutting edge of what is possible on the Atari 2600 using an ARM co-processor to help move data through the system. These games push the limits of the emulator. To run these advanced arm-assisted games, you will need a DSi or greater running either Twilight Menu++ or Unlaunch to unlock the 2X CPU (134MHz). The original DS (or the DSi/2DS/3DS running with an R4 cart) will only run in DS compatibility mode (67MHz) which is too slow to render these games full speed.&lt;br /&gt;
&lt;br /&gt;
It is also recommended that you use an XL/LL model - these larger screens have a slower LCD fade resulting in a picture that more closely resembles an old TV. This means less flicker overall.&lt;br /&gt;
&lt;br /&gt;
Be aware that most of these games utilize a significant amount of overscan. The DS/DSi/XL/LL only has 192 pixels of vertical resolution and this means the extra 16-20 pixels of game information will render-off screen. StellaDS will always show the main gameplay portion of the screen and utilizes a screen pan UP/DN to shift in the score or status (non-gameplay) information. For example, in GORF, you will not see the score at the top normally... but if you press the X button (pan UP), the screen will momentarily shift up to show you the score and then automatically pan back down. It&#039;s quite smooth and is very serviceable in normal gameplay.&lt;br /&gt;
&lt;br /&gt;
All Champ Games should run at or near full speed with the exception of the two most complex games: Turbo Arcade (which dips framerate slightly for some complex rendering scenes but is generally not noticeable for gameplay) and Elevator Agent which runs at 57+ (often up to full speed) but is variable enough that you will hear some slight wavering in the music output (but still quite playable and enjoyable). Try the DEMO roms first to be sure you&#039;re happy with the emulation quality here. Be aware that any performance issues related to these cutting-edge games is a reflection of my emulation and not the superior craftsmanship of the games themselves. You can see a full set of Champ Games offerings at https://champ.games&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
D-Pad - the Joystick&lt;br /&gt;
&lt;br /&gt;
A,B,X,Y - Fire button (configurable)&lt;br /&gt;
&lt;br /&gt;
SELECT - SELECT switch&lt;br /&gt;
&lt;br /&gt;
START - START switch&lt;br /&gt;
&lt;br /&gt;
R+D-Pad - Shift display offset in the D-PAD direction&lt;br /&gt;
&lt;br /&gt;
L+D-Pad - Change Scaling of the Y-Screen (UP/DOWN scaling only)&lt;br /&gt;
&lt;br /&gt;
L+R+A - Swap LCD top/bottom&lt;br /&gt;
&lt;br /&gt;
Hold L+R shoulder buttons for ~1 second to take a snapshot of the screen (written to SD card as a .BMP file).&lt;br /&gt;
&lt;br /&gt;
Use stylus on buttons for other icon-based actions on bottom screen.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/stelladsphoenix2.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/dshomebrew/stelladsphoenix3.png&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
For the older DS-LITE and DS-PHAT, many of the simple 8k, 4k and 2k games will play perfectly. More sophisticated bank-switching schemes really require the DSi for the best experience.&lt;br /&gt;
&lt;br /&gt;
If you&#039;re a fan of classic emulators on the DS/DSi, a DSi XL (USA) or LL (Japan) version is strongly recommended. Or a 2DS/3DS if you can get homebrews to run on those. The reason is that the original DSi has a fast LCD fade and as such some of the games will be a little hard to see or appear to flicker due to the way the original Atari game is coded. For a real TV or a slow LCD fade, this looks much better. &lt;br /&gt;
&lt;br /&gt;
StellaDS includes an option to reduce the flicker - in configuration you can turn on Blending (recommend try Half Blend Mode as it&#039;s the least CPU intensive). This comes at a performance pentaly - for many games, the DSi can handle that penalty. For the ARM-Assisted games (DPC+, CDF/CDFJ/CDFJ+) that penalty will be too great which is why the full gammut of Atari games will always render best on an XL/LL screen.&lt;br /&gt;
&lt;br /&gt;
==Known issues==&lt;br /&gt;
Please refer to https://github.com/wavemotion-dave/StellaDS/blob/master/README.md#known-issues-&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v8.4a 2026/06/28&#039;&#039;&#039;&lt;br /&gt;
* Fix for cart detection so SB carts don&#039;t detect as CDFJ. Fixes Rescue from Poseidon&#039;s Gate.&lt;br /&gt;
&#039;&#039;&#039;v8.4 2026/06/27&#039;&#039;&#039;&lt;br /&gt;
* Fix for TIA rendering that fixes Aardvark and probably others.&lt;br /&gt;
* Fix for banking on Squish-Em-Deluxe (F8) so dummy read on RTI properly hits the hotspot.&lt;br /&gt;
* Hotfix for PAL rendering which was causing the LCD to misbehave. True-sync is NTSC only for now.&lt;br /&gt;
* Full cleanup of ARM Thumbulator. I&#039;ve decided to peel back on some of the &#039;unsafe&#039; code that I&#039;ve been using to gain speed. In the end, the speed optimizations and the improved accuracy have balanced themselves out - so 8.4 is still a bit faster than 8.3 in terms of raw speed but has a improved ARM Thumb emulation for a nice gain of accuracy.&lt;br /&gt;
* Lots of cleanup and both ARM and 6502 optimizations as time permitted. Better accuracy and improved speed all-around.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v8.3b 2026/06/23&#039;&#039;&#039;&lt;br /&gt;
* Hotfix for PAL rendering which was causing the LCD to misbehave.&lt;br /&gt;
* After another round of ARM Thumbulator optimizations, I&#039;ve decided to peel back on some of the &#039;unsafe&#039; code that I&#039;ve been using to gain speed. In the end, the speed optimizations and the improved accuracy have balanced themselves out - so 8.3a is roughly equivalent to 8.3 in terms of raw speed but has a improved ARM Thumb emulation for a nice gain of accuracy. Just hoping there are no bugs :)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v8.3 2026/06/21&#039;&#039;&#039;&lt;br /&gt;
* Improved CDFJ+ driver to eek out another frame or two.&lt;br /&gt;
* Optimized for the new Zaxxon Arcade from Champ Games so it runs full speed on DSi or above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v8.2 2026/04/12&#039;&#039;&#039;&lt;br /&gt;
* New NTSC (60Hz) and PAL (50Hz) &#039;True-Sync&#039; to reduce tearing and other video artifacts from screen rendering on the DS/DSi.&lt;br /&gt;
* Improved accuracy on SB (SuperBanking) carts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v8.1 2025/12/14&#039;&#039;&#039;&lt;br /&gt;
* Added new Favorites system so you can LIKE/LOVE any game - press SELECT on the Game ROM loading screen.&lt;br /&gt;
* TIA optimizations for another frame of improved performance.&lt;br /&gt;
* CPU optimizations for another frame of improved performance.&lt;br /&gt;
* Thumbulator optimizations for the LDR3 instruction to help some CDFJ games.&lt;br /&gt;
* Most VBLANK and HBLANK optimizations now removed in favor of improved accuracy (improved performance allows us to ditch most of this).&lt;br /&gt;
* Refactor memory to buy back almost 250K of DS RAM for future expansion.&lt;br /&gt;
&#039;&#039;&#039;v8.0 2024/12/09&#039;&#039;&#039;&lt;br /&gt;
* Added music fetchers for more complete Chetiry (CTY) emulation. Save state works with CTY. Use the 60K Chetiry rom for music.&lt;br /&gt;
* Fixed holding RESET (DS Start button) and SELECT (DS Select Button) when loading a game. This allows you to do things like the Double-Shot trick in Space Invaders.&lt;br /&gt;
&#039;&#039;&#039;V7.9 2024/12/04&#039;&#039;&#039;&lt;br /&gt;
* Fix so holding shoulder buttons on Bumper Bash does NOT invoke the screen snapshot.&lt;br /&gt;
* Fix for bumper bash right bumper position so it now shows correctly.&lt;br /&gt;
* Improved GI Joe Cobra Strike snake graphics so it&#039;s much closer to the way a real TIA chip would draw it.&lt;br /&gt;
* Fix for Labyrinth (AR) graphical glitches at top/bottom of walls.&lt;br /&gt;
* Improved difficulty switch handling so startup values for games like Asteroids works correctly.&lt;br /&gt;
* Improved RIOT timer emulation - Acid Drop, Panda Chase, Zoo Fun and a few other PAL roms now work.&lt;br /&gt;
* Improved keyboard/keypad emulation so games like Alpha Beam with Ernie, Oscar&#039;s Trash Can Race and Magicard now work.&lt;br /&gt;
* Improved emulation of Starpath Supercharger (AR) games (Dragonstomper is random) and support smaller game loads (Cubis now runs).&lt;br /&gt;
* Fixed Casino paddles (correct paddle emulation so you can select all card positions in game variation 4).&lt;br /&gt;
* Internal cart database updated to Romhunter v19 (full NTSC with select PAL titles).&lt;br /&gt;
* Fix for save/load states on CDFJ+ carts (Gorf and Turbo Arcade will now save/load correctly).&lt;br /&gt;
* Wave Direct improvements - applying the same logic for all games that utilize digital speech and improving sounds.&lt;br /&gt;
* Added new Stretch-X config option to stretch the screen horizontally (you can use offset/stretch to fill the screen for some Activision games which purposely hide the HMOVE blanks on the left side of the screen).&lt;br /&gt;
* Pressing and holding the Game Select and Game Reset buttons now keeps them depressed until you let up your finger.&lt;br /&gt;
&#039;&#039;&#039;V7.8 2024/11/30&#039;&#039;&#039;&lt;br /&gt;
* Further tweaks to the improved &#039;Wave Direct&#039; to prevent audio gaps.&lt;br /&gt;
* First pass at allowing &#039;Wave Direct&#039; for DS-Phat/Lite (only for simple games like Quadrun, Berzerk VE and Open Sesame).&lt;br /&gt;
* Tweaks to the DPC audio driver for improved Pitfall II music.&lt;br /&gt;
* Added support for some of the Voice Enhanced Berzerk hacks such as DrVsDaleks.&lt;br /&gt;
* Improved Meltdown emulation - added hack for NUSIZ0/1 to improve screen rendering. Not perfect but closer...&lt;br /&gt;
* Fixed Pole Position speedometer zero so it shows correctly and other minor graphical fixes (HMOVE timing)&lt;br /&gt;
* Fixed Grand Prix graphical glitch on rocks/scenery (HMOVE timing).&lt;br /&gt;
* Fixed Moon Patrol graphical glitch on right side of screen (HMOVE timing).&lt;br /&gt;
* Fixed Double Dragon graphical glitch on strength meter (HMOVE timing).&lt;br /&gt;
* Apply RSYNC improved TIA handling across the board (was only being applied to select games).&lt;br /&gt;
&#039;&#039;&#039;V7.7 2024/11/24&#039;&#039;&#039;&lt;br /&gt;
* Improved &#039;Wave Direct&#039; sound to help with digitized speech effects of Quadrun, Berzerk VE, Open Sesame, Pitfall II, etc.&lt;br /&gt;
* Tweaked handling of the new Champ Games - Tuthankham.&lt;br /&gt;
* Version 7.7a - hotfix to support DrVsDalek hack with voice support and improved voice timing to eliminate gaps.&lt;br /&gt;
&#039;&#039;&#039;V7.6 2024/08/25&#039;&#039;&#039;&lt;br /&gt;
* Fixed config setting of RAM randomized vs clear.&lt;br /&gt;
* Fixed AR (Starpath/Supercharger) games to prevent memory overwrite.&lt;br /&gt;
* Big improvement to Starpath Supercharger (AR) cart rendering for 3-6 frames of improvement.&lt;br /&gt;
* Numerous comment cleanups and other minor refactors to improve the codebase.&lt;br /&gt;
&#039;&#039;&#039;V7.5a 2024/08/24&#039;&#039;&#039;&lt;br /&gt;
* Fixed config setting of RAM randomized vs clear.&lt;br /&gt;
* Fixed AR (Starpath/Supercharger) games to prevent memory overwrite.&lt;br /&gt;
&#039;&#039;&#039;V7.5 2024/08/23&#039;&#039;&#039;&lt;br /&gt;
* Overhaul and refactor of cart/device handling to gain a 3-4% speed boost across the board.&lt;br /&gt;
* Improved memory handling to use a bit less of the precious DS resources.&lt;br /&gt;
* Fixed multi-load Starpath Supercharger (AR) carts so they work again (broken for almost a year!)&lt;br /&gt;
* Cleanup as time permitted&lt;br /&gt;
&#039;&#039;&#039;V7.4 2024/08/19&#039;&#039;&#039;&lt;br /&gt;
* Adding adding save/restore state handling for all games. Use the new down-arrow icon in the lower left.&lt;br /&gt;
* Added 03E0 banking for Parker Bros. Brazilian carts.&lt;br /&gt;
* Added 0FA0 banking for Fotomania Brazilian carts.&lt;br /&gt;
&#039;&#039;&#039;V7.3 2024/06/05&#039;&#039;&#039;&lt;br /&gt;
* Added wF8 banking scheme for the new dump of Smurf and Zaxxon.&lt;br /&gt;
* Added JANE banking scheme for the new Tarzan prototype release.&lt;br /&gt;
* Added support for Champ Games Tutankham Arcade.&lt;br /&gt;
&#039;&#039;&#039;V7.2 2024/01/01&#039;&#039;&#039;&lt;br /&gt;
* Updated copyright as we cross into the new year!&lt;br /&gt;
* Another partial frame of performance on CDFJ/+ games.&lt;br /&gt;
* Cleanup this readme file to reflect latest changes in the emulator.&lt;br /&gt;
&#039;&#039;&#039;V7.1b 2023/12/25&#039;&#039;&#039;&lt;br /&gt;
* Squeezed out one extra frame of performance on CDFJ/+ games.&lt;br /&gt;
* New light frameskip applied to Draconian for a performance boost.&lt;br /&gt;
* Minor fixes and tweaks to make all the latest homebrew games look and play their best.&lt;br /&gt;
* Version 7.1b eeks out another partial frame on the hardest hitting ARM-assisted games.&lt;br /&gt;
&#039;&#039;&#039;V7.0 2023/12/10&#039;&#039;&#039;&lt;br /&gt;
* Champ Games Edition! Major overhal to the CDFJ/+ driver to squeeze out ever bit of performance.&lt;br /&gt;
* Fix for Genesis gamepad emulation (detection now works).&lt;br /&gt;
* Other minor cleanups and tweaks as time permitted.&lt;br /&gt;
&#039;&#039;&#039;V6.9 2023/12/06&#039;&#039;&#039;&lt;br /&gt;
* Improved the ARM Thumb driver and the CDFJ driver to squeeze out two more frames of performance.&lt;br /&gt;
* Fixed PAN UP / PAN DOWN handling on the A-button and you can now pan even if another button is pressed (useful for Turbo Arcade).&lt;br /&gt;
* Minor cleanups as time permitted.&lt;br /&gt;
&#039;&#039;&#039;V6.8 2023/07/01&#039;&#039;&#039;&lt;br /&gt;
* Improved RSYNC so Extra Terrestrials (1984 by Skill Screen Games) works.&lt;br /&gt;
* Improved keypad handling so Magicard and similar keypad/keyboard game work.&lt;br /&gt;
* Added a few of the ultra-rare games discovered in the last decade to the internal database.&lt;br /&gt;
* Updated internal database to ROMHUNTER v18 for the classic-era games.&lt;br /&gt;
* Starpath Supercharger (AR) carts now clear RAM by default (prevent lock-ups).&lt;br /&gt;
* Added Dual Keypad/Keyboards for the few game that need them (BASIC, Magicard mostly).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.7 2023/06/24&#039;&#039;&#039;&lt;br /&gt;
* Fix for Sword of Surtr so it runs correctly.&lt;br /&gt;
* Hold L+R shoulder buttons for ~1 second to take a snapshot of the screen (written to SD card)&lt;br /&gt;
* DSi now defaults to the &#039;Accurate&#039; BUS MODE for maximum compatibility.&lt;br /&gt;
* Improved data bus handling for undriven pins in Tia::Peek() for improved compatibility.&lt;br /&gt;
* A few more tweaks to a few more games to make them as accurate as possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.6b 2023/06/21&#039;&#039;&#039;&lt;br /&gt;
* DSi now defaults to the &#039;Accurate&#039; BUS MODE for maximum compatibility.&lt;br /&gt;
* Improved data bus handling for undriven pins in Tia::Peek() for improved compatibility.&lt;br /&gt;
* A few more tweaks to a few more games to make them as accurate as possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.6 2023/06/20&#039;&#039;&#039;&lt;br /&gt;
* Fix for Meltdown prototype so it doesn&#039;t crash.&lt;br /&gt;
* Fix for Pleiades to fix graphical glitches.&lt;br /&gt;
* Fix for Atom Smasher prototype so it doesn&#039;t crash on start (wrong bank scheme detected).&lt;br /&gt;
* Fix for E7 banking so it handles 8K, 12K and 16K roms.&lt;br /&gt;
* Fix for Flash Gordon to eliminate graphical glitches.&lt;br /&gt;
* Fix for Elf Adventure prototype so it runs.&lt;br /&gt;
* Fix for Star Gunner so it doesn&#039;t glitch.&lt;br /&gt;
* Fix for Warlords graphical glitches.&lt;br /&gt;
* Fix for Worm War I graphical glitches.&lt;br /&gt;
* Fix for A-Star not starting.&lt;br /&gt;
* Fix for Hugo Hunt graphical glitches.&lt;br /&gt;
* Improved random() generator for more robust RAM clear / handling on startup and added config to either randomize RAM or clear it at start.&lt;br /&gt;
* Added new option to use the &#039;Compatible&#039; BUS driver which will handles things like invalid reads and drives unused TIA bits (a few games rely on this - but it does slow down emulation slightly).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.5 2022/12/21&#039;&#039;&#039;&lt;br /&gt;
* Polished release - a few more tweaks, a few more optimizations and everything is running as fast science allows on the DS/DSi.&lt;br /&gt;
* Removed &amp;quot;ghost read&amp;quot; and &amp;quot;ghost writes&amp;quot; on the 6502 emulation for a bit more speed.&lt;br /&gt;
* Use of gcc &amp;quot;likely/unlikely&amp;quot; in a few key spots to help the compiler optimize.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.4 2022/12/16&#039;&#039;&#039;&lt;br /&gt;
* Reduced stack memory so we don&#039;t crash when first creating a Savekey EE file.&lt;br /&gt;
* Improved 6502 handling to localize the PC for a bit of a performance boost.&lt;br /&gt;
* Added the 3E+ banking scheme.&lt;br /&gt;
* New global palette and sound options on the Configuration Menu page 2 (use L/R keys).&lt;br /&gt;
* Other small improvements as time permitted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.3 2022/12/11&#039;&#039;&#039;&lt;br /&gt;
* Improved performance across the board. More games play at the right speed even on the older DS-Lite/Phat.&lt;br /&gt;
* New QuadTari support - for now it&#039;s just Dual Joysticks + SaveKey which is useful for games like Robotwar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.2 2022/12/05&#039;&#039;&#039;&lt;br /&gt;
* New WAVE DIRECT sound handling for fast-fetching music. Draconian, Mappy, Stay Frosty 2, Stella&#039;s Stocking, Pitfall II and Quadrun have much improved sound.&lt;br /&gt;
* New palette options to tweak the colors to your liking.&lt;br /&gt;
* Memory re-org for a bit more speed but also to recover some valuable resources so more features can be added in the future.&lt;br /&gt;
* Added a 2nd page (not yet populated) for possible future options. This requires a new configuration file format - your old one will be reset. Sorry!&lt;br /&gt;
* Fixed CDFJ+ fetchers causing problems (including incorrect handling of SaveKey).&lt;br /&gt;
* Other small improvements as time permitted.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.1 2022/12/01&#039;&#039;&#039;&lt;br /&gt;
* CDFJ+ games are now supported up to 256K of ROM and 32K of RAM. Turbo Arcade is playable but isn&#039;t yet full speed.&lt;br /&gt;
* More speedup in ARM Thumb processing.&lt;br /&gt;
* New Screen Pan Up and Pan Down handling - this can be mapped to any DS button (XYAB) to help with games that use more than 192 pixel lines (really useful for CDFJ games from Champ Games).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V6.0 2022/11/27&#039;&#039;&#039;&lt;br /&gt;
* CDF/CDFJ games are now supported (but not CDFJ+)&lt;br /&gt;
* Big speedup in ARM Thumb processing to render all DPC+ games full-speed on the DSi or above.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.9 2022/11/21&#039;&#039;&#039;&lt;br /&gt;
* Minor fixes for some games to render them more accurately including the new Chaotic Grill homebrew.&lt;br /&gt;
* Improved ARM Thumbulator for another frame of performance.&lt;br /&gt;
* Minor cleanups and optimizations across the board.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.8 2022/10/21&#039;&#039;&#039;&lt;br /&gt;
* Fixed colors in Medieval Mayhem (and a few other games).&lt;br /&gt;
* Fixed stars to show properly in Stay Frosty and Rabbit Transit.&lt;br /&gt;
* Streamlined DPC+ so Space Rocks and Stay Frosty 2 are full speed.&lt;br /&gt;
* Minor cleanups and optmizations across the board.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.7 2022/10/18&#039;&#039;&#039;&lt;br /&gt;
* Fixed Sword of Surtr so it plays properly.&lt;br /&gt;
* Added TWIN STICK controller so games like Rail Slider are playable!&lt;br /&gt;
* More DPC+ optimizations... Space Rocks is almost full speed!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.6 2022/10/14&#039;&#039;&#039;&lt;br /&gt;
* Massive speedup improvement for DPC+ games. Most play full speed on the DSi.&lt;br /&gt;
* Fixed graphical glitches on Space Rocks homebrew.&lt;br /&gt;
* Other cleanups and optimizations across the board to shine things up.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.5 2022/10/12&#039;&#039;&#039;&lt;br /&gt;
* Added DPC+ with ARM Thumbulator to provide some preliminary support for ARM-assisted games.&lt;br /&gt;
* Improved execution speed of the emulator and improved the frame blending algorithm.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.4 2022/10/07&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Added DF bank switching scheme (missed when DFSC was added).&lt;br /&gt;
* New core execution loop that gives us another 2 frames of performance.&lt;br /&gt;
* Optimized F4 driver to make some of the 32K games playable on DS-Lite.&lt;br /&gt;
* Cleanup across the board.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.3 2022/10/03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Added Chetiry (CTY) bank switching scheme with EEPROM support (but no music fetchers).&lt;br /&gt;
* Improved memory handling across the board for another frame of performance.&lt;br /&gt;
* Fixed SP+ so it runs properly again.&lt;br /&gt;
* Improved driver for Midnight Magic and Realsports Tennis so both now run at 60FPS!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.2 2022/09/30&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fixed goof in F6, F4 and related F6SC and F4SC drivers!&lt;br /&gt;
* Another frame of increased performance&lt;br /&gt;
* More accurate AR cart handling for Supercharger games&lt;br /&gt;
* V5.2a: 3E and related fix&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.1 2022/09/29&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Improved all bankswitching for more speed and greater copatibility.&lt;br /&gt;
* New F6 driver for DS-LITE to support 16K games - many at full speed!&lt;br /&gt;
* Cleanups across the board.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V5.0 2022/09/27&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Added new bankswitching scheme: X07 (Stella&#039;s Stocking).&lt;br /&gt;
* Improved 4K/2K driver to squeese out a couple more frames of performance.&lt;br /&gt;
* New special F8 driver to support more 8K games on the DS-Lite.&lt;br /&gt;
* Lots of cleanup across the board in the database to make more games playable.&lt;br /&gt;
* Updated to 5.0c with another frame of improvement for 4K and 8K games!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.9 2022/09/18&#039;&#039;&#039;&lt;br /&gt;
* Added new bankswitching schemes:  TVBOY, UASW and 0840 (Econobanking).&lt;br /&gt;
* Fixed UA bankswitching scheme to allow more games to run.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.8 2022/09/11&#039;&#039;&#039;&lt;br /&gt;
* Fixed Super Bank (SB) scheme.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.7 2022/03/24&#039;&#039;&#039;&lt;br /&gt;
* Added per-game configuration settings.&lt;br /&gt;
* Fixed 3E/3F and UA bankswitching schemes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.6 2022/03/20&#039;&#039;&#039;&lt;br /&gt;
* Added SaveKey support - standard games will have a virtual SaveKey in the right controller jack and will be auto-backed to a 32K /data/StellaDS.EE file.&lt;br /&gt;
* Added EF, EFSC, DFSC and SB (SuperBank) support for games as large as 256K!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.5 2021/11/05&#039;&#039;&#039;&lt;br /&gt;
* New sound output core - no more zingers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.4 2021/08/22&#039;&#039;&#039;&lt;br /&gt;
* Minor cleanups across the board. Improved AR cart speed by ~1FPS.&lt;br /&gt;
* Added horizontal stretch - use the Left Shoulder + L/R D-Pad.&lt;br /&gt;
* The Y button is now auto-fire.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.3 2021/08/09&#039;&#039;&#039;&lt;br /&gt;
* Massive overhaul of the non-bank-switched engine so now the older DS-Lite and DS-Phat will run many games at full speed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.2 2021/08/02&#039;&#039;&#039;&lt;br /&gt;
* New overlay graphic for Star Raiders (plus manual).&lt;br /&gt;
* A half dozen odd games got their controllers straightened out.&lt;br /&gt;
* About 100 graphical tweaks for various games to make them look as good as possible.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.1 2021/07/28&#039;&#039;&#039;&lt;br /&gt;
* Found another 1-2% speed up in TIA rendering.&lt;br /&gt;
* Bumper Bash now plays correctly (you can use the shoulder buttons too).&lt;br /&gt;
* Kool-Aid-Man now plays correctly.&lt;br /&gt;
* Meltdown graphics improvements (but not fixed... but playable).&lt;br /&gt;
* Alpha Beam, Big Bird and Cookie Monster games all work with joystick controls now.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V4.0 2021/07/24&#039;&#039;&#039;&lt;br /&gt;
* Found another 3-5% speed up in TIA rendering! Official Frogger now at 60FPS.&lt;br /&gt;
* Press and hold L+R+A to swap LCD screens.&lt;br /&gt;
* Other minor cleanups and polish.&lt;br /&gt;
&lt;br /&gt;
[https://github.com/wavemotion-dave/StellaDS/releases Release notes.]&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Thanks and credits:&lt;br /&gt;
* To Bradford W. Mott and Stephen Anthony and various contributors for Stella (http://stella.sourceforge.net/)&lt;br /&gt;
* To Robz for Twilight-Menu++ which rekindled emulation on the classic handheld (https://github.com/DS-Homebrew/TWiLightMenu)&lt;br /&gt;
* To Wintermute for devkitpro and libnds ([http://www.devkitpro.org/ http://www.devkitpro.org])&lt;br /&gt;
* To Alekmaul and The Chuckster for porting Stella to the DS.&lt;br /&gt;
* To John Champeau for his support in helping me optimize the emualtor for his advanced arm-assisted games.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub - https://github.com/wavemotion-dave/StellaDS&lt;br /&gt;
* GBAtemp - https://gbatemp.net/threads/stella-ds-improved.577691&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Butano_GBA&amp;diff=205642</id>
		<title>Butano GBA</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Butano_GBA&amp;diff=205642"/>
		<updated>2026-07-10T03:30:30Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 21.7.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox GBA Homebrews&lt;br /&gt;
|title=butano&lt;br /&gt;
|image=Butano2.png&lt;br /&gt;
|description=Modern C++ high level GBA engine.&lt;br /&gt;
|author=GValiente&lt;br /&gt;
|lastupdated=2026/07/06&lt;br /&gt;
|type=Development&lt;br /&gt;
|version=21.7.1&lt;br /&gt;
|license=Zlib&lt;br /&gt;
|download=https://github.com/GValiente/butano/releases&lt;br /&gt;
|website=https://github.com/GValiente/butano&lt;br /&gt;
|source=https://github.com/GValiente/butano&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title= (Development Libraries) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=butano2.png&lt;br /&gt;
|image_alt=butano&lt;br /&gt;
}}&amp;lt;!--butano-21.7.1.zip--&amp;gt;&lt;br /&gt;
Butano is a modern C++ high level engine for the Game Boy Advance.&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
*Create and display sprites, backgrounds, text, raster effects and more with only one line of C++ code.&lt;br /&gt;
*Custom standard library without heap allocations nor exceptions, based on [https://www.etlcpp.com/ ETL].&lt;br /&gt;
*Import and use your own assets [https://gvaliente.github.io/butano/import.html with ease].&lt;br /&gt;
*Multiple development tools like [https://gvaliente.github.io/butano/group__assert.html asserts], [https://gvaliente.github.io/butano/group__log.html emulator logging] and [https://gvaliente.github.io/butano/group__profiler.html code profiling].&lt;br /&gt;
*Based on modern C++ concepts like shared ownership and RAII.&lt;br /&gt;
*Detailed [https://gvaliente.github.io/butano documentation].&lt;br /&gt;
*Multiple [https://gvaliente.github.io/butano/examples.html examples] of most aspects of the engine.&lt;br /&gt;
*The source code and assets of two full games ([https://github.com/GValiente/butano#made-with-butano-butano-fighter Butano Fighter] and [https://github.com/GValiente/butano#made-with-butano-varooom-3d Varooom 3D]) are provided with this project.&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
Butano is built on top of the [https://devkitpro.org/ devkitARM toolchain], so it supports Windows, macOS and Unix-like platforms.&lt;br /&gt;
&lt;br /&gt;
The best way to get started is to read the [https://gvaliente.github.io/butano/getting_started.html download, install and start using Butano guide].&lt;br /&gt;
&lt;br /&gt;
Homebrew projects made with Butano:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot;|Title&lt;br /&gt;
! style=&amp;quot;width: 50%;&amp;quot;| Author&lt;br /&gt;
|-&lt;br /&gt;
| [[Butano Fighter GBA|Butano Fighter]]||GValiente&lt;br /&gt;
|-&lt;br /&gt;
| [[Varooom 3D GBA|Varooom 3D]]||GValiente&lt;br /&gt;
|-&lt;br /&gt;
| [[Feline GBA|Feline]]||foopod&lt;br /&gt;
|-&lt;br /&gt;
| [[Symbol Merged GBA|Symbol★Merged]]||copyrat90&lt;br /&gt;
|-&lt;br /&gt;
| [[LRO - Luggage Retrieval Officer GBA|LRO - Luggage Retrieval Officer]]||foopod&lt;br /&gt;
|-&lt;br /&gt;
| [[Bridge Quest GBA|Bridge Quest]]||fixxiefixx&lt;br /&gt;
|-&lt;br /&gt;
| [[Advance - Adventures Of The Math And Logic Club GBA|Advance! Adventures Of The Math &amp;amp; Logic Club]]||kvh64&lt;br /&gt;
|-&lt;br /&gt;
| [[Knight Owls GBA|Knight Owls]]||blaise-rascal&lt;br /&gt;
|-&lt;br /&gt;
| [[Tremblay Island GBA|Tremblay Island]]||cinemint&lt;br /&gt;
|-&lt;br /&gt;
| [[Frost Princess GBA|Frost Princess]]||squishyfrogs&lt;br /&gt;
|-&lt;br /&gt;
| [[GBA-NICCC|GBA-NICCC]]||GValiente&lt;br /&gt;
|-&lt;br /&gt;
| [[gba-free-fonts|gba-free-fonts]]||laqieer&lt;br /&gt;
|-&lt;br /&gt;
| [[GBA Microjam 23|GBA Microjam &#039;23]]||Various authors&lt;br /&gt;
|-&lt;br /&gt;
| [[Nuclear Love GBA|Nuclear Love]]||Jono Shields&lt;br /&gt;
|-&lt;br /&gt;
| [[Sips GBA|sips]]||Jono Shields&lt;br /&gt;
|-&lt;br /&gt;
| [https://neofidstudios.itch.io/demons-of-asteborg-dx Demons of Asteborg DX]||NeofidStudios&lt;br /&gt;
|-&lt;br /&gt;
| [https://afska.itch.io/beat-beast BeatBeast]||Afska, LaChia, Synthenia&lt;br /&gt;
|-&lt;br /&gt;
| [https://tardigrade-nx.itch.io/discrete-orange Discrete Orange]||Tardigrade&lt;br /&gt;
|-&lt;br /&gt;
| [https://staticlinkage.itch.io/sleep-paradox Sleep Paradox]||staticlinkage, ReyOruga, Nikku4211&lt;br /&gt;
|-&lt;br /&gt;
| [https://jeremyelkayam.itch.io/globlins Globlins!]||Jeremy Elkayam&lt;br /&gt;
|-&lt;br /&gt;
| [https://eragnarok.itch.io/detective-monroe-murder-at-sea Detective Monroe: Murder at Sea]||eragnarok, HummusHustler&lt;br /&gt;
|-&lt;br /&gt;
| [https://jeffzzq.itch.io/work-life Work Life]||jeffzzq&lt;br /&gt;
|-&lt;br /&gt;
| [https://fralacticus.itch.io/bata-dubnos Bata Dubnos]||Fralacticus&lt;br /&gt;
|-&lt;br /&gt;
| [https://drkylstein.itch.io/syscrusher Sys*Crusher]||OutOfSync&lt;br /&gt;
|-&lt;br /&gt;
| [https://jenkalab.itch.io/toll-runner Toll Runner]||Jenka Lab&lt;br /&gt;
|-&lt;br /&gt;
| [https://luife.itch.io/happy-dawn Happy Dawn]||Luife&lt;br /&gt;
|-&lt;br /&gt;
| [https://fixxiefixx.itch.io/space-evangelion Space Evangelion]||fixxiefixx&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/chrislewisdev/gba-pseudo-3d GBA Pseudo-3D demo]||Chris Lewis-Hou&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/butano3.gif&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/butano4.gif&lt;br /&gt;
https://dlhb.gamebrew.org/gbahomebrews/butano5.gif&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Third party libraries:&lt;br /&gt;
* GBA hardware access and more provided by [https://www.coranac.com/projects/#tonc Tonclib], [https://github.com/AntonioND/libugba Universal GBA Library] and [https://github.com/felixjones/agbabi agbabi].&lt;br /&gt;
* Music and sound effects provided by [https://blocksds.skylyrac.net/docs/maxmod/index.html Maxmod], [https://github.com/stuij/apex-audio-system Apex Audio System], [https://github.com/AntonioND/gbt-player GBT Player] and [https://github.com/copyrat90/gbadev-ja-test VGM player].&lt;br /&gt;
* Fast number to string conversion provided by [http://danposluns.com/danposluns/gbadev/posprintf/index.html posprintf].&lt;br /&gt;
* Fast math routines provided by [https://github.com/JoaoBaptMG/gba-modern gba-modern] and [https://github.com/AntonioND/libugba Universal GBA Library].&lt;br /&gt;
* Fast decompression routines provided by [https://github.com/Cult-of-GBA/BIOS Cult-of-GBA BIOS].&lt;br /&gt;
* Multiplayer support provided by [https://github.com/rodri042/gba-link-connection gba-link-connection].&lt;br /&gt;
* Pool containers provided by [https://www.etlcpp.com/ ETL].&lt;br /&gt;
* Unique type ID generation without RTTI provided by [https://github.com/Manu343726/ctti CTTI].&lt;br /&gt;
* Stateless random number generator provided by [https://github.com/velipso/whisky whisky].&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* GitHub - https://github.com/GValiente/butano&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Balatro3DS&amp;diff=205641</id>
		<title>Balatro3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Balatro3DS&amp;diff=205641"/>
		<updated>2026-07-10T03:30:27Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: Alpha 1.1.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=Balatro3DS&lt;br /&gt;
|image=Balatro3DS.png&lt;br /&gt;
|description=A fanmade Balatro clone for the 3DS.&lt;br /&gt;
|author=idkhan&lt;br /&gt;
|lastupdated=2026/07/10&lt;br /&gt;
|type=Card&lt;br /&gt;
|version=Alpha 1.1.5&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/Balatro3DS.7z&lt;br /&gt;
|website=https://www.reddit.com/r/3dshacks/comments/1sliqql/version_01_of_balatro3ds_released/&lt;br /&gt;
|source=https://github.com/idkhan/Balatro3DS&lt;br /&gt;
}}&lt;br /&gt;
Balatro3DS is a fan-made port/implementation of the game Balatro targeting the Nintendo 3DS, built with Lua and LÖVE.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Requires a Nintendo 3DS with homebrew capabilities (for running custom software).&lt;br /&gt;
&lt;br /&gt;
Download the [https://github.com/idkhan/Balatro3DS/releases latest release].&lt;br /&gt;
&lt;br /&gt;
Copy the Balatro3DS.3dsx file into the 3ds folder on the root of your SD Card.&lt;br /&gt;
&lt;br /&gt;
Open with the Homebrew launcher.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
R or Y - Play&lt;br /&gt;
&lt;br /&gt;
L or X - Discard&lt;br /&gt;
&lt;br /&gt;
D-Pad Left - Sort by Rank&lt;br /&gt;
&lt;br /&gt;
D-Pad Right - Sort by Suit&lt;br /&gt;
&lt;br /&gt;
D-Pad Up - Show Jokers&lt;br /&gt;
&lt;br /&gt;
D-Pad Down - Hide Jokers&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.5&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** Added the Collection to view all Cards, Blinds, Enhancements, etc&lt;br /&gt;
** Added More Gamepad Controls, check the How to Play menu to learn more&lt;br /&gt;
** Boss Blinds no longer repeat&lt;br /&gt;
** Added the Diet Cola Joker (it was missing before)&lt;br /&gt;
** Added a sneaky little cheat to unlock everything (Konami Code)&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Astronomer Joker now works&lt;br /&gt;
** Shop prices are recalculated after buying the discount vouchers&lt;br /&gt;
** Main Menu is now aligned properly&lt;br /&gt;
** Hitting New Run in a game saves the last run&lt;br /&gt;
** There&#039;s a bunch more I cant remember&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.3 (Fixed)&#039;&#039;&#039;&lt;br /&gt;
* Features:&lt;br /&gt;
** Menu Animation finally added&lt;br /&gt;
* Bugfixes:&lt;br /&gt;
** Fixed no price being shown on the Sell drop zone&lt;br /&gt;
** Fixed Tags and Spectral debuffs carrying over from previous runs&lt;br /&gt;
** Undiscovered cards now show their tooltips, just not their names&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.2&#039;&#039;&#039;&lt;br /&gt;
* Features&lt;br /&gt;
** Adds Deck and Stake Unlocks&lt;br /&gt;
** Allows Discovering Jokers, Tarot, Spectral and Planet Cards&lt;br /&gt;
** Deck View now shows Deck, Stake and Blind Information&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed the Invisible Joker bug (probably)&lt;br /&gt;
** Fixed Ankh not working&lt;br /&gt;
** Fixed incorrect Blind colors in the TopUI&lt;br /&gt;
** Vagabond not spawning tarot cards at $4&lt;br /&gt;
** Gros Michel was still in the shop pool after going extinct&lt;br /&gt;
** Changes made to the hand were not copied to the deck properly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.1 (Hotfix)&#039;&#039;&#039;&lt;br /&gt;
* Fixed the volume slider not working and freezing the game&lt;br /&gt;
* Fixed skip tags not rerolling after defeating a boss blind&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.1.0&#039;&#039;&#039;&lt;br /&gt;
* Features:&lt;br /&gt;
** REVAMPED THE SHOP CONTROLS - drag and drop functionality similar to the Mobile UI&lt;br /&gt;
** Added a Win Screen for Ante 8 - Still no progression tracking&lt;br /&gt;
* Bugfixes:&lt;br /&gt;
** Negative, Foil, Holo, Polychrome Tags were not working. Fixed&lt;br /&gt;
** The voucher tag didn&#039;t do anything&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.0.2&#039;&#039;&#039;&lt;br /&gt;
* Skip tags were crashing the game because I used a lua keyword as the name for a function parameter [https://github.com/idkhan/Balatro3DS/issues/31 #31]&lt;br /&gt;
* All Special Decks were being scored as Plasma deck because I missed a bracket [https://github.com/idkhan/Balatro3DS/issues/31 #31]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.0.1&#039;&#039;&#039;&lt;br /&gt;
* Now you can hold L to start Card Selection mode and use the DPAD to navigate through your hand.&lt;br /&gt;
* While in Card Selection Mode, pressing Up allows you to toggle a card and holding R and moving right or left lets you batch select cards&lt;br /&gt;
* Features:&lt;br /&gt;
** Added a Settings Menu ([https://github.com/pixelkat5 @pixelkat5])&lt;br /&gt;
** Improved Menu ([https://github.com/Promaster2007 @Promaster2007]) and new How to Play screen&lt;br /&gt;
** Added Gamepad support for card selection and navigation:&lt;br /&gt;
** New Icon ([https://github.com/Promaster2007 @Promaster2007])&lt;br /&gt;
* Bug Fixes ([https://github.com/idkhan @idkhan]):&lt;br /&gt;
** Fixed issue with card rendering in deck view.&lt;br /&gt;
** Fixed cards disappearing after opening a Booster Pack&lt;br /&gt;
** Fixed bad collisions in deck view&lt;br /&gt;
** Fixed an infinite loop caused by Brainstorm and Blueprint pointing at each other&lt;br /&gt;
** Fixed Cavendish being spawnable without Gros Michel going extinct&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 1.0.0&#039;&#039;&#039;&lt;br /&gt;
* Features Added:&lt;br /&gt;
** Added a Deck View, now you can press Select to view your deck and owned vouchers&lt;br /&gt;
** Added all the Decks&lt;br /&gt;
** Added all Stakes&lt;br /&gt;
* Bug Fixes:&lt;br /&gt;
** Fixed Legendary Jokers not showing up properly&lt;br /&gt;
** Fixed multiple jokers like the Mail-in Rebate on syncing up&lt;br /&gt;
** Fixed some Jokers not triggering properly&lt;br /&gt;
** Grabber and Nacho Tong vouchers are in the game, apparently they were just missing from the catalog, so now they are in the game and can be obtained&lt;br /&gt;
** Some other stuff I cannot remember, but I know I fixed a lot of bugs and added a lot of features, so enjoy!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.4.0&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Bigger Buy button&lt;br /&gt;
** Fixed the long delay in scoring with many jokers&lt;br /&gt;
** I can&#039;t remember them all, there&#039;s a bunch&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.6&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Score being too large to fit in the panel now resizes [https://github.com/idkhan/Balatro3DS/issues/15 #15]&lt;br /&gt;
** Castle Joker now changes suit and only picks suits present in the deck&lt;br /&gt;
** Blue Joker now counts cards in deck, used to count all cards [https://github.com/idkhan/Balatro3DS/issues/21 #21]&lt;br /&gt;
** Mr Bones not working properly [https://github.com/idkhan/Balatro3DS/issues/17 #17]&lt;br /&gt;
** Green Joker can no longer have negative mult [https://github.com/idkhan/Balatro3DS/issues/7 #7]&lt;br /&gt;
** Tarot Cards were not usable on less than the max number of cards, now they work as intended&lt;br /&gt;
** Fixed Boss blinds stopped working entirely&lt;br /&gt;
** Fixed glass break resetting score and changing hand types&lt;br /&gt;
* Noted Problems&lt;br /&gt;
** Some Jokers can be invisible, this is because of the 3DS&#039;s tiny VRAM cache filling up and not being able to display the texture. The Joker will still work. So if your booster pack comes with just one joker, the second one is probably invisible. Just tap where you expect it to be and the tooltip should show up. This will be fixed when new art assets are introduced.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.5&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed Cavendish appearing before Gros Michel is Extinct&lt;br /&gt;
** Fixed Oops joker not counting correctly&lt;br /&gt;
** Fixed Music pitch&lt;br /&gt;
** Fixed Tooltip drawing&lt;br /&gt;
** Fixed Popcorn not destroying itself&lt;br /&gt;
** Fixed Suit order in hand&lt;br /&gt;
** Fixed Wheel of Fortune not rolling chances properly&lt;br /&gt;
* Noted Problems&lt;br /&gt;
** Some Jokers may be invisible in the shop or in booster packs, they&#039;re still intractable and can be bought. The sprites will appear when bought.&lt;br /&gt;
** Boss Blind may appear as empty&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.4&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed cards being debuffed after Boss Blinds [https://github.com/idkhan/Balatro3DS/issues/6 #6]&lt;br /&gt;
** Fixed Booster Pack layout in the shop&lt;br /&gt;
** Fixed Endless Mode (After Ante 8) chip scaling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.3.2 (Not Fully Tested)&#039;&#039;&#039;&lt;br /&gt;
* Additions&lt;br /&gt;
** Added Vouchers&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed Hit the Bus Joker counting not scored cards&lt;br /&gt;
** Fixed Hand Levels not resetting&lt;br /&gt;
** Fixed Two Pairs not containing Pairs [https://github.com/idkhan/Balatro3DS/issues/5 #5]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.2.3&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed check for Flush with Four Fingers&lt;br /&gt;
** Fixed Judgement Tarot card creating Legendary Jokers and implemented proper rarity distribution&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.2.2&#039;&#039;&#039;&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Fixed Jokers not being sellable when opening Booster Packs&lt;br /&gt;
** Fixed the Fortune Teller and Stuntman Jokers not working&lt;br /&gt;
** Fixed check for hands contained in other hands&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.2&#039;&#039;&#039;&lt;br /&gt;
* Added a Menu and Pause Screen&lt;br /&gt;
* You can now save and continue runs&lt;br /&gt;
* Bugfixes&lt;br /&gt;
** Wild cards work now (completely forgot about them on the first release, oops)&lt;br /&gt;
** Fixed a bug with Booster Packs triggering Red Card even when the pack wasn&#039;t skipped&lt;br /&gt;
** Fixed Steel cards not scoring properly&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alpha 0.1.0&#039;&#039;&#039;&lt;br /&gt;
* 150 Jokers&lt;br /&gt;
* All Tarot, Planet, Spectral Cards&lt;br /&gt;
* All Boss Blinds&lt;br /&gt;
* No Menu or Pause Screen&lt;br /&gt;
* No Vouchers and Tags&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* itch.io - https://thegazpacho.itch.io/balatro3ds&lt;br /&gt;
* GitHub - https://github.com/idkhan/Balatro3DS&lt;br /&gt;
* Reddit - https://www.reddit.com/r/3dshacks/comments/1sliqql/version_01_of_balatro3ds_released/&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PocketCompiler_3DS&amp;diff=205640</id>
		<title>PocketCompiler 3DS</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PocketCompiler_3DS&amp;diff=205640"/>
		<updated>2026-07-10T03:30:26Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 0.43&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox 3DS Homebrews&lt;br /&gt;
|title=PocketCompiler&lt;br /&gt;
|image=PocketCompiler3DS.png&lt;br /&gt;
|description=An almost fully featured HTML/JS/CSS compiler application made for 3DS/n3DS consoles.&lt;br /&gt;
|author=PlanetDogeCodes&lt;br /&gt;
|lastupdated=2026/07/03&lt;br /&gt;
|type=Other Apps&lt;br /&gt;
|version=0.43&lt;br /&gt;
|license=Apache-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/3dshomebrews/PocketCompiler3DS.7z&lt;br /&gt;
|website=https://github.com/PlanetDogeCodes/Pocket-Compiler&lt;br /&gt;
|source=https://github.com/PlanetDogeCodes/Pocket-Compiler&lt;br /&gt;
}}&lt;br /&gt;
PocketCompiler is an experimental Nintendo 3DS HTML/JS/CSS compiler and code editor&lt;br /&gt;
&lt;br /&gt;
It&#039;s designed to let you write HTML/JS/CSS on the 3DS, allowing for easy development. You can:&lt;br /&gt;
* Edit code on the bottom screen.&lt;br /&gt;
* Preview output/status on the top screen.&lt;br /&gt;
* Save/load projects from the SD card.&lt;br /&gt;
&lt;br /&gt;
The default project path is &amp;lt;code&amp;gt;sdmc:/3ds/PocketCompiler/projects&amp;lt;/code&amp;gt;/&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Basic HTML parsing.&lt;br /&gt;
* Simple CSS.&lt;br /&gt;
* Basic JavaScript runtime capabilities.&lt;br /&gt;
* DOM-like elements.&lt;br /&gt;
* Keyboard/Mouse/Touch events.&lt;br /&gt;
* Nearly complete iframe support.&lt;br /&gt;
* document.write()&lt;br /&gt;
* Limited API and link fetching.&lt;br /&gt;
* IndexedDB-adjacent SD-card storage.&lt;br /&gt;
* Custom Canvas rendering.&lt;br /&gt;
* Custom WebGL rendering.&lt;br /&gt;
* Image loading.&lt;br /&gt;
* Web audio support.&lt;br /&gt;
&lt;br /&gt;
== Canvas / WebGL ==&lt;br /&gt;
PocketCompiler has rendering systems for:&lt;br /&gt;
* canvas command buffers&lt;br /&gt;
* rectangles, lines, text, placeholders&lt;br /&gt;
* &amp;lt;code&amp;gt;getContext(&amp;quot;webgl&amp;quot;)&amp;lt;/code&amp;gt; detection&lt;br /&gt;
* buffers&lt;br /&gt;
* shaders/programs&lt;br /&gt;
* uniforms/attributes&lt;br /&gt;
* textures&lt;br /&gt;
* draw calls&lt;br /&gt;
* viewport/depth/blend/scissor state&lt;br /&gt;
* Citro3D backend scaffolding&lt;br /&gt;
&lt;br /&gt;
This is not yet full WebGL.&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
PocketCompiler includes SD-card-backed storage systems:&lt;br /&gt;
&amp;lt;pre&amp;gt;sdmc:/3ds/PocketCompiler/idb/&lt;br /&gt;
sdmc:/3ds/PocketCompiler/cache_api/&lt;br /&gt;
sdmc:/3ds/PocketCompiler/resource_cache/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supported or scaffolded:&lt;br /&gt;
* IndexedDB-style databases/object stores&lt;br /&gt;
* &amp;lt;code&amp;gt;put&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clear&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;count&amp;lt;/code&amp;gt;&lt;br /&gt;
* localStorage-style storage&lt;br /&gt;
* sessionStorage-style storage&lt;br /&gt;
* Cache API-style storage&lt;br /&gt;
* binary-safe values&lt;br /&gt;
* 1 MB per-value/resource cap&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;br /&gt;
PocketCompiler includes a small Web Audio-style system:&lt;br /&gt;
* AudioContext-like runtime&lt;br /&gt;
* OscillatorNode-like node&lt;br /&gt;
* GainNode-like node&lt;br /&gt;
* sine/square/triangle/sawtooth tones&lt;br /&gt;
* NDSP-backed output when available&lt;br /&gt;
* safe fallback if audio fails&lt;br /&gt;
&lt;br /&gt;
== Limitations ==&lt;br /&gt;
PocketCompiler is still in early development.&lt;br /&gt;
&lt;br /&gt;
It does not yet fully support:&lt;br /&gt;
* Complete HTML parsing&lt;br /&gt;
* Full CSS layout/cascade&lt;br /&gt;
* Full modern JavaScript/browser behavior&lt;br /&gt;
* Complete Promise/event-loop behavior&lt;br /&gt;
* Full WebGL 1.0&lt;br /&gt;
* Real GLSL shader translation&lt;br /&gt;
* Full Canvas 2D API&lt;br /&gt;
* Full Web Audio API&lt;br /&gt;
* Full IndexedDB compatibility&lt;br /&gt;
* Complete iframe isolation&lt;br /&gt;
* Pointer lock&lt;br /&gt;
&lt;br /&gt;
The 3DS also has very limited RAM, CPU, GPU power, and screen space, so PocketCompiler uses strict safety limits (1 MB per resource/value/cache entry, bounded event queues, bounded command buffers, bounded editor/runtime structures)&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
D-Pad - Arrow key movement&lt;br /&gt;
&lt;br /&gt;
Circle Pad - Move mouse cursor (it&#039;s just a dot)&lt;br /&gt;
&lt;br /&gt;
A - Click, Edit code line&lt;br /&gt;
&lt;br /&gt;
B - Undo&lt;br /&gt;
&lt;br /&gt;
X - Save project&lt;br /&gt;
&lt;br /&gt;
Y - Load project&lt;br /&gt;
&lt;br /&gt;
Start - Run/Compile&lt;br /&gt;
&lt;br /&gt;
Select - Show controls menu&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/PocketCompiler3DS2.png&lt;br /&gt;
https://dlhb.gamebrew.org/3dshomebrews/images/PocketCompiler3DS3.png&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v0.42&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;CSS Transitions&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;transition: 0.3s ease-in-out&amp;lt;/code&amp;gt; now actually animates. When a style property changes on an element with a transition duration, the old and new values are interpolated over the duration using smoothstep easing. Supports 25 numeric properties (opacity, width, height, margins, padding, position, font-size, border, transforms) plus color properties (color, background) which interpolate per-channel. The transition engine runs in the frame loop and marks transitioning nodes dirty so layout re-runs each frame to reflect the changing values.&lt;br /&gt;
* &#039;&#039;&#039;Box-Shadow&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;box-shadow: 2px 2px 4px rgba(0,0,0,0.5)&amp;lt;/code&amp;gt; is parsed into offset/blur/color and drawn as a semi-transparent rect behind the element before the background fill. No real gaussian blur (3DS hardware can&#039;t do that efficiently), but the spread approximation looks reasonable for most UI shadows.&lt;br /&gt;
* &#039;&#039;&#039;Linear-Gradient Backgrounds&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;background: linear-gradient(to right, red, blue)&amp;lt;/code&amp;gt; is parsed into start/end colors and a direction, then rendered as 16 interpolated color bands. Supports &amp;lt;code&amp;gt;to right/bottom/left/top&amp;lt;/code&amp;gt; directions and &amp;lt;code&amp;gt;Ndeg&amp;lt;/code&amp;gt; angles. Falls back to solid &amp;lt;code&amp;gt;background&amp;lt;/code&amp;gt; color when no gradient is active. Transparent colors work correctly (uses explicit &amp;amp;quot;set&amp;amp;quot; flags instead of checking for zero).&lt;br /&gt;
* &#039;&#039;&#039;CSS Grid Layout&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;display: grid&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;grid-template-columns&amp;lt;/code&amp;gt; now lays out children in a grid. Supports fixed pixel widths, &amp;lt;code&amp;gt;fr&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;auto&amp;lt;/code&amp;gt; (equal distribution), and &amp;lt;code&amp;gt;repeat(N, ...)&amp;lt;/code&amp;gt; syntax up to 8 columns. Rows auto-size to the tallest cell, gap is applied between cells, and children are vertically centered within their row.&lt;br /&gt;
* &#039;&#039;&#039;CSS &amp;lt;code&amp;gt;calc()&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;calc(100% - 20px)&amp;lt;/code&amp;gt; is now evaluated at layout time. Supports &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; with correct operator precedence, and all length units (px, em, rem, vw, vh, %) work inside calc terms. Self-contained in the length parser — no new systems.&lt;br /&gt;
* &#039;&#039;&#039;Form Submission&#039;&#039;&#039;&lt;br /&gt;
** Clicking a &amp;lt;code&amp;gt;&amp;amp;lt;button type=&amp;amp;quot;submit&amp;amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;amp;lt;input type=&amp;amp;quot;submit&amp;amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; inside a &amp;lt;code&amp;gt;&amp;amp;lt;form&amp;amp;gt;&amp;lt;/code&amp;gt; now fires the form&#039;s &amp;lt;code&amp;gt;onsubmit&amp;lt;/code&amp;gt; handler and dispatches a &amp;lt;code&amp;gt;submit&amp;lt;/code&amp;gt; event. This replaces the old START-key approach which conflicted with START=exit-run-mode.&lt;br /&gt;
* &#039;&#039;&#039;Keybind Conflict Fixes&#039;&#039;&#039;&lt;br /&gt;
** Resolved button assignment conflicts between the app shell and web content event system. In run mode, only DPad (arrow keys) and Y (Space) generate keyboard events for web content. A/B/X/L/R/START are exclusively mouse clicks, cursor lock, and exit-run-mode — no more phantom keydown events alongside mouse clicks.&lt;br /&gt;
* &#039;&#039;&#039;Bug Fixes&#039;&#039;&#039;&lt;br /&gt;
** IndexedDB path overflow: &amp;lt;code&amp;gt;store&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; strings from JS are now length-validated to prevent path truncation&lt;br /&gt;
** IndexedDB &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt; return logic: was returning true for empty files&lt;br /&gt;
** IndexedDB &amp;lt;code&amp;gt;clear()&amp;lt;/code&amp;gt; prefix buffer: enlarged from 80 to 128 bytes to handle longer store names&lt;br /&gt;
** Transition color precision: RGBA8 colors now stored as uint32 (not float) to avoid precision loss past 2^24&lt;br /&gt;
** Gradient transparent-color: &amp;lt;code&amp;gt;0x00000000&amp;lt;/code&amp;gt; (transparent) no longer treated as &amp;amp;quot;unset&amp;amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.41&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; text entry&#039;&#039;&#039;&lt;br /&gt;
** New &amp;lt;code&amp;gt;we_input_prompt()&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;web_events.c&amp;lt;/code&amp;gt; opens the 3DS software keyboard when a click lands on an &amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; (or an ancestor of one). Reads the current &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; attribute, shows it as initial text, writes the result back, fires &amp;lt;code&amp;gt;input&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;change&amp;lt;/code&amp;gt; events, and marks the node dirty so the renderer shows the new text.&lt;br /&gt;
** New &amp;lt;code&amp;gt;we_text_input()&amp;lt;/code&amp;gt; helper wraps &amp;lt;code&amp;gt;swkbdInit&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;swkbdInputText&amp;lt;/code&amp;gt; for reuse.&lt;br /&gt;
* &#039;&#039;&#039;CSS &amp;lt;code&amp;gt;transform: translate()&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;wrender_node&amp;lt;/code&amp;gt; now applies &amp;lt;code&amp;gt;translate_x&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;translate_y&amp;lt;/code&amp;gt; to the draw position, and folds the offset into the children&#039;s &amp;lt;code&amp;gt;ox&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;oy&amp;lt;/code&amp;gt; so children move with the translated parent. ~6 lines of real logic; the parser already stored the values since v0.39.&lt;br /&gt;
* &#039;&#039;&#039;Word-wrap in the layout engine&#039;&#039;&#039;&lt;br /&gt;
** Replaced the naive &amp;lt;code&amp;gt;tw/avail_w + 1&amp;lt;/code&amp;gt; character-count wrapping with proper word-boundary wrapping. Walks the text word by word, tracks line width, breaks when the next word would overflow. Hard-breaks words longer than a full line. Respects &amp;lt;code&amp;gt;white-space: pre&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nowrap&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;CSS &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;:nth-child&amp;lt;/code&amp;gt; pseudo-classes&#039;&#039;&#039;&lt;br /&gt;
** New &amp;lt;code&amp;gt;pseudo_matches()&amp;lt;/code&amp;gt; function checks &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:active&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:checked&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:disabled&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:first-child&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:last-child&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;:nth-child(n/odd/even)&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;selector_matches()&amp;lt;/code&amp;gt; rewritten to split selectors at &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; and check the pseudo-class after the base selector matches. Supports chained pseudos (&amp;lt;code&amp;gt;a:focus:hover&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Dynamic re-cascade: &amp;lt;code&amp;gt;we_events_update&amp;lt;/code&amp;gt; marks nodes dirty on hover/focus changes; &amp;lt;code&amp;gt;we_update&amp;lt;/code&amp;gt; now re-runs &amp;lt;code&amp;gt;css_cascade&amp;lt;/code&amp;gt; (not just &amp;lt;code&amp;gt;layout_document&amp;lt;/code&amp;gt;) when nodes are dirty, so &amp;lt;code&amp;gt;:hover&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;:focus&amp;lt;/code&amp;gt; styles apply dynamically.&lt;br /&gt;
* &#039;&#039;&#039;Keyboard input to web content&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;window.prompt(message, default)&amp;lt;/code&amp;gt; now opens the 3DS software keyboard and returns the typed string (was a no-op stub returning &amp;lt;code&amp;gt;undefined&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Clicking an &amp;lt;code&amp;gt;&amp;amp;lt;input&amp;amp;gt;&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;&amp;amp;lt;textarea&amp;amp;gt;&amp;lt;/code&amp;gt; opens the keyboard (Feature 1 above).&lt;br /&gt;
* &#039;&#039;&#039;localStorage persistence + IndexedDB completion&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;IndexedDB C API hardened&#039;&#039;&#039;: &amp;lt;code&amp;gt;ws_idb_open&amp;lt;/code&amp;gt; now checks for existing databases with the same name (no duplicates); &amp;lt;code&amp;gt;ws_idb_get&amp;lt;/code&amp;gt; validates &amp;lt;code&amp;gt;fread&amp;lt;/code&amp;gt; return (was a potential underflow); &amp;lt;code&amp;gt;ws_idb_clear&amp;lt;/code&amp;gt; is no longer a no-op — it scans the directory with &amp;lt;code&amp;gt;opendir&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;readdir&amp;lt;/code&amp;gt; and removes all files matching the store prefix; all functions now have proper NULL/bounds checks.&lt;br /&gt;
** &#039;&#039;&#039;IndexedDB JS bindings&#039;&#039;&#039;: &amp;lt;code&amp;gt;ws_install_idb&amp;lt;/code&amp;gt; now installs a real &amp;lt;code&amp;gt;indexedDB&amp;lt;/code&amp;gt; object to JS with &amp;lt;code&amp;gt;open()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;put()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;delete()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;clear()&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;close()&amp;lt;/code&amp;gt; methods. &amp;lt;code&amp;gt;put()&amp;lt;/code&amp;gt; JSON-encodes values; &amp;lt;code&amp;gt;get()&amp;lt;/code&amp;gt; safely JSON-parses them back (falls back to string if not valid JSON). The &amp;amp;quot;IndexedDB&amp;amp;quot; feature pill is now actually true.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.38&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Crash / correctness bugs:&#039;&#039;&#039;&lt;br /&gt;
** Canvas 2D silently broken — wc_install_bindings() built its property-setup script with snprintf into a 512-byte buffer, but the actual script is 854 bytes. It was truncating mid-statement, so ctx.fillStyle = &#039;red&#039; and every other canvas property setter did nothing, with zero error shown. Now passed as a literal directly to duk_eval_string — no buffer, no truncation possible.&lt;br /&gt;
** Event listeners could misfire — DOMEvent.js_ref was a uint8_t, silently wrapping after the 255th addEventListener() call in a session and firing the wrong callback. Widened to uint16_t.&lt;br /&gt;
** Listener ref counter never reset — it was a function-local static that persisted across every recompile instead of resetting with the fresh Duktape context each page load gets. Moved to file scope with an explicit reset tied to context creation.&lt;br /&gt;
** Unchecked array access in we_document_open() — switched to the existing bounds-checked accessor so a corrupted sibling chain can&#039;t read out-of-bounds memory.&lt;br /&gt;
* &#039;&#039;&#039;Stack-safety hardening (3DS has only 256KB of stack):&#039;&#039;&#039;&lt;br /&gt;
** ~3KB of stacked buffers in the CSS parser — css_parse_inline&#039;s 2048-byte buffer is called while css_parse_stylesheet&#039;s 1024-byte buffer is still live. Both made static (verified safe: parsing is never re-entrant).&lt;br /&gt;
** Unbounded layout recursion — nothing stopped a deeply-nested DOM tree (up to the 1024-node cap) from recursing that many stack frames deep. Added a depth guard capped well above any realistic page.&lt;br /&gt;
* Version v0.37 was skipped due to issues with a beta build.&lt;br /&gt;
* CIA files will be added in version 1.0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.36&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Crash / correctness fixes:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;editor_find&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;editor_find_prev&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;start_line&amp;lt;/code&amp;gt; was not clamped before use — with a corrupted or uninitialized value it could make &amp;lt;code&amp;gt;editor_get_line&amp;lt;/code&amp;gt; walk off the end of the buffer. Now clamped to &amp;lt;code&amp;gt;[0, total-1]&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;editor_replace_at&amp;lt;/code&amp;gt;: added &amp;lt;code&amp;gt;col &amp;gt; llen&amp;lt;/code&amp;gt; guard so an exact-end-of-line replacement can&#039;t produce a negative memcpy count.&lt;br /&gt;
** &amp;lt;code&amp;gt;we_eval_js&amp;lt;/code&amp;gt;: added &amp;lt;code&amp;gt;!g_web_engine.loaded&amp;lt;/code&amp;gt; check — without it, a stale non-NULL &amp;lt;code&amp;gt;js_ctx&amp;lt;/code&amp;gt; pointer left from a previous &amp;lt;code&amp;gt;we_unload()&amp;lt;/code&amp;gt; call could be dereferenced.&lt;br /&gt;
** &amp;lt;code&amp;gt;draw_console&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;i &amp;lt; WJS_LOG_MAX_LINES&amp;lt;/code&amp;gt; guard added — a corrupted &amp;lt;code&amp;gt;g_wjs_log_n&amp;lt;/code&amp;gt; could have caused a read past the log array bounds.&lt;br /&gt;
* &#039;&#039;&#039;Compiler warning fixes:&#039;&#039;&#039;&lt;br /&gt;
** &amp;lt;code&amp;gt;(down &amp;amp; KEY_X) &amp;amp;&amp;amp; ...&amp;lt;/code&amp;gt; — explicit parentheses added (GCC -Wall warning eliminated).&lt;br /&gt;
** Two &amp;lt;code&amp;gt;strcat()&amp;lt;/code&amp;gt; calls replaced with &amp;lt;code&amp;gt;strncat()&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;LAYOUT_ED_H&amp;lt;/code&amp;gt; corrected to &amp;lt;code&amp;gt;178.0f&amp;lt;/code&amp;gt; (was &amp;lt;code&amp;gt;180.0f&amp;lt;/code&amp;gt;) — the 2px mismatch caused the cursor-to-line mapping to select the wrong line near the bottom of the editor panel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.34&#039;&#039;&#039;&lt;br /&gt;
* Slight UI changes&lt;br /&gt;
* Bordered rendering for text &amp;amp; iframe&lt;br /&gt;
* Memory usage fixes&lt;br /&gt;
* More accurate CSS parsing&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! File&lt;br /&gt;
! Fixes/Changes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_layout.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Body &amp;lt;code&amp;gt;avail_w&amp;lt;/code&amp;gt; bug fixed: was &amp;lt;code&amp;gt;2×margin_left&amp;lt;/code&amp;gt;, now &amp;lt;code&amp;gt;margin_left + margin_right&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_layout.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Text node &amp;lt;code&amp;gt;lay_w&amp;lt;/code&amp;gt; uses full available container width for alignment.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Scale formula &amp;lt;code&amp;gt;size/11.0f&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;size/30.0f&amp;lt;/code&amp;gt; (correct for system font at scale 1.0 ≈ 30px).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| TEXT nodes use parent container width for proper text alignment.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_render.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| Bottom border drawn on document viewport to frame the output area.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_engine.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| &amp;lt;code&amp;gt;css_apply_ua_defaults()&amp;lt;/code&amp;gt; called after &amp;lt;code&amp;gt;css_reset()&amp;lt;/code&amp;gt;, before parse — so user styles always win.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;web_engine.c&amp;lt;/code&amp;gt;&lt;br /&gt;
| RUNNING bar cleaned up; conflicting title bar overlay removed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.5&#039;&#039;&#039;&lt;br /&gt;
* Hopefully fixed crashing issues&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.4&#039;&#039;&#039;&lt;br /&gt;
* MAYBE fixed crashing issues (untested, will update when tested)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.3&#039;&#039;&#039;&lt;br /&gt;
* Fixed surface-level crashing issues&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33.2&#039;&#039;&#039;&lt;br /&gt;
* Maybe fixed crashing issues&lt;br /&gt;
* Stability fixes&lt;br /&gt;
* Fixed errors while compiling&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.33&#039;&#039;&#039;&lt;br /&gt;
* Fixed scrolling&lt;br /&gt;
* Fixed line truncation&lt;br /&gt;
* Added more complete rendering capabilities&lt;br /&gt;
* Added pointer lock integration&lt;br /&gt;
* Added page interaction&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.32&#039;&#039;&#039;&lt;br /&gt;
* Fixed the HTML rendering engine&lt;br /&gt;
* Slight UI changes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.31.1&#039;&#039;&#039;&lt;br /&gt;
* Completely overhauled the UI (AI was used to help with this)&lt;br /&gt;
* New frame buffer that minimizes the visual bug to almost unnoticeable proportions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pre-Release v0.30&#039;&#039;&#039;&lt;br /&gt;
* Fixed app crashing on file explorer open (MAYBE FR THIS TIME)&lt;br /&gt;
* Fixed the visual bug (kinda)&lt;br /&gt;
&lt;br /&gt;
== Credits ==&lt;br /&gt;
PocketCompiler project and idea by PlanetDogeCodes (me). Some browser runtime features, custom Canvas/WebGL Integration, and 3DS Optimizations were all made with help from GPT-5.5 (xhigh) and GLM 5.2 (max). Some UI elements and DOM-style event handling were made with help from Claude Sonnet 4.6&lt;br /&gt;
&lt;br /&gt;
Built with:&lt;br /&gt;
* Visual Studio Code&lt;br /&gt;
* devkitPro&lt;br /&gt;
* devkitARM&lt;br /&gt;
* libctru&lt;br /&gt;
* Citro2D&lt;br /&gt;
* Citro3D&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/PlanetDogeCodes/Pocket-Compiler&lt;br /&gt;
* Universal-DB - https://db.universal-team.net/3ds/pocket-compiler&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=Vitacompanion_Plugin&amp;diff=205639</id>
		<title>Vitacompanion Plugin</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=Vitacompanion_Plugin&amp;diff=205639"/>
		<updated>2026-07-10T03:30:26Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.02&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Plugins) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=vitacompanion2.png&lt;br /&gt;
|image_alt=vitacompanion&lt;br /&gt;
}}&lt;br /&gt;
{{Infobox Vita Homebrews&lt;br /&gt;
|title=vitacompanion&lt;br /&gt;
|image=vitacompanion2.png&lt;br /&gt;
|description=Development helper plugin.&lt;br /&gt;
|author=devnoname120&lt;br /&gt;
|lastupdated=2026/07/09&lt;br /&gt;
|type=Plugins&lt;br /&gt;
|version=1.02&lt;br /&gt;
|license=MIT&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/vitacompanion.7z&lt;br /&gt;
|website=https://github.com/devnoname120/vitacompanion&lt;br /&gt;
|source=https://github.com/devnoname120/vitacompanion&lt;br /&gt;
}}&lt;br /&gt;
vitacompanion by devnoname120 is a user module which makes developing homebrews for the PS Vita device easier. It does two things: &lt;br /&gt;
*Open a FTP server on port 1337.&lt;br /&gt;
*Listen to commands on port 1338.&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
Run [[VitaShell]] on your PS Vita, press Select to activate the FTP server and copy vitacompanion.suprx to ur0:tai/. &lt;br /&gt;
&lt;br /&gt;
Finally, add the following line to ur0:tai/config.txt&lt;br /&gt;
&lt;br /&gt;
 *main&lt;br /&gt;
 ur0:tai/vitacompanion.suprx&lt;br /&gt;
&lt;br /&gt;
==User guide==&lt;br /&gt;
=== FTP server ===&lt;br /&gt;
You can upload stuff to your vita by running:&lt;br /&gt;
&lt;br /&gt;
 curl -T somefile.zip &amp;lt;nowiki&amp;gt;ftp://IP_TO_VITA:1337/ux0:/somedir/somefile.zip&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or you can use your regular FTP client. The server accepts both Vita-style paths such as &amp;lt;code&amp;gt;ux0:/somedir/&amp;lt;/code&amp;gt; and FTP absolute paths such as &amp;lt;code&amp;gt;/ux0:/somedir/&amp;lt;/code&amp;gt;. It also supports &amp;lt;code&amp;gt;EPSV&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PASV&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LIST&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NLST&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;MDTM&amp;lt;/code&amp;gt; for compatibility with generic FTP clients.&lt;br /&gt;
&lt;br /&gt;
If you want curl to send the full FTP path directly instead of changing directories first, use the double-slash URL form:&lt;br /&gt;
&lt;br /&gt;
 curl --ftp-method nocwd &amp;lt;nowiki&amp;gt;ftp://IP_TO_VITA:1337//ux0:/somedir/&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Command server ===&lt;br /&gt;
Send a command by opening a TCP connection to the port 1338 of your Vita.&lt;br /&gt;
&lt;br /&gt;
For example, you can reboot your vita by running:&lt;br /&gt;
&lt;br /&gt;
 echo reboot | nc IP_TO_PSVITA 1338&lt;br /&gt;
&lt;br /&gt;
Note that you need to append a newline character to the command that you send. &amp;lt;code&amp;gt;echo&amp;lt;/code&amp;gt; already adds one, which is why it works here.&lt;br /&gt;
&lt;br /&gt;
=== Available commands ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! dir=&amp;quot;ltr&amp;quot;| Command&lt;br /&gt;
! dir=&amp;quot;ltr&amp;quot;| Arguments&lt;br /&gt;
! dir=&amp;quot;ltr&amp;quot;| Explanation&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| none&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| display the help screen&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;destroy&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| none&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| kill all running applications&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;launch&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;&amp;amp;lt;TITLEID&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| launch an application by id e.g. &amp;lt;code&amp;gt;launch VHBB00001&amp;lt;/code&amp;gt; to launch the [https://github.com/devnoname120/vhbb Vita Homebrew Browser]&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;kill&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;&amp;amp;lt;TITLEID&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| kill an application by id&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;nosleep&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;status&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| enable or disable automatic suspend prevention. This is enabled by default at boot&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;reboot&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| none&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| reboot the console&lt;br /&gt;
|-&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;screen&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| &amp;lt;code&amp;gt;on&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;off&amp;lt;/code&amp;gt;&lt;br /&gt;
| dir=&amp;quot;ltr&amp;quot;| turn screen on or off&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Commands are defined in [https://github.com/robsdedude/vitacompanion/blob/master/src/cmd_definitions.c &amp;lt;code&amp;gt;src/cmd_definitions.c&amp;lt;/code&amp;gt;], you can add new commands there.&lt;br /&gt;
&lt;br /&gt;
===Integration in IDE&#039;s===&lt;br /&gt;
VSCode - https://github.com/imcquee/vitacompanion-VSCODE&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;1.02&#039;&#039;&#039;&lt;br /&gt;
* Fixed a regression where no-argument FTP commands such as LIST were parsed as their own path argument.&lt;br /&gt;
* Restored plain LIST support for clients such as lftp and FileZilla after changing into a directory.&lt;br /&gt;
* Bumped module metadata to version 1.02.&lt;br /&gt;
&#039;&#039;&#039;1.01&#039;&#039;&#039;&lt;br /&gt;
* Added help output, application kill-by-title-id support, and command-controlled no-sleep mode.&lt;br /&gt;
* Hardened command server input handling.&lt;br /&gt;
* Fixed startup behavior when Wi-Fi is already connected.&lt;br /&gt;
* Expanded FTP compatibility with uma0/imc0 drive support, vendored libftpvita path handling fixes, EPSV, NLST, and MDTM.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
Thanks to xerpi for his [https://bitbucket.org/xerpi/vita-ftploader/src/87ef1d13a8aa/plugin/?at=master vita-ftploader] plugin, I stole a lot of his code (with his permission). &lt;br /&gt;
&lt;br /&gt;
Thanks to cpasjuste for [[PSP2SHELL Vita]], it inspired me to create this tool.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/devnoname120/vitacompanion&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/488&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=EQVita&amp;diff=205638</id>
		<title>EQVita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=EQVita&amp;diff=205638"/>
		<updated>2026-07-10T03:30:25Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: 1.14.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=EQVita&lt;br /&gt;
|image=EQVita2.png&lt;br /&gt;
|description=System-wide EQ kernel plugin and app for PS Vita.&lt;br /&gt;
|author=shev0k&lt;br /&gt;
|lastupdated=2026/07/07&lt;br /&gt;
|type=Utilities&lt;br /&gt;
|version=1.14.0&lt;br /&gt;
|license=GPL-3.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/EQVita.7z&lt;br /&gt;
|website=https://github.com/shev0k/EQVita&lt;br /&gt;
|source=https://github.com/shev0k/EQVita&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Utilities) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=EQVita.png&lt;br /&gt;
|image_alt=EQVita&lt;br /&gt;
}}&lt;br /&gt;
EQVita is a hobby homebrew project made to give the Vita a richer sound. It ships as a kernel plugin plus a small Vita app.&lt;br /&gt;
&lt;br /&gt;
Install it, open the app, pick a preset, and make the Vita sound less flat. Nerd version: the plugin hooks &amp;lt;code&amp;gt;sceAudioOutOutput&amp;lt;/code&amp;gt;, while the app handles presets, route hints, themes, logs, and boot state.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* 10-band graphic EQ from &amp;lt;code&amp;gt;31 Hz&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;16 kHz&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Simple EQ mode for bass, mids, treble, and preamp.&lt;br /&gt;
* Advanced EQ mode for every band and preamp.&lt;br /&gt;
* Built-in &amp;lt;code&amp;gt;STOCK Depth&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;MOD Switch&amp;lt;/code&amp;gt; presets.&lt;br /&gt;
* Preset slots with save/load support.&lt;br /&gt;
* Music Preview for playing a local &amp;lt;code&amp;gt;OGG&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MP3&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;WAV&amp;lt;/code&amp;gt; while tuning EQ.&lt;br /&gt;
* Speaker-only mode or all-output mode for wired/Bluetooth too.&lt;br /&gt;
* Optional HPF (Bass guard), which cuts very low rumble.&lt;br /&gt;
* Safe, Loud, and Direct headroom modes.&lt;br /&gt;
* Vita-style app UI with themes. &amp;lt;code&amp;gt;Crimson Vita&amp;lt;/code&amp;gt; is the default.&lt;br /&gt;
* Boot persistence through &amp;lt;code&amp;gt;ur0:data/eqvita/boot.eqbs&amp;lt;/code&amp;gt;.&lt;br /&gt;
* App log at &amp;lt;code&amp;gt;ur0:data/eqvita/app.log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
Copy &amp;lt;code&amp;gt;eq_speaker.skprx&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ur0:tai/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Add to &amp;lt;code&amp;gt;ur0:tai/config.txt&amp;lt;/code&amp;gt; under &amp;lt;code&amp;gt;*KERNEL&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;*KERNEL&lt;br /&gt;
ur0:tai/eq_speaker.skprx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reboot, install &amp;lt;code&amp;gt;EQVita.vpk&amp;lt;/code&amp;gt; through [[VitaShell]].&lt;br /&gt;
&lt;br /&gt;
Open EQVita and pick a preset.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Keep the app and plugin from the same release. Mixed versions can fail or behave weirdly.&lt;br /&gt;
&lt;br /&gt;
== User guide ==&lt;br /&gt;
=== Presets And Data ===&lt;br /&gt;
EQVita stores data in: &amp;lt;code&amp;gt;ur0:data/eqvita/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Files you may see there:&lt;br /&gt;
* &amp;lt;code&amp;gt;preset0.eqvp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;preset1.eqvp&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;preset2.eqvp&amp;lt;/code&amp;gt; - preset slots.&lt;br /&gt;
* &amp;lt;code&amp;gt;boot.eqbs&amp;lt;/code&amp;gt; - boot state.&lt;br /&gt;
* &amp;lt;code&amp;gt;theme.cfg&amp;lt;/code&amp;gt; - selected app theme.&lt;br /&gt;
* &amp;lt;code&amp;gt;app.log&amp;lt;/code&amp;gt; - useful log for bug reports.&lt;br /&gt;
&lt;br /&gt;
There are three preset slots. EQ changes apply live, and saving writes the current settings into the selected slot.&lt;br /&gt;
&lt;br /&gt;
The built-in presets are starting points. Applying &amp;lt;code&amp;gt;STOCK Depth&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;MOD Switch&amp;lt;/code&amp;gt; saves that preset into the active slot and startup state.&lt;br /&gt;
&lt;br /&gt;
Small warning: every Vita, speaker mod, headphone, and Bluetooth setup is different. Blindly copying my bass-heavy presets can cause clipping or ugly distortion on your setup. If that happens, lower preamp first.&lt;br /&gt;
&lt;br /&gt;
If you make a preset that sounds nice, please share it in this repo&#039;s [https://github.com/shev0k/EQVita/discussions Discussions]. Over time, it would be cool to build a small preset library from real user setups instead of pretending one preset fits everything.&lt;br /&gt;
&lt;br /&gt;
The boot state is what lets the plugin load your saved sound after reboot, before you open the app again.&lt;br /&gt;
&lt;br /&gt;
Old raw &amp;lt;code&amp;gt;preset%d.bin&amp;lt;/code&amp;gt; files are imported read-only when a matching &amp;lt;code&amp;gt;.eqvp&amp;lt;/code&amp;gt; file does not exist.&lt;br /&gt;
&lt;br /&gt;
=== Music Preview ===&lt;br /&gt;
The app can play a local song while you tune EQ.&lt;br /&gt;
&lt;br /&gt;
Put an &amp;lt;code&amp;gt;OGG&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MP3&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;WAV&amp;lt;/code&amp;gt; file somewhere on your Vita, open &amp;lt;code&amp;gt;Music Preview&amp;lt;/code&amp;gt;, choose the file, then adjust EQ like normal.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* No music is bundled in the VPK.&lt;br /&gt;
* &amp;lt;code&amp;gt;ux0:music/&amp;lt;/code&amp;gt; is shown as a shortcut in the file picker when available.&lt;br /&gt;
* Preview playback stops and releases the audio port when you stop it or close EQVita.&lt;br /&gt;
* This is only for tuning. It is not trying to replace your normal music player.&lt;br /&gt;
&lt;br /&gt;
=== Output Modes ===&lt;br /&gt;
&amp;lt;code&amp;gt;Vita speakers&amp;lt;/code&amp;gt; mode applies EQ only to the Vita speakers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;All outputs&amp;lt;/code&amp;gt; mode also allows wired headphones and Bluetooth output.&lt;br /&gt;
&lt;br /&gt;
If EQ is bypassed, the app tries to show why. Common reasons are:&lt;br /&gt;
* EQ is turned off.&lt;br /&gt;
* The selected output mode does not match the current route.&lt;br /&gt;
* The output port is unknown or busy.&lt;br /&gt;
* The audio format is unsupported.&lt;br /&gt;
* The app and plugin ABI do not match.&lt;br /&gt;
&lt;br /&gt;
Short bypasses can happen when the Vita opens, closes, or reconfigures audio ports. If it is quick and does not sound bad, it is usually fine.&lt;br /&gt;
&lt;br /&gt;
== Controls ==&lt;br /&gt;
D-Pad/Left Analog - Move through rows&lt;br /&gt;
&lt;br /&gt;
Left/Right - Adjust selected value&lt;br /&gt;
&lt;br /&gt;
L/R - Bigger EQ value changes&lt;br /&gt;
&lt;br /&gt;
Cross - Select, toggle, or activate&lt;br /&gt;
&lt;br /&gt;
Circle - Back, Exit from main menu&lt;br /&gt;
&lt;br /&gt;
Start - Quick EQ on/off&lt;br /&gt;
&lt;br /&gt;
Triangle - Help&lt;br /&gt;
&lt;br /&gt;
Touch - Tap rows or drag lists&lt;br /&gt;
&lt;br /&gt;
EQVita follows the Vita enter-button setting for Cross/Circle.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/EQVita3.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/EQVita4.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/EQVita5.png&lt;br /&gt;
&lt;br /&gt;
==Compatibility==&lt;br /&gt;
Hardware Tested:&lt;br /&gt;
* Vita model - PS Vita 1000&lt;br /&gt;
* Firmware - 3.65 Enso&lt;br /&gt;
* Output - Vita speakers, Bluetooth&lt;br /&gt;
* Games/apps tested - Persona 4 Golden, God of War, VitaShell, Vita home screen&lt;br /&gt;
* Known limits - heavy games can still stress Vita audio; short bypasses during port changes can happen.&lt;br /&gt;
&lt;br /&gt;
==Changelog==&lt;br /&gt;
&#039;&#039;&#039;v1.14.0&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s New&lt;br /&gt;
** App/plugin ABI bumped to &amp;lt;code&amp;gt;1.14.0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Fixed&lt;br /&gt;
** Fixed audio port tracking when different apps reuse the same Vita port ids.&lt;br /&gt;
** Fixed recovered BGM ports being tracked with the wrong port type.&lt;br /&gt;
** Improved handling for games and apps that open, release, or reconfigure audio ports often.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.13.0&#039;&#039;&#039;&lt;br /&gt;
* What&#039;s New&lt;br /&gt;
** New Vita-style app UI with themes, cleaner pages, and better controls.&lt;br /&gt;
** New Music Preview screen for playing a local &amp;lt;code&amp;gt;OGG&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MP3&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;WAV&amp;lt;/code&amp;gt; while tuning EQ.&lt;br /&gt;
** New preset flow with save prompts, discard behavior, and active preset persistence.&lt;br /&gt;
** Better logs and telemetry for audio/debug reports.&lt;br /&gt;
** Proper full system-wide equalizer support. The plugin should now affect all audio ports.&lt;br /&gt;
* Fixed&lt;br /&gt;
** Fixed preset saving/loading and active slot persistence.&lt;br /&gt;
** Fixed compatibility with the official Music Player; the plugin now affects it correctly.&lt;br /&gt;
** Fixed compatibility with the music_premium.skprx plugin.&lt;br /&gt;
** Improved app exit, theme switching, and Music Preview cleanup.&lt;br /&gt;
** Improved audio stability and reduced timing spikes on stock Vita clocks.&lt;br /&gt;
** Fixed Windows/WSL script and source-test release checks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v1.10&#039;&#039;&#039;&lt;br /&gt;
* First Release.&lt;br /&gt;
&lt;br /&gt;
==Credits==&lt;br /&gt;
UI images adapted from VitaShell.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/shev0k/EQVita&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1353&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
	<entry>
		<id>https://www.gamebrew.org/index.php?title=PleNx_Vita&amp;diff=205636</id>
		<title>PleNx Vita</title>
		<link rel="alternate" type="text/html" href="https://www.gamebrew.org/index.php?title=PleNx_Vita&amp;diff=205636"/>
		<updated>2026-07-10T03:30:24Z</updated>

		<summary type="html">&lt;p&gt;HydeWing: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Vita Homebrews&lt;br /&gt;
|title=pleNx&lt;br /&gt;
|image=pleNxVita.png&lt;br /&gt;
|description=Plex client for PS Vita.&lt;br /&gt;
|author=thcolin&lt;br /&gt;
|lastupdated=2026/07/05&lt;br /&gt;
|type=Media Players&lt;br /&gt;
|version=0.1.14&lt;br /&gt;
|license=Apache-2.0&lt;br /&gt;
|download=https://dlhb.gamebrew.org/vitahomebrews/pleNxVita.7z&lt;br /&gt;
|website=https://github.com/thcolin/pleNx&lt;br /&gt;
|source=https://github.com/thcolin/pleNx&lt;br /&gt;
|donation=&lt;br /&gt;
}}&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title=Vita Homebrew Apps (Media Players) - GameBrew&lt;br /&gt;
|title_mode=append&lt;br /&gt;
|image=pleNxVita.png&lt;br /&gt;
|image_alt=pleNx&lt;br /&gt;
}}&lt;br /&gt;
pleNx (/plɛn.ɛks/, &amp;quot;Plex × NX&amp;quot;) is a third-party, native, controller-first Plex client that lets you browse and play the movies and shows from your Plex Media Server through a fully native interface designed for the gamepad.&lt;br /&gt;
&lt;br /&gt;
pleNx is a fork of [[Switchfin]] (a Nintendo Switch Jellyfin client) fully migrated to the Plex API, with a redesigned interface. It is a third-party project, not affiliated with or endorsed by Plex.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
* Sign in with Plex - enter a 4-character code on plex.tv/link, then choose your server and your Plex Home profile (PIN-protected profiles supported).&lt;br /&gt;
* Home mirrors your server - Continue Watching followed by every hub configured on your Plex, in the order your server returns them.&lt;br /&gt;
* Libraries in the sidebar - one entry per library, each with Home, Suggestions, Collections and Genres views, and server-side sorting.&lt;br /&gt;
* Rich detail pages - full-bleed backdrop with the title logo, cast with full person pages (filmography), and related rows pulled from your server.&lt;br /&gt;
* Season pages - artwork, episode count and synopsis, with one-tap full-season download.&lt;br /&gt;
* Quick actions on any poster - go to show, go to season, mark watched, download.&lt;br /&gt;
* Plex Watchlist - browse your account watchlist in the sidebar, add or remove any movie or show from its detail page or the quick actions menu.&lt;br /&gt;
* Playback with MPV - direct play and universal transcode (HLS), resume, chapters, external and embedded subtitles, audio track selection.&lt;br /&gt;
* Offline downloads for playback without a connection (original quality).&lt;br /&gt;
* Remote file browser for WebDAV / Apache / Nginx / FTP / SFTP servers.&lt;br /&gt;
* Available in 14 languages.&lt;br /&gt;
* MPV decodes H.264, H.265, VP8, VP9 and AV1 video; Opus, FLAC, MP3, AAC, AC-3, E-AC-3, TrueHD and DTS audio; and SRT, VTT, SSA/ASS and DVDSUB subtitles.&lt;br /&gt;
&lt;br /&gt;
==Screenshots==&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/pleNxVita-01.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/pleNxVita-02.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/pleNxVita-03.png&lt;br /&gt;
&lt;br /&gt;
https://dlhb.gamebrew.org/vitahomebrews/images/pleNxVita-04.png&lt;br /&gt;
&lt;br /&gt;
== Changelog ==&lt;br /&gt;
&#039;&#039;&#039;v0.1.14&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;PS Vita&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;The in-app updater now installs the new version directly instead of opening a broken browser page.&#039;&#039;&#039; When an update was available, the Vita opened the GitHub release page in the system browser — a page its ageing WebKit cannot render, so it hung and the download never showed up. The Vita now self-updates in place like the Switch does: it downloads the VPK, unpacks it and installs it through the system package installer, then drops you back to the LiveArea to relaunch the updated bubble. (The VitaDB &amp;amp;quot;downgrade to 0.1.4&amp;amp;quot; prompt reported alongside this is a stale VitaDB store entry, not a pleNx bug; see &amp;lt;code&amp;gt;RELEASING.md&amp;lt;/code&amp;gt;.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.13&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Series and movie logos no longer smear.&#039;&#039;&#039; The transparent title logos on detail pages are drawn in &amp;amp;quot;fit&amp;amp;quot; mode, so the image is smaller than its box and sits letterboxed inside it. The empty area around it was still being painted with the image, which sampled outside the texture and — because edge pixels are clamped — dragged vertical streaks down from every shape. The image now fills only its own fitted area, so logos render cleanly. Affects every platform (the fix is in the shared image renderer).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.12&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Player&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;Changing the audio or subtitle track no longer stops playback with a &amp;quot;playback error&amp;quot; on PS Vita.&#039;&#039;&#039; In transcode mode a track change reloads the stream, but the reload happened in place and never released the hardware decoder, so it stalled and then failed. The reload now resets the player first (like episode navigation) and tears the previous transcode session down on the server instead of leaving it orphaned.&lt;br /&gt;
** &#039;&#039;&#039;Audio and subtitle tracks are now selectable during local playback from the file browser.&#039;&#039;&#039; The player showed the track buttons but had no handler wired, so they appeared to do nothing.&lt;br /&gt;
** &#039;&#039;&#039;A failed transcode now falls back to direct play once&#039;&#039;&#039;, instead of going straight to an error — a smoother recovery on constrained hardware.&lt;br /&gt;
** &#039;&#039;&#039;Playback errors now show the underlying mpv reason&#039;&#039;&#039; (e.g. &amp;quot;unrecognized file format&amp;quot;) instead of a bare &amp;quot;playback error&amp;quot;, making bug reports actionable.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;PS Vita: the transcoder height is capped at 1080p&#039;&#039;&#039;, the hardware decoder&#039;s limit, so a 4K source at a high bitrate no longer produces a stream the Vita cannot decode.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.11&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;PS Vita: servers reached by a hostname no longer stall with an endless &amp;quot;timeout reached&amp;quot;.&#039;&#039;&#039; libcurl was built with the synchronous name resolver, so a DNS lookup issued from a background thread could not be bounded by any timeout — the synchronous resolver can only abort a slow &amp;lt;code&amp;gt;getaddrinfo()&amp;lt;/code&amp;gt; via &amp;lt;code&amp;gt;SIGALRM&amp;lt;/code&amp;gt;, which libcurl arms on the main thread alone. A slow-to-resolve hostname (e.g. a duckdns address) therefore hung every request indefinitely, and raising the request-timeout setting had no effect; only a raw LAN IP, which skips name resolution, worked. curl is now built with the threaded resolver so lookups run in a worker thread the timeout can abandon, and &amp;lt;code&amp;gt;CURLOPT_NOSIGNAL&amp;lt;/code&amp;gt; keeps libcurl off signals on its background threads.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.10&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** PS Vita: movie logos no longer render sheared or with a torn vertical strip. GPU texture compression always extracted a full 4×4 pixel block, so for images whose width or height isn&#039;t a multiple of 4 the edge blocks pulled in the next row&#039;s pixels (the visible vertical corruption) or read past the decoded image. Edge blocks are now clamped to the valid pixels, with the border replicated into the padding for a clean edge.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.9&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Self-hosted servers on your LAN are reachable again when &amp;lt;code&amp;gt;plex.direct&amp;lt;/code&amp;gt; DNS is blocked. Server discovery only probed the &amp;lt;code&amp;gt;plex.direct&amp;lt;/code&amp;gt; hostname, whose public DNS record points at a private IP — which routers and resolvers with DNS-rebinding protection (Fritz!Box, Pi-hole, AdGuard…) refuse to resolve. A server sitting on the same network then reported &amp;amp;quot;unreachable&amp;amp;quot; even though it answered directly, while the official clients connected fine. pleNx now also probes the raw IP address for private, CGNAT and VPN endpoints, bypassing &amp;lt;code&amp;gt;plex.direct&amp;lt;/code&amp;gt; entirely — and re-discovers a working address on reconnect when the server changes IP (e.g. a new DHCP lease)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.8&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Downloads&#039;&#039;&#039;&lt;br /&gt;
** The download card now shows transfer speed and ETA. While a download is running, the progress line reads &amp;lt;code&amp;gt;123 MB / 456 MB · 5.2 MB/s · 12:30 left&amp;lt;/code&amp;gt;; the rate is a smoothed average (EMA) so the estimate stays steady instead of jumping on every tick&lt;br /&gt;
* &#039;&#039;&#039;Library&#039;&#039;&#039;&lt;br /&gt;
** Movie and show pages show critic and audience ratings with their official icons. Plex&#039;s rating sources are mapped to the Rotten Tomatoes tomato (fresh/rotten), the audience popcorn (upright/spilled), and the IMDb and TMDb marks, each sized to its own aspect; a plain star is kept as a fallback when the source is unknown&lt;br /&gt;
* &#039;&#039;&#039;Changelog&#039;&#039;&#039;&lt;br /&gt;
** The changelog is now readable in the app, from Settings ▸ Changelog — the full history, scrollable&lt;br /&gt;
** The update prompt shows the new version&#039;s release notes instead of just its number, so you can see what changed before updating&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.7&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Sign-in&#039;&#039;&#039;&lt;br /&gt;
** Selecting a server no longer looks frozen. Picking a server (or profile) during Plex sign-in blocked all input while probing the server&#039;s connections — several seconds, with nothing on screen — so the dialog just vanished and the app seemed dead. A loading overlay now sits over the pairing screen for the whole wait, with a reassurance line that fades in if it runs long&lt;br /&gt;
** Account linking survives a transient network hiccup. A single timeout or TLS blip (common on Vita) no longer aborts the whole PIN flow; only an expired/consumed code is terminal, and the 2-minute deadline stays the real give-up&lt;br /&gt;
* &#039;&#039;&#039;Player&#039;&#039;&#039;&lt;br /&gt;
** Direct-access OSD. The speed control is replaced by icon buttons for audio track, subtitle track and quality. Subtitles get a live, translucent sub-delay overlay (LEFT/RIGHT) on top of the video; audio, subtitle and sub-sync leave the settings panel. Video quality is now remembered and defaults to a 4 Mbps transcode on Vita (its decoder chokes on heavy direct play), staying Auto everywhere else&lt;br /&gt;
** Marking watched is now a targeted card refresh instead of reloading the whole view (heavy on the home screen): the single card updates optimistically&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** The synopsis no longer collapses to a single line when returning from a person page — a relayout had cut the text at an intermediate width. The action row also gains a little breathing room below the title/meta block&lt;br /&gt;
** The splash logo no longer shows a flat colored band along its edges — an edge-clamp artifact from letterboxing the non-square asset, fixed by re-exporting it square with a transparent margin&lt;br /&gt;
** Deleting the last card in a grid no longer leaves a ghost highlight, and emptying the downloads list hands focus back to the sidebar&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.6&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** PS Vita: transparent images no longer render as opaque black blocks. Images with real transparency now use DXT5 (8-bit alpha) instead of DXT1, which has no alpha channel; opaque images keep DXT1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.5&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Controller navigation no longer breaks after closing the player; focus now returns to the first home row.&lt;br /&gt;
** Docking the Switch mid-playback now switches the video to fullscreen 1080p instead of leaving it small in a corner.&lt;br /&gt;
* &#039;&#039;&#039;Player&#039;&#039;&#039;&lt;br /&gt;
** Focused controls now show a translucent orange background instead of the border halo.&lt;br /&gt;
** The close button is a round, properly centered icon.&lt;br /&gt;
** Up/down wake the OSD and focus the play/pause button.&lt;br /&gt;
** The progress bar is focusable, with accelerating left/right seek (TV-style OSD is now the default, still toggleable).&lt;br /&gt;
** Removed the always-on bottom progress bar and its settings.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.4&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Every truncated row now ends with a &amp;amp;quot;+&amp;amp;quot; card opening the full list (the home rows and the Suggestions tabs of movie and show libraries previously lacked it). The card shows whenever the server reports more content than displayed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.3&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Breaking&#039;&#039;&#039;&lt;br /&gt;
** New Switch title ID for the HOME menu tile (&amp;lt;code&amp;gt;0104201312000000&amp;lt;/code&amp;gt;). Migration: delete any old tile (&amp;amp;quot;Switchlex&amp;amp;quot; or a previous pleNx) from the HOME menu, replace &amp;lt;code&amp;gt;pleNx.nro&amp;lt;/code&amp;gt; on the SD card, then reinstall the tile from the app.&lt;br /&gt;
** The forwarder NPDM &amp;lt;code&amp;gt;program_id&amp;lt;/code&amp;gt; is now generated from the single &amp;lt;code&amp;gt;PROJECT_TITLEID&amp;lt;/code&amp;gt; source of truth.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Branding harmonized across every derived asset (app icons, forwarder wordmark, scalable icon wrapper, website favicons / social image). The Android launcher icons and the PS4 / PS Vita system images now ship pleNx branding (Vita assets kept 8-bit indexed as the firmware requires).&lt;br /&gt;
* &#039;&#039;&#039;Website&#039;&#039;&#039;&lt;br /&gt;
** The hero opens with the app icon presented as a homebrew-menu tile next to the wordmark, and the floating nav no longer flashes before first paint.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.2&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Translations completed and corrected across all 13 languages (cs, de, es, fr, ja, ko, pt, ru, tr, uk, vi, zh-Hans, zh-Hant), now at full key parity with English. Filled missing strings, translated Plex sign-in and HOME-tile hint screens left in English in several locales, fixed mistranslations and typos, and restored the French &amp;amp;quot;current speed&amp;amp;quot; overlay placeholder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.1&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Working in-app self-update on Nintendo Switch: pleNx offers to update itself (checked at startup and from Settings ? &amp;amp;quot;Check for updates&amp;amp;quot;), downloads the NRO with a live progress dialog, verifies the file size against the GitHub release asset, then replaces itself and prompts to relaunch. On other platforms the dialog opens the release page in the browser.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** The app now replaces the NRO it was actually launched from (&amp;lt;code&amp;gt;argv[0]&amp;lt;/code&amp;gt;). Updating from 0.1.0 via the in-app dialog may appear to have no effect depending on NRO location; 0.1.0 users with the NRO at &amp;lt;code&amp;gt;sdmc:/switch/pleNx.nro&amp;lt;/code&amp;gt; should replace it manually once.&lt;br /&gt;
** The release-asset download URL and expected size are now taken from the GitHub API response.&lt;br /&gt;
** The startup update check now honors its intended delay.&lt;br /&gt;
** All references to the repository now use its new name &amp;lt;code&amp;gt;thcolin/pleNx&amp;lt;/code&amp;gt;.&lt;br /&gt;
** The Arch package version is now derived from &amp;lt;code&amp;gt;CMakeLists.txt&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;v0.1.0&#039;&#039;&#039;&lt;br /&gt;
* First release of pleNx, a third-party native Plex client for Nintendo Switch, macOS, Windows, Linux, Android, PS4 and PS Vita; a fork of Switchfin (a Jellyfin client) fully migrated to the Plex API with a complete UI overhaul.&lt;br /&gt;
* &#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
** Full migration from the Jellyfin API to the Plex API: plex.tv PIN sign-in (link code), server discovery and connection selection, libraries, home hub, movies, shows, collections, search, and playback (direct play and transcode) backed by mpv.&lt;br /&gt;
** Complete UI overhaul with the new pleNx branding: icon-only sidebar, full-bleed detail pages, scrollable season / playlist / collection views, redesigned search, quick-actions side panel on any poster, guaranteed 2:3 poster ratios, skeletons and empty states, pill-shaped toasts.&lt;br /&gt;
** Plex Watchlist with provider-backed sorting and filters, add/remove from detail pages and the quick-actions menu.&lt;br /&gt;
** Offline downloads with storage gauge, active/completed sections, one-tap season or whole-show download, local playback.&lt;br /&gt;
** Remote file servers (WebDAV, FTP, SFTP, HTTP(S)) managed from the UI with a mandatory connection test before saving.&lt;br /&gt;
** Genre cards illustrated with Kometa default posters, playlists, collection pages, person pages, &amp;amp;quot;Play again&amp;amp;quot; on fully-watched shows.&lt;br /&gt;
** Available in 14 languages.&lt;br /&gt;
** Nintendo Switch specifics: applet-mode warning screen with HOME tile (forwarder) installation flow, system Standard font by default, USB drives via libusbhsfs.&lt;br /&gt;
* &#039;&#039;&#039;Fixes&#039;&#039;&#039;&lt;br /&gt;
** Fixed an infinite relayout loop, ghost focus on recycled views, NaN yoga measurements on empty text, and scroll-edge focus traps; included borealis framework patches.&lt;br /&gt;
* &#039;&#039;&#039;Build&#039;&#039;&#039;&lt;br /&gt;
** Local Nintendo Switch build via Docker; continuous delivery via GitHub Actions building all platforms (Switch NRO, macOS DMG, Windows, Linux Flatpak/Arch, Android APK, PS4 PKG, PS Vita VPK) on each &amp;lt;code&amp;gt;v*&amp;lt;/code&amp;gt; tag.&lt;br /&gt;
* Documentation&lt;br /&gt;
** Jellyfin ? Plex migration plan, UI redesign reference, refreshed README.&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* GitHub - https://github.com/thcolin/pleNx&lt;br /&gt;
* VitaDB - https://www.rinnegatamante.eu/vitadb/#/info/1411&lt;/div&gt;</summary>
		<author><name>HydeWing</name></author>
	</entry>
</feed>