diff --git a/src/scenes/InitTransferPakScene.cpp b/src/scenes/InitTransferPakScene.cpp index 2b03888..5611cf9 100755 --- a/src/scenes/InitTransferPakScene.cpp +++ b/src/scenes/InitTransferPakScene.cpp @@ -4,6 +4,7 @@ #include "transferpak/TransferPakManager.h" #include "transferpak/TransferPakRomReader.h" #include "transferpak/TransferPakSaveManager.h" +#include "transferpak/TransferPakRTCReader.h" #include "gen1/Gen1GameReader.h" #include "gen2/Gen2GameReader.h" #include "menu/MenuEntries.h" @@ -288,6 +289,7 @@ void InitTransferPakScene::loadSaveMetadata() { TransferPakRomReader romReader(deps_.tpakManager); TransferPakSaveManager saveManager(deps_.tpakManager); + TransferPakRTCReader rtcReader(deps_.tpakManager); Gen1GameType gen1Type; Gen2GameType gen2Type; uint16_t trainerID = 0; @@ -307,8 +309,16 @@ void InitTransferPakScene::loadSaveMetadata() else if(gen2Type != Gen2GameType::INVALID) { const Gen2LocalizationLanguage language = gen2_determineGameLanguage(romReader, gen2Type); - Gen2GameReader gameReader(romReader, saveManager, gen2Type, language); + Gen2ClockManager clockManager = gameReader.getClockManager(rtcReader); + + // add more entropy to the randomSeed by adding the current daycounter + time to it. + clockManager.latchRTC(); + randomSeed_ += (static_cast(clockManager.getDayCounter() & 0xFF) << 24); + randomSeed_ += (static_cast(clockManager.getHours()) << 16); + randomSeed_ += (static_cast(clockManager.getMinutes()) << 8); + randomSeed_ += static_cast(clockManager.getSeconds()); + const char* trainerName = gameReader.getTrainerName(); trainerID = gameReader.getTrainerID(); deps_.localization = static_cast(language);