early-access version 3901
This commit is contained in:
parent
8cf4e0ab0c
commit
f49abee7e2
10 changed files with 16 additions and 19 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 3900.
|
This is the source code for early-access 3901.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
|
@ -141,10 +141,6 @@ public:
|
||||||
if (nsp->IsExtractedType()) {
|
if (nsp->IsExtractedType()) {
|
||||||
return InstallError;
|
return InstallError;
|
||||||
}
|
}
|
||||||
} else if (file_extension == "xci") {
|
|
||||||
jconst xci =
|
|
||||||
std::make_shared<FileSys::XCI>(m_vfs->OpenFile(filename, FileSys::Mode::Read));
|
|
||||||
nsp = xci->GetSecurePartitionNSP();
|
|
||||||
} else {
|
} else {
|
||||||
return ErrorFilenameExtension;
|
return ErrorFilenameExtension;
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,6 +145,8 @@ void MiiEdit::MiiEditOutput(MiiEditResult result, s32 index) {
|
||||||
.index{index},
|
.index{index},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
LOG_INFO(Input, "called, result={}, index={}", result, index);
|
||||||
|
|
||||||
std::vector<u8> out_data(sizeof(MiiEditAppletOutput));
|
std::vector<u8> out_data(sizeof(MiiEditAppletOutput));
|
||||||
std::memcpy(out_data.data(), &applet_output, sizeof(MiiEditAppletOutput));
|
std::memcpy(out_data.data(), &applet_output, sizeof(MiiEditAppletOutput));
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,7 @@ Result DatabaseManager::FindIndex(s32& out_index, const Common::UUID& create_id,
|
||||||
return ResultSuccess;
|
return ResultSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (std::size_t i = 0; i <= index; ++i) {
|
for (std::size_t i = 0; i < index; ++i) {
|
||||||
if (database.Get(i).IsSpecial()) {
|
if (database.Get(i).IsSpecial()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ void CharInfo::SetFromStoreData(const StoreData& store_data) {
|
||||||
eyebrow_aspect = store_data.GetEyebrowAspect();
|
eyebrow_aspect = store_data.GetEyebrowAspect();
|
||||||
eyebrow_rotate = store_data.GetEyebrowRotate();
|
eyebrow_rotate = store_data.GetEyebrowRotate();
|
||||||
eyebrow_x = store_data.GetEyebrowX();
|
eyebrow_x = store_data.GetEyebrowX();
|
||||||
eyebrow_y = store_data.GetEyebrowY();
|
eyebrow_y = store_data.GetEyebrowY() + 3;
|
||||||
nose_type = store_data.GetNoseType();
|
nose_type = store_data.GetNoseType();
|
||||||
nose_scale = store_data.GetNoseScale();
|
nose_scale = store_data.GetNoseScale();
|
||||||
nose_y = store_data.GetNoseY();
|
nose_y = store_data.GetNoseY();
|
||||||
|
|
|
@ -113,7 +113,7 @@ void CoreData::BuildRandom(Age age, Gender gender, Race race) {
|
||||||
.values[MiiUtil::GetRandomValue<std::size_t>(eyebrow_type_info.values_count)]);
|
.values[MiiUtil::GetRandomValue<std::size_t>(eyebrow_type_info.values_count)]);
|
||||||
|
|
||||||
const auto eyebrow_rotate_1{race == Race::Asian ? 6 : 0};
|
const auto eyebrow_rotate_1{race == Race::Asian ? 6 : 0};
|
||||||
const auto eyebrow_y{race == Race::Asian ? 9 : 10};
|
const auto eyebrow_y{race == Race::Asian ? 6 : 7};
|
||||||
const auto eyebrow_rotate_offset{32 - RawData::EyebrowRotateLookup[eyebrow_rotate_1] + 6};
|
const auto eyebrow_rotate_offset{32 - RawData::EyebrowRotateLookup[eyebrow_rotate_1] + 6};
|
||||||
const auto eyebrow_rotate{
|
const auto eyebrow_rotate{
|
||||||
32 - RawData::EyebrowRotateLookup[static_cast<std::size_t>(data.eyebrow_type.Value())]};
|
32 - RawData::EyebrowRotateLookup[static_cast<std::size_t>(data.eyebrow_type.Value())]};
|
||||||
|
|
|
@ -1374,7 +1374,7 @@ NFP::AmiiboName NfcDevice::GetAmiiboName(const NFP::AmiiboSettings& settings) co
|
||||||
|
|
||||||
// Convert from utf16 to utf8
|
// Convert from utf16 to utf8
|
||||||
const auto amiibo_name_utf8 = Common::UTF16ToUTF8(settings_amiibo_name.data());
|
const auto amiibo_name_utf8 = Common::UTF16ToUTF8(settings_amiibo_name.data());
|
||||||
memcpy(amiibo_name.data(), amiibo_name_utf8.data(), amiibo_name_utf8.size() - 1);
|
memcpy(amiibo_name.data(), amiibo_name_utf8.data(), amiibo_name_utf8.size());
|
||||||
|
|
||||||
return amiibo_name;
|
return amiibo_name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1160,7 +1160,7 @@ struct QueryCacheRuntimeImpl {
|
||||||
cpu_memory_),
|
cpu_memory_),
|
||||||
primitives_needed_minus_suceeded_streamer(
|
primitives_needed_minus_suceeded_streamer(
|
||||||
static_cast<size_t>(QueryType::StreamingPrimitivesNeededMinusSucceeded), runtime, 0u),
|
static_cast<size_t>(QueryType::StreamingPrimitivesNeededMinusSucceeded), runtime, 0u),
|
||||||
hcr_setup{}, hcr_is_set{}, is_hcr_running{} {
|
hcr_setup{}, hcr_is_set{}, is_hcr_running{}, maxwell3d{} {
|
||||||
|
|
||||||
hcr_setup.sType = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
|
hcr_setup.sType = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT;
|
||||||
hcr_setup.pNext = nullptr;
|
hcr_setup.pNext = nullptr;
|
||||||
|
@ -1235,7 +1235,9 @@ void QueryCacheRuntime::Bind3DEngine(Maxwell3D* maxwell3d) {
|
||||||
|
|
||||||
template <typename Func>
|
template <typename Func>
|
||||||
void QueryCacheRuntime::View3DRegs(Func&& func) {
|
void QueryCacheRuntime::View3DRegs(Func&& func) {
|
||||||
|
if (impl->maxwell3d) {
|
||||||
func(*impl->maxwell3d);
|
func(*impl->maxwell3d);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QueryCacheRuntime::EndHostConditionalRendering() {
|
void QueryCacheRuntime::EndHostConditionalRendering() {
|
||||||
|
|
|
@ -3129,10 +3129,9 @@ void GMainWindow::OnMenuInstallToNAND() {
|
||||||
QFuture<InstallResult> future;
|
QFuture<InstallResult> future;
|
||||||
InstallResult result;
|
InstallResult result;
|
||||||
|
|
||||||
if (file.endsWith(QStringLiteral("xci"), Qt::CaseInsensitive) ||
|
if (file.endsWith(QStringLiteral("nsp"), Qt::CaseInsensitive)) {
|
||||||
file.endsWith(QStringLiteral("nsp"), Qt::CaseInsensitive)) {
|
|
||||||
|
|
||||||
future = QtConcurrent::run([this, &file] { return InstallNSPXCI(file); });
|
future = QtConcurrent::run([this, &file] { return InstallNSP(file); });
|
||||||
|
|
||||||
while (!future.isFinished()) {
|
while (!future.isFinished()) {
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
|
@ -3191,7 +3190,7 @@ void GMainWindow::OnMenuInstallToNAND() {
|
||||||
ui->action_Install_File_NAND->setEnabled(true);
|
ui->action_Install_File_NAND->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
|
InstallResult GMainWindow::InstallNSP(const QString& filename) {
|
||||||
const auto qt_raw_copy = [this](const FileSys::VirtualFile& src,
|
const auto qt_raw_copy = [this](const FileSys::VirtualFile& src,
|
||||||
const FileSys::VirtualFile& dest, std::size_t block_size) {
|
const FileSys::VirtualFile& dest, std::size_t block_size) {
|
||||||
if (src == nullptr || dest == nullptr) {
|
if (src == nullptr || dest == nullptr) {
|
||||||
|
@ -3225,9 +3224,7 @@ InstallResult GMainWindow::InstallNSPXCI(const QString& filename) {
|
||||||
return InstallResult::Failure;
|
return InstallResult::Failure;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const auto xci = std::make_shared<FileSys::XCI>(
|
return InstallResult::Failure;
|
||||||
vfs->OpenFile(filename.toStdString(), FileSys::Mode::Read));
|
|
||||||
nsp = xci->GetSecurePartitionNSP();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nsp->GetStatus() != Loader::ResultStatus::Success) {
|
if (nsp->GetStatus() != Loader::ResultStatus::Success) {
|
||||||
|
|
|
@ -393,7 +393,7 @@ private:
|
||||||
void RemoveCacheStorage(u64 program_id);
|
void RemoveCacheStorage(u64 program_id);
|
||||||
bool SelectRomFSDumpTarget(const FileSys::ContentProvider&, u64 program_id,
|
bool SelectRomFSDumpTarget(const FileSys::ContentProvider&, u64 program_id,
|
||||||
u64* selected_title_id, u8* selected_content_record_type);
|
u64* selected_title_id, u8* selected_content_record_type);
|
||||||
InstallResult InstallNSPXCI(const QString& filename);
|
InstallResult InstallNSP(const QString& filename);
|
||||||
InstallResult InstallNCA(const QString& filename);
|
InstallResult InstallNCA(const QString& filename);
|
||||||
void MigrateConfigFiles();
|
void MigrateConfigFiles();
|
||||||
void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {},
|
void UpdateWindowTitle(std::string_view title_name = {}, std::string_view title_version = {},
|
||||||
|
|
Loading…
Reference in a new issue