* icons are black, but it's a start * after testing, info_buffer in load_smdh_icon is for some reason all 0 * working! same speed as pre-threading (I think) but the icons lag behind a bit. Still, should allow for infinite themes * not needed anymore * fix icons not being loaded when switching modes * stop trying to load icons if there arent enough entries * swapping logic almost there... * only need to update when on the main screen * fix blind spot and typo * allow optimizations maybe? maybe will break stuff. just revert if it's the case * fix blind spot when going up after cycling * add swapping when changing 1 screen at a time (left/right) * not needed anymore, since icon ids are fixed * simpler scrolling * dont reload everything when cycling * other method for storing ids, maybe better logic later * fix crash * attempt at better and clearer algorithm for swapping * optimization, swapping still broken but this was needed * fix cycling/using left resulting in reversed icons * fix icons scrolling in reverse and fix the bug that introduced (same as switch-case method): scroll not following the selected entry when using left/right * don't break when using left/right near the top/end * correctly return from failed realloc during entries load * move freeing the entries and killing the icon updating thread to exit_function * fix icons being shifted the wrong value when cycling * only exit using the shutdown screen method when needed * show simple loading screen for themes and splashes * only have the thread when needed should consume less battery for people with low amount of splashes and themes * fix instructions showing over the "no X found" screen * fix instructions showing over confirm text * fix overlapping and going out of bounds with few entries * add quitting preview and qr mode with B * add touchscreen controls * cleaner BETWEEN macro * only allow changing screens with touchscreen when arrows are visible * tabs vs spaces * fix selecting an entry that's not there using the touchscreen and allow holding for selecting individual entries (not using the arrows) * fix crash when deleting all entries and downloading one with QR * add indicator for already installed themes/splashes threaded as not to slow down initial loading too much, and imo cool effect as they load * optimization for theme installed check * make icon swapping thread higher priority to prevent problems with searching the installed themes/splashes * add indicator with number of themes and selected theme * add X to reload icons if it breaks * add touchscreen controls: - toggle shuffle - toggle preview - reload icons - switch modes - enable QR * more usable thread args * fix crash when closing the application too close to launch * add hack to solve the scrolling problem. Warning: will cause some lag for about 1-2 seconds, so I recommend using the jump menu this will be removed once the bug is figured out
A Theme and Splashscreen Manager for the Nintendo 3DS, written in C.
To-do list here: https://trello.com/b/F1YSa1VK
Dependencies
- zlib, which can be retrieved from the 3ds_portlibs.
- makerom and bannertool, which can be retrieved from SteveIce10's buildtools repo. These must be added to your PATH.
pp2d, which is included in the repo if you do a git clone --recursive.Due to circumstances surrounding the privacy settings on the pp2d repo, the source files are now included directly within the repo.- Git needs to be on your PATH, if building in a non-*nix environment.
Building
First of all, make sure devkitPRO is properly installed and added to the PATH.
After that, open the directory you want to clone the repo into, and type: git clone https://github.com/astronautlevel2/Anemone3DS/ --recursive.
Instructions for installing zlib can be found on the 3ds_portlibs repo (its easy, just run make and make install-zlib). After also adding makerom and bannertool to your PATH, just enter your directory and run make. All built files will be in /out/.
License
This project is licensed under the GNU GPLv3. See LICENSE.md for details. Additional terms 7b and 7c apply to this project.
Credits
The following people contributed to Anemone3DS in some way. Without these people, Anemone3DS wouldn't exist, or wouldn't be as good as it is:
- Daedreth, who wrote the initial implementation of theme application code and SMDH parsing.
- LiquidFenrir, who refactored a lot of my messy GUI code and wrote the image preview from zip code, as well as the icon code.
- Sono, who wrote the BCSTM playback code.
- Kenn (mattkenster), for designing the GUI, a number of sprites used in the application, and drawing the banner and icon.
Special thanks go to these people who, while not directly contributing, helped immensely:
-
Rinnegatamante, whose code served as reference on theme installation.
-
BernardoGiordano for making pp2d, and being super responsive to feature requests and just general help.
-
yellows8 for his home menu extdump tool, which was invaluable in debugging.
-
the folks on #dev of Nintendo Homebrew, who helped with unicode shenanigans (especially Stary2001, Fenrir, and DanielKO).
-
the maintainers for all used libraries, including ctrulib, zlib, citro3d, pp2d, quirc and minizip.
-
all the people who helped keep me going and motivated me to work. This includes, but is definitely not limited to:
- The members of the Nintendo Homebrew Discord
- The members of the Secret Shack Service Discord
- The members of the ThemePlaza Discord
