#ifndef YAZE_APP_DATA_OVERWORLD_H #define YAZE_APP_DATA_OVERWORLD_H #include #include #include #include "absl/status/status.h" #include "app/core/constants.h" #include "app/gfx/bitmap.h" #include "app/gfx/pseudo_vram.h" #include "app/gfx/snes_tile.h" #include "app/rom.h" #include "app/zelda3/overworld_map.h" namespace yaze { namespace app { namespace zelda3 { class Overworld { public: absl::Status Load(ROM &rom, uchar *ow_blockset); auto GetTiles16() const { return tiles16; } auto GetOverworldMap(uint index) { return overworld_maps_[index]; } auto GetOverworldMaps() const { return overworld_maps_; } auto isLoaded() const { return is_loaded_; } private: const int map32address[4] = {core::map32TilesTL, core::map32TilesTR, core::map32TilesBL, core::map32TilesBR}; enum Dimension { map32TilesTL = 0, map32TilesTR = 1, map32TilesBL = 2, map32TilesBR = 3 }; ushort GenerateTile32(int i, int k, int dimension); void AssembleMap32Tiles(); void AssembleMap16Tiles(); void AssignWorldTiles(OWBlockset &world, int x, int y, int sx, int sy, int tpos); absl::Status DecompressAllMapTiles(); void FetchLargeMaps(); int game_state_ = 1; uchar map_parent_[160]; bool is_loaded_ = false; ROM rom_; OWMapTiles map_tiles_; std::vector tiles16; std::vector tiles32; std::vector map16tiles; std::vector overworld_maps_; }; } // namespace zelda3 } // namespace app } // namespace yaze #endif