Multi-monitor support

Found a bug? Please report it, but remember to follow the bug reporting guidelines.
Missing a sane feature? Let us know!
But please do NOT request ports to other systems.

Moderator: ZSNES Mods

Post Reply
Soul Colossus
Rookie
Posts: 40
Joined: Mon Aug 23, 2004 2:10 am
Location: Sacramento, CA
Contact:

Multi-monitor support

Post by Soul Colossus »

Any plans to make it so the ZSNES window can be dragged to another monitor? Would be handy for those with TVs set up as secondary displays.
Truth Unknown
Regular
Posts: 271
Joined: Tue Jun 14, 2005 8:35 pm

Post by Truth Unknown »

I believe this has been suggested before, but I too would like to see this.

So far the only solution is to set the Secondary Monitor as the Primary and then start ZSNES.
pagefault
ZSNES Developer
ZSNES Developer
Posts: 812
Joined: Tue Aug 17, 2004 5:24 am
Location: In your garden

Post by pagefault »

This can't be done properly without D3D. DDraw allows it but it will not have acceleration on second display.
Watering ur plants.
Firon
Trooper
Posts: 361
Joined: Fri May 05, 2006 4:37 pm
Contact:

Post by Firon »

pagefault, what about this guy's post? He says it is possible to do with DirectDraw. http://board.zsnes.com/phpBB2/templates ... nipost.gif
pagefault
ZSNES Developer
ZSNES Developer
Posts: 812
Joined: Tue Aug 17, 2004 5:24 am
Location: In your garden

Post by pagefault »

See above.
Watering ur plants.
Aerdan
Winter Knight
Posts: 467
Joined: Mon Aug 16, 2004 10:16 pm
Contact:

Post by Aerdan »

Firon wrote:pagefault, what about this guy's post? He says it is possible to do with DirectDraw. http://board.zsnes.com/phpBB2/templates ... nipost.gif
Did you wake up on the stupid side of the bed this morning? Pagefault said it was possible but that it would suck. Hard.
Jipcy
Veteran
Posts: 768
Joined: Thu Feb 03, 2005 8:18 pm
Contact:

Post by Jipcy »

Aerdan wrote:Did you wake up on the stupid side of the bed this morning? Pagefault said it was possible but that it would suck. Hard.
Actually, two mornings ago.
[url=http://zsnes-docs.sf.net]Official ZSNES Docs[/url] | [url=http://zsnes-docs.sf.net/nsrt]NSRT Guide[/url] | [url=http://endoftransmission.net/phpBB3/viewtopic.php?t=394]Using a Wiimote w/ emulators[/url]
Nightcrawler
Romhacking God
Posts: 922
Joined: Wed Jul 28, 2004 11:27 pm
Contact:

Post by Nightcrawler »

pagefault wrote:This can't be done properly without D3D. DDraw allows it but it will not have acceleration on second display.
I think you have a misunderstanding of DirectDraw and it's multi display device capabilities. You're marginally correct.

DirectDraw can use full hardware acceleration whether it's running on the primary device or a secondary device.

The only time it CANNOT use hardware acceleration is when spanning graphics operations across display devices.

You can easily allow display device selection for as many devices as there are available in your system and have full hardware acceleration on every single one of them so long as the full image is blit on that device and only that device and no spanning(dragging across devices) is done.

With that said, my only point is it is possible if you wish to keep DirectDraw and still do it. Of course moving to D3D is a much better option if you wanted to go that route anyway. Today's cards often times have LESS 2D acceleration features than cards of years ago that DirectDraw can even take advantage of. DirectDraw is basically going obsolete and will be less and less useful even for 2D applications as time goes on and hardware drop more and more of those features.
[url=http://transcorp.romhacking.net]TransCorp[/url] - Home of the Dual Orb 2, Cho Mahou Tairyku Wozz, and Emerald Dragon SFC/SNES translations.
[url=http://www.romhacking.net]ROMhacking.net[/url] - The central hub of the ROM hacking community.
pagefault
ZSNES Developer
ZSNES Developer
Posts: 812
Joined: Tue Aug 17, 2004 5:24 am
Location: In your garden

Post by pagefault »

http://msdn.microsoft.com/archive/defau ... f_6oxj.asp
Remarks

This function attempts to initialize a DirectDraw object, and then sets a pointer to the object if the call succeeds.

On systems with multiple monitors, specifying NULL for lpGUID causes the DirectDraw object to run in emulation mode when the normal cooperative level is set. To make use of hardware acceleration on these systems, specify the device's GUID. For more information, see Devices and Acceleration in MultiMon Systems.
From the horses mouth.

MS Says you need to enumerate all devices and keep track of them yourself. It's not a very nice prospect. Otherwise you get no HW acceleration.
Note As long as it is created on the null device and is not rendering directly to the primary surface, a non-full-screen DirectDraw application will work automatically with MultiMon, and the user will be able to drag the window from one monitor to another. However, DirectDraw will take advantage of hardware acceleration only when the window is entirely within the primary display. It is recommended that windowed DirectDraw applications be specifically designed for MultiMon by maintaining separate DirectDraw objects and surfaces for each monitor. For more information, see Devices and Acceleration in MultiMon Systems.
Watering ur plants.
Nightcrawler
Romhacking God
Posts: 922
Joined: Wed Jul 28, 2004 11:27 pm
Contact:

Post by Nightcrawler »

Right. That's essentially what I said. The feasible option here with DirectDraw is to allow selection of display device.

Spanning(dragging the window across displays) will never work in Direct Draw without many a headaches. I never said it would.

It's not much extra work to stick a value in lpGUID to allow selection of the device. You can then use that device and only that device, but it assures, you can run ZSNES on any device and have hardware acceleration. That is a satisfactory solution for all these people who need to play on their TV, but can't be bothered with simply switching displays around in display properties. Why that's too much work for them to begin with, I will never know.

The only real work here is implementing the selection in the GUI. That's certainly no fault of Direct Draw though.

I don't even know why I continue to discuss this. I don't even care about this option. I've been playing ZSNES on my TV for years by simply using one monitor at a time.
[url=http://transcorp.romhacking.net]TransCorp[/url] - Home of the Dual Orb 2, Cho Mahou Tairyku Wozz, and Emerald Dragon SFC/SNES translations.
[url=http://www.romhacking.net]ROMhacking.net[/url] - The central hub of the ROM hacking community.
pagefault
ZSNES Developer
ZSNES Developer
Posts: 812
Joined: Tue Aug 17, 2004 5:24 am
Location: In your garden

Post by pagefault »

Spanning does work in Vista because DirectDraw is wrapped onto Direct3D so you can do it without any performance issues. As well as drag the window. But in XP this is a whole different story. We are making a Direct3D renderer for multi-monitor suppport that will be used instead of DirectDraw. The old DD7 driver will be still availible but Direct3D will be the default. Direct3D handles multimon much better. And it is of no issue to add a device selection tap to the GUI it would just confuse most of the users.
Watering ur plants.
mastershake1
Rookie
Posts: 19
Joined: Mon Sep 04, 2006 4:03 pm

Post by mastershake1 »

Not to get too far off topic or beat a dead horse thread, but a while ago there was discussion about a Direct3D render that would change some other stuff like how the filters work with hi-res. Did you ever have any success with that approach?

Obviously the ZSNES team has a ton of stuff going on so please don't consider my question a request for an ETA on the new render, I was just curious as to if your testing has shown any good results :)

Good luck with it, it's been awesome seeing how far ZSNES has come.
Deathlike2
ZSNES Developer
ZSNES Developer
Posts: 6747
Joined: Tue Dec 28, 2004 6:47 am

Post by Deathlike2 »

mastershake1 wrote:Not to get too far off topic or beat a dead horse thread, but a while ago there was discussion about a Direct3D render that would change some other stuff like how the filters work with hi-res. Did you ever have any success with that approach?

Obviously the ZSNES team has a ton of stuff going on so please don't consider my question a request for an ETA on the new render, I was just curious as to if your testing has shown any good results :)

Good luck with it, it's been awesome seeing how far ZSNES has come.
It was OpenGL, not D3D. When we get around to it, the Windows port render code will be modularized so that we can use D3D, OpenGL (and hopefully we can revise some of the SDL/OpenGL code at the same time), and DDraw (DDraw will by the default). It's not a priority, but it will happen at some point. The filters would be rewritten into shaders requiring a DX9 (SM2) compliant card. (DX9 compatible drivers don't count here as they don't have the hardware required.. hence why I said compliant). We will probably end up using the software driven fallbacks (which is what is used now) if you don't have the hardware.
Continuing [url=http://slickproductions.org/forum/index.php?board=13.0]FF4[/url] Research...
Nightcrawler
Romhacking God
Posts: 922
Joined: Wed Jul 28, 2004 11:27 pm
Contact:

Post by Nightcrawler »

Sounds like you guys have yourselves a good plan.

It's probably overdue. DirectDraw, as nice as it was for 2D applications such as ZSNES, hasn't moved forward in years and it's finally starting to show. Like all things, eventually you need to update with the times. We've already done the DD vs. D3D vs. OpenGL vs. XXX discussions. No need to rehash.

Bottom line is ZSNES will have the best of both worlds and a few new doors will open up by switching renderers. I look forward to seeing the results and the silencing of some of these repetitive requests! ;)
[url=http://transcorp.romhacking.net]TransCorp[/url] - Home of the Dual Orb 2, Cho Mahou Tairyku Wozz, and Emerald Dragon SFC/SNES translations.
[url=http://www.romhacking.net]ROMhacking.net[/url] - The central hub of the ROM hacking community.
Post Reply