Skip to content
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

Added JISO Format #1141

Closed
wants to merge 5 commits into from
Closed

Conversation

JoseAaronLopezGarcia
Copy link

Final attempt at adding support for Compressed ISO to Nintendont. The JISO format offers good compression ratio with great performance. A perfect middle ground between ZSO and DAX.

It is recommended to Shrink+Compress, though some few games don't like being compressed at all.

The reader supports 2K, 4K and 8K block size, with 8K (8192 bytes) being the most recommended as higher block sizes give better compression ratio.

JSO compressors:

Build:
nintendont_jso.zip

@JoseAaronLopezGarcia
Copy link
Author

JoseAaronLopezGarcia commented Sep 16, 2023

Test results:

  • Aggressive Inline

    • Shrunk: 883.767.296 bytes
    • Shrunk+Compressed: 787.422.742 bytes
  • Animal Crossing

    • Shrunk: 27.574.272 bytes
    • Shrunk+Compressed: 19.443.230 bytes
  • Baldur's Gate - Dark Alliance

    • Shrunk: 1.357.635.584 bytes
    • Shrunk+Compressed: 1.014.848.759 bytes
  • Barnyard

    • Shrunk: 947.994.624 bytes
    • Shrunk+Compressed: 844.131.716 bytes
  • Dragon Ball Z - Budokai

    • Shrunk: 1.334.747.200 bytes
    • Shrunk+Compressed: 961.618.587 bytes
  • Dragon Ball Z - Budokai 2

    • Shrunk: 1.179.488.256 bytes
    • Shrunk+Compressed: 888.893.904 bytes
  • Eternal Darkness - Sanity's Requiem

    • Shrunk: 1.453.324.288 bytes
    • Shrunk+Compressed: 1.414.261.733 bytes
  • Final Fantasy - Crystal Chronicles

    • Shrunk: 1.245.980.672 bytes
    • Shrunk+Compressed: 815.067.344 bytes
  • F-Zero GX

    • Shrunk: 1.438.068.736 bytes
    • Shrunk+Compressed: 1.379.455.525 bytes
  • Gun

    • Shrunk: 1.225.058.304 bytes
    • Shrunk+Compressed: 1.088.025.113 bytes
  • Harvest Moon - Magical Melody

    • Shrunk: 179.098.424 bytes
    • Shrunk+Compressed: 99.572.532 bytes
  • Jedi Knight 2 - Jedi Outcast

    • Shrunk: 1.293.203.456 bytes
    • Shrunk+Compressed: 1.250.263.040 bytes
  • Legend of Zelda - Four Swords

    • Shrunk: 485.347.328 bytes
    • Shrunk+Compressed: 476.599.638 bytes
  • Luigi's Mansion

    • Shrunk: 195.696.640 bytes
    • Shrunk+Compressed: 172.208.083 bytes
  • Mario Baseball

    • Shrunk: 631.709.696 bytes
    • Shrunk+Compressed: 610.037.758 bytes
  • Mario Kart - Double Dash

    • Shrunk: 490.999.808 bytes
    • Shrunk+Compressed: 430.150.711 bytes
  • Mario Party 6

    • Shrunk: 787.374.080 bytes
    • Shrunk+Compressed: 729.609.814 bytes
  • Mario Power Tennis

    • Shrunk: 630.458.780 bytes
    • Shrunk+Compressed: 612.270.080 bytes
  • Mario Strikers

    • Shrunk: 648.601.600 bytes
    • Shrunk+Compressed: 497.871.796 bytes
  • Metroid Prime 2 - Echoes

    • Shrunk: 1.455.458.304 bytes
    • Shrunk+Compressed: 1.411.026.264 bytes
  • Paper Mario

    • Shrunk: 619.018.240 bytes
    • Shrunk+Compressed: 387.414.541 bytes
  • Pikmin

    • Shrunk: 674.326.528 bytes
    • Shrunk+Compressed: 589.503.658 bytes
  • Pikmin 2

    • Shrunk: 1.003.765.760 bytes
    • Shrunk+Compressed: 983.613.940 bytes
  • Pokemon Colosseum

    • Shrunk: 712.454.144 bytes
    • Shrunk+Compressed: 670.798.737 bytes
  • Pokemon XD

    • Shrunk: 1.120.323.584 bytes
    • Shrunk+Compressed: 1.060.968.120 bytes
  • Star Wars - The Clone Wars

    • Shrunk: 1.389.641.728 bytes
    • Shrunk+Compressed: 1.282.968.366 bytes
  • Star Wars - Bounty Hunter

    • Shrunk: 1.437.337.600 bytes
    • Shrunk+Compressed: 1.326.302.497 bytes
  • Star Wars - Rouge Leader

    • Shrunk: 1.389.641.728 bytes
    • Shrunk+Compressed: 1.361.152.339 bytes
  • Starfox Assault

    • Shrunk: 1.372.897.280 bytes
    • Shrunk+Compressed: 1.194.530.299 bytes
  • Soul Calibur II

    • Shrunk: 1.036.550.596 bytes
    • Shrunk+Compressed: 862.834.034 bytes
  • Spider-Man 2

    • Shrunk: 1.396.368.176 bytes
    • Shrunk+Compressed: 1.278.434.893 bytes
  • Splinter Cell

    • Shrunk: 1.448.890.368 bytes
    • Shrunk+Compressed: 1.368.479.817 bytes
  • Super Mario Striker

    • Shrunk: 648.601.196 bytes
    • Shrunk+Compressed: 497.873.320 bytes
  • Super Mario Sunshine

    • Shrunk: 1.175.812.096 bytes
    • Shrunk+Compressed: 1.155.328.422 bytes
  • Super Smash Bros Melee

    • Shrunk: 1.430.668.168 bytes
    • Shrunk+Compressed: 1.268.296.552 bytes
  • The Simpsons - Hit and Run

    • Shrunk: 1.443.018.752 bytes
    • Shrunk+Compressed: 1.257.850.157 bytes
    • NOTE: gives a Disk Read Error
  • Ultimate Spiderman

    • Shrunk: 1.308.540.928 bytes
    • Shrunk+Compressed: 951.806.129 bytes
  • Wario World

    • Shrunk: 269.649.920 bytes
    • Shrunk+Compressed: 220.878.026 bytes
  • Wave Race - Blue Storm

    • Shrunk: 1.455.927.296 bytes
    • Shrunk+Compressed: 1.250.012.554 bytes

@carnage702
Copy link
Collaborator

not sure if i want to add something that will have more compatibility issues , i can already see lots of issues being open saying the games dont work, i mean from 10 games 3 already dont work , 30% fail rate is pretty damn high and who knows if the games that do work will crash somewhere in between too,.

@JoseAaronLopezGarcia
Copy link
Author

You do know that 10 games is nowhere near enough to form an educated statistic about compatibility?

Also things are probably worse on PS2 and people still like the format, it's mostly up to the user to choose what they want.

Aside from that, being able to save up to 300MB or more in a single game might be something many users will want. SD cards aren't cheap in some areas of the world and this can help people install a few extra.

Do remember that the only reason I made this was because many people have requested it before, so it's not like the feature came out of nowhere.

In any case, lets at least wait for feedback from other developers and users.

@Extrems
Copy link

Extrems commented Sep 17, 2023

Your disc read errors are from lack of padding for the DMA alignment requirements. Use NKit to shrink.

@JoseAaronLopezGarcia
Copy link
Author

Your disc read errors are from lack of padding for the DMA alignment requirements. Use NKit to shrink.

Spot on! Shrunk Luigi's Mansion with Nkit and then compressed with Jiso and it's working perfectly now. It's smaller too, about 100MB smaller.

For reference, I was initially using GCMUtility.

I will do more tests and keep adding the results.

@GerbilSoft
Copy link
Contributor

GerbilSoft commented Sep 17, 2023

I would think scrubbing (not shrinking), then converting to JISO format might work better than shrinking, since that maintains the original logical file offsets. All-zero blocks are effectively compressed to nothing (or maybe a few bytes depending on algorithm and container format).

In particular, Sonic Riders and Star Fox Adventures are very sensitive to the logical file position, so you should test those.

@JoseAaronLopezGarcia
Copy link
Author

I would think scrubbing (not shrinking), then converting to JISO format might work better than shrinking, since that maintains the original logical file offsets. All-zero blocks are effectively compressed to nothing (or maybe a few bytes depending on algorithm and container format).

In particular, Sonic Riders and Star Fox Adventures are very sensitive to the logical file position, so you should test those.

Well the good thing about compression is that you can apply it on top of your pre-existing image, so yes the idea of scrubbing+compressing should indeed provide a much more lossless approach.

@Extrems
Copy link

Extrems commented Sep 17, 2023

The NKit format is perfectly reversible to the original disc image. Retaining the original offsets only really matter for disc read speed emulation.

@60fpshacksrock
Copy link

60fpshacksrock commented Sep 26, 2023

USB Loader GX needs will need to be updated, as it freezes shortly after reading folders with JISO's. Then again it might just be me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants