Nice finding the flag for area-type, I failed to when I tried, a hint is that it's unsigned, the values will make more sense to you if you read it as unsigned.
The speed value of the Wakeboard is actually a dword (readdwordsigned), you might be able to read it as a byte... but then remove the "signed".
This is how you get the atlas sphere velocity in the direction you're going:
Language: LUA
local AtlasVelocity = math.abs(memory.readdwordsigned(0x02002544)) + math.abs(memory.readdwordsigned(0x02002548))
The abs function in the math library (included by default in the lua engine) removes the signs making the value positive always.
For Y velocity, that is the only address I found that increases and decreases "properly" when you jump.
Also, when programming, use tabs to change the "depth" of things. Example using your code:
-- SPEED AND/OR PIXEL POS.
if area == 1 then -- Normal
gui.text(8,38," SpeedX: " .. memory.readbytesigned(0x02015059),"orange")
gui.text(8,30," PixelX: " .. memory.readshort(0x02014FD9),"orange")
else if area == 2 then -- Bonus
gui.text(8,38," SpeedX: " .. memory.readbytesigned(0x02015471),"#CCFF33")
gui.text(8,30," PixelX: " .. memory.readshort(0x020153F1),"#CCFF33")
else if area == 51 then -- Wakeboard
gui.text(1,112,"Speed -43/" .. memory.readbytesigned(0x02000F44),"#CC99CC")
end end end
It increases readability of the code tenfold.
Final tip for now: The usermovies allow uploading of watches and lua scripts.