local natureorder={"Atk","Def","Spd","SpAtk","SpDef"}
local naturename={
"Hardy","Lonely","Brave","Adamant","Naughty",
"Bold","Docile","Relaxed","Impish","Lax",
"Timid","Hasty","Serious","Jolly","Naive",
"Modest","Mild","Quiet","Bashful","Rash",
"Calm","Gentle","Sassy","Careful","Quirky"}
local typeorder={
"Fighting","Flying","Poison","Ground",
"Rock","Bug","Ghost","Steel",
"Fire","Water","Grass","Electric",
"Psychic","Ice","Dragon","Dark"}
local start=0x02024744
local personality
local trainerid
local magicword
local growthoffset
local miscoffset
local i
local rngframe=0x020249C0
local species
local ivs
local hpiv
local atkiv
local defiv
local spdiv
local spatkiv
local spdefiv
local nature
local natinc
local natdec
local hidpowbase
local hidpowtype
while true do
personality=memory.readdwordunsigned(start)
trainerid=memory.readdwordunsigned(start+4)
magicword=bit.bxor(personality, trainerid)
seed=memory.readdwordunsigned(0x03005D80)
i=personality%24
if i<=5 then
growthoffset=0
elseif i%6<=1 then
growthoffset=12
elseif i%2==0 then
growthoffset=24
else
growthoffset=36
end
if i>=18 then
miscoffset=0
elseif i%6>=4 then
miscoffset=12
elseif i%2==1 then
miscoffset=24
else
miscoffset=36
end
species=bit.band(bit.bxor(memory.readdwordunsigned(start+32+growthoffset),magicword),0xFFF)
ivs=bit.bxor(memory.readdwordunsigned(start+32+miscoffset+4),magicword)
hpiv=bit.band(ivs,0x1F)
atkiv=bit.band(ivs,0x1F*0x20)/0x20
defiv=bit.band(ivs,0x1F*0x400)/0x400
spdiv=bit.band(ivs,0x1F*0x8000)/0x8000
spatkiv=bit.band(ivs,0x1F*0x100000)/0x100000
spdefiv=bit.band(ivs,0x1F*0x2000000)/0x2000000
nature=personality%25
natinc=math.floor(nature/5)
natdec=nature%5
hidpowtype=math.floor(((hpiv%2 + 2*(atkiv%2) + 4*(defiv%2) + 8*(spdiv%2) + 16*(spatkiv%2) + 32*(spdefiv%2))*15)/63)
hidpowbase=math.floor(((bit.band(hpiv,2)/2 + bit.band(atkiv,2) + 2*bit.band(defiv,2) + 4*bit.band(spdiv,2) + 8*bit.band(spatkiv,2) + 16*bit.band(spdefiv,2))*40)/63 + 30)
gui.text(0,0,"Stats")
gui.text(30,0,"HP "..memory.readwordunsigned(start+86))
gui.text(65,0,"Atk "..memory.readwordunsigned(start+90))
gui.text(99,0,"Def "..memory.readwordunsigned(start+92))
gui.text(133,0,"SpA "..memory.readwordunsigned(start+96))
gui.text(167,0,"SpD "..memory.readwordunsigned(start+98))
gui.text(201,0,"Spe "..memory.readwordunsigned(start+94))
gui.text(0,8,"IVs")
gui.text(30,8,"HP "..hpiv)
gui.text(65,8,"Atk "..atkiv)
gui.text(99,8,"Def "..defiv)
gui.text(133,8,"SpA "..spatkiv)
gui.text(167,8,"SpD "..spdefiv)
gui.text(201,8,"Spe "..spdiv)
gui.text(0,40,"PID: "..string.format("%08X", personality))
gui.text(60,40,"IVs: "..string.format("%08X", ivs))
gui.text(0,50,"Nature: "..naturename[nature+1])
gui.text(0,60,natureorder[natinc+1].."+ "..natureorder[natdec+1].."-")
gui.text(167,15,"HP "..typeorder[hidpowtype+1].." "..hidpowbase)
gui.text(0,95,"Frame "..memory.readdwordunsigned(rngframe))
gui.text(0,105,"Seed: "..string.format("%8X", seed))
print("Seed: "..string.format("%8X", seed))
emu.frameadvance()
end
Comments