unexpectedpanda / retool

Retool: a better filter tool for Redump and No-Intro DAT files.
BSD 3-Clause "New" or "Revised" License
368 stars 24 forks source link

Feature request - Include only specific types of ROMs #249

Open Keiyuu opened 1 year ago

Keiyuu commented 1 year ago

Currently there is a feature to exclude certain types of ROMs. I would like to do the opposite and include only specific types based on my selection. For instance, for creating an 1G1R DAT only with Demos, or with unlicensed ROMs or a combination of multiple selections. This would be especially useful for Redump because they don't let you use any filters when downloading a DAT.

I tried doing something like this with user filters but it didn't really work out and I find it difficult to wrap my head around what regular expressions I have to use. Also, specifically with demos it's not really possible because they aren't always indicated in the title and a deeper look into the category metadata is required.

Maybe additional checkboxes on the current Exclusions tab could be added, but for "Include only"?

prklx2 commented 1 year ago

I've been thinking for something like this for some time now, but my version would filter the set like normal but would create new subdirectories for Demos, Unlicensed, Homebrew, Protos etc etc.

This would help a lot when using different frontends that give you menu options if there are any subfolders eg. Batocera. This way you wouldn't need to scroll all of the demos and protos when you're just searching for original games or vice versa.

Outputting separate datfiles could also achieve the same result. With Romvault you can just drag the datfiles to their corresponding folders and it would automatically make the romdirectories the same way. Of course it would be easier if the folders were there automatically after processing with Retool so you wouldn't need to create them manually.

retroNUC commented 1 year ago

V1 used to group these type exclusions in the log - If you filtered out 'Prototype', you'd have a section in the log with the header "Exclusions - Prototype" just listing the types excluded for that reason, and so forth. This was useful for going back to later, and picking/choosing selected ones that I may want to keep.

However, V2 now just lists them all in one big combined "Exclusions" list. Restoring the older logging behavior could be a good first step for this issue.

unexpectedpanda commented 1 year ago

Restoring the older logging behavior could be a good first step for this issue.

This level of granularity has been restored from 2.00.4 onward.

unexpectedpanda commented 1 year ago

Maybe additional checkboxes on the current Exclusions tab could be added, but for "Include only"?

For instance, for creating an 1G1R DAT only with Demos, or with unlicensed ROMs or a combination of multiple selections. This would be especially useful for Redump because they don't let you use any filters when downloading a DAT.

Unless I'm mistaken, you can do this now with the Exclude tab. Click Select all and then deselect the categories you want to keep. It's slightly less convenient than clicking just one category to include, but it does the job. (Edit: although this fails when new categories are introduced. Hmmmm.)

Having said that, Games is missing as a category, and should be there for completeness. That no one has mentioned it so far is unsurprising -- most people want the games.

I've been thinking for something like this for some time now, but my version would filter the set like normal but would create new subdirectories for Demos, Unlicensed, Homebrew, Protos etc etc.

Not possible I'm afraid, due to where Retool fits in the chain and limitations with the DAT format. The most I can do is add paths to each of the <rom> nodes in the XML, which ROM managers interpret as folders to add inside archives, instead of folders where the archives should live. This sort of functionality must live inside ROM managers, not Retool.

Outputting separate datfiles could also achieve the same result.

It's a consolation prize compared to sorting into folders, but this is possible. Probably with some sort of tagging system to determine the output you want. For example, for Manufacturer - Console.dat, something like this:

{language}{region}{category}{alphabetical}

Would produce this:

Manufacturer - Console (English) (USA) (Applications) (A).dat
Manufacturer - Console (English) (USA) (Applications) (B).dat
Manufacturer - Console (English) (USA) (Applications) (C).dat
Manufacturer - Console (English) (USA) (Applications) (D).dat
Manufacturer - Console (English) (USA) (Applications) (E).dat
Manufacturer - Console (English) (USA) (Applications) (F).dat
...

Or if extra metadata was pulled from somewhere online:

{category}{year}{genre}
Manufacturer - Console (Games) (1989) (Platformers).dat
Manufacturer - Console (Games) (1989) (Puzzle).dat
...

Ultimately though it would create a lot of separate DATs, and I'm not sure it would be worth the effort to set up that many files in a ROM manager with custom output paths. I suppose in theory you only have to do it once and then update the DATs...

There are also other issues, like "add-ons", "preproduction", "bad dumps" and so on being categories. Ultimately these titles would need to be tied to higher tier categories like games, applications, and otherwise, which adds more burden to the clone lists. That's quite a lot of work.

Keiyuu commented 1 year ago

Unless I'm mistaken, you can do this now with the Exclude tab. Click Select all and then deselect the categories you want to keep. It's slightly less convenient than clicking just one category to include, but it does the job. (Edit: although this fails when new categories are introduced. Hmmmm.)

Having said that, Games is missing as a category, and should be there for completeness. That no one has mentioned it so far is unsurprising -- most people want the games.

Yeah, this was exactly the problem I faced. I want to exclude Games and for instance only include Demos or Bonus discs etc. So I suppose what I'm trying to do would work if you add Games as a category.