#pragma once
#include <PSX/GPU/gpu_types.hpp>

namespace JabyEngine {    
    struct DefaultConfiguration {
        struct BIOSFont {
            static constexpr GPU::PositionU16 texture_load_pos() {
                return GPU::PositionU16::create(320, 256);
            }

            static constexpr GPU::PositionU16 CLUT_load_pos() {
                return GPU::PositionU16::create(320, 511);
            }
        };

        static constexpr auto DisplayDefaultOffset = GPU::PositionI16::create(0, 0);

        struct Periphery {
            static constexpr bool include_portB() {
                return false;
            }

            static constexpr bool use_multi_tap(){
                return false;
            }
        };
    };

    #if __has_include(<jabyengine_custom_config.hpp>)
        #include <jabyengine_custom_config.hpp>
        using Configuration = CustomConfiguration;
    #else
        using Configuration = DefaultConfiguration;
        #define __SUPPORT_PS3__
        #define __DEBUG_SPU_MMU__
    #endif // has jabyengine_custom_config
}