diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c index 6901145..0c9c2be 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c @@ -852,6 +852,36 @@ static void depth_copy(IWineD3DDevice *iface) { } } +float convert16bitfloatto32 (unsigned short ptr) { + +float ret; +unsigned short *sptr = (unsigned short * )&ptr; +int i = 1; +/* +int fract = (*sptr >> 0) & 0x7FFFFF; +int exp = (*sptr >> 23) & 0xFF; +int sign = (*sptr >> 31) & 0x1; +*/ + +short fract = (*sptr >> 0) & 0x3FF; +short exp = (*sptr >> 10) & 0x1F; +short sign = (*sptr >> 15) & 0x1; + + +FIXME("fract=%d, exp=%d, sign=%d\n", fract, exp, sign); + +while (1<= (fract / pow(10, i))) i++; + +FIXME("0.something=%f\n", pow(10, -i)*fract); +FIXME("p1=%d, %f, %f\n", (sign == 0 ? 1 : -1), (pow(10, -i)*fract+1), pow(2,((int)exp-15))); +ret = (sign == 0 ? 1 : -1) * ((pow(10, -i)*fract+1) * pow(2,((int)exp-15))); + +FIXME("float=%f\n", ret); + +return ret; + +} +