Fixed Mixer erroring on CRC's shorter than 8 characters long, hardcoded crc string for .w3dhub.patch

This commit is contained in:
2021-12-01 19:49:25 -06:00
parent 74a2ca652b
commit ade951f87c
2 changed files with 5 additions and 3 deletions

View File

@@ -525,7 +525,7 @@ class W3DHub
system("#{W3DHub.tar_command} -xf \"#{package_path}\" -C \"#{temp_path}\"")
puts " Loading #{temp_path}/#{manifest_file.name}.patch..."
patch_mix = W3DHub::Mixer::Reader.new(file_path: "#{temp_path}/#{manifest_file.name}.patch", ignore_crc_mismatches: true)
patch_mix = W3DHub::Mixer::Reader.new(file_path: "#{temp_path}/#{manifest_file.name}.patch", ignore_crc_mismatches: false)
patch_info = JSON.parse(patch_mix.package.files.find { |f| f.name == ".w3dhub.patch" || f.name == ".bhppatch" }.data, symbolize_names: true)
repaired_path = "#{path}/#{manifest_file.name}"
@@ -533,7 +533,7 @@ class W3DHub
repaired_path = "#{path}/#{manifest_file.name.sub('data', 'Data')}" unless File.exist?(repaired_path) && path
puts " Loading #{repaired_path}..."
target_mix = W3DHub::Mixer::Reader.new(file_path: repaired_path, ignore_crc_mismatches: true)
target_mix = W3DHub::Mixer::Reader.new(file_path: repaired_path, ignore_crc_mismatches: false)
puts " Removing files..." if patch_info[:removedFiles].size.positive?
patch_info[:removedFiles].each do |file|

View File

@@ -162,7 +162,7 @@ class W3DHub
file_count.times do |i|
file = @package.files[i]
file.mix_crc = read_u32.to_s(16)
file.mix_crc = read_u32.to_s(16).rjust(8, "0")
file.content_offset = read_u32
file.content_length = read_u32
@@ -301,6 +301,8 @@ class W3DHub
end
def file_crc
return "e6fe46b8" if @name.downcase == ".w3dhub.patch"
Digest::CRC32.hexdigest(@name.upcase)
end