Difference between revisions of "Talk:IMG archive"
Jump to navigation
Jump to search
(→SA - Streaming size/archive size: new section) |
|||
Line 2: | Line 2: | ||
Why is it thought that there are two sizes in each directory entry? To me, the fact that the second size is always zero suggests that the two 2-byte size values are actually just one 4-byte value. If you read a 4-byte value there, you always get the same number as you would get by reading the first 2-byte value (by virtue of the fact that the second 2 bytes are always 0). Additionally, it would make sense for Rockstar to have used a <code>uint32_t</code> for the size, because they used one for the offset. All my tools use a <code>uint32_t</code> here and it has never caused any issues. – [[User:Squ1dd13|Squ1dd13]] ([[User talk:Squ1dd13|talk]]) 20:37, 29 October 2020 (UTC) | Why is it thought that there are two sizes in each directory entry? To me, the fact that the second size is always zero suggests that the two 2-byte size values are actually just one 4-byte value. If you read a 4-byte value there, you always get the same number as you would get by reading the first 2-byte value (by virtue of the fact that the second 2 bytes are always 0). Additionally, it would make sense for Rockstar to have used a <code>uint32_t</code> for the size, because they used one for the offset. All my tools use a <code>uint32_t</code> here and it has never caused any issues. – [[User:Squ1dd13|Squ1dd13]] ([[User talk:Squ1dd13|talk]]) 20:37, 29 October 2020 (UTC) | ||
+ | :Game reads this as uint16. | ||
+ | |||
+ | <pre> | ||
+ | .text:005B61E6 058 movzx eax, word ptr [esp+60] ; streaming size | ||
+ | .text:005B61EB 058 mov ecx, CStreaming__ms_streamingBufferSize | ||
+ | .text:005B61F1 058 add esp, 0Ch | ||
+ | .text:005B61F4 04C cmp eax, ecx | ||
+ | .text:005B61F6 04C jle short loc_5B61FD | ||
+ | .text:005B61F8 04C mov CStreaming__ms_streamingBufferSize, eax | ||
+ | </pre> | ||
+ | |||
+ | [[User:Seemann|Seemann]] ([[User talk:Seemann|talk]]) 18:55, 31 October 2020 (UTC) |
Revision as of 18:56, 31 October 2020
SA - Streaming size/archive size
Why is it thought that there are two sizes in each directory entry? To me, the fact that the second size is always zero suggests that the two 2-byte size values are actually just one 4-byte value. If you read a 4-byte value there, you always get the same number as you would get by reading the first 2-byte value (by virtue of the fact that the second 2 bytes are always 0). Additionally, it would make sense for Rockstar to have used a uint32_t
for the size, because they used one for the offset. All my tools use a uint32_t
here and it has never caused any issues. – Squ1dd13 (talk) 20:37, 29 October 2020 (UTC)
- Game reads this as uint16.
.text:005B61E6 058 movzx eax, word ptr [esp+60] ; streaming size .text:005B61EB 058 mov ecx, CStreaming__ms_streamingBufferSize .text:005B61F1 058 add esp, 0Ch .text:005B61F4 04C cmp eax, ecx .text:005B61F6 04C jle short loc_5B61FD .text:005B61F8 04C mov CStreaming__ms_streamingBufferSize, eax