1#ifndef YAZE_ZELDA3_SPRITE_SPRITE_OAM_TABLES_H
2#define YAZE_ZELDA3_SPRITE_SPRITE_OAM_TABLES_H
37 std::vector<SpriteOamEntry>
tiles;
49 .tiles = {{0, 0, 0x20, 2,
true,
false,
false},
50 {0, -16, 0x00, 2,
true,
false,
false}},
51 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
57 .tiles = {{0, 0, 0x80, 6,
true,
false,
false}},
58 .required_sheets = {0x56, 0x57, 0x00, 0x00}};
64 .tiles = {{0, 0, 0x60, 2,
true,
false,
false}},
65 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
70 .name =
"Green Soldier",
71 .tiles = {{0, 8, 0x20, 6,
true,
false,
false},
72 {0, -8, 0x00, 6,
true,
false,
false}},
73 .required_sheets = {0x56, 0x57, 0x00, 0x00}};
78 .name =
"Blue Soldier",
79 .tiles = {{0, 8, 0x20, 1,
true,
false,
false},
80 {0, -8, 0x00, 1,
true,
false,
false}},
81 .required_sheets = {0x56, 0x57, 0x00, 0x00}};
86 .name =
"Red Soldier",
87 .tiles = {{0, 8, 0x20, 0,
true,
false,
false},
88 {0, -8, 0x00, 0,
true,
false,
false}},
89 .required_sheets = {0x56, 0x57, 0x00, 0x00}};
95 .tiles = {{0, 8, 0x20, 1,
true,
false,
false},
96 {0, -8, 0x00, 1,
true,
false,
false}},
97 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
102 .name =
"Green Patrol",
103 .tiles = {{0, 8, 0x20, 6,
true,
false,
false},
104 {0, -8, 0x00, 6,
true,
false,
false}},
105 .required_sheets = {0x56, 0x57, 0x00, 0x00}};
110 .name =
"Armos Knight",
111 .tiles = {{0, 0, 0x82, 4,
true,
false,
false},
112 {0, -16, 0x80, 4,
true,
false,
false}},
113 .required_sheets = {0x58, 0x59, 0x00, 0x00}};
118 .name =
"Octoballoon",
119 .tiles = {{0, 0, 0xE0, 4,
true,
false,
false}},
120 .required_sheets = {0x54, 0x55, 0x00, 0x00}};
125 .name =
"Red Eyegore",
126 .tiles = {{0, 0, 0x84, 0,
true,
false,
false},
127 {0, -16, 0x80, 0,
true,
false,
false}},
128 .required_sheets = {0x58, 0x59, 0x00, 0x00}};
133 .name =
"Green Eyegore",
134 .tiles = {{0, 0, 0x84, 6,
true,
false,
false},
135 {0, -16, 0x80, 6,
true,
false,
false}},
136 .required_sheets = {0x58, 0x59, 0x00, 0x00}};
142 .tiles = {{0, 0, 0xC6, 5,
true,
false,
false},
143 {0, -16, 0xC4, 5,
true,
false,
false}},
144 .required_sheets = {0x54, 0x55, 0x00, 0x00}};
150 .tiles = {{-8, 0, 0xCC, 3,
true,
false,
false},
151 {8, 0, 0xCC, 3,
true,
true,
false},
152 {-8, -16, 0xC8, 3,
true,
false,
false},
153 {8, -16, 0xC8, 3,
true,
true,
false}},
154 .required_sheets = {0x5C, 0x5D, 0x00, 0x00}};
160 .tiles = {{0, 0, 0xAE, 7,
true,
false,
false},
161 {0, -16, 0x8E, 7,
true,
false,
false}},
162 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
167 .name =
"Heart Container",
168 .tiles = {{0, 0, 0xEE, 0,
true,
false,
false}},
169 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
174 .name =
"Green Rupee",
175 .tiles = {{0, 0, 0xE8, 0,
false,
false,
false}},
176 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
181 .name =
"Blue Rupee",
182 .tiles = {{0, 0, 0xE8, 1,
false,
false,
false}},
183 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
189 .tiles = {{0, 0, 0xE8, 2,
false,
false,
false}},
190 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
195 .name =
"Small Heart",
196 .tiles = {{0, 0, 0xEC, 0,
false,
false,
false}},
197 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
203 .tiles = {{0, 0, 0xF4, 7,
false,
false,
false}},
204 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
209 .name =
"Small Magic",
210 .tiles = {{0, 0, 0xF0, 6,
false,
false,
false}},
211 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
216 .name =
"Large Magic",
217 .tiles = {{0, 0, 0xF6, 6,
false,
false,
false}},
218 .required_sheets = {0x52, 0x53, 0x00, 0x00}};
247 static bool HasLayout(uint8_t sprite_id);
Registry of all known sprite OAM layouts.
static const SpriteOamLayout * GetLayout(uint8_t sprite_id)
Get the OAM layout for a sprite ID.
static std::vector< const SpriteOamLayout * > GetAllLayouts()
Get all defined layouts.
static std::optional< std::array< uint8_t, 4 > > GetRequiredSheets(uint8_t sprite_id)
Get required graphics sheets for a sprite.
static bool HasLayout(uint8_t sprite_id)
Check if a sprite has a defined layout.
const SpriteOamLayout kRedEyegoreLayout
const SpriteOamLayout kOctorokLayout
const SpriteOamLayout kBlueGuardLayout
const SpriteOamLayout kLargeMagicLayout
const SpriteOamLayout kBlueSoldierLayout
const SpriteOamLayout kBlueRupeeLayout
const SpriteOamLayout kRedSoldierLayout
const SpriteOamLayout kGreenSoldierLayout
const SpriteOamLayout kSmallMagicLayout
const SpriteOamLayout kGreenRupeeLayout
const SpriteOamLayout kArmosKnightLayout
const SpriteOamLayout kGreenPatrolLayout
const SpriteOamLayout kOctoballoonLayout
const SpriteOamLayout kHinoxLayout
const SpriteOamLayout kHeartContainerLayout
const SpriteOamLayout kMoblinLayout
const SpriteOamLayout kChickenLayout
const SpriteOamLayout kUncleLayout
const SpriteOamLayout kKeyLayout
const SpriteOamLayout kGreenEyegoreLayout
const SpriteOamLayout kSmallHeartLayout
const SpriteOamLayout kVultureLayout
const SpriteOamLayout kRedRupeeLayout
Single OAM entry for sprite rendering.
Complete OAM layout for a vanilla sprite.
std::array< uint8_t, 4 > required_sheets
std::vector< SpriteOamEntry > tiles