Die Lösung steht doch in dem englischen Thread
Code: Alles auswählen
; At start of program
FPU_ControlWord.w
!fstcw [v_FPU_ControlWord]
t.d = 0
x1.d = t + ParseDate("%yyyy/%mm/%dd %hh:%ii:%ss", "2021/01/01 17:02:01")
InitSprite()
OpenWindow(0, 0, 0, 300, 200, "Test", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 300, 200, 0, 0, 0)
; After buggy DirectX function
!fldcw [v_FPU_ControlWord]
u.d = 0
xx1.d = u + ParseDate("%yyyy/%mm/%dd %hh:%ii:%ss", "2021/01/01 17:02:01")
Debug x1
Debug xx1
Am Anfang den Wert 'FPU_ControlWord' lesen und nach dem Screen wieder zurück schreiben.
Hintergrund ist, dass man die Genauigkeit von Floats bzw. Doubles beeinflussen kann. So kann man Geschwindigkeit gewinnen.