aboutsummaryrefslogtreecommitdiff
path: root/src/SPI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SPI.cpp')
-rw-r--r--src/SPI.cpp68
1 files changed, 44 insertions, 24 deletions
diff --git a/src/SPI.cpp b/src/SPI.cpp
index dcb80c1..6ecb86c 100644
--- a/src/SPI.cpp
+++ b/src/SPI.cpp
@@ -215,37 +215,47 @@ void LoadDefaultFirmware()
// wifi access points
// TODO: WFC ID??
- u32 apdata = userdata - 0x400;
- memset(&Firmware[apdata], 0, 0x300);
-
- strcpy((char*)&Firmware[apdata+0x40], "melonAP");
- if (NDS::ConsoleType == 1) *(u16*)&Firmware[apdata+0xEA] = 1400;
- Firmware[apdata+0xEF] = 0x01;
- *(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
-
- apdata += 0x100;
- Firmware[apdata+0xE7] = 0xFF;
- Firmware[apdata+0xEF] = 0x01;
- *(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
-
- apdata += 0x100;
- Firmware[apdata+0xE7] = 0xFF;
- Firmware[apdata+0xEF] = 0x01;
- *(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
-
- if (NDS::ConsoleType == 1)
+ FILE* f = Platform::OpenLocalFile("wfcsettings.bin", "rb");
+ if (f)
{
- apdata = userdata - 0xA00;
- Firmware[apdata+0xE7] = 0xFF;
+ u32 apdata = userdata - 0xA00;
+ fread(&Firmware[apdata], 0x900, 1, f);
+ fclose(f);
+ }
+ else
+ {
+ u32 apdata = userdata - 0x400;
+ memset(&Firmware[apdata], 0, 0x300);
+
+ strcpy((char*)&Firmware[apdata+0x40], "melonAP");
+ if (NDS::ConsoleType == 1) *(u16*)&Firmware[apdata+0xEA] = 1400;
+ Firmware[apdata+0xEF] = 0x01;
*(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
- apdata += 0x200;
+ apdata += 0x100;
Firmware[apdata+0xE7] = 0xFF;
+ Firmware[apdata+0xEF] = 0x01;
*(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
- apdata += 0x200;
+ apdata += 0x100;
Firmware[apdata+0xE7] = 0xFF;
+ Firmware[apdata+0xEF] = 0x01;
*(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
+
+ if (NDS::ConsoleType == 1)
+ {
+ apdata = userdata - 0xA00;
+ Firmware[apdata+0xE7] = 0xFF;
+ *(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
+
+ apdata += 0x200;
+ Firmware[apdata+0xE7] = 0xFF;
+ *(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
+
+ apdata += 0x200;
+ Firmware[apdata+0xE7] = 0xFF;
+ *(u16*)&Firmware[apdata+0xFE] = CRC16(&Firmware[apdata], 0xFE, 0x0000);
+ }
}
}
@@ -575,12 +585,22 @@ void Write(u8 val, u32 hold)
FILE* f = Platform::OpenLocalFile(FirmwarePath, "r+b");
if (f)
{
- u32 cutoff = 0x7FA00 & FirmwareMask;
+ u32 cutoff = ((NDS::ConsoleType==1) ? 0x7F400 : 0x7FA00) & FirmwareMask;
fseek(f, cutoff, SEEK_SET);
fwrite(&Firmware[cutoff], FirmwareLength-cutoff, 1, f);
fclose(f);
}
}
+ else
+ {
+ FILE* f = Platform::OpenLocalFile("wfcsettings.bin", "wb");
+ if (f)
+ {
+ u32 cutoff = 0x7F400 & FirmwareMask;
+ fwrite(&Firmware[cutoff], 0x900, 1, f);
+ fclose(f);
+ }
+ }
}
}