View difference between Paste ID: 1VNmey5s and VVPdxgij
SHOW: | | - or go back to the newest paste.
1
mdword=memory.readdwordunsigned
2
mbyte=memory.readbyte
3
rshift=bit.rshift
4
5
-- Initialize on Script Startup
6
local frame = 0
7
local iframe = 0
8-
local seed = mdword(0x021D15AC)
8+
local seed = 0
9-
local initial = mdword(0x021D15AC)
9+
local initial = 0
10
11-
memory.register(0x021D15AC, function() frame = frame + 1 end)
11+
memory.registerwrite(0x021D15AC, function() frame = frame + 1 end)
12-
memory.register(0x0210F6CC, function() iframe = iframe + 1 end)
12+
memory.registerwrite(0x0210F6CC, function() iframe = iframe + 1 end)
13
14
function buildseed()
15
	delay=mdword(0x021D1138)
16
	timehex=mdword(0x023FFDEC)
17
	datehex=mdword(0x023FFDE8)
18
	hour=string.format("%02X",(timehex%0x100)%0x40)	-- memory stores as decimal, but Lua reads as hex. Convert.
19
	minute=string.format("%02X",(rshift(timehex%0x10000,8)))
20
	second=string.format("%02X",(mbyte(0x02FFFDEE)))
21
	year=string.format("%02X",(mbyte(0x02FFFDE8)))
22
	month=string.format("%02X",(mbyte(0x02FFFDE9)))
23
	day=string.format("%02X",(mbyte(0x02FFFDEA)))
24
	ab=(month*day+minute+second)%256		-- Build Seed
25
	cd=hour
26
	cgd=delay%65536 +1 -- can tweak for calibration
27
	abcd=ab*0x100+cd
28
	efgh=(year+cgd)%0x10000
29
	nextseed=ab*0x1000000+cd*0x10000+efgh		-- Seed is built
30
	return nextseed		
31
end
32
33
function main()
34
	currseed = mdword(0x021D15A8)
35
	seed = mdword(0x021D15AC)
36
	
37
	-- Detect initial seeding
38
	if mdword(0x021D15AC) == currseed then
39
		initial = mdword(0x021D15A8)
40
		if currseed ~= 0x00000000 then
41
			iframe = 0
42
			frame = 0
43
		end
44
	end
45
	if mdword(0x021D15A8) == 0 then	-- if seed is 0, reset everything
46
		iframe = 0
47
		frame = 0	
48
	end
49
	
50
	-- Print variables in corner of bottom screen
51
	if frame == 0 then
52
		gui.text(0,-10,string.format("Next Seed: %08X", buildseed()))
53
	end
54
	gui.text(0,180,string.format("Initial Seed: %08X", initial))
55
	gui.text(0,170,string.format("Current Seed: %08X", currseed))
56
	gui.text(0,160,string.format("IRNG Frame: %d", iframe))
57
	gui.text(0,150,string.format("PRNG Frame: %d", frame))
58
	gui.text(0,140,string.format("Delay: %d", mdword(0x021D1138)))
59
end
60
61
gui.register(main)