From ff3f661bb54dcb31e2533967aa231d827d2be4b7 Mon Sep 17 00:00:00 2001 From: Arisotura Date: Thu, 28 Oct 2021 18:47:13 +0200 Subject: DLDI/SD folder-sync apparatus (#1251) guess we can finally have DLDI that isn't obtuse --- src/frontend/Util_ROM.cpp | 8 +- src/frontend/qt_sdl/EmuSettingsDialog.cpp | 139 ++++++++++++++++++- src/frontend/qt_sdl/EmuSettingsDialog.h | 8 ++ src/frontend/qt_sdl/EmuSettingsDialog.ui | 213 ++++++++++++++++++++++-------- src/frontend/qt_sdl/Platform.cpp | 45 +++++++ src/frontend/qt_sdl/PlatformConfig.cpp | 28 ++++ src/frontend/qt_sdl/PlatformConfig.h | 14 ++ 7 files changed, 392 insertions(+), 63 deletions(-) (limited to 'src/frontend') diff --git a/src/frontend/Util_ROM.cpp b/src/frontend/Util_ROM.cpp index 29247e4..8f100c7 100644 --- a/src/frontend/Util_ROM.cpp +++ b/src/frontend/Util_ROM.cpp @@ -222,14 +222,14 @@ int SetupDSiNAND() DSi::SDMMCFile = f; - if (Config::DSiSDEnable) + /*if (Config::DSiSDEnable) { f = Platform::OpenLocalFile(Config::DSiSDPath, "r+b"); if (f) DSi::SDIOFile = f; else DSi::SDIOFile = Platform::OpenLocalFile(Config::DSiSDPath, "w+b"); - } + }*/ return Load_OK; } @@ -509,7 +509,7 @@ void AnimatedROMIcon(u8 (&data)[8][512], u16 (&palette)[8][16], u16 (&sequence)[ { for (int x = 0; x < 32; x++) { - for (int y = 0; y < 32/2; y++) + for (int y = 0; y < 32/2; y++) { std::swap(frame[x * 32 + y], frame[x * 32 + (32 - 1 - y)]); } @@ -519,7 +519,7 @@ void AnimatedROMIcon(u8 (&data)[8][512], u16 (&palette)[8][16], u16 (&sequence)[ { for (int x = 0; x < 32/2; x++) { - for (int y = 0; y < 32; y++) + for (int y = 0; y < 32; y++) { std::swap(frame[x * 32 + y], frame[(32 - 1 - x) * 32 + y]); } diff --git a/src/frontend/qt_sdl/EmuSettingsDialog.cpp b/src/frontend/qt_sdl/EmuSettingsDialog.cpp index 31e2e52..9413846 100644 --- a/src/frontend/qt_sdl/EmuSettingsDialog.cpp +++ b/src/frontend/qt_sdl/EmuSettingsDialog.cpp @@ -48,15 +48,10 @@ EmuSettingsDialog::EmuSettingsDialog(QWidget* parent) : QDialog(parent), ui(new ui->txtBIOS7Path->setText(Config::BIOS7Path); ui->txtFirmwarePath->setText(Config::FirmwarePath); - ui->cbDLDIEnable->setChecked(Config::DLDIEnable != 0); - ui->txtDLDISDPath->setText(Config::DLDISDPath); - ui->txtDSiBIOS9Path->setText(Config::DSiBIOS9Path); ui->txtDSiBIOS7Path->setText(Config::DSiBIOS7Path); ui->txtDSiFirmwarePath->setText(Config::DSiFirmwarePath); ui->txtDSiNANDPath->setText(Config::DSiNANDPath); - ui->cbDSiSDEnable->setChecked(Config::DSiSDEnable != 0); - ui->txtDSiSDPath->setText(Config::DSiSDPath); ui->cbxConsoleType->addItem("DS"); ui->cbxConsoleType->addItem("DSi (experimental)"); @@ -83,6 +78,45 @@ EmuSettingsDialog::EmuSettingsDialog(QWidget* parent) : QDialog(parent), ui(new on_chkEnableJIT_toggled(); on_chkExternalBIOS_toggled(); + + const int imgsizes[] = {256, 512, 1024, 2048, 4096, 0}; + + ui->cbxDLDISize->addItem("Auto"); + ui->cbxDSiSDSize->addItem("Auto"); + + for (int i = 0; imgsizes[i] != 0; i++) + { + int sizedisp = imgsizes[i]; + QString sizelbl; + if (sizedisp >= 1024) + { + sizedisp >>= 10; + sizelbl = QString("%1 GB").arg(sizedisp); + } + else + { + sizelbl = QString("%1 MB").arg(sizedisp); + } + + ui->cbxDLDISize->addItem(sizelbl); + ui->cbxDSiSDSize->addItem(sizelbl); + } + + ui->cbDLDIEnable->setChecked(Config::DLDIEnable != 0); + ui->txtDLDISDPath->setText(Config::DLDISDPath); + ui->cbxDLDISize->setCurrentIndex(Config::DLDISize); + ui->cbDLDIReadOnly->setChecked(Config::DLDIReadOnly != 0); + ui->cbDLDIFolder->setChecked(Config::DLDIFolderSync != 0); + ui->txtDLDIFolder->setText(Config::DLDIFolderPath); + on_cbDLDIEnable_toggled(); + + ui->cbDSiSDEnable->setChecked(Config::DSiSDEnable != 0); + ui->txtDSiSDPath->setText(Config::DSiSDPath); + ui->cbxDSiSDSize->setCurrentIndex(Config::DSiSDSize); + ui->cbDSiSDReadOnly->setChecked(Config::DSiSDReadOnly != 0); + ui->cbDSiSDFolder->setChecked(Config::DSiSDFolderSync != 0); + ui->txtDSiSDFolder->setText(Config::DSiSDFolderPath); + on_cbDSiSDEnable_toggled(); } EmuSettingsDialog::~EmuSettingsDialog() @@ -154,14 +188,25 @@ void EmuSettingsDialog::done(int r) std::string bios9Path = ui->txtBIOS9Path->text().toStdString(); std::string bios7Path = ui->txtBIOS7Path->text().toStdString(); std::string firmwarePath = ui->txtFirmwarePath->text().toStdString(); + int dldiEnable = ui->cbDLDIEnable->isChecked() ? 1:0; std::string dldiSDPath = ui->txtDLDISDPath->text().toStdString(); + int dldiSize = ui->cbxDLDISize->currentIndex(); + int dldiReadOnly = ui->cbDLDIReadOnly->isChecked() ? 1:0; + int dldiFolderSync = ui->cbDLDIFolder->isChecked() ? 1:0; + std::string dldiFolderPath = ui->txtDLDIFolder->text().toStdString(); + std::string dsiBios9Path = ui->txtDSiBIOS9Path->text().toStdString(); std::string dsiBios7Path = ui->txtDSiBIOS7Path->text().toStdString(); std::string dsiFirmwarePath = ui->txtDSiFirmwarePath->text().toStdString(); std::string dsiNANDPath = ui->txtDSiNANDPath->text().toStdString(); + int dsiSDEnable = ui->cbDSiSDEnable->isChecked() ? 1:0; std::string dsiSDPath = ui->txtDSiSDPath->text().toStdString(); + int dsiSDSize = ui->cbxDSiSDSize->currentIndex(); + int dsiSDReadOnly = ui->cbDSiSDReadOnly->isChecked() ? 1:0; + int dsiSDFolderSync = ui->cbDSiSDFolder->isChecked() ? 1:0; + std::string dsiSDFolderPath = ui->txtDSiSDFolder->text().toStdString(); if (consoleType != Config::ConsoleType || directBoot != Config::DirectBoot @@ -178,12 +223,20 @@ void EmuSettingsDialog::done(int r) || strcmp(Config::FirmwarePath, firmwarePath.c_str()) != 0 || dldiEnable != Config::DLDIEnable || strcmp(Config::DLDISDPath, dldiSDPath.c_str()) != 0 + || dldiSize != Config::DLDISize + || dldiReadOnly != Config::DLDIReadOnly + || dldiFolderSync != Config::DLDIFolderSync + || strcmp(Config::DLDIFolderPath, dldiFolderPath.c_str()) != 0 || strcmp(Config::DSiBIOS9Path, dsiBios9Path.c_str()) != 0 || strcmp(Config::DSiBIOS7Path, dsiBios7Path.c_str()) != 0 || strcmp(Config::DSiFirmwarePath, dsiFirmwarePath.c_str()) != 0 || strcmp(Config::DSiNANDPath, dsiNANDPath.c_str()) != 0 || dsiSDEnable != Config::DSiSDEnable - || strcmp(Config::DSiSDPath, dsiSDPath.c_str()) != 0) + || strcmp(Config::DSiSDPath, dsiSDPath.c_str()) != 0 + || dsiSDSize != Config::DSiSDSize + || dsiSDReadOnly != Config::DSiSDReadOnly + || dsiSDFolderSync != Config::DSiSDFolderSync + || strcmp(Config::DSiSDFolderPath, dsiSDFolderPath.c_str()) != 0) { if (RunningSomething && QMessageBox::warning(this, "Reset necessary to apply changes", @@ -195,15 +248,25 @@ void EmuSettingsDialog::done(int r) strncpy(Config::BIOS9Path, bios9Path.c_str(), 1023); Config::BIOS9Path[1023] = '\0'; strncpy(Config::BIOS7Path, bios7Path.c_str(), 1023); Config::BIOS7Path[1023] = '\0'; strncpy(Config::FirmwarePath, firmwarePath.c_str(), 1023); Config::FirmwarePath[1023] = '\0'; + Config::DLDIEnable = dldiEnable; strncpy(Config::DLDISDPath, dldiSDPath.c_str(), 1023); Config::DLDISDPath[1023] = '\0'; + Config::DLDISize = dldiSize; + Config::DLDIReadOnly = dldiReadOnly; + Config::DLDIFolderSync = dldiFolderSync; + strncpy(Config::DLDIFolderPath, dldiFolderPath.c_str(), 1023); Config::DLDIFolderPath[1023] = '\0'; strncpy(Config::DSiBIOS9Path, dsiBios9Path.c_str(), 1023); Config::DSiBIOS9Path[1023] = '\0'; strncpy(Config::DSiBIOS7Path, dsiBios7Path.c_str(), 1023); Config::DSiBIOS7Path[1023] = '\0'; strncpy(Config::DSiFirmwarePath, dsiFirmwarePath.c_str(), 1023); Config::DSiFirmwarePath[1023] = '\0'; strncpy(Config::DSiNANDPath, dsiNANDPath.c_str(), 1023); Config::DSiNANDPath[1023] = '\0'; + Config::DSiSDEnable = dsiSDEnable; strncpy(Config::DSiSDPath, dsiSDPath.c_str(), 1023); Config::DSiSDPath[1023] = '\0'; + Config::DSiSDSize = dsiSDSize; + Config::DSiSDReadOnly = dsiSDReadOnly; + Config::DSiSDFolderSync = dsiSDFolderSync; + strncpy(Config::DSiSDFolderPath, dsiSDFolderPath.c_str(), 1023); Config::DSiSDFolderPath[1023] = '\0'; #ifdef JIT_ENABLED Config::JIT_Enable = jitEnable; @@ -287,6 +350,20 @@ void EmuSettingsDialog::on_btnDSiBIOS7Browse_clicked() ui->txtDSiBIOS7Path->setText(file); } +void EmuSettingsDialog::on_cbDLDIEnable_toggled() +{ + bool disabled = !ui->cbDLDIEnable->isChecked(); + ui->txtDLDISDPath->setDisabled(disabled); + ui->btnDLDISDBrowse->setDisabled(disabled); + ui->cbxDLDISize->setDisabled(disabled); + ui->cbDLDIReadOnly->setDisabled(disabled); + ui->cbDLDIFolder->setDisabled(disabled); + + if (!disabled) disabled = !ui->cbDLDIFolder->isChecked(); + ui->txtDLDIFolder->setDisabled(disabled); + ui->btnDLDIFolderBrowse->setDisabled(disabled); +} + void EmuSettingsDialog::on_btnDLDISDBrowse_clicked() { QString file = QFileDialog::getOpenFileName(this, @@ -299,6 +376,24 @@ void EmuSettingsDialog::on_btnDLDISDBrowse_clicked() ui->txtDLDISDPath->setText(file); } +void EmuSettingsDialog::on_cbDLDIFolder_toggled() +{ + bool disabled = !ui->cbDLDIFolder->isChecked(); + ui->txtDLDIFolder->setDisabled(disabled); + ui->btnDLDIFolderBrowse->setDisabled(disabled); +} + +void EmuSettingsDialog::on_btnDLDIFolderBrowse_clicked() +{ + QString dir = QFileDialog::getExistingDirectory(this, + "Select DLDI SD folder...", + EmuDirectory); + + if (dir.isEmpty()) return; + + ui->txtDLDIFolder->setText(dir); +} + void EmuSettingsDialog::on_btnDSiFirmwareBrowse_clicked() { QString file = QFileDialog::getOpenFileName(this, @@ -323,6 +418,20 @@ void EmuSettingsDialog::on_btnDSiNANDBrowse_clicked() ui->txtDSiNANDPath->setText(file); } +void EmuSettingsDialog::on_cbDSiSDEnable_toggled() +{ + bool disabled = !ui->cbDSiSDEnable->isChecked(); + ui->txtDSiSDPath->setDisabled(disabled); + ui->btnDSiSDBrowse->setDisabled(disabled); + ui->cbxDSiSDSize->setDisabled(disabled); + ui->cbDSiSDReadOnly->setDisabled(disabled); + ui->cbDSiSDFolder->setDisabled(disabled); + + if (!disabled) disabled = !ui->cbDSiSDFolder->isChecked(); + ui->txtDSiSDFolder->setDisabled(disabled); + ui->btnDSiSDFolderBrowse->setDisabled(disabled); +} + void EmuSettingsDialog::on_btnDSiSDBrowse_clicked() { QString file = QFileDialog::getOpenFileName(this, @@ -335,6 +444,24 @@ void EmuSettingsDialog::on_btnDSiSDBrowse_clicked() ui->txtDSiSDPath->setText(file); } +void EmuSettingsDialog::on_cbDSiSDFolder_toggled() +{ + bool disabled = !ui->cbDSiSDFolder->isChecked(); + ui->txtDSiSDFolder->setDisabled(disabled); + ui->btnDSiSDFolderBrowse->setDisabled(disabled); +} + +void EmuSettingsDialog::on_btnDSiSDFolderBrowse_clicked() +{ + QString dir = QFileDialog::getExistingDirectory(this, + "Select DSi SD folder...", + EmuDirectory); + + if (dir.isEmpty()) return; + + ui->txtDSiSDFolder->setText(dir); +} + void EmuSettingsDialog::on_chkEnableJIT_toggled() { bool disabled = !ui->chkEnableJIT->isChecked(); diff --git a/src/frontend/qt_sdl/EmuSettingsDialog.h b/src/frontend/qt_sdl/EmuSettingsDialog.h index b650959..60e2160 100644 --- a/src/frontend/qt_sdl/EmuSettingsDialog.h +++ b/src/frontend/qt_sdl/EmuSettingsDialog.h @@ -58,13 +58,21 @@ private slots: void on_btnBIOS9Browse_clicked(); void on_btnBIOS7Browse_clicked(); void on_btnFirmwareBrowse_clicked(); + + void on_cbDLDIEnable_toggled(); void on_btnDLDISDBrowse_clicked(); + void on_cbDLDIFolder_toggled(); + void on_btnDLDIFolderBrowse_clicked(); void on_btnDSiBIOS9Browse_clicked(); void on_btnDSiBIOS7Browse_clicked(); void on_btnDSiFirmwareBrowse_clicked(); void on_btnDSiNANDBrowse_clicked(); + + void on_cbDSiSDEnable_toggled(); void on_btnDSiSDBrowse_clicked(); + void on_cbDSiSDFolder_toggled(); + void on_btnDSiSDFolderBrowse_clicked(); void on_chkEnableJIT_toggled(); void on_chkExternalBIOS_toggled(); diff --git a/src/frontend/qt_sdl/EmuSettingsDialog.ui b/src/frontend/qt_sdl/EmuSettingsDialog.ui index 41b6e6e..92e2792 100644 --- a/src/frontend/qt_sdl/EmuSettingsDialog.ui +++ b/src/frontend/qt_sdl/EmuSettingsDialog.ui @@ -7,7 +7,7 @@ 0 0 575 - 260 + 351 @@ -203,6 +203,20 @@ DSi-mode + + + + DSi ARM9 BIOS: + + + + + + + <html><head/><body><p>DSi-mode firmware (used for DS-mode backwards compatibility)</p><p><br/></p><p>Size should be 128 KB</p></body></html> + + + @@ -210,41 +224,72 @@ - - + + + + <html><head/><body><p>Sync the emulated SD card to the given folder. The folder's contents will be copied to the SD image, and any change made to the SD image will be reflected to the folder.</p></body></html> + - Browse... + Sync SD to folder: - - + + - DSi NAND: + Browse... - - + + + + <html><head/><body><p>SD image file for emulating the DSi's SD card. A blank image file will be created if it doesn't already exist.</p></body></html> + + + + + - Browse... + SD card image: - - + + + + <html><head/><body><p>Size of the SD image.</p><p><br/></p><p>If set to Auto:</p><p>* if an image file exists, the volume size will be that of the image file</p><p>* if no image file exists and folder sync is enabled, the volume size will be determined from the synced folder's contents</p><p>* otherwise, the volume size will default to 512 MB</p></body></html> + + + + + - DSi ARM7 BIOS: + Image size: - - + + Browse... + + + + DSi NAND: + + + + + + + <html><head/><body><p>Sync the emulated SD card to the given folder. The folder's contents will be copied to the SD image, and any change made to the SD image will be reflected to the folder.</p></body></html> + + + @@ -259,13 +304,6 @@ - - - - DSi SD card: - - - @@ -279,6 +317,16 @@ + + + + <html><head/><body><p>Simulate a SD card being inserted in the DSi's SD slot.</p></body></html> + + + Enable DSi SD card + + + @@ -286,44 +334,51 @@ - - + + - DSi ARM9 BIOS: + Browse... - - + + - <html><head/><body><p>DSi-mode firmware (used for DS-mode backwards compatibility)</p><p><br/></p><p>Size should be 128 KB</p></body></html> + <html><head/><body><p>Make the emulated SD card read-only.</p></body></html> + + + Read-only SD - - - - <html><head/><body><p>SD image file for emulating the DSi's SD card</p></body></html> + + + + Browse... - - - - <html><head/><body><p>Simulate a SD card being inserted in the DSi's SD slot. Requires a SD card image.</p></body></html> - + + - Enable DSi SD card + DSi ARM7 BIOS: - - + + Browse... + + + + + + + @@ -399,34 +454,69 @@ DLDI - - + + + + Browse... + + + + + + + Browse... + + + + + - <html><head/><body><p>Enable the built-in DLDI driver, to let homebrew access files from a given SD image.</p></body></html> + <html><head/><body><p>Sync the emulated SD card to the given folder. The folder's contents will be copied to the SD image, and any change made to the SD image will be reflected to the folder.</p></body></html> + + + + - Enable DLDI (for homebrew) + Image size: - - + + + + <html><head/><body><p>Sync the emulated SD card to the given folder. The folder's contents will be copied to the SD image, and any change made to the SD image will be reflected to the folder.</p></body></html> + - Browse... + Sync SD to folder: - - + + + + <html><head/><body><p>Size of the SD image.</p><p><br/></p><p>If set to Auto:</p><p>* if an image file exists, the volume size will be that of the image file</p><p>* if no image file exists and folder sync is enabled, the volume size will be determined from the synced folder's contents</p><p>* otherwise, the volume size will default to 512 MB</p></body></html> + + - - + + + + <html><head/><body><p>Enable the built-in DLDI driver, to let homebrew access files from an emulated SD card.</p></body></html> + - DLDI SD card: + Enable DLDI (for homebrew) - + + + + <html><head/><body><p>SD card image file to be used for DLDI. A blank image file will be created if it doesn't already exist.</p></body></html> + + + + Qt::Vertical @@ -439,6 +529,23 @@ + + + + SD card image: + + + + + + + <html><head/><body><p>Make the emulated SD card read-only.</p></body></html> + + + Read-only SD + + + diff --git a/src/frontend/qt_sdl/Platform.cpp b/src/frontend/qt_sdl/Platform.cpp index 81d86d3..08190d6 100644 --- a/src/frontend/qt_sdl/Platform.cpp +++ b/src/frontend/qt_sdl/Platform.cpp @@ -127,6 +127,51 @@ void StopEmu() } +int GetConfigInt(ConfigEntry entry) +{ + const int imgsizes[] = {0, 256, 512, 1024, 2048, 4096}; + + switch (entry) + { + case DLDI_ImageSize: return imgsizes[Config::DLDISize]; + + case DSiSD_ImageSize: return imgsizes[Config::DSiSDSize]; + } + + return 0; +} + +bool GetConfigBool(ConfigEntry entry) +{ + switch (entry) + { + case DLDI_Enable: return Config::DLDIEnable != 0; + case DLDI_ReadOnly: return Config::DLDIReadOnly != 0; + case DLDI_FolderSync: return Config::DLDIFolderSync != 0; + + case DSiSD_Enable: return Config::DSiSDEnable != 0; + case DSiSD_ReadOnly: return Config::DSiSDReadOnly != 0; + case DSiSD_FolderSync: return Config::DSiSDFolderSync != 0; + } + + return false; +} + +std::string GetConfigString(ConfigEntry entry) +{ + switch (entry) + { + case DLDI_ImagePath: return Config::DLDISDPath; + case DLDI_FolderPath: return Config::DLDIFolderPath; + + case DSiSD_ImagePath: return Config::DSiSDPath; + case DSiSD_FolderPath: return Config::DSiSDFolderPath; + } + + return ""; +} + + FILE* OpenFile(const char* path, const char* mode, bool mustexist) { QFile f(path); diff --git a/src/frontend/qt_sdl/PlatformConfig.cpp b/src/frontend/qt_sdl/PlatformConfig.cpp index 40f55ba..e01e4c9 100644 --- a/src/frontend/qt_sdl/PlatformConfig.cpp +++ b/src/frontend/qt_sdl/PlatformConfig.cpp @@ -63,6 +63,20 @@ int ShowOSD; int ConsoleType; int DirectBoot; +int DLDIEnable; +char DLDISDPath[1024]; +int DLDISize; +int DLDIReadOnly; +int DLDIFolderSync; +char DLDIFolderPath[1024]; + +int DSiSDEnable; +char DSiSDPath[1024]; +int DSiSDSize; +int DSiSDReadOnly; +int DSiSDFolderSync; +char DSiSDFolderPath[1024]; + int SocketBindAnyAddr; char LANDevice[128]; int DirectLAN; @@ -172,6 +186,20 @@ ConfigEntry PlatformConfigFile[] = {"ConsoleType", 0, &ConsoleType, 0, NULL, 0}, {"DirectBoot", 0, &DirectBoot, 1, NULL, 0}, + {"DLDIEnable", 0, &DLDIEnable, 0, NULL, 0}, + {"DLDISDPath", 1, DLDISDPath, 0, "dldi.bin", 1023}, + {"DLDISize", 0, &DLDISize, 0, NULL, 0}, + {"DLDIReadOnly", 0, &DLDIReadOnly, 0, NULL, 0}, + {"DLDIFolderSync", 0, &DLDIFolderSync, 0, NULL, 0}, + {"DLDIFolderPath", 1, DLDIFolderPath, 0, "", 1023}, + + {"DSiSDEnable", 0, &DSiSDEnable, 0, NULL, 0}, + {"DSiSDPath", 1, DSiSDPath, 0, "dsisd.bin", 1023}, + {"DSiSDSize", 0, &DSiSDSize, 0, NULL, 0}, + {"DSiSDReadOnly", 0, &DSiSDReadOnly, 0, NULL, 0}, + {"DSiSDFolderSync", 0, &DSiSDFolderSync, 0, NULL, 0}, + {"DSiSDFolderPath", 1, DSiSDFolderPath, 0, "", 1023}, + {"SockBindAnyAddr", 0, &SocketBindAnyAddr, 0, NULL, 0}, {"LANDevice", 1, LANDevice, 0, "", 127}, {"DirectLAN", 0, &DirectLAN, 0, NULL, 0}, diff --git a/src/frontend/qt_sdl/PlatformConfig.h b/src/frontend/qt_sdl/PlatformConfig.h index 202e36a..3e7bf85 100644 --- a/src/frontend/qt_sdl/PlatformConfig.h +++ b/src/frontend/qt_sdl/PlatformConfig.h @@ -79,6 +79,20 @@ extern int ShowOSD; extern int ConsoleType; extern int DirectBoot; +extern int DLDIEnable; +extern char DLDISDPath[1024]; +extern int DLDISize; +extern int DLDIReadOnly; +extern int DLDIFolderSync; +extern char DLDIFolderPath[1024]; + +extern int DSiSDEnable; +extern char DSiSDPath[1024]; +extern int DSiSDSize; +extern int DSiSDReadOnly; +extern int DSiSDFolderSync; +extern char DSiSDFolderPath[1024]; + extern int SocketBindAnyAddr; extern char LANDevice[128]; extern int DirectLAN; -- cgit v1.2.3