mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-17 12:03:07 +01:00
Remove unused sawyercoding functions
This commit is contained in:
@@ -40,111 +40,6 @@ uint32 sawyercoding_calculate_checksum(const uint8* buffer, size_t length)
|
||||
return checksum;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x00676FD2
|
||||
*/
|
||||
sint32 sawyercoding_validate_checksum(SDL_RWops* rw)
|
||||
{
|
||||
size_t i, dataSize;
|
||||
uint32 checksum, fileChecksum;
|
||||
uint8 buffer[1024];
|
||||
|
||||
// Get data size
|
||||
SDL_RWseek(rw, 0, RW_SEEK_END);
|
||||
// for whatever the reason, SDL_RWtell return Sint64 instead of size_t.
|
||||
dataSize = (size_t)SDL_RWtell(rw);
|
||||
if (dataSize < 8)
|
||||
return 0;
|
||||
dataSize -= 4;
|
||||
|
||||
// Calculate checksum
|
||||
SDL_RWseek(rw, 0, RW_SEEK_SET);
|
||||
checksum = 0;
|
||||
do {
|
||||
size_t bufferSize = min(dataSize, 1024);
|
||||
if (SDL_RWread(rw, buffer, bufferSize, 1) != 1)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < bufferSize; i++)
|
||||
checksum += buffer[i];
|
||||
dataSize -= bufferSize;
|
||||
} while (dataSize != 0);
|
||||
|
||||
// Read file checksum
|
||||
if (SDL_RWread(rw, &fileChecksum, sizeof(fileChecksum), 1) != 1)
|
||||
return 0;
|
||||
|
||||
// Reset file position
|
||||
SDL_RWseek(rw, 0, RW_SEEK_SET);
|
||||
|
||||
// Validate
|
||||
return checksum == fileChecksum;
|
||||
}
|
||||
|
||||
bool sawyercoding_read_chunk_safe(SDL_RWops *rw, void *dst, size_t dstLength)
|
||||
{
|
||||
// Allocate 16 MB to store uncompressed data
|
||||
uint8 *tempBuffer = malloc(16 * 1024 * 1024);
|
||||
size_t uncompressedLength = sawyercoding_read_chunk_with_size(rw, tempBuffer, 16 * 1024 * 1024);
|
||||
if (uncompressedLength == SIZE_MAX) {
|
||||
free(tempBuffer);
|
||||
return false;
|
||||
} else {
|
||||
memcpy(dst, tempBuffer, min(dstLength, uncompressedLength));
|
||||
free(tempBuffer);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
bool sawyercoding_skip_chunk(SDL_RWops *rw)
|
||||
{
|
||||
// Read chunk header
|
||||
sawyercoding_chunk_header chunkHeader;
|
||||
if (SDL_RWread(rw, &chunkHeader, sizeof(sawyercoding_chunk_header), 1) != 1) {
|
||||
log_error("Unable to read chunk header!");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Skip chunk data
|
||||
SDL_RWseek(rw, chunkHeader.length, RW_SEEK_CUR);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0067685F
|
||||
* buffer (esi)
|
||||
*/
|
||||
size_t sawyercoding_read_chunk_with_size(SDL_RWops* rw, uint8 *buffer, const size_t buffer_size)
|
||||
{
|
||||
sawyercoding_chunk_header chunkHeader;
|
||||
|
||||
// Read chunk header
|
||||
if (SDL_RWread(rw, &chunkHeader, sizeof(sawyercoding_chunk_header), 1) != 1) {
|
||||
log_error("Unable to read chunk header!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
uint8* src_buffer = malloc(chunkHeader.length);
|
||||
if (src_buffer == NULL) {
|
||||
log_error("Unable to read chunk data!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Read chunk data
|
||||
if (SDL_RWread(rw, src_buffer, chunkHeader.length, 1) != 1) {
|
||||
free(src_buffer);
|
||||
log_error("Unable to read chunk data!");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Decode chunk data
|
||||
size_t data_size = sawyercoding_read_chunk_buffer(buffer, src_buffer, chunkHeader, buffer_size);
|
||||
free(src_buffer);
|
||||
return data_size;
|
||||
}
|
||||
|
||||
size_t sawyercoding_read_chunk_buffer(uint8 *dst_buffer, const uint8 *src_buffer, sawyercoding_chunk_header chunkHeader, size_t dst_buffer_size) {
|
||||
switch (chunkHeader.encoding) {
|
||||
case CHUNK_ENCODING_NONE:
|
||||
|
||||
@@ -49,11 +49,7 @@ enum {
|
||||
FILE_TYPE_SC4 = (2 << 2)
|
||||
};
|
||||
|
||||
sint32 sawyercoding_validate_checksum(SDL_RWops* rw);
|
||||
uint32 sawyercoding_calculate_checksum(const uint8* buffer, size_t length);
|
||||
bool sawyercoding_read_chunk_safe(SDL_RWops *rw, void *dst, size_t dstLength);
|
||||
bool sawyercoding_skip_chunk(SDL_RWops *rw);
|
||||
size_t sawyercoding_read_chunk_with_size(SDL_RWops* rw, uint8 *buffer, const size_t buffer_size);
|
||||
size_t sawyercoding_read_chunk_buffer(uint8 *dst_buffer, const uint8 *src_buffer, sawyercoding_chunk_header chunkHeader, size_t dst_buffer_size);
|
||||
size_t sawyercoding_write_chunk_buffer(uint8 *dst_file, const uint8 *src_buffer, sawyercoding_chunk_header chunkHeader);
|
||||
size_t sawyercoding_decode_sv4(const uint8 *src, uint8 *dst, size_t length, size_t bufferLength);
|
||||
|
||||
Reference in New Issue
Block a user