#pragma once
#include <PSX/File/cd_file_types.hpp>

namespace Assets {
    using namespace JabyEngine;

    namespace Main {
        struct ImageInfo {
            SimpleTIM    tim;
            GPU::SizeI16 size;
        };

        static constexpr auto PacoTIM        = SimpleTIM::create(896, 0, 960, 510);
        static constexpr auto DoenerFishInfo = ImageInfo{
            .tim  = SimpleTIM::create(896 + 30, 0, 960 + 16, 510),
            .size = GPU::SizeI16::create(128, 64)
        };

        namespace JabyLoader {
            static constexpr auto TIMLoaction = SimpleTIM::create(PacoTIM.get_texture_x(), PacoTIM.get_texture_y() + 128, 960 + 48, 510);
            static constexpr auto JabyFrame   = GPU::AreaI16::create(0,  0,  32, 44);
            static constexpr auto FontFrame   = GPU::AreaI16::create(0, 45, 186, 32);
        };
        
        void load();
    }

    namespace Overlay {
        void load_bios_info();
        void load_controller_test();
        void load_gpu_test();
        void load_large_gpu_test();
        void load_gte_test();
        void load_font_cycler();
        void load_screen_center();
    }

    namespace XAAudio {
        void play_mix();
    }
}