FIX94 / Nintendont

A Wii Homebrew Project to play GC Games on Wii and vWii on Wii U
1.85k stars 317 forks source link

Added support for DAX format. #1139

Closed JoseAaronLopezGarcia closed 9 months ago

JoseAaronLopezGarcia commented 9 months ago

The DAX format is similar to the ZSO format from the previous attempt, however it uses DEFLATE which provides much better compression.

For best results, the ISO should be shrunken first, then compressed.

Some games don't like being compressed, in which case just shrunken is good enough.

I used libdeflate (https://github.com/ebiggers/libdeflate/) for the kernel since zlib wasn't available there. This is fine though as libdeflate is considerably faster and more lightweight.

Build: nintendont_dax.zip

JoseAaronLopezGarcia commented 9 months ago

Here are a few test results. Generally speaking, you want to shrink the ISO before compressing because dummy data isn't always easily compressed if it's too random, so it's best to just get rid of it entirely and then compress the remaining data. The results are really good, with many games saving over 100MB, some almost 500MB, others less than 50MB.

JoseAaronLopezGarcia commented 9 months ago

Even though compression is great, I'm not totally convinced by this format. Decompression is slower and this impacts game performance (specially on cinematics), the library is heavy and the format isn't as robust so it even has less compatibility than ZSO had.

For one last attempt, I will try JSO, which has the perfect middle ground between compression ratio and decompression speed.

JoseAaronLopezGarcia commented 9 months ago

Closing this as I do not like the results in terms of performance. DEFLATE is simply too heavy and DAX too buggy of a format.