Remove Overlayhader and support loading overlays

This commit is contained in:
Jaby Blubb
2023-04-10 17:01:28 +02:00
parent c37a011b9a
commit 12e1b54ce9
8 changed files with 47 additions and 65 deletions

View File

@@ -3,22 +3,27 @@
#include <stdio.h>
namespace JabyEngine {
static constexpr auto NormalCircularBufferSize = 5;
static constexpr auto NormalCircularBufferSize = 5;
static constexpr auto DisabledCircularBufferSize = 512;
void CDFileProcessor :: start_cur_job() {
using CD::internal::FileInfo;
using CD::internal::SectorBufferAllocator;
const auto configurate_for = [this](const CDFile& file) {
const auto disable_lz4 = [this](uint32_t* work_area, size_t size) -> uint32_t* {
uint8_t* dst_adr = reinterpret_cast<uint8_t*>(this->circular_buffer.setup(reinterpret_cast<CD_IO::DataSector*>(work_area), size));
const auto disable_lz4 = [this](uint32_t* work_area, size_t size, uint32_t* overwrite_dst = nullptr) -> uint32_t* {
uint8_t*const dst_adr = reinterpret_cast<uint8_t*>(this->circular_buffer.setup(reinterpret_cast<CD_IO::DataSector*>(work_area), size));
this->lz4_decomp.disable();
return reinterpret_cast<uint32_t*>(dst_adr);
return overwrite_dst ? overwrite_dst : reinterpret_cast<uint32_t*>(dst_adr);
};
const auto enable_lz4 = [this](uint32_t* work_area, size_t size) -> uint32_t* {
const auto enable_lz4 = [this](uint32_t* work_area, size_t size, uint32_t* override_dst = nullptr) -> uint32_t* {
uint8_t* dst_adr = reinterpret_cast<uint8_t*>(this->circular_buffer.setup(reinterpret_cast<CD_IO::DataSector*>(work_area), size));
if(override_dst) {
dst_adr = reinterpret_cast<uint8_t*>(override_dst);
}
this->lz4_decomp.setup(dst_adr);
return reinterpret_cast<uint32_t*>(dst_adr);
};
@@ -31,6 +36,10 @@ namespace JabyEngine {
case CDFileType::CopyTo:
this->file_state = FileProcessor::create(disable_lz4(file.payload.copy_to.dst, 512), Nothing());
break;
case CDFileType::Overlay:
this->file_state = FileProcessor::create(enable_lz4(this->tmp_area, NormalCircularBufferSize, file.payload.overlay.dst), Nothing());
break;
}
};