Project

General

Profile

Actions

Emulator Issues #13477

open

4GB non-HC SD cards do not work despite working on real hardware in commercial software

Added by NM64 3 months ago. Updated 3 months ago.

Status:
New
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
Yes
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

I recently purchased a used 4GB non-HC SD card (there are still 6 available from this seller if you need one for testing):
https://www.ebay.com/itm/155830965023

Dumping it and using in Dolphin straight-up does not work while doing the exact same process on a 2GB non-HC SD card (such as the one that came with the launch 3DS) does indeed work

The thing is though, I can confirm that this 4GB non-HC SD card mostly "just works" on a real Wii console's Wii Menu with its data management and the SD card menu and the like, and can also similarly confirm that mostly "just works" in Excite Truck (even launched from the commercial disc!) with its custom soundtrack function working which, being a Wii launch title, does not support SDHC cards.

The reason I say "mostly" is because there's an odd quirk with regards to transitioning to and from the Wii Menu on real hardware:

Insert 4GB non-HC SD card ▶ power-on console to Wii Menu ▶ launch Excite Truck disc — custom music "just works" ▶ return to Wii Menu — "Data Management" does not work ▶ eject and re-insert 4GB non-HC SD card — "Data Management" works

Insert 4GB non-HC SD card ▶ power-on console to Wii Menu — "Data Management" does not work ▶ eject and re-insert 4GB non-HC SD card — "Data Management" works

Power-on console to Wii Menu ▶ Insert 4GB non-HC SD card — "Data Management" works ▶ launch Excite Truck disc — custom music does not work ▶ eject and re-insert 4GB non-HC SD card — custom music works

If you turn on the console with the 4GB non-HC SD card already inserted and then run Excite Truck, everything "just works". If you then exit to the Wii Menu, you need to eject and re-insert the 4GB non-HC SD card in order for the Wii Menu's data management to properly see it. Similarly, if you boot with the console with no SD card and, while on the Wii Menu, insert the 4GB non-HC SD card, it'll "just work" in the Wii Menu's "data management" but subsequently launching Excite Truck results in the card not being seen unless you eject and re-insert it.

Curiously, BootMii as boot2 on my launch-day Wii does not work with a 4GB non-HC SD card (which is unfortunate since I normally use USB Loader GX's custom ppcboot.elf to boot directly into USB Loader GX). However, all other homebrew I've tested seems to work without issue (Homebrew Channel, Not64, USB Loader GX, WiiXplorer).

FAT16 vs FAT32 did not seem to make a difference in any of this stuff. Also, I can make a video recording demonstrating any and/or all of this if you'd like.

Inside of the following 7z archive are 4 disk images of my 4GB non-HC SD card, two in FAT16 and two in FAT32. The "empty" ones are self-explanatory while the ones "with data" have a single license-free MP3 you can use for testing as well as my completed Excite Truck save data pre-configured to use custom MP3s; also included is USB Loader GX and the aforementioned custom ppcboot.elf to demonstrate how bootmii unfortunately does not work while USB Loader GX itself does:

http://0x0.st/Hktp.7z

And to make it easier for testing in Dolphin, I've attached a stand-alone copy of that very same completed Excite Truck save data of mine pre-configured to use custom MP3s.


Files

data.bin (397 KB) data.bin NM64, 02/05/2024 10:03 PM
Actions #1

Updated by NM64 3 months ago

Somehow I used the wrong ebay link... this is the correct one:
https://www.ebay.com/itm/144676174976

Actions #2

Updated by AdmiralCurtiss 3 months ago

I believe the reason for this is that Dolphin just assumes that everything over 2GB is SDHC. The 'HCness' of an SD card is a hardware property that you can't see in the raw dump of the data, so in order to support this there would need to be an extra checkbox or similar by the SD card settings to specify whether the card is HC or not -- unless you want to just treat all 4 GB cards as not-HC, which I'm not sure if that has any side-effects.

For reference:
https://github.com/dolphin-emu/dolphin/blob/9240f579eab18a2f67eef23846a6b508393d0e6c/Source/Core/Core/IOS/SDIO/SDIOSlot0.h#L118
https://github.com/dolphin-emu/dolphin/blob/9240f579eab18a2f67eef23846a6b508393d0e6c/Source/Core/Core/IOS/SDIO/SDIOSlot0.cpp#L465-L486

Actions #3

Updated by NM64 3 months ago

That gave me the idea to test with the old 5.0 version and, sure enough, it actually "just works" there, so this is actually a regression.

(fun fact—did you know Dolphin 5.0 actually works in wine? There's some funkiness with settings not being saved properly but it works for quick-and-dirty testing on Linux when using it in portable mode)

It'd be interesting to see how large of a non-HC emulated SD card one could actually make, like if an 8GB or even 16+GB is possible.

Actions #4

Updated by JosJuice 3 months ago

  • Tracker changed from Issue to Emulator Issues
  • Project changed from Infrastructure to Emulator
  • Issue type set to Bug
  • Regression set to No
  • Relates to usability set to No
  • Relates to performance set to No
  • Easy set to No
  • Relates to maintainability set to No
  • Operating system N/A added
Actions #5

Updated by NM64 3 months ago

Um, shouldn't "Regression" be set to 'Yes"? As I discovered, it actually works (at least in Excite Truck) in Dolphin 5.0 stable (technically 5.0-9 since you yourself said is functionally identical to 5.0 stable: https://forums.dolphin-emu.org/Thread-unofficial-new-dolphin-5-0-cpu-benchmark-results-automatically-updated--45007?pid=515742#pid515742)

Actions #6

Updated by JosJuice 3 months ago

I just changed the project. I didn't actively take a position on whether this is a regression. If you do want my position on it: It's not a "classical" regression, because the new behavior is better overall (for games that support SDHC cards) than the old behavior, so I'm hesitating to classify it as "Yes". It's somewhere in between. Whether it should be marked as a regression or not isn't an important matter, so I will leave it as it is personally.

Actions #7

Updated by pokechu22 3 months ago

  • Regression changed from No to Yes

If it's not possible to distinguish whether a card is SD or SDHC from an image, what if we treated 4GB cards as non-HC SD on IOS versions that don't support SDHC, and as SDHC on versions that do support SDHC?

Actions #8

Updated by NM64 3 months ago

If that were done, then it shouldn't be limited to specifically 4GB since I tested that FAT32 worked.

Also a few months back when trying to research of 8GB non-HC SD cards existed, found some mention of non-HC 8GB (micro)SD cards in a GBATemp forum thread from like 2008 or something.

Actions #9

Updated by NM64 3 months ago

AdmiralCurtiss wrote in #note-2:

I believe the reason for this is that Dolphin just assumes that everything over 2GB is SDHC.

This seems to be the case since the first development built that my 4GB non-HC SD image doesn't work in is 5.0-5044 which has a change description of "Add support for SDHC":
https://dolphin-emu.org/download/dev/84ecc0ecc9cf9acf355dbfbd7b15032ffffaa9eb/

By comparison the development build immediately before that, 5.0-5037, works with my 4GB non-HC SD image:
https://dolphin-emu.org/download/dev/5e54290271d69b670a7c1274562cb72ff9cff116/

(this was tested using the Wii Menu's "data management" since in was easier that way because Wii remote 1 kept being disconnected whenever I pressed the default-mappings for the 1 and 2 buttons in Excite Truck in the aforementioned development builds for whatever reasons)

Actions #10

Updated by NM64 3 months ago

AdmiralCurtiss wrote in #note-2:

The 'HCness' of an SD card is a hardware property that you can't see in the raw dump of the data

This also seems to be the case as, when using a bit older revision to avoid the controller-disconnection issue, build 5.0-4070, I was in fact able to dump an 8GB SDHC card and it "just worked" in Excite Truck despite this same exact scenario definitely not working on real hardware.

Actions

Also available in: Atom PDF