Refactor overworld entity constants for improved naming consistency and readability

This commit is contained in:
scawful
2024-12-31 17:40:15 -05:00
parent 41c31e3193
commit aece708513
3 changed files with 96 additions and 95 deletions

View File

@@ -10,20 +10,24 @@
namespace yaze {
namespace zelda3 {
constexpr int OWEntranceMap = 0xDB96F;
constexpr int OWEntrancePos = 0xDBA71;
constexpr int OWEntranceEntranceId = 0xDBB73;
constexpr int kOverworldEntranceMap = 0xDB96F;
constexpr int kOverworldEntrancePos = 0xDBA71;
constexpr int kOverworldEntranceEntranceId = 0xDBB73;
constexpr int kOverworldEntranceMapExpanded = 0x0DB55F;
constexpr int kOverworldEntrancePosExpanded = 0x0DB35F;
constexpr int kOverworldEntranceEntranceIdExpanded = 0x0DB75F;
// (0x13 entries, 2 bytes each) modified(less 0x400)
// map16 coordinates for each hole
constexpr int OWHolePos = 0xDB800;
constexpr int kOverworldHolePos = 0xDB800;
// (0x13 entries, 2 bytes each) corresponding
// area numbers for each hole
constexpr int OWHoleArea = 0xDB826;
constexpr int kOverworldHoleArea = 0xDB826;
//(0x13 entries, 1 byte each) corresponding entrance numbers
constexpr int OWHoleEntrance = 0xDB84C;
constexpr int kOverworldHoleEntrance = 0xDB84C;
// OWEntrances Expansion
@@ -40,7 +44,7 @@ constexpr int OWHoleEntrance = 0xDB84C;
// *Important* the Screen ID now also require bit 0x8000 (15) being set to tell
// entrance is a hole
class OverworldEntrance : public GameEntity {
public:
public:
uint16_t map_pos_;
uchar entrance_id_;
uchar area_x_;
@@ -89,8 +93,8 @@ struct OverworldEntranceTileTypes {
std::array<uint16_t, kNumEntranceTileTypes> high;
};
inline absl::StatusOr<OverworldEntranceTileTypes>
LoadEntranceTileTypes(Rom &rom) {
inline absl::StatusOr<OverworldEntranceTileTypes> LoadEntranceTileTypes(
Rom &rom) {
OverworldEntranceTileTypes tiletypes;
for (int i = 0; i < kNumEntranceTileTypes; i++) {
ASSIGN_OR_RETURN(auto value_low, rom.ReadWord(kEntranceTileTypePtrLow + i));
@@ -102,7 +106,7 @@ LoadEntranceTileTypes(Rom &rom) {
return tiletypes;
}
} // namespace zelda3
} // namespace yaze
} // namespace zelda3
} // namespace yaze
#endif

View File

@@ -12,63 +12,21 @@
namespace yaze {
namespace zelda3 {
// List of secret item names
const std::vector<std::string> kSecretItemNames = {
"Nothing", // 0
"Green Rupee", // 1
"Rock hoarder", // 2
"Bee", // 3
"Health pack", // 4
"Bomb", // 5
"Heart ", // 6
"Blue Rupee", // 7
"Key", // 8
"Arrow", // 9
"Bomb", // 10
"Heart", // 11
"Magic", // 12
"Full Magic", // 13
"Cucco", // 14
"Green Soldier", // 15
"Bush Stal", // 16
"Blue Soldier", // 17
"Landmine", // 18
"Heart", // 19
"Fairy", // 20
"Heart", // 21
"Nothing ", // 22
"Hole", // 23
"Warp", // 24
"Staircase", // 25
"Bombable", // 26
"Switch" // 27
};
constexpr int overworldItemsPointers = 0xDC2F9;
constexpr int kOverworldItemsAddress = 0xDC8B9; // 1BC2F9
constexpr int overworldItemsBank = 0xDC8BF;
constexpr int overworldItemsEndData = 0xDC89C; // 0DC89E
constexpr int kOverworldItemsPointers = 0xDC2F9;
constexpr int kOverworldItemsAddress = 0xDC8B9; // 1BC2F9
constexpr int kOverworldItemsBank = 0xDC8BF;
constexpr int kOverworldItemsEndData = 0xDC89C; // 0DC89E
class OverworldItem : public GameEntity {
public:
bool bg2_ = false;
uint8_t id_;
uint8_t game_x_;
uint8_t game_y_;
uint16_t room_map_id_;
int unique_id = 0;
bool deleted = false;
public:
OverworldItem() = default;
OverworldItem(uint8_t id, uint16_t room_map_id, int x, int y, bool bg2) {
this->id_ = id;
this->x_ = x;
this->y_ = y;
this->bg2_ = bg2;
this->room_map_id_ = room_map_id;
this->map_id_ = room_map_id;
this->entity_id_ = id;
this->entity_type_ = kItem;
OverworldItem(uint8_t id, uint16_t room_map_id, int x, int y, bool bg2)
: bg2_(bg2), id_(id), room_map_id_(room_map_id) {
x_ = x;
y_ = y;
map_id_ = room_map_id;
entity_id_ = id;
entity_type_ = kItem;
int map_x = room_map_id - ((room_map_id / 8) * 8);
int map_y = room_map_id / 8;
@@ -96,9 +54,48 @@ public:
<< " X: " << static_cast<int>(game_x_)
<< " Y: " << static_cast<int>(game_y_) << std::endl;
}
bool bg2_ = false;
uint8_t id_;
uint8_t game_x_;
uint8_t game_y_;
uint16_t room_map_id_;
int unique_id = 0;
bool deleted = false;
};
} // namespace zelda3
} // namespace yaze
const std::vector<std::string> kSecretItemNames = {
"Nothing", // 0
"Green Rupee", // 1
"Rock hoarder", // 2
"Bee", // 3
"Health pack", // 4
"Bomb", // 5
"Heart ", // 6
"Blue Rupee", // 7
"Key", // 8
"Arrow", // 9
"Bomb", // 10
"Heart", // 11
"Magic", // 12
"Full Magic", // 13
"Cucco", // 14
"Green Soldier", // 15
"Bush Stal", // 16
"Blue Soldier", // 17
"Landmine", // 18
"Heart", // 19
"Fairy", // 20
"Heart", // 21
"Nothing ", // 22
"Hole", // 23
"Warp", // 24
"Staircase", // 25
"Bombable", // 26
"Switch" // 27
};
#endif // YAZE_APP_ZELDA3_OVERWORLD_ITEM_H_
} // namespace zelda3
} // namespace yaze
#endif // YAZE_APP_ZELDA3_OVERWORLD_ITEM_H_

View File

@@ -36,8 +36,8 @@ absl::Status OverworldMap::BuildMap(int count, int game_state, int world,
if (large_map_) {
if (parent_ != index_ && !initialized_) {
if (index_ >= 0x80 && index_ <= 0x8A && index_ != 0x88) {
area_graphics_ = rom_[overworldSpecialGFXGroup + (parent_ - 0x80)];
area_palette_ = rom_[overworldSpecialPALGroup + 1];
area_graphics_ = rom_[kOverworldSpecialGfxGroup + (parent_ - 0x80)];
area_palette_ = rom_[kOverworldSpecialPalGroup + 1];
} else if (index_ == 0x88) {
area_graphics_ = 0x51;
area_palette_ = 0x00;
@@ -62,7 +62,7 @@ absl::Status OverworldMap::BuildMap(int count, int game_state, int world,
void OverworldMap::LoadAreaInfo() {
if (index_ != 0x80) {
if (index_ <= 128)
large_map_ = (rom_[overworldMapSize + (index_ & 0x3F)] != 0);
large_map_ = (rom_[kOverworldMapSize + (index_ & 0x3F)] != 0);
else {
large_map_ =
index_ == 129 || index_ == 130 || index_ == 137 || index_ == 138;
@@ -75,14 +75,14 @@ void OverworldMap::LoadAreaInfo() {
area_graphics_ = rom_[kAreaGfxIdPtr + parent_];
area_palette_ = rom_[kOverworldMapPaletteIds + parent_];
area_music_[0] = rom_[overworldMusicBegining + parent_];
area_music_[1] = rom_[overworldMusicZelda + parent_];
area_music_[2] = rom_[overworldMusicMasterSword + parent_];
area_music_[3] = rom_[overworldMusicAgahim + parent_];
area_music_[0] = rom_[kOverworldMusicBeginning + parent_];
area_music_[1] = rom_[kOverworldMusicZelda + parent_];
area_music_[2] = rom_[kOverworldMusicMasterSword + parent_];
area_music_[3] = rom_[kOverworldMusicAgahnim + parent_];
sprite_graphics_[0] = rom_[overworldSpriteset + parent_];
sprite_graphics_[1] = rom_[overworldSpriteset + parent_ + 0x40];
sprite_graphics_[2] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[0] = rom_[kOverworldSpriteset + parent_];
sprite_graphics_[1] = rom_[kOverworldSpriteset + parent_ + 0x40];
sprite_graphics_[2] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_palette_[0] = rom_[kOverworldSpritePaletteIds + parent_];
sprite_palette_[1] = rom_[kOverworldSpritePaletteIds + parent_ + 0x40];
@@ -90,11 +90,11 @@ void OverworldMap::LoadAreaInfo() {
} else if (index_ < 0x80) {
area_graphics_ = rom_[kAreaGfxIdPtr + parent_];
area_palette_ = rom_[kOverworldMapPaletteIds + parent_];
area_music_[0] = rom_[overworldMusicDW + (parent_ - 64)];
area_music_[0] = rom_[kOverworldMusicDarkWorld + (parent_ - 64)];
sprite_graphics_[0] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[1] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[2] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[0] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_graphics_[1] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_graphics_[2] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_palette_[0] = rom_[kOverworldSpritePaletteIds + parent_ + 0x80];
sprite_palette_[1] = rom_[kOverworldSpritePaletteIds + parent_ + 0x80];
@@ -123,11 +123,11 @@ void OverworldMap::LoadAreaInfo() {
parent_ = 129;
}
area_palette_ = rom_[overworldSpecialPALGroup + parent_ - 0x80];
area_palette_ = rom_[kOverworldSpecialPalGroup + parent_ - 0x80];
if ((index_ >= 0x80 && index_ <= 0x8A && index_ != 0x88) ||
index_ == 0x94) {
area_graphics_ = rom_[overworldSpecialGFXGroup + (parent_ - 0x80)];
area_palette_ = rom_[overworldSpecialPALGroup + 1];
area_graphics_ = rom_[kOverworldSpecialGfxGroup + (parent_ - 0x80)];
area_palette_ = rom_[kOverworldSpecialPalGroup + 1];
} else if (index_ == 0x88) {
area_graphics_ = 0x51;
area_palette_ = 0x00;
@@ -137,9 +137,9 @@ void OverworldMap::LoadAreaInfo() {
area_palette_ = rom_[kOverworldMapPaletteIds + parent_];
}
sprite_graphics_[0] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[1] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[2] = rom_[overworldSpriteset + parent_ + 0x80];
sprite_graphics_[0] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_graphics_[1] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_graphics_[2] = rom_[kOverworldSpriteset + parent_ + 0x80];
sprite_palette_[0] = rom_[kOverworldSpritePaletteIds + parent_ + 0x80];
sprite_palette_[1] = rom_[kOverworldSpritePaletteIds + parent_ + 0x80];
@@ -555,7 +555,7 @@ absl::StatusOr<gfx::SnesPalette> OverworldMap::GetPalette(
const gfx::PaletteGroup& palette_group, int index, int previous_index,
int limit) {
if (index == 255) {
index = rom_[rom_.version_constants().overworldMapPaletteGroup +
index = rom_[rom_.version_constants().kOverworldMapPaletteGroup +
(previous_index * 4)];
}
if (index >= limit) {
@@ -573,15 +573,15 @@ absl::Status OverworldMap::LoadPalette() {
area_palette_ = std::min((int)area_palette_, 0xA3);
uchar pal0 = 0;
uchar pal1 = rom_[rom_.version_constants().overworldMapPaletteGroup +
uchar pal1 = rom_[rom_.version_constants().kOverworldMapPaletteGroup +
(area_palette_ * 4)];
uchar pal2 = rom_[rom_.version_constants().overworldMapPaletteGroup +
uchar pal2 = rom_[rom_.version_constants().kOverworldMapPaletteGroup +
(area_palette_ * 4) + 1];
uchar pal3 = rom_[rom_.version_constants().overworldMapPaletteGroup +
uchar pal3 = rom_[rom_.version_constants().kOverworldMapPaletteGroup +
(area_palette_ * 4) + 2];
uchar pal4 =
rom_[overworldSpritePaletteGroup + (sprite_palette_[game_state_] * 2)];
uchar pal5 = rom_[overworldSpritePaletteGroup +
rom_[kOverworldSpritePaletteGroup + (sprite_palette_[game_state_] * 2)];
uchar pal5 = rom_[kOverworldSpritePaletteGroup +
(sprite_palette_[game_state_] * 2) + 1];
auto grass_pal_group = rom_.palette_group().grass;
@@ -595,7 +595,7 @@ absl::Status OverworldMap::LoadPalette() {
// Additional handling of `pal3` and `parent_`
if (pal3 == 255) {
pal3 = rom_[rom_.version_constants().overworldMapPaletteGroup +
pal3 = rom_[rom_.version_constants().kOverworldMapPaletteGroup +
(previousPalId * 4) + 2];
}