Fix image conversion and CLUT placement

This commit is contained in:
2023-05-01 22:37:41 +02:00
parent 904509a65e
commit 513275fba8
6 changed files with 50 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
#ifndef __JABYENGINE_FILE_TYPES_HPP__
#define __JABYENGINE_FILE_TYPES_HPP__
#include "../Auxiliary/bits.hpp"
#include "../GPU/gpu_types.hpp"
#include "../jabyengine_defines.h"
namespace JabyEngine {
@@ -19,24 +20,32 @@ namespace JabyEngine {
this->raw = 0;
}
constexpr SimpleTIM(uint16_t texX, uint16_t texY, uint16_t clutX, uint16_t clutY) : raw(TextureX.as_value(texX >> 1) | TextureY.as_value(texY >> 1) | ClutX.as_value(clutX >> 4) | ClutY.as_value(clutY)) {
constexpr SimpleTIM(uint16_t texX, uint16_t texY, uint16_t clutX, uint16_t clutY) : raw(TextureX.as_value(texX >> 1) | TextureY.as_value(texY >> 1) | ClutX.as_value(clutX >> 4) | ClutY.as_value(static_cast<uint32_t>(clutY))) {
}
constexpr uint16_t getTextureX() const {
constexpr uint16_t get_texture_x() const {
return bit::value::get_normalized(this->raw, TextureX) << 1;
}
constexpr uint16_t getTextureY() const {
constexpr uint16_t get_texture_y() const {
return bit::value::get_normalized(this->raw, TextureY) << 1;
}
constexpr uint16_t getClutX() const {
constexpr GPU::PositionU16 get_texture_position() const {
return {SimpleTIM::get_texture_x(), SimpleTIM::get_texture_y()};
}
constexpr uint16_t get_clut_x() const {
return bit::value::get_normalized(this->raw, SimpleTIM::ClutX) << 4;
}
constexpr uint16_t getClutY() const {
constexpr uint16_t get_clut_y() const {
return bit::value::get_normalized(this->raw, ClutY);
}
constexpr GPU::PositionU16 get_clut_position() const {
return {SimpleTIM::get_clut_x(), SimpleTIM::get_clut_y()};
}
};
struct __no_align CopyTo {