Merge pull request #4282 from Morph1984/fs-size
filesystem: Set various NAND partition sizes to their defaults
This commit is contained in:
		
						commit
						450cbcfee6
					
				@ -12,6 +12,10 @@
 | 
			
		||||
 | 
			
		||||
namespace FileSys {
 | 
			
		||||
 | 
			
		||||
constexpr u64 NAND_USER_SIZE = 0x680000000;  // 26624 MiB
 | 
			
		||||
constexpr u64 NAND_SYSTEM_SIZE = 0xA0000000; // 2560 MiB
 | 
			
		||||
constexpr u64 NAND_TOTAL_SIZE = 0x747C00000; // 29820 MiB
 | 
			
		||||
 | 
			
		||||
BISFactory::BISFactory(VirtualDir nand_root_, VirtualDir load_root_, VirtualDir dump_root_)
 | 
			
		||||
    : nand_root(std::move(nand_root_)), load_root(std::move(load_root_)),
 | 
			
		||||
      dump_root(std::move(dump_root_)),
 | 
			
		||||
@ -110,30 +114,29 @@ VirtualDir BISFactory::GetImageDirectory() const {
 | 
			
		||||
 | 
			
		||||
u64 BISFactory::GetSystemNANDFreeSpace() const {
 | 
			
		||||
    const auto sys_dir = GetOrCreateDirectoryRelative(nand_root, "/system");
 | 
			
		||||
    if (sys_dir == nullptr)
 | 
			
		||||
        return 0;
 | 
			
		||||
    if (sys_dir == nullptr) {
 | 
			
		||||
        return GetSystemNANDTotalSpace();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return GetSystemNANDTotalSpace() - sys_dir->GetSize();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u64 BISFactory::GetSystemNANDTotalSpace() const {
 | 
			
		||||
    return static_cast<u64>(Settings::values.nand_system_size);
 | 
			
		||||
    return NAND_SYSTEM_SIZE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u64 BISFactory::GetUserNANDFreeSpace() const {
 | 
			
		||||
    const auto usr_dir = GetOrCreateDirectoryRelative(nand_root, "/user");
 | 
			
		||||
    if (usr_dir == nullptr)
 | 
			
		||||
        return 0;
 | 
			
		||||
 | 
			
		||||
    return GetUserNANDTotalSpace() - usr_dir->GetSize();
 | 
			
		||||
    // For some reason games such as BioShock 1 checks whether this is exactly 0x680000000 bytes.
 | 
			
		||||
    // Set the free space to be 1 MiB less than the total as a workaround to this issue.
 | 
			
		||||
    return GetUserNANDTotalSpace() - 0x100000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u64 BISFactory::GetUserNANDTotalSpace() const {
 | 
			
		||||
    return static_cast<u64>(Settings::values.nand_user_size);
 | 
			
		||||
    return NAND_USER_SIZE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u64 BISFactory::GetFullNANDTotalSpace() const {
 | 
			
		||||
    return static_cast<u64>(Settings::values.nand_total_size);
 | 
			
		||||
    return NAND_TOTAL_SIZE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VirtualDir BISFactory::GetBCATDirectory(u64 title_id) const {
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,8 @@
 | 
			
		||||
 | 
			
		||||
namespace FileSys {
 | 
			
		||||
 | 
			
		||||
constexpr u64 SDMC_TOTAL_SIZE = 0x10000000000; // 1 TiB
 | 
			
		||||
 | 
			
		||||
SDMCFactory::SDMCFactory(VirtualDir dir_)
 | 
			
		||||
    : dir(std::move(dir_)), contents(std::make_unique<RegisteredCache>(
 | 
			
		||||
                                GetOrCreateDirectoryRelative(dir, "/Nintendo/Contents/registered"),
 | 
			
		||||
@ -46,7 +48,7 @@ u64 SDMCFactory::GetSDMCFreeSpace() const {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
u64 SDMCFactory::GetSDMCTotalSpace() const {
 | 
			
		||||
    return static_cast<u64>(Settings::values.sdmc_size);
 | 
			
		||||
    return SDMC_TOTAL_SIZE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace FileSys
 | 
			
		||||
 | 
			
		||||
@ -346,31 +346,6 @@ struct TouchscreenInput {
 | 
			
		||||
    u32 rotation_angle;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum class NANDTotalSize : u64 {
 | 
			
		||||
    S29_1GB = 0x747C00000ULL,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum class NANDUserSize : u64 {
 | 
			
		||||
    S26GB = 0x680000000ULL,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum class NANDSystemSize : u64 {
 | 
			
		||||
    S2_5GB = 0xA0000000,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum class SDMCSize : u64 {
 | 
			
		||||
    S1GB = 0x40000000,
 | 
			
		||||
    S2GB = 0x80000000,
 | 
			
		||||
    S4GB = 0x100000000ULL,
 | 
			
		||||
    S8GB = 0x200000000ULL,
 | 
			
		||||
    S16GB = 0x400000000ULL,
 | 
			
		||||
    S32GB = 0x800000000ULL,
 | 
			
		||||
    S64GB = 0x1000000000ULL,
 | 
			
		||||
    S128GB = 0x2000000000ULL,
 | 
			
		||||
    S256GB = 0x4000000000ULL,
 | 
			
		||||
    S1TB = 0x10000000000ULL,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum class RendererBackend {
 | 
			
		||||
    OpenGL = 0,
 | 
			
		||||
    Vulkan = 1,
 | 
			
		||||
@ -491,10 +466,6 @@ struct Values {
 | 
			
		||||
    bool gamecard_inserted;
 | 
			
		||||
    bool gamecard_current_game;
 | 
			
		||||
    std::string gamecard_path;
 | 
			
		||||
    NANDTotalSize nand_total_size;
 | 
			
		||||
    NANDSystemSize nand_system_size;
 | 
			
		||||
    NANDUserSize nand_user_size;
 | 
			
		||||
    SDMCSize sdmc_size;
 | 
			
		||||
 | 
			
		||||
    // Debugging
 | 
			
		||||
    bool record_frame_times;
 | 
			
		||||
 | 
			
		||||
@ -505,22 +505,6 @@ void Config::ReadDataStorageValues() {
 | 
			
		||||
        ReadSetting(QStringLiteral("gamecard_current_game"), false).toBool();
 | 
			
		||||
    Settings::values.gamecard_path =
 | 
			
		||||
        ReadSetting(QStringLiteral("gamecard_path"), QStringLiteral("")).toString().toStdString();
 | 
			
		||||
    Settings::values.nand_total_size = static_cast<Settings::NANDTotalSize>(
 | 
			
		||||
        ReadSetting(QStringLiteral("nand_total_size"),
 | 
			
		||||
                    QVariant::fromValue<u64>(static_cast<u64>(Settings::NANDTotalSize::S29_1GB)))
 | 
			
		||||
            .toULongLong());
 | 
			
		||||
    Settings::values.nand_user_size = static_cast<Settings::NANDUserSize>(
 | 
			
		||||
        ReadSetting(QStringLiteral("nand_user_size"),
 | 
			
		||||
                    QVariant::fromValue<u64>(static_cast<u64>(Settings::NANDUserSize::S26GB)))
 | 
			
		||||
            .toULongLong());
 | 
			
		||||
    Settings::values.nand_system_size = static_cast<Settings::NANDSystemSize>(
 | 
			
		||||
        ReadSetting(QStringLiteral("nand_system_size"),
 | 
			
		||||
                    QVariant::fromValue<u64>(static_cast<u64>(Settings::NANDSystemSize::S2_5GB)))
 | 
			
		||||
            .toULongLong());
 | 
			
		||||
    Settings::values.sdmc_size = static_cast<Settings::SDMCSize>(
 | 
			
		||||
        ReadSetting(QStringLiteral("sdmc_size"),
 | 
			
		||||
                    QVariant::fromValue<u64>(static_cast<u64>(Settings::SDMCSize::S16GB)))
 | 
			
		||||
            .toULongLong());
 | 
			
		||||
 | 
			
		||||
    qt_config->endGroup();
 | 
			
		||||
}
 | 
			
		||||
@ -1006,18 +990,7 @@ void Config::SaveDataStorageValues() {
 | 
			
		||||
                 false);
 | 
			
		||||
    WriteSetting(QStringLiteral("gamecard_path"),
 | 
			
		||||
                 QString::fromStdString(Settings::values.gamecard_path), QStringLiteral(""));
 | 
			
		||||
    WriteSetting(QStringLiteral("nand_total_size"),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::values.nand_total_size)),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::NANDTotalSize::S29_1GB)));
 | 
			
		||||
    WriteSetting(QStringLiteral("nand_user_size"),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::values.nand_user_size)),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::NANDUserSize::S26GB)));
 | 
			
		||||
    WriteSetting(QStringLiteral("nand_system_size"),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::values.nand_system_size)),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::NANDSystemSize::S2_5GB)));
 | 
			
		||||
    WriteSetting(QStringLiteral("sdmc_size"),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::values.sdmc_size)),
 | 
			
		||||
                 QVariant::fromValue<u64>(static_cast<u64>(Settings::SDMCSize::S16GB)));
 | 
			
		||||
 | 
			
		||||
    qt_config->endGroup();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -11,19 +11,6 @@
 | 
			
		||||
#include "yuzu/configuration/configure_filesystem.h"
 | 
			
		||||
#include "yuzu/uisettings.h"
 | 
			
		||||
 | 
			
		||||
namespace {
 | 
			
		||||
 | 
			
		||||
template <typename T>
 | 
			
		||||
void SetComboBoxFromData(QComboBox* combo_box, T data) {
 | 
			
		||||
    const auto index = combo_box->findData(QVariant::fromValue(static_cast<u64>(data)));
 | 
			
		||||
    if (index >= combo_box->count() || index < 0)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    combo_box->setCurrentIndex(index);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // Anonymous namespace
 | 
			
		||||
 | 
			
		||||
ConfigureFilesystem::ConfigureFilesystem(QWidget* parent)
 | 
			
		||||
    : QWidget(parent), ui(std::make_unique<Ui::ConfigureFilesystem>()) {
 | 
			
		||||
    ui->setupUi(this);
 | 
			
		||||
@ -73,11 +60,6 @@ void ConfigureFilesystem::setConfiguration() {
 | 
			
		||||
 | 
			
		||||
    ui->cache_game_list->setChecked(UISettings::values.cache_game_list);
 | 
			
		||||
 | 
			
		||||
    SetComboBoxFromData(ui->nand_size, Settings::values.nand_total_size);
 | 
			
		||||
    SetComboBoxFromData(ui->usrnand_size, Settings::values.nand_user_size);
 | 
			
		||||
    SetComboBoxFromData(ui->sysnand_size, Settings::values.nand_system_size);
 | 
			
		||||
    SetComboBoxFromData(ui->sdmc_size, Settings::values.sdmc_size);
 | 
			
		||||
 | 
			
		||||
    UpdateEnabledControls();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -98,15 +80,6 @@ void ConfigureFilesystem::applyConfiguration() {
 | 
			
		||||
    Settings::values.dump_nso = ui->dump_nso->isChecked();
 | 
			
		||||
 | 
			
		||||
    UISettings::values.cache_game_list = ui->cache_game_list->isChecked();
 | 
			
		||||
 | 
			
		||||
    Settings::values.nand_total_size = static_cast<Settings::NANDTotalSize>(
 | 
			
		||||
        ui->nand_size->itemData(ui->nand_size->currentIndex()).toULongLong());
 | 
			
		||||
    Settings::values.nand_system_size = static_cast<Settings::NANDSystemSize>(
 | 
			
		||||
        ui->nand_size->itemData(ui->sysnand_size->currentIndex()).toULongLong());
 | 
			
		||||
    Settings::values.nand_user_size = static_cast<Settings::NANDUserSize>(
 | 
			
		||||
        ui->nand_size->itemData(ui->usrnand_size->currentIndex()).toULongLong());
 | 
			
		||||
    Settings::values.sdmc_size = static_cast<Settings::SDMCSize>(
 | 
			
		||||
        ui->nand_size->itemData(ui->sdmc_size->currentIndex()).toULongLong());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit) {
 | 
			
		||||
 | 
			
		||||
@ -115,127 +115,6 @@
 | 
			
		||||
       </layout>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QGroupBox" name="groupBox_3">
 | 
			
		||||
       <property name="title">
 | 
			
		||||
        <string>Storage Sizes</string>
 | 
			
		||||
       </property>
 | 
			
		||||
       <layout class="QGridLayout" name="gridLayout_3">
 | 
			
		||||
        <item row="3" column="0">
 | 
			
		||||
         <widget class="QLabel" name="label_5">
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>SD Card</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="1" column="0">
 | 
			
		||||
         <widget class="QLabel" name="label_4">
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>System NAND</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="1" column="1">
 | 
			
		||||
         <widget class="QComboBox" name="sysnand_size">
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>2.5 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="3" column="1">
 | 
			
		||||
         <widget class="QComboBox" name="sdmc_size">
 | 
			
		||||
          <property name="currentText">
 | 
			
		||||
           <string>32 GB</string>
 | 
			
		||||
          </property>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>1 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>2 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>4 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>8 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>16 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>32 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>64 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>128 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>256 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>1 TB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="2" column="1">
 | 
			
		||||
         <widget class="QComboBox" name="usrnand_size">
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>26 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="2" column="0">
 | 
			
		||||
         <widget class="QLabel" name="label_6">
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>User NAND</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="0" column="0">
 | 
			
		||||
         <widget class="QLabel" name="label_7">
 | 
			
		||||
          <property name="text">
 | 
			
		||||
           <string>NAND</string>
 | 
			
		||||
          </property>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
        <item row="0" column="1">
 | 
			
		||||
         <widget class="QComboBox" name="nand_size">
 | 
			
		||||
          <item>
 | 
			
		||||
           <property name="text">
 | 
			
		||||
            <string>29.1 GB</string>
 | 
			
		||||
           </property>
 | 
			
		||||
          </item>
 | 
			
		||||
         </widget>
 | 
			
		||||
        </item>
 | 
			
		||||
       </layout>
 | 
			
		||||
      </widget>
 | 
			
		||||
     </item>
 | 
			
		||||
     <item>
 | 
			
		||||
      <widget class="QGroupBox" name="groupBox_4">
 | 
			
		||||
       <property name="title">
 | 
			
		||||
 | 
			
		||||
@ -335,15 +335,6 @@ void Config::ReadValues() {
 | 
			
		||||
    Settings::values.gamecard_current_game =
 | 
			
		||||
        sdl2_config->GetBoolean("Data Storage", "gamecard_current_game", false);
 | 
			
		||||
    Settings::values.gamecard_path = sdl2_config->Get("Data Storage", "gamecard_path", "");
 | 
			
		||||
    Settings::values.nand_total_size = static_cast<Settings::NANDTotalSize>(sdl2_config->GetInteger(
 | 
			
		||||
        "Data Storage", "nand_total_size", static_cast<long>(Settings::NANDTotalSize::S29_1GB)));
 | 
			
		||||
    Settings::values.nand_user_size = static_cast<Settings::NANDUserSize>(sdl2_config->GetInteger(
 | 
			
		||||
        "Data Storage", "nand_user_size", static_cast<long>(Settings::NANDUserSize::S26GB)));
 | 
			
		||||
    Settings::values.nand_system_size = static_cast<Settings::NANDSystemSize>(
 | 
			
		||||
        sdl2_config->GetInteger("Data Storage", "nand_system_size",
 | 
			
		||||
                                static_cast<long>(Settings::NANDSystemSize::S2_5GB)));
 | 
			
		||||
    Settings::values.sdmc_size = static_cast<Settings::SDMCSize>(sdl2_config->GetInteger(
 | 
			
		||||
        "Data Storage", "sdmc_size", static_cast<long>(Settings::SDMCSize::S16GB)));
 | 
			
		||||
 | 
			
		||||
    // System
 | 
			
		||||
    Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user