From e2d23323683a410b99a2cc886ea3ade9f12d0ea8 Mon Sep 17 00:00:00 2001 From: Jaby Date: Thu, 29 Dec 2022 13:25:48 +0100 Subject: [PATCH] Make LZ4 Decompressor return a state value --- include/PSX/Auxiliary/lz4_decompressor.hpp | 21 ++++++++++++++----- .../src/Auxiliary/lz4_decompressor.cpp | 4 ++-- src/Library/src/BootLoader/gpu_boot.cpp | 12 ++++++----- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/include/PSX/Auxiliary/lz4_decompressor.hpp b/include/PSX/Auxiliary/lz4_decompressor.hpp index 07d5c1f7..b7c03918 100644 --- a/include/PSX/Auxiliary/lz4_decompressor.hpp +++ b/include/PSX/Auxiliary/lz4_decompressor.hpp @@ -6,10 +6,21 @@ namespace JabyEngine { class LZ4Decompressor { public: - enum struct Result { - InProgress = 0, - Done, - Error + struct Result { + Progress progress; + size_t bytes_ready; + + static constexpr Result new_error() { + return {Progress::Error, 0}; + } + + static constexpr Result new_done(size_t bytes_ready) { + return {Progress::Done, bytes_ready}; + } + + static constexpr Result new_in_progress(size_t bytes_ready) { + return {Progress::InProgress, bytes_ready}; + } }; private: @@ -28,7 +39,7 @@ namespace JabyEngine { void setup(uint8_t* dst_adr); void reset(); - Progress process(const uint8_t* data, size_t size); + Result process(const uint8_t* data, size_t size); }; } diff --git a/src/Library/src/Auxiliary/lz4_decompressor.cpp b/src/Library/src/Auxiliary/lz4_decompressor.cpp index f2069eb8..6f104f78 100644 --- a/src/Library/src/Auxiliary/lz4_decompressor.cpp +++ b/src/Library/src/Auxiliary/lz4_decompressor.cpp @@ -10,10 +10,10 @@ namespace JabyEngine { } - Progress LZ4Decompressor :: process(const uint8_t* data, size_t size) { + LZ4Decompressor::Result LZ4Decompressor :: process(const uint8_t* data, size_t size) { for(size_t n = 0; n < size; n++) { this->dst_adr[n] = data[n]; } - return Progress::Error; + return Result::new_error(); } } \ No newline at end of file diff --git a/src/Library/src/BootLoader/gpu_boot.cpp b/src/Library/src/BootLoader/gpu_boot.cpp index 655a8992..384a4198 100644 --- a/src/Library/src/BootLoader/gpu_boot.cpp +++ b/src/Library/src/BootLoader/gpu_boot.cpp @@ -14,10 +14,11 @@ extern "C" uint32_t __boot_loader_end; namespace JabyEngine { namespace GPU { - static void decompress_logo() { + static size_t decompress_logo() { LZ4Decompressor lz4_decomp(reinterpret_cast(&__boot_loader_end)); - switch(lz4_decomp.process(SplashScreen, sizeof(SplashScreen))) { + const auto [progress, bytes_ready] = lz4_decomp.process(SplashScreen, sizeof(SplashScreen)); + switch(progress) { case Progress::InProgress: printf("Decompressing still in progress...\n"); break; @@ -30,15 +31,16 @@ namespace JabyEngine { printf("Done decompressing\n"); break; } + + return bytes_ready; } void display_logo() { - decompress_logo(); + const auto bytes_ready = decompress_logo(); // Upload SplashScreen picture auto state = FileProcessor::create(&__boot_loader_end, SimpleTIM(32, 0, 0, 0)); - // v this will not be correct for now... - while(state.process((sizeof(SplashScreen)/sizeof(uint32_t))) == Progress::InProgress); + while(state.process((bytes_ready/sizeof(uint32_t))) == Progress::InProgress); Display::enable(); }