Jump to content
LaunchBox Community Forums

Retro Achievements, Intel HD 3000 graphics cards, RetroArch post-1.3.6 & You: Notes from my troubleshooting of RetroArch 1.5.0


Recommended Posts

K, a little over a month ago I came across a nifty emulation service called Retro Achievements that adds fan-made achievements to games from sega MS - 32X, the Gameboy family (GB, GBC, & GBA), NES, SNES, & Turbo 16 games and ROM hacks. It seemed great, and it caused me to load ROMs on my computer of games I had previously beaten relentlessly, as well as the games I hadn't touched yet that were already there. Retro Achievements provides altered versions of some of the more common stand-alone emulators (SNES9X, Fceux, & VBA-M to name a few) with a built-in overlay so you can check the achievement list for the game you have loaded, also RetroArch provides syncing with the service, so that you can still log whatever you have accomplished. Normally, I would have preferred the stand-alones, however, this isn't possible with LaunchBox as the Retro Achievement emulators require the emulator to be loaded prior to the ROM file in order to connect to the server. The emulator would still work, but the main purpose wouldn't. Also, I am running a copy of most of these games on my ThinkPad X220T laptop, which only has Intel HD 3000 graphics, so every build fresh off the download page of RetroArch crashed immediately when first loading.

This post is to cover the difficulties I came across trying to make this service work with LaunchBox, and fixes I found to numerous problems associated with RetroArch 1.5.0.

1: Getting the damn thing to work
Since I couldn't get the stand-alone to work with LauchBox I had to either give up LaunchBox entirely or suck it up and install RetroArch. After some digging in the forums here, I found someone else who had a similar problem & had given me a link to the Libretro forums where they discussed the same thing. Their solution was to open the cfg file, look for video_driver & change gl to D3D. Yes, this worked, however, this was a hideous black window with harsh yellow text. BG image couldn't be changed, and none of the graphical adaptions would work. I also heard you can change  menu_driver to rgui. I will warn, that's a much older interface skin, and I would only recommend it if you're running a really low-end computer.

One other thing I noticed in the Libretro post, was the initial poster had no problem prior to the 1.4.1 update - 1.3.6 worked fine on their Intel HD 3000 graphics card, so I went to the archived downloads and tried that build, sure enough, it loaded without a problem. However, RetroArch 1.3.6 still hadn't quite gotten down support for Retro Achievements: Achievements were constantly set to unlock, so I never knew what I needed to do still, and NES achievements weren't even available. So, back to the drawing board. About 2 weeks later (at this point I was spending more time looking up ways to be able to load games rather than play games, and a friend thought I might have an obsessive problem) I stumbled across a thread from the Duke4 forums on a similar issue here . And decided to try their work around. SUCCESS!!!!!! 1.5.0 is now working on my computer. Apparently, there is a line in the XML file of RetroArch that points toward Windows 10 graphics drivers. Since Intel hasn't made official drivers for that card on 10, it causes RetroArch to crash upon loading. This tool edits the XML file and removes that line. Just download it from here, double click the file, and point it at RetroArch.exe. A CMD window will open and will tell you to hit any key a couple of times, and that's all. It loads everything like it was never an issue to begin with.

Link to comment
Share on other sites

2: Great it loads, but how do we customize it
RetroArch 1.3.6 worked with the custom config that is frequently talked about in early installments of the LaunchBox YouTube tutorials, however, they don't work as well with 1.5.0, but 1.5.0 has a new feature in overrides so configs automatically load when different platforms load. Personally, I have a dedicated folder for screenshots in general in My Pictures directory on my computer, and folders for each platform's save states, system saves, and cheats. I noticed with the overrides it would keep changes made to my cheat folder, and to my screenshots, but not my save folders and on some occasions customized controller configs as well. 

Thanx to the sexy beasts that are Zombeaver & LordMonkus on Discord the other day, I figured out how to edit the cfg file for overrides, located in retrorch/config/EMULATOR YOU ARE CUSTOMIZING.

To add a custom save location, you need to add these:

savefile_directory = "[disk drive letter]:\DIRECTORY\WHERE\YOUR\SAVES\GO"
savestate_directory = "[disk drive letter]:\DIRECTORY\WHERE\YOUR\SAVE\STATES\GO"

Likewise, to ensure custom configs for controllers, you need to add some variation of this:

input_player1_b = 
input_player1_b_btn = 
input_player1_b_axis = 
input_player1_y = 
input_player1_y_btn = 
input_player1_y_axis = 
input_player1_select = 
input_player1_select_btn = 
input_player1_select_axis = 
input_player1_start = 
input_player1_start_btn = 
input_player1_start_axis = 
input_player1_up = 
input_player1_up_btn = 
input_player1_up_axis = 
input_player1_down = 
input_player1_down_btn = 
input_player1_down_axis = 
input_player1_left = 
input_player1_left_btn = 
input_player1_left_axis = 
input_player1_right = 
input_player1_right_btn = 
input_player1_right_axis = 
input_player1_a = 
input_player1_a_btn = 
input_player1_a_axis = 
input_player1_x = 
input_player1_x_btn = 
input_player1_x_axis = 
input_player1_l = 
input_player1_l_btn = 
input_player1_l_axis = 
input_player1_r = 
input_player1_r_btn = 
input_player1_r_axis = 
input_player1_l2 = 
input_player1_l2_btn = 
input_player1_l2_axis = 
input_player1_r2 = 
input_player1_r2_btn =
input_player1_r2_axis =
input_player1_l3 =
input_player1_l3_btn =
input_player1_l3_axis =
input_player1_r3 =
input_player1_r3_btn =
input_player1_r3_axis =
input_player1_l_x_plus = 
input_player1_l_x_plus_btn = 
input_player1_l_x_plus_axis = 
input_player1_l_x_minus = 
input_player1_l_x_minus_btn = 
input_player1_l_x_minus_axis = 
input_player1_l_y_plus = 
input_player1_l_y_plus_btn = 
input_player1_l_y_plus_axis = 
input_player1_l_y_minus = 
input_player1_l_y_minus_btn = 
input_player1_l_y_minus_axis = 
input_player1_r_x_plus = 
input_player1_r_x_plus_btn = 
input_player1_r_x_plus_axis = 
input_player1_r_x_minus = 
input_player1_r_x_minus_btn = 
input_player1_r_x_minus_axis = 
input_player1_r_y_plus = 
input_player1_r_y_plus_btn = 
input_player1_r_y_plus_axis = 
input_player1_r_y_minus = 
input_player1_r_y_minus_btn = 
input_player1_r_y_minus_axis =
input_player1_turbo = 
input_player1_turbo_btn = 
input_player1_turbo_axis = 

A set of an input is made of three parts: a base (a key on your keyboard), a btn (a button on your controller), & an axis (a joystick, or in the case of a 360 controller, a trigger). Inputs need to put in quotations, and "nul" tells the system there is no input for that part. So, if you're like me and you want your d-pad mapped on the left joystick of a 360 controller it would look like this: 

input_player1_up = "up"
input_player1_up_btn = "nul"
input_player1_up_axis = "+1"
input_player1_down = "down"
input_player1_down_btn = "nul"
input_player1_down_axis = "-1"
input_player1_left = "left"
input_player1_left_btn = "nul"
input_player1_left_axis = "-0"
input_player1_right = "right"
input_player1_right_btn = "nul"
input_player1_right_axis = "+0"
Link to comment
Share on other sites

I can tell you it removes the Windows10 supportedOS GUID line from the XML manifest. Apparently, builds after 1.3.6 started relying pretty heavily on OpenGL, but Intel drivers work weird on 10. You don't get any GL acceleration if the driver is able to detect an OS it isn't explicitly programmed to support.

If you don't have the Windows 10 stuff in your application manifest, all of your GetVersionEx() calls are supposed to return Windows 8.1--this was done by Microsoft for purposes of compatibility with apps that have poorly implemented version checks. Unfortunately, it seems that Intel's driver for this GPU contains one of these version checks, leaving users of this GPU in a bit of a predicament as far as running apps that have actually been updated for Windows 10 are concerned. Intel has already stated that they aren't supporting the HD3000 under 10, so it's unlikely this will ever be fixed unless someone patches the driver to bypass the check in whatever the last compatible driver Intel released was. 

Edited by Beastachu
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...