Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shuffle Install Semi-Works on 3DS with 64 KB Cluster Size #132

Closed
TurdPooCharger opened this issue Jan 21, 2018 · 10 comments
Closed

Shuffle Install Semi-Works on 3DS with 64 KB Cluster Size #132

TurdPooCharger opened this issue Jan 21, 2018 · 10 comments

Comments

@TurdPooCharger
Copy link
Contributor

My original and more detailed write-up is here at this post in GBAtemp:
https://gbatemp.net/threads/do-256gb-cards-even-work-on-3ds.469117/page-2#post-7789084

I've been stress testing several games and homebrew apps, one of which is Anemone3DS v1.3.0. The test is to check for compatibility and gain in speed performance when using regular-sized & micro SD cards with large capacities such as 128 GB and 256 GB. The control variable is that the cards are freshly FAT32 reformatted with 64 KB cluster size instead of the recommended 32 KB.

As stated in my GBAtemp post, Anemone3DS is able to navigate and install all 10 themes when the cards were in 32 KB allocation size. It may occasionally crash, but the app will eventual complete its task with a full shuffle.

When the cards are in 64 KB allocation size, Anemone3DS will only install at most approximately 4 or 5 themes before crashing. Pictures of the log dump can be seen in that post.

To remedy the problem under 64 KB allocation size, Anemone3DS can install all 10 themes when the Theme folder has a more reasonable number of themes (a count of 10 instead of the original 787 total).

@TurdPooCharger
Copy link
Contributor Author

I recently acquired a SanDisk 200 GB micro SDXC. This one is formatted as FAT32 and 64 KB and is being used on a second system, a New 3DS (original). It has been checked for authenticity with H2testw.

Specifications of the New 3DS

  • 11.6.0-39U firmware
  • Luma3DS v9.0
  • Autoboot emuNAND selected in Luma Configuration
  • boot9strap v1.3
  • GodMode9 v1.5.1
  • FBI v2.4.14 [in Homebrew Launcher],
  • Anenome3DS v1.3.0 [in Homebrew Launcher]
  • 264 3DS games + 9 DSiWare games + 12 Nintendo apps = 285 titles
  • 142 GB used on the 183 GB available
  • 334 themes in the Themes folder

This handheld does not exhibit lag navigating and scrolling through the themes list. I have no trouble installing a 10 theme shuffle. It doesn't stutter or crashes.

I will add more themes into the folder and see if I can get Anenome3DS to crash. If after adding 1000 themes into the folder and the problems do not come up, I'll go back and check my N3DSXL with the 128 GB card by freeing up space. That 128 GB only has about ~1.5 GB free. This might be the issue.

@TurdPooCharger
Copy link
Contributor Author

TurdPooCharger commented Jan 22, 2018

Alright, results are in. To ensure having too many themes doesn't cause the crash, I added a total of 1608 themes. Instead of doing 1000 themes as stated before, I wanted to try testing for an upper limit by having over twice the total of my N3DSXL's 787 themes count.

On the N3DS, Anemone3DS lags a bit when scrolling through the themes as the icons refresh and load up. I picked the 10 themes at 160 intervals to check if Anemone3DS installs themes from anywhere in the list and not just those closer up front. Themes were queued in shuffle while fast scrolling down the list pressing the right d-pad and pressing (B) before allowing the icons to finish loading.

After having 10 themes in queue, I pressed and held (A), pressed and held d-pad (down), and let go of (A). After several seconds, Anemone3DS went back to the theme list and experienced a frozen crash with no log dump.

Forced restarting the N3DS, all 10 random themes appeared and persisted in Home Menu.

You guys can close this issue as we now know that this is not necessarily a problem of the app itself or SD cards with 64 KB cluster size. Add a warning in your release footnotes and on GBAtemp thread that the SD card needs sufficient amount of free space in order for Anemone3DS to work at these extremes.

Edit - Wait, don't close this issue just yet. I still need to check if freeing up space on the 128 GB card makes Anemone3DS stable on the N3DSXL.

Edit #2 - I failed to mention I have a second 256 GB (non-micro) SD card (with cable adapter) that is an almost identical copy from the 128 GB card for the N3DSXL. Using Anemone3DS on this card with 64 KB and 787 themes also produces the crash, even though only 117 GB is used of the available 238 GB.

I'll try to troubleshoot my N3DSXL with a fresh reinstall of NTRboot and files build on its cards without borrowing any of the stuff that are on them now. Perhaps the problem stems from a minor corrupted custom firmware.

For the N3DS, one last stress test I'll try is to fill up the 200 GB card with random crap until there's only 1 GB free. Check Anenome3DS again if it'll fail to shuffle install then.

@TurdPooCharger
Copy link
Contributor Author

TurdPooCharger commented Jan 23, 2018

A separate 'crap' folder placed in the SD card root of the N3DS was filled with various winRAR archives of different 3DS games. All of these were made with the best compression setting, which produces the smallest archive file size in winRAR.

(1) free space @ 620 MB - Anemone3DS installs all 10 themes in shuffle. Themes were chosen again at 160 intervals offset by +1 theme; these 10 were not the same themes from early. Again, Anemone3DS completes shuffle install and returns to theme selection with a frozen crash.

(2) free space @ 8.62 MB - Added more winRAR archieves into 'crap'. The same steps and process were followed as before. The app still freezes and crash returning to theme selection after shuffle is installed.

Fortunately, both scenarios produced 10 themes on shuffle working and persisting at Home Menu.


At this point, I am happy to report coming to the conclusion that Anemone3DS is a solid homebrew app that gets the job done when put through its paces. However, what is astonishing and disappointing is finding two separate systems (N3DS & N3DSXL) with similar configurations have their respective Anemone3DS differ so much in stability.

Both N3DSXL and N3DS had their original files first built on 128 GB micro SD cards. These cards were both formatted in FAT32 and 32 KB cluster size before being stuck in the 3DS and having any files added onto the cards by computer. The reformatting programs used were AOMEI Partition Assistant Pro Edition v6.0 -and- later, guiformat.exe .

For the N3DSXL
After reaching its 117 GB used mark out of a usable 119 GB, I took my PNY 256 GB SDXC card and did a FAT32 / 64 KB cluster size reformat. Everything on the Lexar card was copied over onto the PNY standard card.

PNY Elite Performance 256GB High Speed SDXC (P-SDX256U1H-GE)
https://www.amazon.com/PNY-Elite-Performance-256GB-Speed/dp/B00FF90EZM/

Files count and byte size were checked to match under Windows right-click properties. The Lexar card was then reformatted in FAT32 / 64 KB cluster size. Everything on the PNY standard card was copied back over onto the Lexar micro card. The N3DSXL has been testing both cards, which have been drifting in build due to other games and homebrew apps testings.

For the N3DS
After reaching it's 119 GB used mark out of a usable 120 GB, I took a SanDisk 200 GB micro SDXC card and did a FAT32 / 64 KB cluster size reformat. Everything on the PNY micro card was copied over onto the SanDisk micro card.

The SanDisk micro card is an LG Mobile promo that wasn't meant for resale. [SDSDQAD-200GB-2100E]
https://www.ebay.com/itm/200GB-SanDisk-iNAND-7232-Storage-Solutions-Micro-SD-for-LG-mobile/202138860135
https://www.youtube.com/watch?v=pn9W7y2o9k4&t=0m15s

The N3DS has switched over to using only the SanDisk micro card. Its files and games library has been steadily growing ever since.


Everything else on the N3DSXL appears to work and function as expected. Anemone3DS is the odd one out for all the installed homebrew apps. I will try testing the PNY micro card from the N3DS on the N3DSXL with an empty build having only Anemone3DS and the many themes. If crashes appear under those conditions, the NTRboot reinstallation will get the go ahead.

@TurdPooCharger
Copy link
Contributor Author

TurdPooCharger commented Jan 25, 2018

YES!!! Wonderful news! I was able to recreate the bug crashing Anemone3DS and may have possibly found a simple solution to fix it. I need more time to retest the procedures in consistently producing the bug before I write the documentation here. I believe something doesn't transfer correctly in the theme Ext Data when going from a 32 KB card to a 64 KB card.

Here is my log dump from the latest crash:

crash_dump_00000062.zip


Edit #1 - Woah! I (Black Screens of Death) BSoD bricked my emuNAND recreating the crash on Anemone3DS. Recovery Mode and battery removal & reinsert does not work in fixing this soft brick.

I'm extremely fortunate that sysNAND was intact when booting without an SD card. I backed up a copy of my bricked 'Nintendo 3DS' folder for later examination and study. A new 'Nintendo 3DS' folder was recreated on the 3DS for continual testing for the phenomenon.

Guys. Big warning! DO NOT use your sysNAND while on custom firmware. On GBAtemp, there are 3DS owners reporting BSoD soft bricks that are nonrecoverable despite using (Full/Safe) sysNAND restore, CTRtransfer, and Lazarus3DS. These bricks occurred from sleep mode, during a middle of game play, some time after a while going from A9LH to B9S, and out of the random blue with no warning. Their BSoD exhibited LCDs that work only in Recovery Mode and no where else; booting into Home Menu yields blank screens with or without working sound. GodMode9 and Luma Configuration may work if they have CFW installed. Booting the 3DS without an SD card does not change the prognosis.

This is just my theory, but I believe my BSoD brick is somehow related to theirs with the only difference is that theirs occurred in sysNAND. To keep your systems safe, your emuNAND and SD card are your 3DS system's first line of defense/condom from catching permanent BSoD.

@TurdPooCharger
Copy link
Contributor Author

TurdPooCharger commented Jan 27, 2018

If you find Anemone3DS crashing or failing to do a complete shuffle install after changing your SD card's cluster size, follow these instructions to correct the theme ext data.

How to Properly Setup Anemone3DS when Changing Allocation Size

  1. Copy everything off your SD card onto your computer -or- spare hard/flashdrive.
    • You can skip Steps 1, 2, and 3 if you're not reformatting and changing allocation sizes.
  2. Reformat your SD card FAT32 and 64 KB [65536] cluster size (if you’re coming from 32 KB).
    -or-
    Reformat your SD card FAT32 and 32 KB [32768] cluster size (if you’re coming from 64 KB).
    • The preferred program to reformat the card is guiformat.exe (for Windows).
    • If guiformat fails at first, reformat the SD card as exFAT or NTFS and then try guiformat again.
  3. Copy everything back onto your SD card. Do not delete your backup data yet.
  4. Rename your Themes folder something else. Create a new, blank Themes folder.
  5. Copy and add 10 themes from you main collection into Themes folder.
    • The preferred themes should all match your 3DS region.
  6. Go to your Nintendo 3DS/[scramble Basic functionality #1]/[scramble Added splash support #2]/extdata/00000000/ folder.
  7. Delete the 000002cd folder. This folder contains your theme-management information.
  8. Safely eject the SD card from your computer. Reinsert the SD card into the 3DS.
  9. Remove and reinsert your 3DS battery. Turn on your 3DS and hold (Select).
  10. In Luma Configuration, verify that (X) Autoboot EmuNAND is selected.
    • Step 10 is unnecessary for 99% of CFW users as almost no one uses emuNAND these days. Selecting this option will do nothing.
  11. Press (Start) and boot into Home Menu.
  12. On the top-left corner of the bottom screen, open HOME Menu Settings. Open Change Theme.
  13. The 3DS will create theme-management information with this message:
    • Within the Nintendo 3DS folder, the 000002cd folder will be recreated.
      create_theme
  14. Open Shuffle Favorites. Select all five basic color themes. Press (Y) OK.
  15. The 3DS will update theme-management information with this message:
    update_theme
  16. Open HOME Menu Settings. Open Change Theme. Select Do not use a theme.
  17. Open Anemone3DS either in Homebrew Launcher -or- in its stand-alone CIA version.
  18. On the 1st theme, do a Normal install using (A) and (Up, d-pad).
  19. After a single theme is installed, press (Start). Turn off the 3DS. Turn on the 3DS.
    • If Anemone3DS crashes, go back and try installing a single theme again.
    • If Anemone3DS crashes again on that 1st theme, remove it and add in a different theme.
  20. Open Anemone3DS again.
  21. Press (B) to select the 10 themes. Do a Shuffle install using (A) and (Down, d-pad).
    • If Anemone3DS crashes, try installing a different set of 10 themes.
  22. After a full theme shuffle is installed, press (Start). Turn off the 3DS.
  23. Remove the SD card and open it up on your computer.
  24. Copy and add 10 more themes from your main collection into the Themes folder.
    • Again, the preferred themes should all match your 3DS region.
  25. Safely eject the SD card from your computer. Reinsert the SD card into the 3DS.
  26. Turn on the 3DS. Open Anemone3DS again.
  27. Press (B) to select the other 10 themes. Do a Shuffle install.
    • If Anemone3DS crashes, retry installing a different 2nd set of 10 themes.
  28. After the second full theme shuffle is installed, press (Start). Turn off the 3DS.
  29. Remove the SD card and open it up on your computer.
  30. Delete your Themes folder. Rename your main collection back to Themes.
  31. Safely eject the SD card from your computer. Reinsert the SD card into the 3DS.
  32. Turn on the 3DS. Open Anemone3DS again.
  33. Press (B) to select any 10 themes of your choosing.
  34. If you scroll down and pick themes too fast, allow Anemone3DS to finish loading up the icons.
    • This caching tends to happen if you have a lot of themes.
  35. Once icon refreshing finishes and catches up, do a Shuffle install.
  36. Repeat random shuffles in ten even internals throughout your entire collection.
  37. After verifying satisfactory results, you may now delete your backup data. Enjoy!

@Helloman892
Copy link
Collaborator

While we (as in we the devs) appreciate what you're doing here, I have a couple of questions - first of all, why are you suggesting that an EmuNAND be booted? EmuNANDs are outdated and unneeded in 99.9% of cases at this point, and most of those 99.9% of users don't even have one - it's most likely more to do with 64KiB clusters than the EmuNAND, but it bears mentioning.

The second, and probably most important, thing here is the fact that, ultimately, 64KiB clusters are incompatible with the console itself. It breaks a fair few things, including official Nintendo software such as AGB_FIRM (aka GBA VC). Using them with Anemone is therefore unlikely to work and therefore unsupported.

@TurdPooCharger
Copy link
Contributor Author

I wasn't finished replying about this issue. It also happens when the card is formatted 32 KB. I just took time away to reply back tomorrow.

@noirscape
Copy link

noirscape commented Jan 28, 2018

@TurdPooCharger - The 'brick' you are experiencing isn't a brick. It's due to invalid theme data being written to the home menu extdata. It can be resolved by removing the theme extdata. Please refer to the screenshot I attached below for how to do this:

image

Running CFW on sysNAND as long as you either have arm9loaderhax or boot9strap (ideally boot9strap) should be completely secure, as it's possible to recover from most software related bricks with it. emuNANDs should be considered obsolete for the end user.

@TurdPooCharger
Copy link
Contributor Author

TurdPooCharger commented Jan 28, 2018

@ev1l0rd , it is good to hear that it isnt' a (real) brick. The problem has been resolved in issue #134.


@Helloman892, to answer your question about auto booting emuNAND. I learned not too long ago that this option does nothing if emuNAND isn't created on SD card with 3DS Multi EmuNAND Creator, so I'm (slightly) better informed why using emuNAND won't work if it's not set up -and- that it is considered pointless because it places the workload on SD card when flash memory wasn't meant to do heavy I/O.

However, due to reactional fear of bricking and what appeared as a brick in #134, i thought doing this would mitigate this risk.

This doesn't pertain to Anenome3DS, but I've been following and keeping track of GBAtemp users experiencing BSoD with/without working sound on their systems. The symptoms and patterns of failures are very worrying, which lead me to believe my "brick" was somehow related to theirs. One user reports trying sysNAND restore, CTRtransfer, and Lazarus3DS to no positive effects. If this is of interest to you, here is a link of the latest brick with a list of previous cases: https://gbatemp.net/threads/black-screens-on-n3ds-xl.495357/


Back onto the main question, why use 64 KB? I explained this a bit in my GBAtemp post, but I'll do it here again. When using large capacity SD cards such as 128 GB and above, having it formatted in 32 KB has a significant effect on speed performance: ie. Home Menu loading, in-game play lag, etc. 64 KB is thought to be a solution to these but at a price...

When I started my 64 KB research, I full well knew those speed gains could/would break compatibility with certain Nintendo & homebrew apps/games. As was seen here for Anenome.

I was documenting my finds because there are other users who use your theme manager in 64KB, even if it's not support and you guys have every right not to troubleshoot support them/me as was explicit about the needed proper cluster size choice.

Your program received extra attention and testing as it was one of the first homebrew apps to outright seemingly break on me. I went ahead trying to figure out if anything could be done to remedy this incompatible, so that all users (not just those on 32KB) can enjoy this wonderful app.

I hope what was posted here will get put into good use for those "odd/incorrect" 64 KB users but also figuring out why Anenome sometimes act strange in 32 KB with that theme ext data. Perhaps an in-built theme scripting can be implement in a future release that can properly auto configure that ext data, so app stability/performance is consistent? I dunno, you guys make heads/tails out of this.

If anything good (technically bad?) stems from all this, is that it lead to finding and nipping issue #134 in the bud before someone else less technically experienced ran into that pitfall and freaks out not knowing what to do.

I hope that answer all the questions here. I have nothing else to add or report about this cluster size biz.

Edit - Actually, I do have something to add. You guys deserve to be proud in your creation. It went into the brutal ringer and came out winning. As for other homebrew apps on my to-do list, I'm gonna need more coffee.

@petedressler
Copy link

This is an old thread however I was sent here during my research for the same problem. I eventually found an easy solution:

@cherrypie287 - "I don't know why, but, I managed to resolve the issue by turning on Enable game patching in Luma3DS settings (select on boot), which i turned on for an unrelated reason. Themes are now fully working for me. Strange that this is required for the 256GB SD card, and not for the smaller one, but I'll take the little victory!"

src: #210

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants