Emulator Issues #11828
closedGamecube Memory Card Dir/BAT block behavior reference files.
0%
Description
Reference files for the hardware testing of the Dir/BAT preference behavior for the construction logic rework in https://github.com/dolphin-emu/dolphin/pull/8300
Provided in case someone else needs to reproduce the results at some point in the future.
(Github doesn't let me attach 7z files, so I figured this is the next best place to store files like these.)
Files
Updated by JosJuice over 4 years ago
- Status changed from New to Invalid
- Issue type changed from Bug to Other
This isn't actually an issue, so I guess I'll mark it as invalid?
Updated by AdmiralCurtiss over 4 years ago
Yeah that's fine.
Here's my findings:
The GC BIOS counts any card as corrupted as long as at least any two of [dir0, dir1, bat0, bat1] are corrupted. Yes, even if we have one valid dir and one valid bat, and even if those are both supposedly the newer ones.
If both blocks of a single category are non-corrupted the used block depends on the update counter. If both blocks have the same update counter, it prefers block 0. Otherwise it prefers whichever block has the higher value. Essentially, if (0.update_ctr >= 1.update_ctr) { use 0 } else { use 1 }
.
If a single block of the four is corrupted, the non-corrupted one of the same category is used, regardless of update counters.
Raw results:
[code]da0_ba0_d0v0_d1v0_b0v0_b1v0 -> corrupted
da0_ba0_d0v0_d1v0_b0v0_b1v1 -> corrupted
da0_ba0_d0v0_d1v0_b0v1_b1v0 -> corrupted
da0_ba0_d0v0_d1v0_b0v1_b1v1 -> corrupted
da0_ba0_d0v0_d1v1_b0v0_b1v0 -> corrupted
da0_ba0_d0v0_d1v1_b0v0_b1v1 -> corrupted
da0_ba0_d0v0_d1v1_b0v1_b1v0 -> corrupted
da0_ba0_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da0_ba0_d0v1_d1v0_b0v0_b1v0 -> corrupted
da0_ba0_d0v1_d1v0_b0v0_b1v1 -> corrupted
da0_ba0_d0v1_d1v0_b0v1_b1v0 -> corrupted
da0_ba0_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 0
da0_ba0_d0v1_d1v1_b0v0_b1v0 -> corrupted
da0_ba0_d0v1_d1v1_b0v0_b1v1 -> Dir 0 / BAT 1
da0_ba0_d0v1_d1v1_b0v1_b1v0 -> Dir 0 / BAT 0
da0_ba0_d0v1_d1v1_b0v1_b1v1 -> Dir 0 / BAT 0
da0_ba1_d0v0_d1v0_b0v0_b1v0 -> corrupted
da0_ba1_d0v0_d1v0_b0v0_b1v1 -> corrupted
da0_ba1_d0v0_d1v0_b0v1_b1v0 -> corrupted
da0_ba1_d0v0_d1v0_b0v1_b1v1 -> corrupted
da0_ba1_d0v0_d1v1_b0v0_b1v0 -> corrupted
da0_ba1_d0v0_d1v1_b0v0_b1v1 -> corrupted
da0_ba1_d0v0_d1v1_b0v1_b1v0 -> corrupted
da0_ba1_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 1
da0_ba1_d0v1_d1v0_b0v0_b1v0 -> corrupted
da0_ba1_d0v1_d1v0_b0v0_b1v1 -> corrupted
da0_ba1_d0v1_d1v0_b0v1_b1v0 -> corrupted
da0_ba1_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 1
da0_ba1_d0v1_d1v1_b0v0_b1v0 -> corrupted
da0_ba1_d0v1_d1v1_b0v0_b1v1 -> Dir 0 / BAT 1
da0_ba1_d0v1_d1v1_b0v1_b1v0 -> Dir 0 / BAT 0
da0_ba1_d0v1_d1v1_b0v1_b1v1 -> Dir 0 / BAT 1
da0_ba2_d0v0_d1v0_b0v0_b1v0 -> corrupted
da0_ba2_d0v0_d1v0_b0v0_b1v1 -> corrupted
da0_ba2_d0v0_d1v0_b0v1_b1v0 -> corrupted
da0_ba2_d0v0_d1v0_b0v1_b1v1 -> corrupted
da0_ba2_d0v0_d1v1_b0v0_b1v0 -> corrupted
da0_ba2_d0v0_d1v1_b0v0_b1v1 -> corrupted
da0_ba2_d0v0_d1v1_b0v1_b1v0 -> corrupted
da0_ba2_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da0_ba2_d0v1_d1v0_b0v0_b1v0 -> corrupted
da0_ba2_d0v1_d1v0_b0v0_b1v1 -> corrupted
da0_ba2_d0v1_d1v0_b0v1_b1v0 -> corrupted
da0_ba2_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 0
da0_ba2_d0v1_d1v1_b0v0_b1v0 -> corrupted
da0_ba2_d0v1_d1v1_b0v0_b1v1 -> Dir 0 / BAT 1
da0_ba2_d0v1_d1v1_b0v1_b1v0 -> Dir 0 / BAT 0
da0_ba2_d0v1_d1v1_b0v1_b1v1 -> Dir 0 / BAT 0
da1_ba0_d0v0_d1v0_b0v0_b1v0 -> corrupted
da1_ba0_d0v0_d1v0_b0v0_b1v1 -> corrupted
da1_ba0_d0v0_d1v0_b0v1_b1v0 -> corrupted
da1_ba0_d0v0_d1v0_b0v1_b1v1 -> corrupted
da1_ba0_d0v0_d1v1_b0v0_b1v0 -> corrupted
da1_ba0_d0v0_d1v1_b0v0_b1v1 -> corrupted
da1_ba0_d0v0_d1v1_b0v1_b1v0 -> corrupted
da1_ba0_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da1_ba0_d0v1_d1v0_b0v0_b1v0 -> corrupted
da1_ba0_d0v1_d1v0_b0v0_b1v1 -> corrupted
da1_ba0_d0v1_d1v0_b0v1_b1v0 -> corrupted
da1_ba0_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 0
da1_ba0_d0v1_d1v1_b0v0_b1v0 -> corrupted
da1_ba0_d0v1_d1v1_b0v0_b1v1 -> Dir 1 / BAT 1
da1_ba0_d0v1_d1v1_b0v1_b1v0 -> Dir 1 / BAT 0
da1_ba0_d0v1_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da1_ba1_d0v0_d1v0_b0v0_b1v0 -> corrupted
da1_ba1_d0v0_d1v0_b0v0_b1v1 -> corrupted
da1_ba1_d0v0_d1v0_b0v1_b1v0 -> corrupted
da1_ba1_d0v0_d1v0_b0v1_b1v1 -> corrupted
da1_ba1_d0v0_d1v1_b0v0_b1v0 -> corrupted
da1_ba1_d0v0_d1v1_b0v0_b1v1 -> corrupted
da1_ba1_d0v0_d1v1_b0v1_b1v0 -> corrupted
da1_ba1_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 1
da1_ba1_d0v1_d1v0_b0v0_b1v0 -> corrupted
da1_ba1_d0v1_d1v0_b0v0_b1v1 -> corrupted
da1_ba1_d0v1_d1v0_b0v1_b1v0 -> corrupted
da1_ba1_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 1
da1_ba1_d0v1_d1v1_b0v0_b1v0 -> corrupted
da1_ba1_d0v1_d1v1_b0v0_b1v1 -> Dir 1 / BAT 1
da1_ba1_d0v1_d1v1_b0v1_b1v0 -> Dir 1 / BAT 0
da1_ba1_d0v1_d1v1_b0v1_b1v1 -> Dir 1 / BAT 1
da1_ba2_d0v0_d1v0_b0v0_b1v0 -> corrupted
da1_ba2_d0v0_d1v0_b0v0_b1v1 -> corrupted
da1_ba2_d0v0_d1v0_b0v1_b1v0 -> corrupted
da1_ba2_d0v0_d1v0_b0v1_b1v1 -> corrupted
da1_ba2_d0v0_d1v1_b0v0_b1v0 -> corrupted
da1_ba2_d0v0_d1v1_b0v0_b1v1 -> corrupted
da1_ba2_d0v0_d1v1_b0v1_b1v0 -> corrupted
da1_ba2_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da1_ba2_d0v1_d1v0_b0v0_b1v0 -> corrupted
da1_ba2_d0v1_d1v0_b0v0_b1v1 -> corrupted
da1_ba2_d0v1_d1v0_b0v1_b1v0 -> corrupted
da1_ba2_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 0
da1_ba2_d0v1_d1v1_b0v0_b1v0 -> corrupted
da1_ba2_d0v1_d1v1_b0v0_b1v1 -> Dir 1 / BAT 1
da1_ba2_d0v1_d1v1_b0v1_b1v0 -> Dir 1 / BAT 0
da1_ba2_d0v1_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da2_ba0_d0v0_d1v0_b0v0_b1v0 -> corrupted
da2_ba0_d0v0_d1v0_b0v0_b1v1 -> corrupted
da2_ba0_d0v0_d1v0_b0v1_b1v0 -> corrupted
da2_ba0_d0v0_d1v0_b0v1_b1v1 -> corrupted
da2_ba0_d0v0_d1v1_b0v0_b1v0 -> corrupted
da2_ba0_d0v0_d1v1_b0v0_b1v1 -> corrupted
da2_ba0_d0v0_d1v1_b0v1_b1v0 -> corrupted
da2_ba0_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da2_ba0_d0v1_d1v0_b0v0_b1v0 -> corrupted
da2_ba0_d0v1_d1v0_b0v0_b1v1 -> corrupted
da2_ba0_d0v1_d1v0_b0v1_b1v0 -> corrupted
da2_ba0_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 0
da2_ba0_d0v1_d1v1_b0v0_b1v0 -> corrupted
da2_ba0_d0v1_d1v1_b0v0_b1v1 -> Dir 0 / BAT 1
da2_ba0_d0v1_d1v1_b0v1_b1v0 -> Dir 0 / BAT 0
da2_ba0_d0v1_d1v1_b0v1_b1v1 -> Dir 0 / BAT 0
da2_ba1_d0v0_d1v0_b0v0_b1v0 -> corrupted
da2_ba1_d0v0_d1v0_b0v0_b1v1 -> corrupted
da2_ba1_d0v0_d1v0_b0v1_b1v0 -> corrupted
da2_ba1_d0v0_d1v0_b0v1_b1v1 -> corrupted
da2_ba1_d0v0_d1v1_b0v0_b1v0 -> corrupted
da2_ba1_d0v0_d1v1_b0v0_b1v1 -> corrupted
da2_ba1_d0v0_d1v1_b0v1_b1v0 -> corrupted
da2_ba1_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 1
da2_ba1_d0v1_d1v0_b0v0_b1v0 -> corrupted
da2_ba1_d0v1_d1v0_b0v0_b1v1 -> corrupted
da2_ba1_d0v1_d1v0_b0v1_b1v0 -> corrupted
da2_ba1_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 1
da2_ba1_d0v1_d1v1_b0v0_b1v0 -> corrupted
da2_ba1_d0v1_d1v1_b0v0_b1v1 -> Dir 0 / BAT 1
da2_ba1_d0v1_d1v1_b0v1_b1v0 -> Dir 0 / BAT 0
da2_ba1_d0v1_d1v1_b0v1_b1v1 -> Dir 0 / BAT 1
da2_ba2_d0v0_d1v0_b0v0_b1v0 -> corrupted
da2_ba2_d0v0_d1v0_b0v0_b1v1 -> corrupted
da2_ba2_d0v0_d1v0_b0v1_b1v0 -> corrupted
da2_ba2_d0v0_d1v0_b0v1_b1v1 -> corrupted
da2_ba2_d0v0_d1v1_b0v0_b1v0 -> corrupted
da2_ba2_d0v0_d1v1_b0v0_b1v1 -> corrupted
da2_ba2_d0v0_d1v1_b0v1_b1v0 -> corrupted
da2_ba2_d0v0_d1v1_b0v1_b1v1 -> Dir 1 / BAT 0
da2_ba2_d0v1_d1v0_b0v0_b1v0 -> corrupted
da2_ba2_d0v1_d1v0_b0v0_b1v1 -> corrupted
da2_ba2_d0v1_d1v0_b0v1_b1v0 -> corrupted
da2_ba2_d0v1_d1v0_b0v1_b1v1 -> Dir 0 / BAT 0
da2_ba2_d0v1_d1v1_b0v0_b1v0 -> corrupted
da2_ba2_d0v1_d1v1_b0v0_b1v1 -> Dir 0 / BAT 1
da2_ba2_d0v1_d1v1_b0v1_b1v0 -> Dir 0 / BAT 0
da2_ba2_d0v1_d1v1_b0v1_b1v1 -> Dir 0 / BAT 0
[/code]
Updated by AdmiralCurtiss over 4 years ago
Here's another card for testing the weird 'skipped frame' Luigi's Mansion / Pikmin behavior, in case someone wants to verify my logic.