Official release thread for WindowCast core

i would like to make a guide that goes more in depth , i just think to wait for the windows 2.0 version not that something changes . :sweat_smile:

1 Like

I know about the updated LRPS2 core and Iā€™ve tried it. The standalone is still better as Iā€™ve tested it. As for SwanStation they may say that it has advanced over the old DuckStation core which is true for RetroArch but again, the standalone is still better Iā€™ve tested it. I understand this is a libretro area and I should be promoting libretro but I donā€™t take sides. I just use what is best. Having said that there are 2 sides to a coin. Stenzek the dev of DuckStation who is also involved with PCSX2 had a falling out with the people at RetroArch. I can see both sides. Personally, I support RetroArch because they bring emulation under one umbrella sorta and it has many nice features for end users. Integration with launchbox being one, shaders another, and controller configuration is next level. Bliss-Box which I use has even made adapters and cables so you can take all your old controllers and itā€™s pretty much plug and play with RetroArch. Iā€™ve had interactions with Stenzek. He can come off as a jerk and I think itā€™s silly that he wonā€™t support RetroArch cores. Be that as it may his standalone emuā€™s are sill the best currently. RetroArch is trying to counteract this by just letting it go which is why you see a new core being worked on for ps2 called Play. Once certain cores on RetroArch end up being just as good or better than certain standaloneā€™s Iā€™ll switch back.

you can use whatever suits you best nobody ā€¦I donĀ“t want to promote anything^^

sure standalone for pcsx2 is still more advanced

also i am not the greatest fan of having a bunch of emulators installed in differnt places/folders with differnt configs,

and donĀ“t have the need for playing many games after the 5th console gen.

i have some favorites i know i gonna replay , not much intrest in those systems or still have the console working . i just like the comfort of just having ā€œone app to emulate them allā€

even if it was a long way to figure out things like how to config mame itself like standalone , get all of my controllers to work even the lightgun for each system

at the end its the app i run most of the time (together with launchbox) for years now

nowadays i setup and experiment to get more and more systems working for fun (and therefore putting most of DuimonĀ“s overlays /preset in use :sweat_smile:)

1 Like

This has no relevance to our discussion and I find it disappointing that there can be any suggestion that anyone is promoting anything over anything else or involved in any politics.

No need to get defensive either because no one accused you of promoting anything.

I was just trying to assist. I also sought clarity on some of the generalizations you made and was under the impression that you simply were not aware that at least some of what you said might have been based on outdated information.

My thinking was that some of the issues or challenges you were having could have easily been solved by using different or updated cores and that they were sort of self inflicted due to your preferences and possible lack of knowledge of viable albeit not necessarily verbatim or uncompromising alternatives.

3 Likes

no problem. I donā€™t like politics. It rubs off on me and comes out. politics are a part of life. people are people. Sometimes I lack a filter for all the garbage out there.

2 Likes

Has anyone managed to get this working with Deus Ex? I canā€™t get it to work.

Iā€™m trying to use Windowcast with xemu (XBOX Emulator) in full screen, unfortunately I can get it to work without problems, but then I canā€™t use the control when the RetroArch screen is in full screen :frowning:

Does anyone have a solution?

does this still work? i could onkyget it to work with 1.16.0 and Vulkun. anyone still using this?

yeah this still works

@Dreetto did you try ctrl+alt+t if you are in retroarch with the game running in windowcast?

2 Likes

So I can get this to work, however the game window I am linking this to automatically exits that game once this core runs, so all I am left with is a static screenshot.

For example:

  1. Launch Game A in Steam
  2. Launch Retroarch in Steam
  3. Load core with partials-example.txt

After #3 is run, #1 shuts down.

What am I doing wrong, or should I do to prevent this?

Edit: NEVERMIND. DIsREgard. i got this fixed by going into Nvidia Control Panelā€¦

ā€œSome users with Nvidia GPUs may experience issues with the capture image in RetroArch ā€˜freezingā€™ in fullscreen mode when certain applications are used. To help resolve this, open the Nvidia Control Panel. In the ā€œManage 3D Settingsā€ tab, change the option ā€œVulkan/OpenGL present methodā€ to ā€œPrefer layered on DXGI Swapchainā€. If this option does not appear, you need to update your GPU drivers.ā€

1 Like

retroarch nightlies updated to 1.18.0 and this was in the patch notes:

  • VIDEO/VULKAN: Remove the use of oldSwapchain

I havenā€™t tested if this affects windowcast but I am putting this here for reference

3 Likes

I did a test since that retroarch update and thought Iā€™d test out xemu and windowcast is still working well. I even added a nice xbox graphic overlay around the bezel.

1 Like

Does anyone know, definitively, if that upcoming swapchain change affected windowcast in any way?

the change is already in the nighly or ? it runs still fine , but i can only speak for AMD gpuĀ“s so far i know this impacted nvidia cards

I have an Nvidia card and itā€™s still fine

I was mainly wondering if it led to any improvements.

Iā€™m having an issue getting this core running regardless of version. I quickly get a ā€œEnviron GET_VARIABLE crop_enable: not implementedā€ in the debug log when loaded in RetroArch 1.7.5. It doesnā€™t seem like the default core option values arenā€™t getting applied properly?

This is fantastic, but alas, I get no sound from the game I am piping through thisā€¦

I couldnā€™t get wincast.py and other solutions to really work for me, so I created my own. This script has never failed to work with anything Iā€™ve thrown at it, including even tricksy things like vkQuake.

Iā€™ve tried my best to document it so itā€™s easy to understand what itā€™s doing every step along the way.

@ECHO OFF
REM handler path exe title [optional:args] [optional:max]

IF [%3] == [] (GOTO NIL) ELSE (GOTO EXEC)

:NIL
ECHO Missing parameter.
ECHO handler path exe title [optional:args] [optional:max]
GOTO END

:EXEC
SETLOCAL EnableDelayedExpansion
REM Let's setup some basic variables!
REM Please do     REMember to set these, as the values here are just examples.
REM THe rom path example is - Z:\ROMs\files\Diablo
REM The Retroarch path example is - Z:\Emulators\Retroarch-Win64\retroarch.exe
SET romdrive=Z
SET retrodrive=Z
SET rompath=\ROMs\files
SET retropath=\Emulators\Retroarch-Win64

REM We do the following so that the user can opt to supply an extension or not.
SET exec=%2
SET exec=!exec:"=!
SET ext=!exec:~-4,-3!
IF NOT [!ext!]==[.] SET exec=!exec!.exe
REM To get multiple words in a variable quotations are used, but we shouldn't keep them.
SET title=%3
SET title=!title:"=!
REM Let's check if the user supplied args, and prep 'em if they did.
IF NOT [%4]==[] (
  SET args=%4
  SET args=!args:"=!
)
!romdrive!:
REM Let's switch to where our game is located.
CD !rompath!\%1
REM First of all, let's get the game running via the exec and args provided.
START "" !exec! !args!
REM Next, let's prep WGC. Here we make the the txt it uses.
!retrodrive!:
CD !retropath!
IF EXIST title.txt DEL title.txt
ECHO !title!>title.txt
REM It's a good practise to have a tiny delay between the game running and Retroarch starting.
PATHPING -p 10 -q 1 localhost>NUL
START "" retroarch.exe -L .\cores\wgc_libretro.dll title.txt
REM Let's proceed to our first loop, where we continue setting things up.
GOTO LOOP1

:LOOP1
REM Each time the loop fires we want a delay, not to have the loop running constantly.
PATHPING -p 250 -q 1 localhost>NUL
REM Let's check if Retroarch is up and running.
TASKLIST /FI "ImageName eq retroarch.exe" /fo csv | find /I "retroarch.exe">NUL
IF [!ERRORLEVEL!]==[0] (
  REM It is, cool. Okay, if the user chooses, here we maximise and normalise the window.
  REM Some games/ports need this in order for proper WGC capture, looking at you vkQuake.
  IF [%5]==[max] CALL winmode -title "!title!" -mode maximized>NUL
  IF [%5]==[max] CALL winmode -title "!title!" -mode normal>NUL
  REM Another short delay before we proceed to the next bit.
  PATHPING -p 50 -q 1 localhost>NUL
  GOTO WINFOCUS
)
IF [!ERRORLEVEL!]==[1] GOTO LOOP1

:WINFOCUS
REM Okay, some games are very insistent about drawing on top of Retroarch.
REM So no amount of focus/activate will change that, the only option is to do this.
REM Notorious for this are the crispy source ports, crispy-doom et al.
CALL winmode -title "RetroArch" -mode minimized>NUL
CALL winmode -title "RetroArch" -mode maximized>NUL
REM Okay, that's everything setup! Let's proceed to our next loop where we wait for something to shutdown.
GOTO LOOP2

:LOOP2
REM The purpose of this loop is to wait for either Retroarch or the game to close, then we do cleanup.
REM We're clearing this variable to ensure it's blank for use later.
SET running=
REM A little delay at the start of every loop as a best practise.
PATHPING -p 250 -q 1 localhost>NUL
REM Did anything shut down? We check Retroarch/the game separately and set a variable if we catch that either has.
TASKLIST /FI "ImageName eq !exec!" /fo csv 2>NUL | find /I "!exec!">NUL
IF [!ERRORLEVEL!]==[1] SET running=1
TASKLIST /FI "ImageName eq retroarch.exe" /fo csv 2>NUL | find /I "retroarch.exe">NUL
IF [!ERRORLEVEL!]==[1] SET running=1
REM Uh oh, looks like it's time to shut down and cleanup!
IF NOT [!running!]==[] (
  TASKKILL /F /IM !exec!>NUL 2>&1
  TASKKILL /F /IM retroarch.exe>NUL 2>&1
  GOTO END
) ELSE GOTO LOOP2

:END
CD !retropath!
DEL title.txt
ENDLOCAL
REM Done!

The way to use this is with batch files in the ports subdirectory. For example, to launch Diablo (DevilutionX), youā€™d use the following in a file called Diablo.bat:

@ECHO OFF
CALL handler.cmd diablo1 devilutionx "DevilutionX" "--config-dir .\config --save-dir .\saves"

For Quake, via vkQuake? A Quake.bat would look like this:

@ECHO OFF
CALL handler.cmd quake vkquake "vkQuake" "-width 640 -height 480 +r_novis 1 +r_wateralpha 0.5 +r_slimealpha 0.9 +r_lavaalpha 0.9" max

You will also need the WindowMode batch for this. It is just a batch, so you can read the text to know itā€™s safe. Save it to winmode.bat, run it, and itā€™ll generate a file called winmode.exe, this is necessary for my script to function without bugs (without winmode, Retroarch canā€™t properly switch to front and vkQuake will have rendering issues).

I hope this helps!

2 Likes

I had to reply to this as it was pending and I couldnā€™t edit it, sorry.

My script should be saved as handler.cmd, as suggested by the batch examples.

1 Like