Refactor overworld entity constants for improved naming consistency and readability
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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_
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user