mirror of
https://github.com/risingPhil/PokeMe64.git
synced 2026-09-08 08:45:16 -05:00
In addition to the other stuff I already did, use the RTC values to seed the RNG
We were already using the entropy generated by the libdragon bootloader, trainer id, trainer name and the number of cpu ticks before we loaded the main menu to seed the random number generator. Now -for gen II- I also grab the current RTC values and add them to this RNG seed. This should theoretically give us enough entropy to guarantuee random values for mystery gift and shiny pokémon chances.
This commit is contained in:
@@ -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<unsigned int>(clockManager.getDayCounter() & 0xFF) << 24);
|
||||
randomSeed_ += (static_cast<unsigned int>(clockManager.getHours()) << 16);
|
||||
randomSeed_ += (static_cast<unsigned int>(clockManager.getMinutes()) << 8);
|
||||
randomSeed_ += static_cast<unsigned int>(clockManager.getSeconds());
|
||||
|
||||
const char* trainerName = gameReader.getTrainerName();
|
||||
trainerID = gameReader.getTrainerID();
|
||||
deps_.localization = static_cast<uint8_t>(language);
|
||||
|
||||
Reference in New Issue
Block a user