XPos_old = 0;
XSub_old = 0;
YPos_old = 0;
YSub_old = 0;
ug = 0
TableXv = {}
TableX = {}
TableYv = {}
TableDy = {}
TableAir = {}
TableAPress = {}
TableJumpPeak = {}
TableAttack = {}
tastudio.addcolumn("xv", "xv", 40)
tastudio.addcolumn("dx", "dx", 40)
tastudio.addcolumn("yv", "yv", 40)
tastudio.addcolumn("dy", "dy", 40)
memory.usememorydomain("IWRAM")
function Color(index, column)
if (TableJumpPeak[index] == 1 and TableAir[index] == 1 and column == "A")
then if (index >= ug)
then return 0xAACCFF
else return 0x0064FF
end
end
if (TableAPress[index] == 5 and column == "A")
then if (index >= ug)
then return 0xAADDFF
else return 0x0096FF
end
end
if (TableAir[index] == 1 and column == "A")
then if (index >= ug)
then return 0xAAECFF
else return 0x00C8FF
end
end
if (TableAttack[index] == 1 and column == "B")
then if (index >= ug)
then return 0xAAECDD
else return 0x00C8FF
end
end
if (TableXv[index] ~= nil and column == "xv")
then if math.abs(TableXv[index]) < 768
then red = 255
green = math.floor((255/768)*math.abs(TableXv[index]))
blue = 0
else red = math.floor(-(255/768)*math.abs(TableXv[index])+510)
green = 255
blue = 0
end
if (index >= ug)
then red = math.floor((255-red)/120*(200-240)+255)
green = math.floor((255-green)/120*(200-240)+255)
blue = math.floor((255-blue)/120*(200-240)+255)
end
return red*256*256+green*256+blue
end
if (TableX[index] ~= nil and TableX[index-1] ~= nil and column == "dx")
then if math.abs(TableX[index]-TableX[index-1]) < 1152
then red = 255
green = math.floor((255/1152)*math.abs(TableX[index]-TableX[index-1]))
blue = 0
else red = math.floor(-(255/1152)*math.abs(TableX[index]-TableX[index-1])+510)
green = 255
blue = 0
end
if (index >= ug)
then red = math.floor((255-red)/120*(200-240)+255)
green = math.floor((255-green)/120*(200-240)+255)
blue = math.floor((255-blue)/120*(200-240)+255)
end
return red*256*256+green*256+blue
end
if (TableYv[index] ~= nil and column == "yv")
then if math.abs(TableYv[index]) < 958
then red = 255
green = math.floor((255/958)*math.abs(TableYv[index]))
blue = 0
else red = math.floor(-(255/958)*math.abs(TableYv[index])+510)
green = 255
blue = 0
end
if (index >= ug)
then red = math.floor((255-red)/120*(200-240)+255)
green = math.floor((255-green)/120*(200-240)+255)
blue = math.floor((255-blue)/120*(200-240)+255)
end
return red*256*256+green*256+blue
end
if (TableDy[index] ~= nil and column == "dy")
then if math.abs(TableDy[index]) < 1022
then red = 255
green = math.floor((255/1022)*math.abs(TableDy[index]))
blue = 0
else red = math.floor(-(255/1022)*math.abs(TableDy[index])+510)
green = 255
blue = 0
end
if (index >= ug)
then red = math.floor((255-red)/120*(200-240)+255)
green = math.floor((255-green)/120*(200-240)+255)
blue = math.floor((255-blue)/120*(200-240)+255)
end
return red*256*256+green*256+blue
end
end
function Text(index, column)
if (column == "xv")
then local entry = TableXv[index]
if (entry ~= nil)
then return tostring(entry)
end
elseif (column == "dx")
then local entry = TableX[index]
local entry2 = TableX[index-1]
if (entry ~= nil and entry2 ~= nil)
then return tostring(entry-entry2)
end
elseif (column == "yv")
then local entry = TableYv[index]
if (entry ~= nil)
then return tostring(entry)
end
elseif (column == "dy")
then local entry = TableDy[index]
if (entry ~= nil)
then return tostring(entry)
end
else return nil
end
end
function Ungreen(index)
ug = index
end
function Player()
HP = memory.read_u8(0x1C60)
XSub = memory.read_u8(0x3775)
XPos = memory.read_u16_le(0x3776)
YSub = memory.read_u8(0x3779)
YPos = memory.read_u16_le(0x377A)
attackFlag = memory.read_u8(0x379F)
XSpd = memory.read_s16_le(0x37B5)
XSpdMax = memory.read_s16_le(0x37B9)
YSpdDown = memory.read_s16_le(0x37CD)
YSpdUp = memory.read_s16_le(0x37D9)
mid_air = memory.read_u8(0x37D4)
YSubOld = memory.read_u8(0x37E1)
YOld = memory.read_u16_le(0x37E2)
jumpPeakFlag = memory.read_u8(0x37EC)
APressCount = memory.read_u8(0x37ED)
TableXv[frame] = XSpd
TableX[frame] = XPos*256+XSub
TableYv[frame] = YSpdDown+YSpdUp
TableDy[frame] = (YPos*256+YSub)-(YOld*256+YSubOld)
TableAir[frame] = mid_air
TableAPress[frame] = APressCount
TableJumpPeak[frame] = jumpPeakFlag
TableAttack[frame] = attackFlag
gui.drawText(2, 36, "Xp:"..XPos..":"..XSub, 0xFFFFFFFF, 0x77990000);
gui.drawText(2, 51, "Yp:"..YPos..":"..YSub, 0xFFFFFFFF, 0x77009900);
gui.drawText(2, 66, "Xv:"..XSpd, 0xFFFFFFFF, 0x77990000);
gui.drawText(2, 81, "Yv:"..(YSpdDown+YSpdUp), 0xFFFFFFFF, 0x77990000);
gui.drawText(2, 21, "HP: "..HP);
--dXPos = (XPos - XPos_old);
--dXSub = (XSub - XSub_old)
--dXPS = dXPos*256+dXSub;
--gui.drawText(70, 66, dXPS, 0xFFFFFFFF, 0x77990000);
--XSub_old = XSub;
--XPos_old = XPos;
--dYPos = (YPos - YPos_old);
--dYSub = (YSub - YSub_old)
--dYPS = dYPos*256+dYSub;
--gui.drawText(70, 81, dYPS, 0xFFFFFFFF, 0x77990000);
--YSub_old = YSub;
--YPos_old = YPos;
--gui.drawText(2, 96, mid_air, 0xFFFFFFFF, 0x77990000);
end
tastudio.onqueryitemtext(Text)
tastudio.onqueryitembg(Color)
tastudio.ongreenzoneinvalidated(Ungreen)
while true do
frame = emu.framecount()
if frame > ug
then ug = frame
end
Player()
--console.writeline(dXPS);
--gui.drawPixel(XPos,70)
--gui.drawLine(memory.read_u8(0x25B2), 50,
--memory.read_u8(0x25BA),50)
-- xcam = memory.read_s16_le(0x2ada) --0x18FE -55cc:
-- ycam = memory.read_s16_le(0x55d2) --0x2ab0 -:mapcam19A6
-- for i = 0, 16, 1 do
-- e_prev = memory.read_u8(0x3841+i*0xD4)
-- e_next = memory.read_u8(0x3842+i*0xD4)
-- e_type = memory.read_u16_le(0x3844+i*0xD4)
-- e_xpos = memory.read_u16_le(0x384A+i*0xD4)
-- e_ypos = memory.read_u16_le(0x384E+i*0xD4)
-- --anim 3865 1u
-- --flag 3867 1u
-- --counter 3878 1u
-- --3B32 w u 0 IWRAM y
-- gui.pixelText(e_xpos-xcam, e_ypos-ycam,"s"..e_prev..":"..e_next)
-- end
--console.log(tostring(memory.getmemorydomainsize("IWRAM")))
--IWRAM = 03000000
--x = memory.read_u16_le(0x3AC6)-- w u x
--y= memory.read_u16_le(0x3ACA)-- w u y
-- h1 = memory.read_u8(0x3B4C)+256*memory.read_u8(0x3AC7)
--h2 = memory.read_s8(0x3B4D)
--v1 = memory.read_s8(0x3B4E)
--v2 = memory.read_s8(0x3B4F)
--gui.drawText(h1-xcam, 40, "h1", "red", "blue")
--gui.drawBox(x-xcam-h1, 40, x-xcam+h2, 80)
emu.frameadvance();
end