steamgriddb / steam-rom-manager Goto Github PK
View Code? Open in Web Editor NEWAn app for managing ROMs in Steam
License: GNU General Public License v3.0
An app for managing ROMs in Steam
License: GNU General Public License v3.0
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!
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"
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:
Here the image is successfully scraped from ConsoleGrid.com
Here the image is unsuccessfully scraped from ConsoleGrid.com
From the Event Log it appears that the bug is due to a timeout error.
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.
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.
@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
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.
I do not know if it's possible, but look for icons for Wii U and 3ds games directly in Nintendo Eshop servers.
Test Game
and Test Gal
for example. Set any tag for it, ${Test}
for example, then save list.Test
category. Open any of them, say, Test Gal
, take a screenshot by pressing F12, then exit Steam.New
, generate list again, save list.4 shortcut lies in Test
: Test Game
, Test Gal
with 1 screenshot, New Test Game
and New Test Gal
.
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.
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:
Glob-Regex
${Exotic}
K:\Game\_Emu\WiiU\Cemu\Cemu.exe
K:\Game\_Emu\WiiU\ROMS
K:\Game\Steam
${/([^\(]+)/}/code/*.rpx
-f -g "${filepath}"
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!
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
Should reduce app stutter and allow to implement more performance inpacting image providers in the future.
Todo list:
worker-loader
module error.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!
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.
It's not necessary but it would be nice, if you want I can translate into French.
Todo list:
Not an issue, it's rather an option that I think could be very useful.
So, when you add a not steam game, it search in steamcontrollerdb to fetch for a valid configuration for each game (similar to how it is done with the images)
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.
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.
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.
Example:http://imgur.com/a/xUFsd
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!
i have some states in some game folders and some sav files and jpg files there its a way to ignore some format files?
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!
Before big push:
Before PR:
readme
(with mp4 support possibly);readme
for building stuff.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.
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.
@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! :)
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.
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"})
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
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.
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.
Please add it:http://imgur.com/a/poNNg
Having to re-generate the entire list when an image fails to download is really annoying
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.
@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
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));
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
There are some nasty grammatical errors in documentation. If you find one, please make a pull request or post some corrections here.
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?
Should allow to match files that do not match extracted title 100%.
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.
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.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.