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