libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.41k stars 1.84k forks source link

Win XP compatibility #2001

Closed bazz1tv closed 8 years ago

bazz1tv commented 9 years ago

When trying to run RA 1.2.1 on WinXP, the following error is given, but I read on this stack overflow post how to solve it : http://stackoverflow.com/questions/2847960/procedure-entry-point-initializeconditionvariable-could-not-be-located-in-kernel

Error reference: http://libretro.com/forums/showthread.php?t=1085 "The procedure entry point InitializeConditionVariable could not be located in the dynamic link library KERNEL32.dll."

Re-obtaining support for WinXP could be as simple as the one-liner solution mentioned in the 2nd answer in the stack overflow link.

inactive123 commented 9 years ago

That means losing condition variables though which is a pretty big deal.

I'd like to keep supporting XP and even lower though. Perhaps just a different threading implementation altogether since threading without cond vars requires for a far more hackneyed solution than what is presently in rthreads.

Alcaro commented 9 years ago

It's not that easy. RetroArch itself is not the one pulling in condition variables; they're used by libx264-142.dll and avcodec-56.dll, which seem to be DLLs imported from somewhere else (I'd guess they're the MSYS2 ffmpeg, but I'm not sure).

Possible solutions, half of which won't work in practice:

andres-asm commented 9 years ago

I could offer builds without FFMPEG on the short term

Hydro5 commented 9 years ago

WinXP is not supported by Microsoft anymore. I think it's time to move on. OS are not meant to last forever. Linux is great for installing on old WinXP machines.

inactive123 commented 9 years ago

I disagree. RetroArch is all about offering backwards compatibility for platforms that have been abandoned so that they don't play second or third fiddle to the more modern platforms. At least that's what it is about to me. I want to keep both the past and the new alive at the same time.

bazz1tv commented 9 years ago

I love that about you Twin. Long live the outdated!

On Mon, Jul 20, 2015 at 8:34 PM, Twinaphex notifications@github.com wrote:

I disagree. RetroArch is all about offering backwards compatibility for platforms that have been abandoned. At least that's what it is about to me.

— Reply to this email directly or view it on GitHub https://github.com/libretro/RetroArch/issues/2001#issuecomment-123109469 .


Michael Bazzinotti University of Massachusetts Boston bazz@cs.umb.edu http://www.bazz1.com

BlackTelomeres commented 9 years ago

While I'm on W8.1 so this doesn't concern me directly, I like the stance you're taking on this to try to keep supporting XP, Twinaphex. That is especially true given what MS is currently doing with Windows 10 by only giving a max 8 month deferral on updates even on the Pro version of W10 and with apparently no way to pick and choose which updates you want to get or not.

While obviously if I avoid 10, I'd be staying on 8.1, it's comforting to know some people want to keep support for legacy OSes so that if MS slips some awful stuff into W10, people will still have some support from programs like RA even if--years down the line--they're still on 8.1.

andres-asm commented 9 years ago

Check these builds please http://buildbot.libretro.com/nightly/win-x86/latest_RetroArch_full_xp.7z

bazz1tv commented 9 years ago

Program started to load (console window + GUI file menu but blank content screen) then crash... Error report: http://pastebin.com/qRPgYGWN screenshot of crash: http://snag.gy/dVK0a.jpg --------- personal note --------- Since this laptop did not have DirectX installed, it initially complained of missing d3dx9_43.dll .. I want to note here that installing specifically DirectX9 (c) does not fix that, but rather the DirectX End-User Runtime Web Installer does (https://www.microsoft.com/en-us/download/details.aspx?id=35)

Alcaro commented 9 years ago

Fun, debugging without debug symbols. It's like ZSNES all over again.

Conclusion: glGenerateMipmap is not supported on your machine.

Solution: If possible, switch to a shader preset that does not use mipmaps. If not (I can't find what the defaults do, or if there's an implicit pass somewhere that uses that), switch to another video driver.

Additionally, gfx/drivers_shader/shader_glsl.c:734 should probably check for that function.

bazz1tv commented 9 years ago

questions : 1) how to switch the video shader (retroarch.cfg - video_shader = "" ?) 2) what available drivers should I be able to pick from?

bazz1tv commented 9 years ago

welp, anywho, I tried switch the video_driver to both other suggested options from retroarch.default.cfg which were "xvideo" (obvs unsupported) and "sdl" .. neither stopped the app from crashing. I failed to log the crash on sdl which I figured might be of value..

GOOD NEWS: by switching retroarch.default.cfg as the real retroarch.cfg .. the app loaded!!! I have failed to identify the key difference between the 2 that would cause a solution.

but http://snag.gy/ukg8X.jpg (video_driver = "gl")

bazz1tv commented 9 years ago

I have found the reason for the crash.

Bad line!! menu_driver = "xmb"

Good line!! menu_driver = "rgui"

With this, Retroarch will load and play a Snes9x Next ROM on my XP machine :D I used the cores from http://buildbot.libretro.com/stable/archive/stable/win-x86/Cores-v1.0.0.2-32bit.zip

bazz1tv commented 9 years ago

All video_drivers are working, but there's a bug with d3d, possibly applicable to more than XP. The original menu appears fine, but after loading a ROM, there is "black banner" spacing: http://snag.gy/0CrcK.jpg If I go into quick menu after loading a ROM and close content, the menu is drawn incorrectly (see screenshot):http://snag.gy/3SFow.jpg Someone please let me know if this is applicable to more than WinXP and if I should file this as a separate issue.

Also SDL driver offers no GUI method for accessing the File, Command, and Window menus that are normally available when playing a game.. I know this is because SDL has no Widget system, but I have actually coded the basic for such a system for my own program SNES Tracker .. Let me know if you're interested in stealing the code. It's definitely nothing "standard" -- http://snestracker.club (see screenshots). I assume this is applicable to all systems not just XP, than can use SDL as a video driver. Someone please let me know if I should file this as a separate issue.

andres-asm commented 9 years ago

Ok this seems to be an issuew with the default config only. XMB/GLUI only work with GL so it's to be expected, I'll try to bundle a different cfg for XP

bazz1tv commented 9 years ago

Thank you