* Began refactoring http_get. Still a few cases to handle, but it works. * Introduced error enum; handle error 406; handle a misbehaving server; redirect_url leaked memory (L888) * Allowed calls to http_get to pass NULL as acceptable_mime_types * Removed status_code from header struct; eventually planning to move most of parse_header's logic back to http_get, so this makes sense * Moved some more logic back into http_get Note: currently behaves weirdly with some QR codes, including but probably not limited to ones pointing to TinyURL. * Handle redirects correctly; other rearrangements * Formatting * Handle HTTP 303 See Other correctly * Removed "Download failed" error in camera.c due to all related failures being handled in http_get * Fixed missing loading bar; started working on unchunked download * Added unchunked download * Reintroduced the download progress bar, rolled back to always doing chunked download * URL length caps at 2083 chars * Slightly more efficient * Correctly handle incorrect filesize header TODO: reorder clauses to remove the goto? * Fixed illegal characters, removed unnecessary logic (technically a regression, as we always have to realloc now) * Finally finished up status code handling. Fixed a memory leak when the server fails conneg.
A Theme and Splashscreen Manager for the Nintendo 3DS, written in C.
To-do list here: https://trello.com/b/F1YSa1VK
Dependencies
- devkitARM, which can be installed following the instructions here.
- jansson, libvorbisidec, libpng, and libarchive, which can be retrieved from devkitPro pacman.
- A recent build of makerom and the latest release of bannertool. These must be added to your PATH.
Building
First of all, make sure devkitARM is properly installed - $DEVKITPRO and $DEVKITARM should be set to /opt/devkitpro and $DEVKITPRO/devkitARM, respectively.
After that, open the directory you want to clone the repo into, and execute
git clone https://github.com/astronautlevel2/Anemone3DS (or any other cloning method).
To install the prerequisite libraries, begin by ensuring devkitPro pacman (and the base install group, 3ds-dev) is installed, and then install the dkP packages 3ds-jansson, 3ds-libvorbisidec, 3ds-libpng, and 3ds-libarchive using [sudo] [dkp-]pacman -S <package-name>.
After adding makerom and bannertool to your PATH, just enter your directory and run make. All built binaries 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: CONTRIBUTORS.md
Most of the icons under romfs are from the site icons8.com and are licensed under the CC-BY-NC-SA
Special thanks go to these people who, whilst not directly contributing, helped immensely:
-
Rinnegatamante, whose code served as reference on theme installation.
-
SteveIce10, whose QR code in FBI was essential.
-
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 but not limited to ctrulib, zlib, citro3d, pp2d, and quirc.
-
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
