Project

General

Profile

Emulator Issues #11828

Gamecube Memory Card Dir/BAT block behavior reference files.

Added by Pikachu025 10 months ago. Updated 7 months ago.

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

0%

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

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.)

dir_bat_behavior_test_cards.7z (14.8 KB) dir_bat_behavior_test_cards.7z Pikachu025, 08/14/2019 03:20 AM
skipped-frames-test-memcard.7z (3.4 KB) skipped-frames-test-memcard.7z Pikachu025, 10/19/2019 01:12 AM

History

#1 Updated by JosJuice 10 months ago

  • Issue type changed from Bug to Other
  • Status changed from New to Invalid

This isn't actually an issue, so I guess I'll mark it as invalid?

#2 Updated by Pikachu025 10 months 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]

#3 Updated by Pikachu025 7 months ago

Here's another card for testing the weird 'skipped frame' Luigi's Mansion / Pikmin behavior, in case someone wants to verify my logic.

Also available in: Atom PDF