Verify basic usage of FileProcessor

This commit is contained in:
Jaby 2022-10-01 22:40:40 +02:00
parent 01a2f6134f
commit 949c502d5d
3 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,27 @@
#ifndef __JABYENGINE_FILE_PROCESSOR_HPP__
#define __JABYENGINE_FILE_PROCESSOR_HPP__
#include "../File_Types.hpp"
namespace FileProcessor {
class State {
private:
struct Reserved {
uint32_t _reserved[2] = {0};
};
typedef bool (*ProcessRoutine)(uint32_t*, size_t, Reserved&);
private:
ProcessRoutine process_adr = nullptr;
Reserved reserved;
public:
bool process(uint32_t* data, size_t size) {
return (*this->process_adr)(data, size, this->reserved);
}
};
State create(const SimpleTIM& file);
}
#endif // !__JABYENGINE_FILE_PROCESSOR_HPP__

View File

@ -1,4 +1,5 @@
#include "../../include/GPU/GPU.h"
#include <PSX/File/Processor/File_Processor.hpp>
#include <PSX/GPU/GPU.h>
namespace GPU {
@ -33,6 +34,10 @@ namespace GPU {
//DMA End
Display::enable();
//For now
auto state = FileProcessor::create(SimpleTIM(0, 0, 0, 0));
while(state.process(nullptr, 0ull));
}
void setup() {

View File

@ -0,0 +1,29 @@
#define private public
#include <PSX/File/Processor/File_Processor.hpp>
#include <stdio.h>
namespace FileProcessor {
union SimpleTIMState {
State::Reserved _reserved;
struct {
uint32_t test;
};
constexpr SimpleTIMState(uint32_t test = 0) : test(test) {
}
};
static_assert(sizeof(SimpleTIMState) <= sizeof(State::Reserved));
static bool process(uint32_t*, size_t, SimpleTIMState &state) {
printf("Dino: %i\n", state.test);
return false;
}
State create(const SimpleTIM& file) {
SimpleTIMState test(123);
return State{.process_adr = reinterpret_cast<State::ProcessRoutine>(process), .reserved = test._reserved};
}
}
#undef private