mirror of
https://github.com/Luca1991/NDSFactory.git
synced 2026-02-04 05:36:15 +01:00
Implemented FAT rebuilding
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include <filesystem>
|
||||
#include "./../../mainwindow.h"
|
||||
|
||||
|
||||
@@ -11,3 +12,9 @@ bool MainWindow::patchFat(const std::string& loadPath, uint32_t shiftSize, const
|
||||
{
|
||||
return ndsFactory.patchFat(loadPath, shiftSize, savePath);
|
||||
}
|
||||
|
||||
bool MainWindow::buildFatData(const std::string& fatDataDirPath, const std::string& originalFatPath, uint32_t fatDataAddr, const std::string& savePath)
|
||||
{
|
||||
if (!std::filesystem::exists(fatDataDirPath + "/_file_IDs.txt")) return false;
|
||||
return ndsFactory.buildFatData(fatDataDirPath, originalFatPath, fatDataAddr, savePath);
|
||||
}
|
||||
|
||||
@@ -106,3 +106,45 @@ void MainWindow::on_fatPatcherPatchFatBtn_clicked()
|
||||
|
||||
ui->fatPatcherPatchFatBtn->setEnabled(true);
|
||||
}
|
||||
|
||||
void MainWindow::on_fatBuilderOpenFatDataDirBtn_clicked()
|
||||
{
|
||||
QString fatDirPat = QFileDialog::getExistingDirectory(
|
||||
this, tr("Select Directory"),
|
||||
"",
|
||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
|
||||
if (!fatDirPat.isNull())
|
||||
ui->fatBuilderFatDirPathEdt->setText(fatDirPat.toUtf8());
|
||||
}
|
||||
|
||||
void MainWindow::on_fatBuilderLoadOriginalFatBtn_clicked()
|
||||
{
|
||||
QString fatPath = QFileDialog::getOpenFileName(
|
||||
Q_NULLPTR,
|
||||
"NDS Fat",
|
||||
"",
|
||||
"NDS Fat (*.bin)");
|
||||
|
||||
if (!fatPath.isNull())
|
||||
ui->fatBuilderOriginalFatPathEdt->setText(fatPath.toUtf8());
|
||||
}
|
||||
|
||||
void MainWindow::on_fatBuilderBuildBtn_clicked()
|
||||
{
|
||||
ui->fatBuilderOpenFatDataDirBtn->setEnabled(false);
|
||||
|
||||
QString dirPath = QFileDialog::getExistingDirectory(
|
||||
this, tr("Select Directory"),
|
||||
"",
|
||||
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
|
||||
|
||||
if (!dirPath.isNull())
|
||||
buildFatData(ui->fatBuilderFatDirPathEdt->text().toStdString(),
|
||||
ui->fatBuilderOriginalFatPathEdt->text().toStdString(),
|
||||
ui->fatBuilderFatAddrEdt->text().toUInt(nullptr, 16),
|
||||
dirPath.toStdString()) ? QMessageBox::information(this, tr("NDSFactory"), tr("fat_data.bin and fat.bin correctly built!"))
|
||||
: QMessageBox::critical(this, tr("NDSFactory"), tr("Error building FAT!"));
|
||||
|
||||
ui->fatBuilderOpenFatDataDirBtn->setEnabled(true);
|
||||
}
|
||||
@@ -148,7 +148,10 @@ bool MainWindow::writeArm9BinPadding(char paddingType, const std::string& savePa
|
||||
size = extractPackerHeaderTableData(NDSHeaderNames::ARM7RomAddress).toUInt(nullptr, 16) - startAddr;
|
||||
|
||||
if (isFooterPresent)
|
||||
{
|
||||
startAddr += Arm9FooterSize;
|
||||
size -= Arm9FooterSize;
|
||||
}
|
||||
|
||||
return ndsFactory.writePaddingToFile(
|
||||
paddingType,
|
||||
|
||||
Reference in New Issue
Block a user