Remove Overlayhader and support loading overlays
This commit is contained in:
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user