Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local RNG1Table = {};
- RNG1Table[0] = 0;
- RNG1Table[RNG1Seed] = 1;
- local RNG2Table = {};
- RNG2Table[0] = 0;
- RNG2Table[RNG2Seed] = 1
- function ram.trackRNG() -- Call only once per frame
- --[[
- Scenarios:
- Value = 0
- Value = Seed
- Delta = 0
- Delta = 1
- Delta > 1
- Delta < 0 (loaded a state)
- ]]--
- local RNG1DeltaTemp = 0;
- local RNG1ValueTemp = memory.read_u32_le(RNG1);
- if RNG1Value ~= RNG1ValueTemp then
- if RNG1ValueTemp == 0 then
- RNG1Value = 0;
- RNG1Index = 0;
- RNG1IndexTemp = 0;
- elseif RNG1ValueTemp == RNG1Seed then
- RNG1Value = RNG1Seed;
- RNG1Index = 1;
- RNG1IndexTemp = 1;
- else
- if RNG1Table[RNG1ValueTemp] ~= nil then
- RNG1IndexTemp = RNG1Table[RNG1ValueTemp];
- RNG1Value = RNG1ValueTemp;
- else
- while RNG1Value ~= RNG1ValueTemp and RNG1DeltaTemp < RNGCheckMax do
- RNG1DeltaTemp = RNG1DeltaTemp + 1;
- RNG1Value = ram.simulateRNG(RNG1Value);
- RNG1Table[RNG1Value] = RNG1IndexTemp + RNG1DeltaTemp;
- end
- end
- end
- end
- RNG1IndexTemp = RNG1IndexTemp + RNG1DeltaTemp;
- if RNG1Value == RNG1ValueTemp then
- if RNG1Index then
- RNG1Delta = RNG1IndexTemp - RNG1Index;
- RNG1Index = RNG1IndexTemp;
- else
- RNG1Delta = RNG1IndexTemp;
- RNG1Index = RNG1IndexTemp;
- end
- else
- RNG1Index = nil;
- RNG1Delta = nil;
- if RNG1IndexTemp > emu.framecount() then
- RNG1Value = RNG1Seed;
- RNG1IndexTemp = 1;
- end
- end
- local RNG2DeltaTemp = 0;
- local RNG2ValueTemp = memory.read_u32_le(RNG2);
- if RNG2Value ~= RNG2ValueTemp then
- if RNG2ValueTemp == 0 then
- RNG2Value = 0;
- RNG2Index = 0;
- RNG2IndexTemp = 0;
- elseif RNG2ValueTemp == RNG2Seed then
- RNG2Value = RNG2Seed;
- RNG2Index = 1;
- RNG2IndexTemp = 1;
- else
- if RNG2Table[RNG2ValueTemp] ~= nil then
- RNG2IndexTemp = RNG2Table[RNG2ValueTemp];
- RNG2Value = RNG2ValueTemp;
- else
- while RNG2Value ~= RNG2ValueTemp and RNG2DeltaTemp < RNGCheckMax do
- RNG2DeltaTemp = RNG2DeltaTemp + 1;
- RNG2Value = ram.simulateRNG(RNG2Value);
- RNG2Table[RNG2Value] = RNG2IndexTemp + RNG2DeltaTemp;
- end
- end
- end
- end
- RNG2IndexTemp = RNG2IndexTemp + RNG2DeltaTemp;
- if RNG2Value == RNG2ValueTemp then
- if RNG2Index then
- RNG2Delta = RNG2IndexTemp - RNG2Index;
- RNG2Index = RNG2IndexTemp;
- else
- RNG2Delta = RNG2IndexTemp;
- RNG2Index = RNG2IndexTemp;
- end
- else
- RNG2Index = nil;
- RNG2Delta = nil;
- if RNG2IndexTemp > emu.framecount() then
- RNG2Value = RNG2Seed;
- RNG2IndexTemp = 1;
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement