Skip to content
Snippets Groups Projects
manager.hpp 497 B
Newer Older
#pragma once
#include <memory>
Geo Ster's avatar
Geo Ster committed
#include <vector>
#include <cpu/ee.hpp>

/* This class act as the "motherboard" of sorts */
class ComponentManager {
public:
    ComponentManager();
Geo Ster's avatar
Geo Ster committed
    ~ComponentManager();
Geo Ster's avatar
Geo Ster committed
    void tick();
    /* Memory operations */
    template <typename T>
Geo Ster's avatar
Geo Ster committed
    T read(uint32_t addr);

    template <typename T>
Geo Ster's avatar
Geo Ster committed
    void write(uint32_t addr, T data);
protected:
    void read_bios();

public:
    /* Components */
    std::unique_ptr<EmotionEngine> ee;
Geo Ster's avatar
Geo Ster committed
    uint8_t* memory;