diff --git a/include/PSX/Auxiliary/complex_bitmap.hpp b/include/PSX/Auxiliary/complex_bitmap.hpp index 725d8176..5a734067 100644 --- a/include/PSX/Auxiliary/complex_bitmap.hpp +++ b/include/PSX/Auxiliary/complex_bitmap.hpp @@ -134,12 +134,12 @@ public: } template - constexpr S get_value(const BitRange& range) { + constexpr S get_value(const BitRange& range) const { return static_cast(bit::value::get_normalized(this->raw, range.begin, range.length)); } template - constexpr S get_value(const BitRange& range) volatile { + constexpr S get_value(const BitRange& range) const volatile { return static_cast(bit::value::get_normalized(this->raw, range.begin, range.length)); } diff --git a/include/PSX/File/File_Types.hpp b/include/PSX/File/File_Types.hpp new file mode 100644 index 00000000..8452c396 --- /dev/null +++ b/include/PSX/File/File_Types.hpp @@ -0,0 +1,33 @@ +#ifndef __JABYENGINE_FILE_TYPES_HPP__ +#define __JABYENGINE_FILE_TYPES_HPP__ +#include "../Auxiliary/complex_bitmap.hpp" +#include "../jabyengine_defines.h" + +struct __no_align SimpleTIM : private ComplexBitMap { + static constexpr auto TextureX = BitRange(0, 8); + static constexpr auto TextureY = BitRange(9, 16); + static constexpr auto ClutX = BitRange(17, 22); + static constexpr auto ClutY = BitRange(23, 31); + + constexpr SimpleTIM(uint16_t texX, uint16_t texY, uint16_t clutX, uint16_t clutY) : ComplexBitMap(ComplexBitMap::with(TextureX.with(texX), TextureY.with(texY), ClutX.with(clutX), ClutY.with(clutY))) { + } + + constexpr uint16_t getTextureX() const { + return ComplexBitMap::get_value(SimpleTIM::TextureX); + } + + constexpr uint16_t getTextureY() const { + return ComplexBitMap::get_value(SimpleTIM::TextureY); + } + + constexpr uint16_t getClutX() const { + return ComplexBitMap::get_value(SimpleTIM::ClutX); + } + + constexpr uint16_t getClutY() const { + return ComplexBitMap::get_value(SimpleTIM::ClutY); + } +}; + + +#endif // !__JABYENGINE_FILE_TYPES_HPP__ \ No newline at end of file