Recent

Author Topic: Direct Draw from JEDI does not work under 64bit  (Read 3764 times)

Key-Real

  • Full Member
  • ***
  • Posts: 185
Direct Draw from JEDI does not work under 64bit
« on: April 29, 2021, 06:34:12 pm »
Hi,
I have DirectDraw Headers from JEDI.
They work with 32bit compilation, but not with 64bit(It compiles but if run: CreateSurface fails).

I have setup a test:
http://www.sistavip.com/pub/ddrawtest.zip

Please Help

Key-Real

  • Full Member
  • ***
  • Posts: 185
Re: Direct Draw from JEDI does not work under 64bit
« Reply #1 on: April 29, 2021, 07:50:58 pm »
If I use original Delphi Headers it works on Delphi 32&64bit.
But on FPC only 32bit, not 64bit(Same Problem as by JEDI Headers)

my Test:
http://www.sistavip.com/pub/ddraw_delphiOK.zip

engkin

  • Hero Member
  • *****
  • Posts: 3112
Re: Direct Draw from JEDI does not work under 64bit
« Reply #2 on: April 29, 2021, 08:06:23 pm »
Quick test shows that your SizeOf( TDDSURFACEDESC ) is wrong. It should be 120 bytes on Win64 that is based on the one in unit p_ddraw (included with FPC).

I noticed your have:
Code: Pascal  [Select][+][-]
  1. {$MINENUMSIZE 4}
  2. {$ALIGN ON}
in your DDraw unit.

Replacing it with:
Code: Pascal  [Select][+][-]
  1. {$PACKRECORDS c}
  2.  

AND removing "packed" from two records:
Code: Pascal  [Select][+][-]
  1. ...
  2. {$PACKRECORDS c}
  3. {engkin}{ $MINENUMSIZE 4}
  4. {engkin}{ $ALIGN ON}
  5.  
  6. ...
  7.   _DDCOLORKEY = {engkin}{packed} record
  8. ...
  9.   _DDSURFACEDESC = {engkin}{packed} record
  10. ...
  11.  

fixes the problem.

Prabably you need to remove it from all the records.

Edit:
Attached DDraw unit.
« Last Edit: April 29, 2021, 08:19:57 pm by engkin »

Key-Real

  • Full Member
  • ***
  • Posts: 185
Re: Direct Draw from JEDI does not work under 64bit
« Reply #3 on: April 29, 2021, 08:27:06 pm »
Thx to engkin :)

The JEDI ddraw works now for fpc 32 & 64 bit.
But under Delphi only 32bit.

Do I need other changes to make it works for Delphi 64?

engkin

  • Hero Member
  • *****
  • Posts: 3112
Re: Direct Draw from JEDI does not work under 64bit
« Reply #4 on: April 29, 2021, 08:43:36 pm »
I don't have Delphi, so I can only suggest to use the usual $ifdef way.

Key-Real

  • Full Member
  • ***
  • Posts: 185
Re: Direct Draw from JEDI does not work under 64bit
« Reply #5 on: April 29, 2021, 09:14:36 pm »
Perhaps you can Check the second Test, IT works for Delphi 32&64 but only for fpc33

Key-Real

  • Full Member
  • ***
  • Posts: 185
Re: Direct Draw from JEDI does not work under 64bit
« Reply #6 on: April 29, 2021, 10:48:44 pm »
Perhaps ist easyer to go from the Delphi Implementation to fpc.
Check the second Test.
Thx, engkin

engkin

  • Hero Member
  • *****
  • Posts: 3112
Re: Direct Draw from JEDI does not work under 64bit
« Reply #7 on: April 29, 2021, 11:35:21 pm »
I think this should work. Give it a try. It is based on the Delphi project you shared above.

I noticed the project itself has issues, but not related to this.

Key-Real

  • Full Member
  • ***
  • Posts: 185
Re: Direct Draw from JEDI does not work under 64bit
« Reply #8 on: April 30, 2021, 05:39:24 pm »
engkin,
thx it works now under fpc and dephi 32&64bit.

what issues you found in the tests?

engkin

  • Hero Member
  • *****
  • Posts: 3112
Re: Direct Draw from JEDI does not work under 64bit
« Reply #9 on: April 30, 2021, 09:06:20 pm »
Compared to the previous test, it did not close as the relevant message was commented out, and the caption of the form was random characters.

 

TinyPortal © 2005-2018