Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- console.clear();
- -- actor type and id to find.
- local actorType=0x07;
- local actorID=0x0020;
- local actors=0;
- local pointers={};
- function getActors(type)
- return memory.read_u32_be(0x3E87D0+(type*0xC));
- end
- function getAddr(type)
- return bit.band(memory.read_u32_be(0x3E87D0+(type*0xC)+4),0xFFFFFF);
- end
- function getPointer(pointer)
- return bit.band(memory.read_u32_be(pointer),0xFFFFFF);
- end
- function findActor(type,id)
- local amount=1;
- local addr=getAddr(type);
- for i=1,getActors(type),1 do
- if(addr~=0)then
- if(memory.read_u16_be(addr)==id)then
- pointers[amount]=addr;
- amount=amount+1;
- end
- addr=getPointer(addr+0x12C);
- end
- end
- end
- function DisplayForm()
- local FORM=forms.newform(275,350,"Link and Fins");
- local x=5;
- local y=3;
- labels={ -- 5 80 155
- ["link"]={
- forms.label(FORM,"Link:",x,y,60,14,false),
- forms.label(FORM,"0.0",x+15,y+17,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*2),60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*3),60,14,false),
- forms.label(FORM,"0",x+15,y+(17*4),60,14,false),
- forms.label(FORM,"00000000",x+80,y+17,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*2),60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*3),60,14,false),
- forms.label(FORM,"0000",x+80,y+(17*4),60,14,false),
- forms.label(FORM,"X:",x,y+17,60,14,false),
- forms.label(FORM,"Y:",x,y+(17*2),60,14,false),
- forms.label(FORM,"Z:",x,y+(17*3),60,14,false),
- forms.label(FORM,"R:",x,y+(17*4),60,14,false)
- },
- ["fin1"]={
- forms.label(FORM,"Zora Fin 1:",x,y+(17*5)+10,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*6)+10,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*7)+10,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*8)+10,60,14,false),
- forms.label(FORM,"0",x+40,y+(17*9)+10,60,14,false),
- forms.label(FORM,"?",x+40,y+(17*10)+10,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*6)+10,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*7)+10,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*8)+10,60,14,false),
- forms.label(FORM,"X:",x,y+(17*6)+10,60,14,false),
- forms.label(FORM,"Y:",x,y+(17*7)+10,60,14,false),
- forms.label(FORM,"Z:",x,y+(17*8)+10,60,14,false),
- forms.label(FORM,"Timer:",x,y+(17*9)+10,60,14,false),
- forms.label(FORM,"Return:",x,y+(17*10)+10,60,14,false)
- },
- ["fin2"]={
- forms.label(FORM,"Zora Fin 2:",x,y+(17*11)+20,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*12)+20,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*13)+20,60,14,false),
- forms.label(FORM,"0.0",x+15,y+(17*14)+20,60,14,false),
- forms.label(FORM,"0",x+40,y+(17*15)+20,60,14,false),
- forms.label(FORM,"?",x+40,y+(17*16)+20,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*12)+20,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*13)+20,60,14,false),
- forms.label(FORM,"00000000",x+80,y+(17*14)+20,60,14,false),
- forms.label(FORM,"X:",x,y+(17*12)+20,60,14,false),
- forms.label(FORM,"Y:",x,y+(17*13)+20,60,14,false),
- forms.label(FORM,"Z:",x,y+(17*14)+20,60,14,false),
- forms.label(FORM,"Timer:",x,y+(17*15)+20,60,14,false),
- forms.label(FORM,"Return:",x,y+(17*16)+20,60,14,false)
- },
- forms.label(FORM,"Hex:",x+80,y,60,14,false)
- };
- end
- function updateForm()
- forms.settext(labels.link[2],string.format("% 5.3f",memory.readfloat(0x3FFDB0+0x24,true)));
- forms.settext(labels.link[3],string.format("% 5.3f",memory.readfloat(0x3FFDB0+0x28,true)));
- forms.settext(labels.link[4],string.format("% 5.3f",memory.readfloat(0x3FFDB0+0x2C,true)));
- forms.settext(labels.link[5],string.format("% 5d",memory.read_u16_be(0x3FFDB0+0xBE)));
- forms.settext(labels.link[6],string.format("%08s",bizstring.hex(memory.read_u32_be(0x3FFDB0+0x24))));
- forms.settext(labels.link[7],string.format("%08s",bizstring.hex(memory.read_u32_be(0x3FFDB0+0x28))));
- forms.settext(labels.link[8],string.format("%08s",bizstring.hex(memory.read_u32_be(0x3FFDB0+0x2C))));
- forms.settext(labels.link[9],string.format("%04s",bizstring.hex(memory.read_u16_be(0x3FFDB0+0xBE))));
- if(pointers[1]~=nil and pointers[1]~=0)then
- forms.settext(labels.fin1[2],string.format("% 5.3f",memory.readfloat(pointers[1]+0x24,true)));
- forms.settext(labels.fin1[3],string.format("% 5.3f",memory.readfloat(pointers[1]+0x28,true)));
- forms.settext(labels.fin1[4],string.format("% 5.3f",memory.readfloat(pointers[1]+0x2C,true)));
- forms.settext(labels.fin1[5],string.format("% 3d",memory.read_s8(pointers[1]+0x1CD)));
- if(memory.read_u32_be(pointers[1]+0x1C4)==0x803FFDB0)then
- forms.settext(labels.fin1[6],"true");
- else
- forms.settext(labels.fin1[6],"false");
- end
- forms.settext(labels.fin1[7],string.format("%08s",bizstring.hex(memory.read_u32_be(pointers[1]+0x24))));
- forms.settext(labels.fin1[8],string.format("%08s",bizstring.hex(memory.read_u32_be(pointers[1]+0x28))));
- forms.settext(labels.fin1[9],string.format("%08s",bizstring.hex(memory.read_u32_be(pointers[1]+0x2C))));
- end
- if(pointers[2]~=nil and pointers[2]~=0)then
- forms.settext(labels.fin2[2],string.format("% 5.3f",memory.readfloat(pointers[2]+0x24,true)));
- forms.settext(labels.fin2[3],string.format("% 5.3f",memory.readfloat(pointers[2]+0x28,true)));
- forms.settext(labels.fin2[4],string.format("% 5.3f",memory.readfloat(pointers[2]+0x2C,true)));
- forms.settext(labels.fin2[5],string.format("% 3d",memory.read_s8(pointers[2]+0x1CD)));
- if(memory.read_u32_be(pointers[2]+0x1C4)==0x803FFDB0)then
- forms.settext(labels.fin2[6],"true");
- else
- forms.settext(labels.fin2[6],"false");
- end
- forms.settext(labels.fin2[7],string.format("%08s",bizstring.hex(memory.read_u32_be(pointers[2]+0x24))));
- forms.settext(labels.fin2[8],string.format("%08s",bizstring.hex(memory.read_u32_be(pointers[2]+0x28))));
- forms.settext(labels.fin2[9],string.format("%08s",bizstring.hex(memory.read_u32_be(pointers[2]+0x2C))));
- end
- end
- DisplayForm();
- while true do
- if(actors~=getActors(actorType))then
- actors=getActors(actorType);
- findActor(actorType,actorID);
- end
- updateForm();
- emu.frameadvance();
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement