Steven Seagal's Atari ST Web Site


page 1 - page 2 - page 3 - page 4 - page 5



"A Direct View To a Kill"

  Fourth screen of brags for v3.7.  

Direct3D support

  As promised, Direct3D support has been added in Steem SSE v3.7.
I tested it on good and bad hardware, on XP, Vista, 7.
According to some reports, fullscreen now works even on Windows 8, so Steem is up-to-date.
It's optional so if it worked for you before it will still work anyway.
A lot of people are going to be very happy...
Thx to the people who helped with some tests, and no thanks to those who complain and don't help.

  This was the very first D3D rendering in Steem, nice green monochrome.
Maybe we could display status info in the right column.

  Nice composition, but nobody would call this an "improvement".  

  This one looks almost right, but notice the empty lines on the right & bottom.  

  First correct fullscreen rendering, in 800x600 mode.  

  In action! Notice that we have the GUI (icons etc.), but this works only every other time, else the GUI is invisible but still working. I couldn't find the reason, the GUI in fullscreen like Steem does isn't officially supported by Direct3D.  

This screen doesn't do the Best Part of Creation justice.

After more tests, it turns out that Direct3D is less flexible and handy than deprecated DirectDraw. Tricks that used to work with DirectDraw don't work with D3D, like blitting between buffers of different sizes. This is used in Steem for mode 400x278. Integration with GDI (Windows dialogs) is also dismal. Now I understand why SainT switches back to a window...
  Because there's no complaint about DirectDraw in window mode, only fullscreen, and we can't replicate all our DirectDraw tricks in Direct3D, we limit Direct3D support to fullscreen. Originally the intent was to have a D3D build totally replacing DirectDraw (to reduce code footprint).  
  Instead D3D will only be used to add optional fullscreen options, windowed mode stays DirectDraw.  
  Windows icons and dialogs in fullscreen aren't supported, instead Steem will switch back to windowed mode when you stop. You still may assign shortcuts to going fullscreen, windowed modes, or toggling. Also, in v3.7, switching to fullscreen will make Steem run at once like before. Remember function key F12 starts and stops emu in Steem SSE.

"Interpolated scanlines" are also supported but the effect is a bit different in D3D.

  Despite those limitations, the D3D option will make many Steem users happy because it will work on their system on which DirectDraw doesn't succeed.  
  Even if you have poor hardware, software rendering is supported (at the price of higher CPU use). You do need an up-to-date installation of DirectX 9, and a video card with 32bit modes.  
  DirectDraw fullscreen modes are still available, so nothing that worked is changed, more options are offered.

This is commanded by new options on the Fullscreen Mode page:


  Notice the nice box surrounding the options!

If you check 'On', fullscreen will be rendered by Direct3D instead of DirectDraw. Windowed mode stays the same.

The other options are then greyed out because they're only relevant to DirectDraw.



  Rendering is as big as your screen can show while preserving the aspect ratio. The stretching is done by the video card, or in software drivers if your video card is some ineffective chip on the motherboard.

Pixels are large but the stretching adds some merciful blur.



A fullscreen in fullscreen!

  Choice of resolution  
  You can also select the (PC) resolution of the fullscreen. On a LCD screen, the last (highest) is recommended, but you may want to use a CRT instead, so it's there.


Simple as that

  Only 32bit modes are listed (to reduce code). But you may pick refresh rate and even, on some systems, orientation for those rotating monitors.  


  ST aspect ratio  
  As first proposed in SainT, Steem also features "ST aspect ratio" in D3D fullscreen mode. Demo Death of the Left Border illustrates  the problem.

For this demo it seems the graphist had such an aspect ratio on his computer/monitor, and he compensated for it while drawing the "sun"!



true ST: high squares, round "sun"...



Steem fullscreen with ST aspect ratio, much like the real thing



Steem windowed with normal aspect ratio: the "sun" looks a bit flat

  You can find in old magazines lots of screenshots where this aspect ratio is visible.
"Internet" screenshots and videos are not relevant because quite often they're taken on an emulator.
  Can't take screenshots in D3D fullscreen mode. But you still can use Alt-Prt Sc to copy to the clipboard.  
  Technical notes  
  We use DirectX9 and the ID3DXSprite interface. This is probably why the elusive D3DX9_43.dll is needed. Without it the D3D build of Steem will just refuse to start. I don't think we can "delay load" it. For this reason, a build without D3D will be available too. Not every computer has DirectX 9, and Steem should still work on older computers.  
  The Sprite way is the most straightforward one to do 2D rendering in D3D9. There's another way involving triangles and vertexes, it seemed to work too, but it involves more code and computation, and is less intuitive. With a sprite (the ST screen is the sprite), you just blit, and you can use DirectX's automatic stretching and transpose. This is set up for once and every frame will be transformed according to a matrix.  
  The fullscreen resolution and format (bits per pixel etc.) are the same as on your desktop when you maximise Steem. Generally it's 32bit. Fullscreen with DirectDraw is limited to 16bit, because Steem is old now. At the time, this was the common format for fullscreen (and desktop). Generally video cards support both 16bit and 32bit display.  
  Steem was also well coded. Adding D3D support was just like adding a module and the rest of the program was ready to use it. All drawing routines work as well with D3D. Nothing big had to be written to support 32bit fullscreen.  
  Screenshots don't work yet because it was coded for DirectDraw.  
  The way D3D fullscreen (mis)behaves with the GDI (Windows controls) is mysterious and depends on the computer. Found nothing clear about it on the internet.  
  To use DirectX, C++ is the language of choice, it would be much harder with C. A good reason for using C++ then.  
  Visual C++ 6 is getting old. Visual Studio 2008 was used instead for this build, but we still had to download some SDK.
The D3D build also uses DirectDraw7 instead of 2. I saw no impact.

Later it was possible to compile the D3D build also using VC6 and even BCC (Borland).

  Microsoft shouldn't be congratulated for the evolution of DirectX. Not only was deprecating DirectDraw without convincing replacement functions in Direct3D silly, but even programs targeting D3D8 have to be rewritten for D3D9 if you want them to compile. A program should compile as is in successive versions of the compiler. IMO.

Use of icons, dialog boxes has been dumped in fullscreen mode too (functions like FlipToGDISurface just don't exist anymore). Life of the coder has become so miserable one wonders who's doing the thinking at Microsoft. Like Office and the rest, it's all going downhill since 2000.

  Was it a way to push their horrible .NET framework? Here are new controls that do work in fullscreen... but only for .NET apps.

Or is it just bad management at Micro$oft, just as for Office, Windows, etc.?



Previous screen

Next screen

Games (1) (2)

Demos (1) (2) (3) (4)