I'm trying to update my positively ancient (2013) package of MAME so blind people can play old talking Apple II games from the 1980's. Believe it or not, I have a few people on my mailing list that still use XP, presumably 32-bit. I made a 32-bit compile of MAME 0.242, and it doesn't work under XP, when I run it, I receive an error about not being able to locate the entry point CancelIoEx in Kernel32.dll. Judging by some Googling I've done, this seems like it's probably the first of many obstacles to running modern MAME under XP. My question is: Is it possible to compile MAME 0.242 so it will run under XP, or has this over time become completely impossible, with no workaround? If it can be done, what do I need to do in order to make it work? If it simply cannot be done and that's that, what's the last version of MAME that will still run under XP 32-bit? Thanks.
There are people like Retro Danuart that maintain 32 bit versions of MAME.
You can find MAME 0.241 here: https://drive.google.com/drive/folders/1eiNztWEpk0C7CiiZXz0SMDM_eJOmb0FO
Bear in mind, if it's a really ancient PC such as Pentium 4 or Athlon XP with low-end or integrated graphics, it might not be able to actually run a modern version of MAME properly even if a recompiled version does work in XP.
Most Pentium 4 systems are not suitable for MAME versions later than 0.179 as older AGP-era video cards don't support the features that modern MAME requires.
For example, my ATI Radeon 9550 was perfectly fine with MAME's Direct3D option right up to and including 0.179, but with the new requirements for 0.180, MAME automatically fell back to GDI (which is MAME's default fail-safe) when it failed to initialize Direct3D due to the video card lacking support for modern things like NPOT (non-power-of-two) textures, and I had to force MAME to use OpenGL, which, while faster than CPU-driven full software mode with no acceleration whatsoever, was an old ATI card's weak spot even in older MAME versions (there was no difference between 0.179 and 0.180 in OpenGL speeds). BGFX and Vulcan were obviously not supported by the card either.
Additionally, if you're actually running XP on the net(!), you will not be able to access the above Google Drive link as the site has blocked all of the older "modern" browsers that support XP (e.g. Firefox 52 ESR), so you will have to download it on a modern PC and transfer MAME across via USB. Spoofing the user agent doesn't work either, it does a feature check to identify the browser.
If it's a Core 2 Duo or later (then it should be capable of running Windows 7 at least), it should have no issues with MAME though, provided it can actually run on XP. Personally though, I'd entice the owners to upgrade their PCs to Linux, but that might be an issue if they require a Windows-only program for accessibility purposes (although probably nothing that Wine couldn't handle).
Look, I’m sorry, but it isn’t going to work well. Windows XP is just too old to be worth supporting. The only way people make these supposedly XP-compatible builds is by hacking their MinGW environment to use a years-old C runtime that doesn’t use pre-Vista Win32 APIs. We can’t support builds that do this. Also, I’m slowly moving away from dynamically checking for Win32 APIs that can be assumed to be present on any Windows 7 or later. RawInput keyboard/mouse input definitely won’t work on Windows XP any more. More things are going to start breaking on Windows XP as time goes on.
The 0.242 XP builds are now available at the link in the 2nd post.
0.180 run in an P3 1 GHZ using an Voodoo 3 in ddraw mode with old games, CPS1-2 and others 16 machines.
Using Geforce 6200 AGP run better.
Running an MAME version from 2016 in an Celeron D 1.6 using an Intel IGP (possibly old GMA 950) not have good emulation speed. If using an Geforce 8400 run normal emulation speed with old games, CPS1-2 and others 16 machines.