Coder Social home page Coder Social logo

steam-rom-manager's Introduction

Steam ROM Manager

Build Status GitHub commit activity GitHub all releases Discord Chocolatey Crowdin

Overview

Steam ROM Manager (SRM) is a super flexible tool for adding non-Steam games to Steam in bulk and managing their artwork assets and controller templates. Added games could be ROMs for emulators, games from other stores such as Epic or GOG, or even not games at all. Have you always wanted your notes from junior year as a category in steam? If so that's pretty weird! But now it's possible.

For an overview of how SRM works see here. There is plenty of documentation available in the app's built in FAQ and documentation, and if you need further help there are expert users to be found on the SGDB discord under the Steam ROM Manager category and the SRM subreddit.

Check out the releases page for compiled downloads for Windows (exe, msi), macOS (dmg), and Linux (AppImage, deb).

The Windows version is also available as a Chocolatey package.

The Linux version is also available as a Flatpak at Flathub/steam-rom-manager. Linux caveats:

If you're on a Steam Deck we recommend setting everything up through EmuDeck, as it will install and automatically configure Steam ROM Manager and whatever emulators you want.

Support SteamGridDB

If you enjoy Steam ROM Manager and want it to continue to be useful consider supporting SteamGridDB's Patreon. SteamGridDB hosts all of the artwork Steam ROM Manager uses to make your Steam library the envy of the town, so we should probably help them keep their lights on.

Parsers

Parsers are the heart and soul of SRM. If Steam is the octopus, then these are its tentacles — reaching into your ROM directories and the databases and manifest files of other game stores and pulling out the games you want.

ROM Parsers

ROM parsers allow one to import shortcuts using search strings, e.g. games/${title}.@(iso|rvz), or in the case of the manual parser by specifying ROM locations directly.

Parsers Windows Mac OS Linux Description
Glob Parsing using simple glob style search strings
Glob-regex Parsing using reg-ex style search strings
Manual Parsing using a JSON file specifying locations

Platform Parsers

In addition to flexible importing of ROMS, SRM now has several platform parsers for importing from popular game stores:

Parser Windows Mac OS Linux Launch Modes
Amazon Games 🟦 🟦
  • Launch via Amazon Games
  • Launch via executable
EA Desktop 🟦 🟦
  • Launch via EA Desktop
  • Launch via executable
Epic 🟦
  • Launch via Epic
  • Launch via executable
GOG Galaxy 🟦
  • Launch via GOG Galaxy
  • Launch via executable
Itch.io
  • Launch via executable
Legendary
  • Launch via executable
Ubisoft Connect 🟦
  • Launch via Ubisoft Connect
  • Launch via executable
UWP/XBox 🟦 🟦
  • Launch via UWP
  • Launch via executable
Battle.net 🟦
  • Launch via Battle.net

✅ Implemented ❌ Planned 🟦 Store not present

We are open to suggestions and pull requests if you would like a platform parser added!

Artwork Only Parsers

Artwork only parsers allow you to change the artwork for existing non-SRM games. Put it simply they just change artwork, they don't add shortcuts.

Parser Windows Mac OS Linux Description
Steam Manages artwork for Steam Games
Non-SRM Shortcuts Manages artwork for Steam Shortcuts not added via SRM

For developers

Command Line Interface

SRM has a fully featured command line interface, documented in the wiki.

Building SRM

To compile this app, you'll need the latest Node.js and yarn. Every script will need to be run from the project directory.

Before running any scripts, dependencies must be installed using:

yarn install

Unfortunately, because of an issue with better-sqlite3 you will most likely also have to run yarn install after building for windows if you want yarn run start to work. Otherwise, you will likely see the runtime error better-sqlite3 is not a valid win32 application.

Scripts

All script must be run using yarn run command. For example, yarn run watch:renderer.

Script Function
postinstall Recompiles native apps to match Electron's NodeJS version if needed
start Launches compiled app
watch:main Compiles Electron app and watches for changes
watch:renderer Compiles a renderer for an Electron app and watches for changes
build:main Compiles Electron app in production mode
build:renderer Compiles a renderer for an Electron app in production mode
build:dist Runs build:main and build:renderer
build:win Compiles an executable installer for Windows
build:linux Compiles a deb package and AppImage for linux
build:linuxdir Builds an unpacked linux x64 version for use with flatpak
build:flatpak Builds a flatpak from the unpacked linux version
build:docker build:win and build:linux joined together
build:mac Compiles a dmg package for MacOS

Debugging an app

Run watch:main (usually once since one rarely changes anything in the main Electron process) and watch:renderer. Each command creates separate webpack instance which will watch referenced files for changes and will recompile app.

App can be run using start script or npx electron . (if you want to test the CLI use npx electron . [command] [flags]). After every recompile by watch:renderer, app can be refreshed using Ctrl + R, however watch:main requires need a restart.

Ctrl + Shift + I can be used to launch Chrome inspector once the app is running. This works even in the release version.

For Windows

Scripts must be run in this order:

yarn run build:dist
yarn run build:win

For MacOS

Scripts must be run in this order:

yarn run build:dist
yarn run build:mac

For linux

Scripts must be run in this order:

yarn run build:dist
yarn run build:linux

For linux flatpak

Unfortunately electron-builder does not yet competently build flatpaks, and the older approach using electron-packager and electron-installer-flatpak can't handle native modules. A work-around is to use electron-builder for the packaging step and electron-installer-flatpak for the actual flatpak creation.

First you need to run yarn install -g @malept/electron-installer-flatpak (this can't be added as dev-dependency since it is not cross-platform and yarn doesn't allow optional dev-dependencies).

Then

yarn run build:dist
yarn run build:linuxdir
yarn run build:flatpak

In order for this to work you must have already installed flatpak-builder using your favorite package manager (e.g. sudo pamac install flatpak-builder) and run:

flatpak install flathub org.freedesktop.Platform//19.08;
flatpak install org.freedesktop.Sdk//19.08;
flatpak install org.electronjs.Electron2.BaseApp/x86_64/stable

Updating dependencies

Use npx ncu to list available dependency updates, and npx ncu -u target [target] to update, where [target] is either patch, minor, latest, greatest, or newest.

Related Projects

Some other projects in the emulation-adjacent space we think you might be interested in!

Front ends

  • ES-DE - A top tier emulation front end.
  • Playnite - A general purpose front end with lots of importers.
  • Firelight - An upcoming front end specifically for emulation with built in achievements.

Configurators

  • EmuDeck - A collection of scripts for downloading and managing emulators and front ends alike.

ROM Managers

Steam Artwork Tools

  • Steam Art Manager - An artwork manager for Steam games.
  • SGDBoop - Tool to enable choosing artwork for in Steam directly from steamgriddb's website.

Other Steam Importers

steam-rom-manager's People

Contributors

acuteaura avatar apalatn avatar beatlegeuse avatar brianblakely avatar bsinky avatar carjem avatar cbartondock avatar chibichoko avatar danik1601 avatar danmossa avatar dependabot[bot] avatar dozennn avatar dragoondorise avatar eskay993 avatar frogthefrog avatar godsbane avatar immersion95 avatar jessetg avatar karojen avatar kencinder avatar klepp0906 avatar lexarvn avatar maykin-99 avatar nabilfreeman avatar onemorebyte avatar rawdatafeel avatar tlt21 avatar undarkaido avatar viplmad avatar xav83 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

steam-rom-manager's Issues

English grammar horrors

There are some nasty grammatical errors in documentation. If you find one, please make a pull request or post some corrections here.

Using Retrogaming.cloud to match games instead of SteamGridDB

Would it be possible to use Retrogaming.cloud to match games instead of SteamGridDB? Currently you can't add any games to SteamGridDB without contacting the creator while Retro allows any user to create game entries which makes it easier especially if someone has roms that aren't as popular as others. Granted there isn't a ton of quality control yet over excess entries or misspelled entries.

Possible bug with steam profile settings

I noticed today that if your steam account is not set to have your user name and password saved on the computer then SRM does not recognize that there is a Steam account on the computer. This may not be a bug at all but I just wanted to let you know about it. If there isnt a fix for it then it should be added to a Tool Tip to have this check box in the picture UNCHECKED. Thanks

image

image

[Enhancement] Seperate "Rom Directory" With Steam "Start In"

After diving deep into MAME compatibility for SRM. There is one request that I have currently that would make SRM more compatible with MAME. SRM should have a line added to the Parser when Show Advanced Options is turned on. That line should be "Start In". This is the start in directory for steam and is required to start in the MAME home folder as pictured.
image

Then when the above line is utilized then the "ROM Directory" line will just be for looking for the ROM files exclusively and will not have anything to do with altering the "Start In" line for non steam shortcuts.
image

[Enhancement] Parser to find multiple ROM types

I was setting a up a configuration and I was trying to figure out how to have multiple ROM types in the User's Glob. There are a few different emulators that accept different types of ROM file types. In my ROM library I have multiple ROM types (file types/extension). Do I have to make a different config file for each type of ROM within the same system emulator or can you add the ability to have the parser to look for different ROM file types in a ROM directory. Thanks!
Example:
nickname=Dreamcast
emulator=nulldc
extensions=gdi, cdi
roms directory=E:\emulation\roms\dreamcast

[Enhancement] Disable Button for Parsers

So that we can have a parser saved even if it's currently inactive, for whatever reason. (Not working, nothing to add, etc)

Ideally, the button would disable the parser from being run until it was enabled again, but the parser would still be saved in the list.

Possibility to change the icons

@FrogTheFrog: There was a possibility in Ice to not only edit the Images for the "Grid view" but also for the icons (instead of the standard emulator icon). This would make especially the standard Desktop List view in steam a lot more appealing. Is it possible to integrate that in your program? Keep up the good work! :)

Certain Titles Cause Fuzzy Title Matching to Hang

As the title says, certain game titles cause the fuzzy title matcher to hang. Specifically, it seems to be an issue with titles that have multiple similar matches, but nothing exact or even close. Titles I've seen cause this are Ratchet & Clank, Fatal Frame, and Destroy All Humans!. The titles list is missing these games, but features multiple sequels to each.

Can't open the .exe file, says: "You may not have the appropriate permission to access the item"

Just for the record, I'm that guy on Reddit that asked for a solution on this problem.

I tried multiple tutorials to give the only user present in my PC the "maximum administrator permission" (If it didn't already have it, I didn't get much of the point there) and tried to open multiple releases of SRM, but still I didn't manage to open the .exe file without the error message.

However, when I uninstalled the app through IObit Uninstaller, I noticed that it says: "Steam ROM Manager 2.1.1 (only current user)". Is the "only current user" just purely aesthetic or it has anything to do with how the program handles the permissions by user? Is that possible to revert that so all user (or at least the administrator user) are able to universally modify it?

EDIT: Something that I also found is that this is the only program that places a .exe file on C:\Users\[USERNAME]\AppData\Local (which is more reserved to logs, text files or complimentary files for their respective programs rather than the .exe file itself) while most of the programs that I have are located on C:\Program Files (x86) or C:\Users\[USERNAME]. I'm not sure if that point is relevant on my problem since I tried to extrat the .zip files of the older releases of SRM on those directories and I still received the error message; but I thought that it would be something interesting to point out.

Move image providers from main thread to web workers

Should reduce app stutter and allow to implement more performance inpacting image providers in the future.

Todo list:

  • Split Fuzzy matcher into 2 parts. One for retrieving title list, other for matching.
  • Make a generic provider structure to work on web workers.
  • Add pipes/callbacks for IPC (Inter Process Communication).
  • Fix the worker-loader module error.
  • Rewrite SteamGridDB provider to work with new API.
  • Rewrite retrograming.cloud provider to work with new API.
  • Rewrite consolegrid provider to work with new API.

Unsaved parser settings are lost when clicking "Test parser"

  1. Open a previously saved parser
  2. Change settings such as ROMs directory and User's glob
  3. Click the "Test parser" button.
  4. Click back to the parser you were testing. All setting changes are gone.

I would expect the behavior would be to leave the modified settings in place. The primary reason I would ever hit "Test parser" would be to see if my new parser settings work well. I wouldn't want to have to save my parser settings before I got them right.

If you do allow navigating away without losing parsing settings, I can see how this bug report would actually turn into more of an enhancement. A more robust save system which shows each modified parser with a * next to its name so that you are aware it has been edited would then make it apparent that it is not yet saved.

Default/global user configuration

A seperate user configuration should be made available and made "global". User configuration should have most (not all) of fields that are available in usual user configurations. User then would have to click a switch button near a field title to use value from global configuration.

Build instructions?

Can you please post these? I may assume your app is a docker image, which if so, I know how to build, but including this in your readme would help any others

[Enhancement] multi-languages support

It's not necessary but it would be nice, if you want I can translate into French.

Todo list:

  • Create generic language structure with typescript interface for validation
  • Enable string interpolation support for some code sections
  • Rewrite Fuzzy Matcher to use callbacks to transfer information
  • Rewrite parser component into generic form
  • Enable markdown support for some code sections
  • Rewrite instructions in markdown
  • Write SCSS style for markdown
  • Add a way to insert Angular SVG component
  • Add code highlight
  • Rewrite all renderer components to use global language variable
  • Rewrite all renderer services to use global language variable
  • Rewrite all renderer templates to use global language variable
  • Rewrite all renderer libraries to use global language variable
  • Add option to select language

can't generate app list

I can't generate the app list, even when steam is closed, always says
"Please shutdown Steam if it is running when saving, otherwise it might not save correctly."
I'm using the 2.0.0 version

Saving List Breaks shortcuts.vdf file

Not sure whats wrong with it, but when I try to save my shortcuts using the ROM manager, all Non-Steam Game shortcuts disappear from steam and I have to revert to the backup. I've attached the broken vdf file and original backup.

Use "retrogaming.cloud" as a source for images

Some of my games (such as zelda titles) cannot match due to poorly implemented match functionality in the current image source APIs. Retrogaming.cloud does not have this issue and a nice API, and would make a great addition to this tool!

Replaces shortcuts.vdf with new.

This is a problem because it removes all the shortcuts by new ones so if you have non steam games that are not on emulator (kind Uplay) it will remove them.

Build error: Cannot find module 'fuzzy'

First time building the project in Windows 10. I get the following error:

ERROR in [at-loader] ./src/renderer/pipes/fuzzy.pipe.ts:2:24
TS2307: Cannot find module 'fuzzy'.

I'm assuming a dependency isn't set up right, but I'm going ahead and posting here quickly in case I don't have time to track it down right away.

If it's relevant, here's the warnings I got in output when I previously ran npm install:

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] requires a peer of webpack@>=0.9 <2 || ^2.1.0-beta || ^2.2.0 but none was installed.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\7zip-bin-linux):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"linux","arch" :"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\7zip-bin-mac):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch": "any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any "} (current: {"os":"win32","arch":"x64"})

SRM has trouble with "+"

@FrogTheFrog I believe there is a possible bug when SRM tries to find a image for a game title. I uploaded a image for a game that has a "+" in its title. The "+" is necessary because it was included in the actual title of the games. One example of this is "Sonic & Knuckles + Sonic the Hedgehog 2" for the Sega Genesis. This is the image for the title http://www.steamgriddb.com/game/Sonic%20&%20Knuckles%20+%20Sonic%20the%20Hedgehog%202/
Here is the properly encoded "+" symbol: http://www.steamgriddb.com/api/grids/?game=Sonic%20%26%20Knuckles%20%2B%20Sonic%20the%20Hedgehog%202&orderby=date&orderdirection=DESC
Here is what SRM is doing: http://www.steamgriddb.com/api/grids/?game=Sonic%20%26%20Knuckles%20+%20Sonic%20the%20Hedgehog%202&fields=author,grid_url

thanks @doZennn for helping me with this issue

[Enhancement] About screen

I don't see any place in the UI where I can see what version I have. I'm sure I could look at the binaries directly, but in the UI is much nicer. There's a few other helpful things that could be there as well.

  • App version and build number/date
  • Github link to download newer versions
  • Links to help/FAQ
  • Any other relevant links
  • A little self-pimping for the developer
  • Easter egg... you know you want to!

TODO memo before 2.1.0 release

Before big push:

  • proofread markdown for ducks and quacks;
  • update changelog;

Before PR:

  • close all milestone issues;
  • update github readme (with mp4 support possibly);
  • move github page to subfolder;
  • play with docker, find out what's wrong with it;
  • make another more technical readme for building stuff.

Easy way to identify ROM from the app list

When an image/title was so far badly matched as to leave you unsure of what ROM it was trying to match, there isn't a quick easy way to identify which ROM you are having the issue with. You can leave that screen and go to the Event Log to try to identify it. Because the ROM path is on the command line shown under the title, then you can hover over the command line and wait about 10-15 seconds for it to scroll to the right far enough to see the name of the file. It'd be much nicer if we could simply get the filename of the ROM shown somewhere on that tile, or perhaps better yet, a hover or right-click display of all the info as would show in the Event Log for that ROM.

Enhance Retrogaming.cloud Integration

It looks like Steam Rom Manager is currently making more requests than necessary when talking to the retrogaming.cloud api?

Currently retrogaming-cloud.worker.ts will make a search request for the title:
/api/v1/game?name=`%${title}%`

Then take every result and make a request to get media:
/api/v1/game/${gameId}/media

At that point it will filter the results by 'name' using the fuzzy logic.
Many search results return 15 results so this expends 16 calls per game to just traverse the list of returned games.

Instead the logic to filter by name should be moved up to the retrieveUrls method.

For instance:
if (listData[i].id !== undefined) promises.push(this.retrieveMediaData(listData[i].id));

Could instead be:
if (listData[i].id !== undefined && listData[i].name && this.proxy.fuzzyMatcher.fuzzyEqual(this.proxy.title, listData[i].name, true, true)) promises.push(this.retrieveMediaData(listData[i].id));

[Enhancement] Version Details

I have had users ask me over the past weeks where the version is in SRM. I tell them that its in the Log and problem solved, but I would like this to be easier for a user to find in a logical place. Could you put the version in a persistent place like in the Settings option as well as the Log?

  • In the Settings option, so that the user can see it in what would be a logical place for a typical user and possibly find it on their own.

  • In the Log, so that it will be posted when they have issues and they post the entire log for tech support.

  • Have the version also show the type of SRM package it is along with the version number? For example, Portable vs Installed. Windows vs Linux? that would help us with troubleshooting because we can just see it in the Log instead of asking more questions. Thanks!

[Enhancement] Undo on delete

After accidentally deleting a parser I had set up, I think it would be swell to add an undo button after deleting a parser. Just in case.

Program Hangs

I followed all the steps and downloaded the needed dependencies. After I run this command "E:\emulation\SRM\node_modules\electron\dist\electron.exe E:\emulation\SRM\dist\main.bundle.js" The program launches and it says "Loading App" with a great circle and then it says "Loading Settings" with a green circle, then all I get it the dark gray screen that is on the photo below. Please help with this issue, if its user error then please be patient with my understanding of how your program works. Thanks for your time!

image

Its posible ignore some files

i have some states in some game folders and some sav files and jpg files there its a way to ignore some format files?

Change layout to grid

Somehow I missed the new css display style - grid. Changing layout to use grid would significantly simplify SRM and would make it easier to add new content.

If you are interested on how it will help, take a look here:
CSS Grid Changes EVERYTHING - Amazing Presentation

[Enhancement] App List Smart Search Function

@FrogTheFrog After the App List in generated it would be good to have a real time search function for the app list. This would be useful for finding certain games that the user would like to change the grid image on. Currently it can be a chore to find a title in the App List when there is a large ROM library.
Example for Search Field: Super Ma
Example for Results listed real time: Super Mario Bros., Super Mario Bros. 2, Super Mario Bros. 3, Super Mario Bros. World

Removing brackets doesn't remove for some games.

Hello there!

The remove brackets feature is great and does do what it's supposed to however it doesn't remove them from some games. Also would it be possible to exclude removing (Disc 1) brackets? :)

Thanks!

Multiple ROMs with same name across different emulators

I think I ran into a bug last night. When a game is made, sometimes that game appears on different consoles at the same time. So what we have is multiple roms with the same exact title name but on different emulators. When SRM compiles the App List it only chooses one of those roms to include in the list. For example, I have the roms for both NBA hangtime on SNES and N64. When I build the App List it only uses one of those roms to compile in the list. The end result is only one of the roms being presenting in steam when it builds the Shortcut File.
Thanks!

Build: loader-utils version conflict

I get lots of build errors similar to this one:

Module build failed: TypeError: loaderUtils.getOptions is not a function
at Object.module.exports (F:\Users\Danny\Documents\GitHub\steam-rom-manager\node_modules\nested-require-loader\index.js:42:53)
@ ./shared/lang/english/langData.ts 181:28-58
@ ./shared/lang/index.ts
@ ./shared/lib/language-manager.ts
@ ./shared/lib/index.ts
@ ./renderer/components/theme.component.ts
@ ./renderer/components/index.ts
@ ./renderer/app.module.ts
@ ./renderer/app.ts

It seems you have some 3rd party packages which depend on some old versions of loader-utils package. The nested-require-loader is fetching these older versions and it is taking precedence on newer packages that call a new getOptions() function that is required as of version 1.0.0 of loader-utils. I hate dependency hell. 😄 I tried forcing the latest version of loader-utils by including it in packages.json, but the old one is still being pulled in anyways. I'm too green with npm package management to figure this out so far.

Corrupt shortcuts.vdf if screenshot was taken

Step to Reproduce

  1. Close Steam
  2. Generate two game entry with steam-rom-manager (SRM), Test Game and Test Gal for example. Set any tag for it, ${Test} for example, then save list.
  3. Open Steam, two new shortcut added to Test category. Open any of them, say, Test Gal, take a screenshot by pressing F12, then exit Steam.
  4. Wait for Steam completely exited. Add prefix New , generate list again, save list.

Expected Result

4 shortcut lies in Test: Test Game, Test Gal with 1 screenshot, New Test Game and New Test Gal.

Actually Result

1 shortcut in Test: Test Gal with 1 screenshot, besides, the shortcuts.vdf is "corrupted", SRM can no longer add/edit it, but Test Gal are still available in Steam library.

Env

  • Platform: Windows 10 x64

  • SRM version: 1.1.3

  • Real Emulator folder: K:\Game\_Emu\WiiU\Cemu

  • Real Game path (including a fake one for testing, basically it's a copy of XCX):

    • K:\Game\_Emu\WiiU\ROMS\Xenoblade Chronicles X (USA) [Loadiine]\code\spaceTravel.rpx
    • K:\Game\_Emu\WiiU\ROMS\test\code\test.rpx
  • SRM config:

    • Type: Glob-Regex
    • Steam category: ${Exotic}
    • Executable: K:\Game\_Emu\WiiU\Cemu\Cemu.exe
    • Roms folder: K:\Game\_Emu\WiiU\ROMS
    • Steam folder: K:\Game\Steam
    • User glob-regex: ${/([^\(]+)/}/code/*.rpx
    • Arguments: -f -g "${filepath}"

Generate Applist Error on empty ROM folder

So I discovered if you have multiple parsers, if the last parser/s have an empty rom folder (or find nothing in them/filter all the results out), nothing bad happens and the other parsers run just fine.

However, if any parser that has an empty folder (or finds no files) has a working parser after it, it will stop parsing completely and produce the following error.

"Executing parsers.
Fatal error occurred. See event log for details.
TypeError: Cannot read property 'files' of undefined"

[Question] Trying out the .exe not loading saved data

This is just a dumb question, I am going to try out your .exe for the latest SRM pre-release. When I load it, the parsers that are saved aren't populating. Where does the .exe look for the parser saved file?

Edit: I think i found it under \AppData\Roaming\steam-rom-manager\userData
Is this where I need to dump my old saved data?

Intermittent "No images available" from ConsoleGrid.com

For certain titles (the Mega-Man Battle Network series and others) images are not scraped consistently from ConsoleGrid.come (And aren't found on SteamGridDB.com).

I reproduced this bug multiple times by simply generating a new list a few times. Occasionally the images would be scraped.

Tested with:
"Final Fantasy IV Advance"
"Dragon Ball - Advanced Adventure"
"Mega-Man Battle Network"
"Pokemon Leaf Green"

Using Online Mode & Greedy Search:

success
Here the image is successfully scraped from ConsoleGrid.com

fail
Here the image is unsuccessfully scraped from ConsoleGrid.com

From the Event Log it appears that the bug is due to a timeout error.

Reduce amount of color variables

Up until now, user could change UI color, however this complicates things on my end by having to define A LOT of color variables. Also, I doubt that color picker is used actively. For this and previous reasons UI color panel will be left available only to developers and all color variables will be generalized. This means that SRM will have a theme from now on.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.