Refactor SnesPalette and PaletteGroup, fix bug with group names
This commit is contained in:
@@ -60,8 +60,9 @@ constexpr int kOverworldPaletteAux = 0xDE86C;
|
|||||||
constexpr int kOverworldPaletteAnimated = 0xDE604;
|
constexpr int kOverworldPaletteAnimated = 0xDE604;
|
||||||
constexpr int kGlobalSpritesLW = 0xDD218;
|
constexpr int kGlobalSpritesLW = 0xDD218;
|
||||||
constexpr int kGlobalSpritePalettesDW = 0xDD290;
|
constexpr int kGlobalSpritePalettesDW = 0xDD290;
|
||||||
constexpr int kArmorPalettes =
|
|
||||||
0xDD308; /** < Green, Blue, Red, Bunny, Electrocuted (15 colors each) */
|
/** < Green, Blue, Red, Bunny, Electrocuted (15 colors each) */
|
||||||
|
constexpr int kArmorPalettes = 0xDD308;
|
||||||
constexpr int kSpritesPalettesAux1 = 0xDD39E; // 7 colors each
|
constexpr int kSpritesPalettesAux1 = 0xDD39E; // 7 colors each
|
||||||
constexpr int kSpritesPalettesAux2 = 0xDD446; // 7 colors each
|
constexpr int kSpritesPalettesAux2 = 0xDD446; // 7 colors each
|
||||||
constexpr int kSpritesPalettesAux3 = 0xDD4E0; // 7 colors each
|
constexpr int kSpritesPalettesAux3 = 0xDD4E0; // 7 colors each
|
||||||
@@ -69,8 +70,9 @@ constexpr int kSwordPalettes = 0xDD630; // 3 colors each - 4 entries
|
|||||||
constexpr int kShieldPalettes = 0xDD648; // 4 colors each - 3 entries
|
constexpr int kShieldPalettes = 0xDD648; // 4 colors each - 3 entries
|
||||||
constexpr int kHudPalettes = 0xDD660;
|
constexpr int kHudPalettes = 0xDD660;
|
||||||
constexpr int kDungeonMapPalettes = 0xDD70A; // 21 colors
|
constexpr int kDungeonMapPalettes = 0xDD70A; // 21 colors
|
||||||
constexpr int kDungeonMainPalettes =
|
|
||||||
0xDD734; // (15*6) colors each - 20 entries
|
// (15*6) colors each - 20 entries
|
||||||
|
constexpr int kDungeonMainPalettes = 0xDD734;
|
||||||
constexpr int kDungeonMapBgPalettes = 0xDE544; // 16*6
|
constexpr int kDungeonMapBgPalettes = 0xDE544; // 16*6
|
||||||
|
|
||||||
// Mirrored Value at 0x75645 : 0x75625
|
// Mirrored Value at 0x75645 : 0x75625
|
||||||
@@ -80,9 +82,9 @@ constexpr int kHardcodedGrassSpecial = 0x75640;
|
|||||||
constexpr int kOverworldMiniMapPalettes = 0x55B27;
|
constexpr int kOverworldMiniMapPalettes = 0x55B27;
|
||||||
constexpr int kTriforcePalette = 0x64425;
|
constexpr int kTriforcePalette = 0x64425;
|
||||||
constexpr int kCrystalPalette = 0xF4CD3;
|
constexpr int kCrystalPalette = 0xF4CD3;
|
||||||
constexpr int CustomAreaSpecificBGPalette =
|
|
||||||
0x140000; /** < 2 bytes for each overworld area (320) */
|
|
||||||
|
|
||||||
|
/** < 2 bytes for each overworld area (320) */
|
||||||
|
constexpr int CustomAreaSpecificBGPalette = 0x140000;
|
||||||
constexpr int CustomAreaSpecificBGASM = 0x140150;
|
constexpr int CustomAreaSpecificBGASM = 0x140150;
|
||||||
|
|
||||||
// 1 byte, not 0 if enabled
|
// 1 byte, not 0 if enabled
|
||||||
@@ -125,6 +127,10 @@ class SnesPalette {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Create(std::ranges::range auto &&cols) {
|
||||||
|
std::copy(cols.begin(), cols.end(), std::back_inserter(colors));
|
||||||
|
}
|
||||||
|
|
||||||
void AddColor(const SnesColor &color) { colors.emplace_back(color); }
|
void AddColor(const SnesColor &color) { colors.emplace_back(color); }
|
||||||
void AddColor(const snes_color &color) { colors.emplace_back(color); }
|
void AddColor(const snes_color &color) { colors.emplace_back(color); }
|
||||||
void AddColor(uint16_t color) { colors.emplace_back(color); }
|
void AddColor(uint16_t color) { colors.emplace_back(color); }
|
||||||
@@ -190,6 +196,7 @@ std::array<float, 4> ToFloatArray(const SnesColor &color);
|
|||||||
*/
|
*/
|
||||||
struct PaletteGroup {
|
struct PaletteGroup {
|
||||||
PaletteGroup() = default;
|
PaletteGroup() = default;
|
||||||
|
PaletteGroup(const std::string &name) : name_(name) {}
|
||||||
|
|
||||||
void AddPalette(SnesPalette pal) { palettes.emplace_back(pal); }
|
void AddPalette(SnesPalette pal) { palettes.emplace_back(pal); }
|
||||||
|
|
||||||
@@ -201,11 +208,10 @@ struct PaletteGroup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void clear() { palettes.clear(); }
|
void clear() { palettes.clear(); }
|
||||||
void SetName(const std::string &name) { name_ = name; }
|
|
||||||
auto name() const { return name_; }
|
auto name() const { return name_; }
|
||||||
auto size() const { return palettes.size(); }
|
auto size() const { return palettes.size(); }
|
||||||
auto mutable_palette(int i) { return &palettes[i]; }
|
|
||||||
auto palette(int i) const { return palettes[i]; }
|
auto palette(int i) const { return palettes[i]; }
|
||||||
|
auto mutable_palette(int i) { return &palettes[i]; }
|
||||||
|
|
||||||
SnesPalette operator[](int i) {
|
SnesPalette operator[](int i) {
|
||||||
if (i > palettes.size()) {
|
if (i > palettes.size()) {
|
||||||
@@ -236,21 +242,21 @@ struct PaletteGroup {
|
|||||||
* get the group by name.
|
* get the group by name.
|
||||||
*/
|
*/
|
||||||
struct PaletteGroupMap {
|
struct PaletteGroupMap {
|
||||||
PaletteGroup overworld_main;
|
PaletteGroup overworld_main = {kPaletteGroupAddressesKeys[0]};
|
||||||
PaletteGroup overworld_aux;
|
PaletteGroup overworld_aux = {kPaletteGroupAddressesKeys[1]};
|
||||||
PaletteGroup overworld_animated;
|
PaletteGroup overworld_animated = {kPaletteGroupAddressesKeys[2]};
|
||||||
PaletteGroup hud;
|
PaletteGroup hud = {kPaletteGroupAddressesKeys[3]};
|
||||||
PaletteGroup global_sprites;
|
PaletteGroup global_sprites = {kPaletteGroupAddressesKeys[4]};
|
||||||
PaletteGroup armors;
|
PaletteGroup armors = {kPaletteGroupAddressesKeys[5]};
|
||||||
PaletteGroup swords;
|
PaletteGroup swords = {kPaletteGroupAddressesKeys[6]};
|
||||||
PaletteGroup shields;
|
PaletteGroup shields = {kPaletteGroupAddressesKeys[7]};
|
||||||
PaletteGroup sprites_aux1;
|
PaletteGroup sprites_aux1 = {kPaletteGroupAddressesKeys[8]};
|
||||||
PaletteGroup sprites_aux2;
|
PaletteGroup sprites_aux2 = {kPaletteGroupAddressesKeys[9]};
|
||||||
PaletteGroup sprites_aux3;
|
PaletteGroup sprites_aux3 = {kPaletteGroupAddressesKeys[10]};
|
||||||
PaletteGroup dungeon_main;
|
PaletteGroup dungeon_main = {kPaletteGroupAddressesKeys[11]};
|
||||||
PaletteGroup grass;
|
PaletteGroup grass = {kPaletteGroupAddressesKeys[12]};
|
||||||
PaletteGroup object_3d;
|
PaletteGroup object_3d = {kPaletteGroupAddressesKeys[13]};
|
||||||
PaletteGroup overworld_mini_map;
|
PaletteGroup overworld_mini_map = {kPaletteGroupAddressesKeys[14]};
|
||||||
|
|
||||||
auto get_group(const std::string &group_name) {
|
auto get_group(const std::string &group_name) {
|
||||||
if (group_name == "ow_main") {
|
if (group_name == "ow_main") {
|
||||||
@@ -408,7 +414,7 @@ struct Paletteset {
|
|||||||
* @brief Shared graphical context across editors.
|
* @brief Shared graphical context across editors.
|
||||||
*/
|
*/
|
||||||
class GfxContext {
|
class GfxContext {
|
||||||
protected:
|
protected:
|
||||||
// Palettesets for the tile16 individual tiles
|
// Palettesets for the tile16 individual tiles
|
||||||
static std::unordered_map<uint8_t, gfx::Paletteset> palettesets_;
|
static std::unordered_map<uint8_t, gfx::Paletteset> palettesets_;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user