Public feed #529385

Untitled

public text v1 · immutable
Raw Edit
·published 2007-06-01 22:05 UTC
rendered paste body
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;
+
+}
+