Fix Unity 2021
This commit is contained in:
@@ -59,7 +59,7 @@ module Mikunyan
|
|||||||
@unity_version = br.cstr
|
@unity_version = br.cstr
|
||||||
@generator_version = br.cstr
|
@generator_version = br.cstr
|
||||||
|
|
||||||
@format < 6 ? load_unity_raw(br) : load_unity_fs(br)
|
@format == 6 || @signature == 'UnityFS' ? load_unity_fs(br, @signature) : load_unity_raw(br)
|
||||||
end
|
end
|
||||||
|
|
||||||
# @param [Mikunyan::BinaryReader] br
|
# @param [Mikunyan::BinaryReader] br
|
||||||
@@ -86,18 +86,22 @@ module Mikunyan
|
|||||||
end
|
end
|
||||||
|
|
||||||
# @param [Mikunyan::BinaryReader] br
|
# @param [Mikunyan::BinaryReader] br
|
||||||
def load_unity_fs(br)
|
def load_unity_fs(br, signature)
|
||||||
file_size = br.i64u
|
file_size = br.i64u
|
||||||
ci_block_size = br.i32u
|
ci_block_size = br.i32u
|
||||||
ui_block_size = br.i32u
|
ui_block_size = br.i32u
|
||||||
flags = br.i32u
|
flags = br.i32u
|
||||||
|
|
||||||
|
br.adv(1) unless signature == 'UnityFS'
|
||||||
|
|
||||||
br.align(16) if @format >= 7
|
br.align(16) if @format >= 7
|
||||||
|
|
||||||
head_bin = flags & 0x80 == 0 ? br.read(ci_block_size) : br.read_abs(ci_block_size, file_size - ci_block_size)
|
head_bin = flags & 0x80 == 0 ? br.read(ci_block_size) : br.read_abs(ci_block_size, file_size - ci_block_size)
|
||||||
head = BinaryReader.new(uncompress(head_bin, ui_block_size, flags))
|
head = BinaryReader.new(uncompress(head_bin, ui_block_size, flags))
|
||||||
@guid = head.read(16)
|
@guid = head.read(16)
|
||||||
|
|
||||||
|
br.align(16) unless flags & 0x200 == 0
|
||||||
|
|
||||||
block_count = head.i32u
|
block_count = head.i32u
|
||||||
raw_data = Array.new(block_count) do
|
raw_data = Array.new(block_count) do
|
||||||
u_size = head.i32u
|
u_size = head.i32u
|
||||||
|
|||||||
Reference in New Issue
Block a user