-
-
Notifications
You must be signed in to change notification settings - Fork 15
[Improvement] Use createdvd instead of createcd when compressing games for certain platforms. And other CHD improvements. #129
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Thanks for reporting this, had no idea As for extra arguments, sure I can start implementing something, maybe a global setting for starters, and have the ability to override it per system later. Recompressing was on my todo, I can move that up the list. Basically I was thinking of adding a |
First part done: 273c86d CUE/BIN will now be compressed using |
This takes care of the third part, added a |
@monyarm What kind of additional arguments were you thinking about? |
@alucryd Ultimately, this is the wrong place to address this, but it would be good information. Do you know if we need to compress from the original dumps, or can we convert? |
Ya those should do. Maybe also a parent option, since some emulators do support chds with parents. |
I theory you can give chdman the chd and have it recompress it. But in practice that doesn't seem to always work. |
@monyarm @alucryd I figured that converting directly from CHD to CHD (createcd -> createdvd) wouldn't work, but is it possible to recover the original format (CHD -> ISO, etc) and then compress it to CHD automatically? EDIT: My position is only wanting archival formats (reversible), which CHD is (sort-of). So, in that position, I should be able to recover my collection from this discovery. If this change lands (which it has/will), then as users, we should have a seamless path forward, right? |
Will add global settings for hunksize and compression, like I did for RVz. Yeah numprocessors is only needed when you want to limit them, but there's not really a reason to do it. |
You can do it directly, that's actually what I do behind the scene when you specify recompress: CHD -> ISO -> CHD |
@alucryd Thank you very much for clarifying! I figured you would have it covered, but I got apprehensive. Sorry for my unnecessary banter. EDIT: Time to recompress my collection. |
@monyarm Forgot to address the parent point, this has been sitting on my to-do list for the longest time, ideally this should be automated, I can already group games together to generate playlists, so it's not a huge stretch to apply that to CHD parents. Edit: Looks like libchdr supports reading parent/child CHDs now. I'll add it higher up on the todo, this will have several implications I need to be mindful of though, like never to convert a parent back to another format before the children or they'd be essentially lost. Will need to introduce this relationship at the database level. |
Added settings for chdman: 9c28b5f Separated CD and DVD settings, compression algorithms are different, and chdman defaults to different hunk sizes for both. I wouldn't recommend messing with the hunk sizes, but compression algorithms will allow you to use zstd which isn't enabled by default. I just use zstd+flac for CHDs now. |
I need to make an additional modification to the |
Small teaser, CHD parents support is almost there, nice size gains on discs 2 and 3 ;)
Still need some things ironed out, like preventing any modification to the parent while it has children, but it should be up soon. Edit: Pretty disappointing results with the later Final Fantasy games though, not much shared data between discs I guess. |
Nice, maybe also have it print what it's parent is when it's converting it? |
Yeah will add a log for the parent. Right now it builds upon the |
There it is: e0d6019 One noteworthy caveat, parents will always be skipped when Mind that the feature is not a huge revolution, only very few games did lose weight in my experience (sometimes even down to around 1% of the original size!), granted I don;t have a huge library, but still. You might want to tinker with the hunk size for CDs, it's quite high by default (19584), I expect going down to something like 4896 (twice the unit size) would help (haven't tried yet). DVDs default to 4096 (which is twice the unit size) and seems to fare better overall. |
Question, would it be possible to specify custom parent child connections somewhere? In order to be able to have variants of games (like how pokemon games have different versions, I know some disc based games have something similar), sequels, hacks and translations be able to be reduced in size. |
Sure, I can come up with something, probably an additional flag to convert-roms that will let you search for/select a parent. |
Well that's unexpected, reducing the hunk size for CDs actually hurts compression (at least for FF7).
Same story with other games, I recommend leaving hunk sizes to their default values, at least for CDs. |
Added in efb31e8 The new I thought it would work well for different languages of the same game, but my initial testing is also disappointing, here's symphony of the night, there's barely any difference when using the USA release as parent of the Japanese release (that wouldn't work in practice for me anyway as my Japanese games are not stored in the same directory as my USA games, which is a requirement for parent/children to work).
|
And with that I think I tackled everything, please let me know how it goes, the beta docker image is up for quick testing if you'd like: https://hub.docker.com/r/alucryd/oxyromon |
@alucryd I believe I've found an issue oxyromon convert-roms --format 7Z --recompress --diff --check --system "Nintendo - Game Boy" It also specifies "Nintendo - Game Boy Advance," leaving no way to select only Game Boy. |
That is expected, it's not an exact search, but I can make an exact one if you want to select a single system, maybe a |
@TylerVigario Better yet, not too keen on introducing yet another flag, but I can give more power to the user using the existing flag. Behind that is nothing more than a SQL like (case insensitive), right now I automatically surround whatever is passed with |
I prefer that. I initially thought it would only do an exact match, but I am good if we have the option. |
Done: f2167b9 Applied that across the board to all commands using |
Those are always the most challenging decisions 😝 |
I'm having an issue with CHD parent support
It seems to be using the CD hunk size, despite the games being DVD ISOs |
@monyarm I don't see any obvious issue in the associated code path. Acquiring the games so I can reproduce and debug. |
@monyarm Couldn't reproduce, with or without an explicit CD hunk size
I tried converting from ISO, and reconverting from CHD, both worked. Could you verify |
I'll close this one as I couldn't reproduce. Please feel free to open a dedicated issue if you still experience it. |
PSP: hrydgard/ppsspp#18798
PS2 and other DVD systems would also be a good idea. As there are from what I've read not just compression, but also performance improvements from using createdvd for DVDs. But PSP would be the priority.
The best solution in my opinion would be to be able to set settings for which platforms to use createcd/createdvd/createhdd for, and also specify commandline arguments for chdman.
And speaking of chdman, another improvement that would be great would be an option to recompress games (useful when there's an update to chdman, to be able to quickly recompress the games for a platform)
The text was updated successfully, but these errors were encountered: