LemonHaze420 / wudecon

A multi-purpose tool built with ShenmueDKSharp to convert/unpack a variety of file formats used in Shenmue I and Shenmue II.
14 stars 3 forks source link

Output char buffer is too small to contain the decoded characters #1

Closed MrCruesliPants closed 4 years ago

MrCruesliPants commented 4 years ago

Thank you for providing this tool, @LemonHaze420. Sadly, I can't seem to get it to work. Any input/help would be super appreciated.

The command I used is C:\Users\fh\home\textures_w10-attempt\tools\wudecon_v1.0.7061.27731_windebug>.\wudecon.exe -tacfullv "C:\sm12\sm2\archives\dx11\data\disk_5b69b410.tac" "C:\output_a" "C:\output_b" mt7

The output I got is

Oops! C:\sm12\sm2\archives\dx11\data\disk_5b69b410.tac failed!
Exception: System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderReplacementFallback'.
Parameter name: chars
   at System.Text.Encoding.ThrowCharsOverflow()
   at System.Text.Encoding.ThrowCharsOverflow(DecoderNLS decoder, Boolean nothingDecoded)
   at System.Text.UTF8Encoding.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, DecoderNLS baseDecoder)
   at System.Text.DecoderNLS.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, Boolean flush)
   at System.IO.BinaryReader.InternalReadChars(Char[] buffer, Int32 index, Int32 count)
   at System.IO.BinaryReader.Read(Char[] buffer, Int32 index, Int32 count)
   at ShenmueDKSharp.Files.Containers.TAD._Read(BinaryReader reader) in E:\_repo\wudecon\ShenmueDKSharp\Files\Containers\TAD.cs:line 85
   at ShenmueDKSharp.Files.BaseFile.Read(BinaryReader reader) in E:\_repo\wudecon\ShenmueDKSharp\Files\BaseFile.cs:line 87
   at ShenmueDKSharp.Files.BaseFile.Read(Stream stream) in E:\_repo\wudecon\ShenmueDKSharp\Files\BaseFile.cs:line 77
   at ShenmueDKSharp.Files.BaseFile.Read(String filepath) in E:\_repo\wudecon\ShenmueDKSharp\Files\BaseFile.cs:line 66
   at ShenmueDKSharp.Files.Containers.TAD..ctor(String filepath) in E:\_repo\wudecon\ShenmueDKSharp\Files\Containers\TAD.cs:line 60
   at wudecon.Program.ExtractTAC(String tadFilepath, String folder) in E:\_repo\wudecon\wudecon\Program.cs:line 776
Processing GZ..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing GZ!
Processing AFS..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing AFS!
Processing IPAC..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing IPAC!
Processing SPR..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing SPR!
Processing PKF..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing PKF!
Processing PKS..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing PKS!
Processing MT7..
C:\output_a does not exist as a file, falling back to batch mode.
Finished processing MT7!
Completed 0/0 operations.

Any ideas? Thank you!

LemonHaze420 commented 4 years ago

As someone previously stated, you are not using the command properly. You need to supply the TAD file for the first argument with the --tacfull mode.

wudecon --tacfull <tad file> <tac output dir> <model output dir> <mt5/mt7>

MrCruesliPants commented 4 years ago

Indeed, thank you very much for the helpful comments, it worked!