LucaCorigliano / hacbuild

Build Nintendo Switch XCI and HFS0 files
MIT License
50 stars 8 forks source link

Randomly get this error when trying to pack xci, sometimes it works some times it does not. #5

Closed GhostlyCrowd closed 6 years ago

GhostlyCrowd commented 6 years ago

Unhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32. at System.Convert.ToUInt32(Double value) at hacbuild.HFS0Manager.BuildHFS0(String inDir, String outFile) at hacbuild.Program.Main(String[] args)

LucaCorigliano commented 6 years ago

The latest commit ( cf1427d ) should fix this issue. Try to recompile and test.

GhostlyCrowd commented 6 years ago

Thanks, I'll have to wait until next week or next release to test, I've left for the long weekend and my build environment is not with me.

If you want to compile a test build and send it to me I can test if you do not want to make another release yet as this is untested.

GhostlyCrowd commented 6 years ago

Had a coworker copile and send it to me. New Error

Unhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32. at System.Convert.ToUInt32(UInt64 value) at hacbuild.HFS0Manager.BuildHFS0(String inDir, String outFile) at hacbuild.Program.Main(String[] args)

LucaCorigliano commented 6 years ago

I've pushed another attempt at fixing it. I've also uploaded a prebuilt binary

GhostlyCrowd commented 6 years ago

Alright so this one got further, it spend a good 15 minutes rebuilding a 16gb xci. and then crashed and threw this error Looks like it may have finished making the secure part of the xci.

Unhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32. at System.Convert.ToUInt32(Double value) at hacbuild.HFS0Manager.BuildHFS0(String inDir, String outFile) at hacbuild.Program.Main(String[] args)

The previous errors would happen immediately.

GhostlyCrowd commented 6 years ago

Alright, so it looks like its an issue in the "Fill Padding" area of HFS0Manager.cs But i'm not to handy in C# so i don't know how to fix it. But i was able to build and debug and have it halt when it hit the error.

Edit: Just saw your other commit.

GhostlyCrowd commented 6 years ago

I can confirm the latest commit has fixed this issue fully.

TheExpertNoob commented 6 years ago

Tested on the release 1.0.0.1 Issue #5 fix with BotW cart dump. Hate to be the guy that pops in and says:

When building hfs0: Unhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32. at System.Convert.ToUInt32(Double value) at hacbuild.HFS0Manager.BuildHFS0(String inDir, String outFile) at hacbuild.Program.Main(String[] args)

When building xci Unhandled Exception: System.OverflowException: Value was either too large or too small for a UInt32. at System.Convert.ToUInt32(UInt64 value) at hacbuild.XCIManager.BuildXCI(String inDir, String outFile) at hacbuild.Program.Main(String[] args)

While running from my batch script and also, does it manually.

Batch file for reference.


for /r %%i in (*.xci) do (
if not exist "%CD%\%%~ni" (
mkdir "%CD%\%%~ni"
mkdir "%CD%\%%~ni_secure"
)
hacbuild read xci %%i
move %%~ni.ini "%CD%\%%~ni\game_info.ini"
hactool -txci --securedir="%CD%\%%~ni_secure" %%i
hacbuild hfs0 "%CD%\%%~ni_secure" "%CD%\%%~ni\root.hfs0"
hacbuild xci "%CD%\%%~ni" %%ni_trimmed
)````