diff --git a/desmume/src/NDSSystem.h b/desmume/src/NDSSystem.h index 99ea871b7..14abcf053 100644 --- a/desmume/src/NDSSystem.h +++ b/desmume/src/NDSSystem.h @@ -30,6 +30,7 @@ #include "mem.h" #include "wifi.h" #include "emufile.h" +#include "firmware.h" #include @@ -499,6 +500,7 @@ extern struct TCommonSettings { strcpy(ARM9BIOS, "biosnds9.bin"); strcpy(ARM7BIOS, "biosnds7.bin"); strcpy(Firmware, "firmware.bin"); + NDS_FillDefaultFirmwareConfigData(&InternalFirmConf); wifi.mode = 0; wifi.infraBridgeAdapter = 0; @@ -519,6 +521,7 @@ extern struct TCommonSettings { bool UseExtFirmware; char Firmware[256]; bool BootFromFirmware; + struct NDS_fw_config_data InternalFirmConf; bool DebugConsole; bool EnsataEmulation; diff --git a/desmume/src/firmware.cpp b/desmume/src/firmware.cpp index 1147c96bf..14ec129cb 100644 --- a/desmume/src/firmware.cpp +++ b/desmume/src/firmware.cpp @@ -823,6 +823,7 @@ int NDS_CreateDummyFirmware( struct NDS_fw_config_data *user_settings) //Wifi settings CRC16 (*(u16*)(MMU.fw.data + 0x2A)) = calc_CRC16(0, (MMU.fw.data + 0x2C), 0x138); + memcpy(&CommonSettings.InternalFirmConf, user_settings, sizeof(struct NDS_fw_config_data)); return TRUE ; } diff --git a/desmume/src/movie.cpp b/desmume/src/movie.cpp index 02591433a..02be6c4d6 100644 --- a/desmume/src/movie.cpp +++ b/desmume/src/movie.cpp @@ -293,6 +293,35 @@ int MovieData::dump(EMUFILE* fp, bool binary) if(CommonSettings.UseExtBIOS) fp->fprintf("swiFromBios %d\n", CommonSettings.SWIFromBIOS); + fp->fprintf("useExtFirmware %d\n", CommonSettings.UseExtFirmware); + + if(CommonSettings.UseExtFirmware) { + fp->fprintf("bootFromFirmware %d\n", CommonSettings.BootFromFirmware); + } + else { + char temp_str[27]; + int i; + + /* FIXME: harshly only use the lower byte of the UTF-16 character. + * This would cause strange behaviour if the user could set UTF-16 but + * they cannot yet. + */ + for (i = 0; i < CommonSettings.InternalFirmConf.nickname_len; i++) { + temp_str[i] = CommonSettings.InternalFirmConf.nickname[i]; + } + temp_str[i] = '\0'; + fp->fprintf("firmNickname %s\n", temp_str); + for (i = 0; i < CommonSettings.InternalFirmConf.message_len; i++) { + temp_str[i] = CommonSettings.InternalFirmConf.message[i]; + } + temp_str[i] = '\0'; + fp->fprintf("firmMessage %s\n", temp_str); + fp->fprintf("firmFavColour %d\n", CommonSettings.InternalFirmConf.fav_colour); + fp->fprintf("firmBirthMonth %d\n", CommonSettings.InternalFirmConf.birth_month); + fp->fprintf("firmBirthDay %d\n", CommonSettings.InternalFirmConf.birth_day); + fp->fprintf("firmLanguage %d\n", CommonSettings.InternalFirmConf.language); + } + char timestr[32]; struct tm *tm = gmtime(&rtcStart); strftime(timestr, 32, "%Y-%m-%dT%H:%M:%SZ", tm); diff --git a/desmume/src/windows/resources.rc b/desmume/src/windows/resources.rc index a3326b061..0a9d58f40 100644 Binary files a/desmume/src/windows/resources.rc and b/desmume/src/windows/resources.rc differ