yaze 0.2.0
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld.h
Go to the documentation of this file.
1#ifndef YAZE_APP_DATA_OVERWORLD_H
2#define YAZE_APP_DATA_OVERWORLD_H
3
4#include <future>
5#include <memory>
6#include <vector>
7
8#include "absl/container/flat_hash_map.h"
9#include "absl/status/status.h"
10#include "app/core/common.h"
11#include "app/core/constants.h"
12#include "app/gfx/bitmap.h"
13#include "app/gfx/snes_tile.h"
14#include "app/rom.h"
15#include "app/zelda3/common.h"
18
19namespace yaze {
20namespace app {
21namespace zelda3 {
22
27namespace overworld {
28
29constexpr int GravesYTilePos = 0x49968; // short (0x0F entries)
30constexpr int GravesXTilePos = 0x49986; // short (0x0F entries)
31constexpr int GravesTilemapPos = 0x499A4; // short (0x0F entries)
32constexpr int GravesGFX = 0x499C2; // short (0x0F entries)
33
34constexpr int GravesXPos = 0x4994A; // short (0x0F entries)
35constexpr int GravesYLine = 0x4993A; // short (0x08 entries)
36constexpr int GravesCountOnY = 0x499E0; // Byte 0x09 entries
37
38constexpr int GraveLinkSpecialHole = 0x46DD9; // short
39constexpr int GraveLinkSpecialStairs = 0x46DE0; // short
40
41// List of secret item names
42const std::vector<std::string> kSecretItemNames = {
43 "Nothing", // 0
44 "Green Rupee", // 1
45 "Rock hoarder", // 2
46 "Bee", // 3
47 "Health pack", // 4
48 "Bomb", // 5
49 "Heart ", // 6
50 "Blue Rupee", // 7
51 "Key", // 8
52 "Arrow", // 9
53 "Bomb", // 10
54 "Heart", // 11
55 "Magic", // 12
56 "Full Magic", // 13
57 "Cucco", // 14
58 "Green Soldier", // 15
59 "Bush Stal", // 16
60 "Blue Soldier", // 17
61 "Landmine", // 18
62 "Heart", // 19
63 "Fairy", // 20
64 "Heart", // 21
65 "Nothing ", // 22
66 "Hole", // 23
67 "Warp", // 24
68 "Staircase", // 25
69 "Bombable", // 26
70 "Switch" // 27
71};
72
73constexpr int overworldItemsPointers = 0xDC2F9;
74constexpr int kOverworldItemsAddress = 0xDC8B9; // 1BC2F9
75constexpr int overworldItemsBank = 0xDC8BF;
76constexpr int overworldItemsEndData = 0xDC89C; // 0DC89E
77
78class OverworldItem : public GameEntity {
79 public:
80 bool bg2_ = false;
81 uint8_t id_;
82 uint8_t game_x_;
83 uint8_t game_y_;
84 uint16_t room_map_id_;
85 int unique_id = 0;
86 bool deleted = false;
87 OverworldItem() = default;
88
89 OverworldItem(uint8_t id, uint16_t room_map_id, int x, int y, bool bg2) {
90 this->id_ = id;
91 this->x_ = x;
92 this->y_ = y;
93 this->bg2_ = bg2;
94 this->room_map_id_ = room_map_id;
95 this->map_id_ = room_map_id;
96 this->entity_id_ = id;
97 this->entity_type_ = kItem;
98
99 int map_x = room_map_id - ((room_map_id / 8) * 8);
100 int map_y = room_map_id / 8;
101
102 game_x_ = static_cast<uint8_t>(std::abs(x - (map_x * 512)) / 16);
103 game_y_ = static_cast<uint8_t>(std::abs(y - (map_y * 512)) / 16);
104 }
105
106 void UpdateMapProperties(uint16_t room_map_id) override {
107 room_map_id_ = room_map_id;
108
109 if (room_map_id_ >= 64) {
110 room_map_id_ -= 64;
111 }
112
113 int map_x = room_map_id_ - ((room_map_id_ / 8) * 8);
114 int map_y = room_map_id_ / 8;
115
116 game_x_ = static_cast<uint8_t>(std::abs(x_ - (map_x * 512)) / 16);
117 game_y_ = static_cast<uint8_t>(std::abs(y_ - (map_y * 512)) / 16);
118
119 std::cout << "Item: " << std::hex << std::setw(2) << std::setfill('0')
120 << static_cast<int>(id_) << " MapId: " << std::hex << std::setw(2)
121 << std::setfill('0') << static_cast<int>(room_map_id_)
122 << " X: " << static_cast<int>(game_x_)
123 << " Y: " << static_cast<int>(game_y_) << std::endl;
124 }
125};
126
127constexpr int OWExitRoomId = 0x15D8A; // 0x15E07 Credits sequences
128// 105C2 Ending maps
129// 105E2 Sprite Group Table for Ending
130constexpr int OWExitMapId = 0x15E28;
131constexpr int OWExitVram = 0x15E77;
132constexpr int OWExitYScroll = 0x15F15;
133constexpr int OWExitXScroll = 0x15FB3;
134constexpr int OWExitYPlayer = 0x16051;
135constexpr int OWExitXPlayer = 0x160EF;
136constexpr int OWExitYCamera = 0x1618D;
137constexpr int OWExitXCamera = 0x1622B;
138constexpr int OWExitDoorPosition = 0x15724;
139constexpr int OWExitUnk1 = 0x162C9;
140constexpr int OWExitUnk2 = 0x16318;
141constexpr int OWExitDoorType1 = 0x16367;
142constexpr int OWExitDoorType2 = 0x16405;
143
144constexpr int OWExitMapIdWhirlpool = 0x16AE5; // JP = ;016849
145constexpr int OWExitVramWhirlpool = 0x16B07; // JP = ;01686B
146constexpr int OWExitYScrollWhirlpool = 0x16B29; // JP = ;01688D
147constexpr int OWExitXScrollWhirlpool = 0x16B4B; // JP = ;016DE7
148constexpr int OWExitYPlayerWhirlpool = 0x16B6D; // JP = ;016E09
149constexpr int OWExitXPlayerWhirlpool = 0x16B8F; // JP = ;016E2B
150constexpr int OWExitYCameraWhirlpool = 0x16BB1; // JP = ;016E4D
151constexpr int OWExitXCameraWhirlpool = 0x16BD3; // JP = ;016E6F
152constexpr int OWExitUnk1Whirlpool = 0x16BF5; // JP = ;016E91
153constexpr int OWExitUnk2Whirlpool = 0x16C17; // JP = ;016EB3
154constexpr int OWWhirlpoolPosition = 0x16CF8; // JP = ;016F94
155
156class OverworldExit : public GameEntity {
157 public:
158 uint16_t y_scroll_;
159 uint16_t x_scroll_;
166 uint16_t door_type_1_;
167 uint16_t door_type_2_;
168 uint16_t room_id_;
169 uint16_t map_pos_; // Position in the vram
173 bool is_hole_ = false;
174 bool deleted_ = false;
175 bool is_automatic_ = false;
176 bool large_map_ = false;
177
178 OverworldExit() = default;
179 OverworldExit(uint16_t room_id, uchar map_id, uint16_t vram_location,
180 uint16_t y_scroll, uint16_t x_scroll, uint16_t player_y,
181 uint16_t player_x, uint16_t camera_y, uint16_t camera_x,
182 uchar scroll_mod_y, uchar scroll_mod_x, uint16_t door_type_1,
183 uint16_t door_type_2, bool deleted = false)
184 : map_pos_(vram_location),
185 entrance_id_(0),
186 area_x_(0),
187 area_y_(0),
188 room_id_(room_id),
189 y_scroll_(y_scroll),
190 x_scroll_(x_scroll),
191 y_player_(player_y),
192 x_player_(player_x),
193 y_camera_(camera_y),
194 x_camera_(camera_x),
195 scroll_mod_y_(scroll_mod_y),
196 scroll_mod_x_(scroll_mod_x),
197 door_type_1_(door_type_1),
198 door_type_2_(door_type_2),
199 is_hole_(false),
200 deleted_(deleted) {
201 // Initialize entity variables
202 x_ = player_x;
203 y_ = player_y;
204 map_id_ = map_id;
206
207 int mapX = (map_id_ - ((map_id_ / 8) * 8));
208 int mapY = (map_id_ / 8);
209
210 area_x_ = (uchar)((std::abs(x_ - (mapX * 512)) / 16));
211 area_y_ = (uchar)((std::abs(y_ - (mapY * 512)) / 16));
212
213 if (door_type_1 != 0) {
214 int p = (door_type_1 & 0x7FFF) >> 1;
215 entrance_id_ = (uchar)(p % 64);
216 area_y_ = (uchar)(p >> 6);
217 }
218
219 if (door_type_2 != 0) {
220 int p = (door_type_2 & 0x7FFF) >> 1;
221 entrance_id_ = (uchar)(p % 64);
222 area_y_ = (uchar)(p >> 6);
223 }
224
225 if (map_id_ >= 64) {
226 map_id_ -= 64;
227 }
228
229 mapX = (map_id_ - ((map_id_ / 8) * 8));
230 mapY = (map_id_ / 8);
231
232 area_x_ = (uchar)((std::abs(x_ - (mapX * 512)) / 16));
233 area_y_ = (uchar)((std::abs(y_ - (mapY * 512)) / 16));
234
235 map_pos_ = (uint16_t)((((area_y_) << 6) | (area_x_ & 0x3F)) << 1);
236 }
237
238 // Overworld overworld
239 void UpdateMapProperties(uint16_t map_id) override {
240 map_id_ = map_id;
241
242 int large = 256;
243 int mapid = map_id;
244
245 if (map_id < 128) {
246 large = large_map_ ? 768 : 256;
247 // if (overworld.overworld_map(map_id)->Parent() != map_id) {
248 // mapid = overworld.overworld_map(map_id)->Parent();
249 // }
250 }
251
252 int mapX = map_id - ((map_id / 8) * 8);
253 int mapY = map_id / 8;
254
255 area_x_ = (uchar)((std::abs(x_ - (mapX * 512)) / 16));
256 area_y_ = (uchar)((std::abs(y_ - (mapY * 512)) / 16));
257
258 if (map_id >= 64) {
259 map_id -= 64;
260 }
261
262 int mapx = (map_id & 7) << 9;
263 int mapy = (map_id & 56) << 6;
264
265 if (is_automatic_) {
266 x_ = x_ - 120;
267 y_ = y_ - 80;
268
269 if (x_ < mapx) {
270 x_ = mapx;
271 }
272
273 if (y_ < mapy) {
274 y_ = mapy;
275 }
276
277 if (x_ > mapx + large) {
278 x_ = mapx + large;
279 }
280
281 if (y_ > mapy + large + 32) {
282 y_ = mapy + large + 32;
283 }
284
285 x_camera_ = x_player_ + 0x07;
286 y_camera_ = y_player_ + 0x1F;
287
288 if (x_camera_ < mapx + 127) {
289 x_camera_ = mapx + 127;
290 }
291
292 if (y_camera_ < mapy + 111) {
293 y_camera_ = mapy + 111;
294 }
295
296 if (x_camera_ > mapx + 127 + large) {
297 x_camera_ = mapx + 127 + large;
298 }
299
300 if (y_camera_ > mapy + 143 + large) {
301 y_camera_ = mapy + 143 + large;
302 }
303 }
304
305 short vram_x_scroll = (short)(x_ - mapx);
306 short vram_y_scroll = (short)(y_ - mapy);
307
308 map_pos_ = (uint16_t)(((vram_y_scroll & 0xFFF0) << 3) |
309 ((vram_x_scroll & 0xFFF0) >> 3));
310
311 std::cout << "Exit: " << room_id_ << " MapId: " << std::hex << mapid
312 << " X: " << static_cast<int>(area_x_)
313 << " Y: " << static_cast<int>(area_y_) << std::endl;
314 }
315};
316
317constexpr int OWEntranceMap = 0xDB96F;
318constexpr int OWEntrancePos = 0xDBA71;
319constexpr int OWEntranceEntranceId = 0xDBB73;
320
321// (0x13 entries, 2 bytes each) modified(less 0x400)
322// map16 coordinates for each hole
323constexpr int OWHolePos = 0xDB800;
324
325// (0x13 entries, 2 bytes each) corresponding
326// area numbers for each hole
327constexpr int OWHoleArea = 0xDB826;
328
329//(0x13 entries, 1 byte each) corresponding entrance numbers
330constexpr int OWHoleEntrance = 0xDB84C;
331
333 public:
334 uint16_t map_pos_;
338 bool is_hole_ = false;
339 bool deleted = false;
340
341 OverworldEntrance() = default;
342 OverworldEntrance(int x, int y, uchar entrance_id, short map_id,
343 uint16_t map_pos, bool hole)
344 : map_pos_(map_pos), entrance_id_(entrance_id), is_hole_(hole) {
345 x_ = x;
346 y_ = y;
347 map_id_ = map_id;
348 entity_id_ = entrance_id;
350
351 int mapX = (map_id_ - ((map_id_ / 8) * 8));
352 int mapY = (map_id_ / 8);
353 area_x_ = (uchar)((std::abs(x - (mapX * 512)) / 16));
354 area_y_ = (uchar)((std::abs(y - (mapY * 512)) / 16));
355 }
356
357 auto Copy() {
359 is_hole_);
360 }
361
362 void UpdateMapProperties(uint16_t map_id) override {
363 map_id_ = map_id;
364
365 if (map_id_ >= 64) {
366 map_id_ -= 64;
367 }
368
369 int mapX = (map_id_ - ((map_id_ / 8) * 8));
370 int mapY = (map_id_ / 8);
371
372 area_x_ = (uchar)((std::abs(x_ - (mapX * 512)) / 16));
373 area_y_ = (uchar)((std::abs(y_ - (mapY * 512)) / 16));
374
375 map_pos_ = (uint16_t)((((area_y_) << 6) | (area_x_ & 0x3F)) << 1);
376 }
377};
378
379constexpr int kOverworldMapPaletteIds = 0x7D1C;
380constexpr int kOverworldSpritePaletteIds = 0x7B41;
381constexpr int overworldMapPaletteGroup = 0x75504;
382constexpr int overworldSpritePaletteGroup = 0x75580;
383constexpr int overworldSpriteset = 0x7A41;
384constexpr int overworldSpecialGFXGroup = 0x16821;
385constexpr int overworldSpecialPALGroup = 0x16831;
386constexpr int overworldSpritesBegining = 0x4C881;
387constexpr int overworldSpritesAgahnim = 0x4CA21;
388constexpr int overworldSpritesZelda = 0x4C901;
389
390constexpr int kAreaGfxIdPtr = 0x7C9C;
391constexpr int kOverworldMessageIds = 0x3F51D;
392
393constexpr int overworldMusicBegining = 0x14303;
394constexpr int overworldMusicZelda = 0x14303 + 0x40;
395constexpr int overworldMusicMasterSword = 0x14303 + 0x80;
396constexpr int overworldMusicAgahim = 0x14303 + 0xC0;
397constexpr int overworldMusicDW = 0x14403;
398constexpr int overworldEntranceAllowedTilesLeft = 0xDB8C1;
400
401// 0x00 = small maps, 0x20 = large maps
402constexpr int overworldMapSize = 0x12844;
403
404// 0x01 = small maps, 0x03 = large maps
405constexpr int overworldMapSizeHighByte = 0x12884;
406
407// relative to the WORLD + 0x200 per map
408// large map that are not == parent id = same position as their parent!
409// eg for X position small maps :
410// 0000, 0200, 0400, 0600, 0800, 0A00, 0C00, 0E00
411// all Large map would be :
412// 0000, 0000, 0400, 0400, 0800, 0800, 0C00, 0C00
413constexpr int overworldMapParentId = 0x125EC;
414constexpr int overworldTransitionPositionY = 0x128C4;
415constexpr int overworldTransitionPositionX = 0x12944;
416constexpr int overworldScreenSize = 0x1788D;
417constexpr int OverworldScreenSizeForLoading = 0x4C635;
418
419// constexpr int OverworldScreenTileMapChangeByScreen = 0x12634;
424
425constexpr int OverworldMapDataOverflow = 0x130000;
426
427constexpr int transition_target_north = 0x13EE2;
428constexpr int transition_target_west = 0x13F62;
429constexpr int overworldCustomMosaicASM = 0x1301D0;
430constexpr int overworldCustomMosaicArray = 0x1301F0;
431
432constexpr int kMap16Tiles = 0x78000;
433constexpr int kNumOverworldMaps = 160;
434constexpr int kNumTile16Individual = 4096;
435constexpr int Map32PerScreen = 256;
436constexpr int NumberOfMap16 = 3752; // 4096
437constexpr int LimitOfMap32 = 8864;
438constexpr int NumberOfOWSprites = 352;
440
448 public:
449 absl::Status Load(Rom &rom);
450 absl::Status LoadOverworldMaps();
451 void LoadTileTypes();
452 void LoadEntrances();
453
454 absl::Status LoadExits();
455 absl::Status LoadItems();
456 absl::Status LoadSprites();
457 absl::Status LoadSpritesFromMap(int spriteStart, int spriteCount,
458 int spriteIndex);
459
460 absl::Status Save(Rom &rom);
461 absl::Status SaveOverworldMaps();
462 absl::Status SaveLargeMaps();
463 absl::Status SaveEntrances();
464 absl::Status SaveExits();
465 absl::Status SaveItems();
466
467 absl::Status CreateTile32Tilemap();
468 absl::Status SaveMap16Tiles();
469 absl::Status SaveMap32Tiles();
470
471 absl::Status SaveMapProperties();
472
473 void Destroy() {
474 for (auto &map : overworld_maps_) {
475 map.Destroy();
476 }
477 overworld_maps_.clear();
478 all_entrances_.clear();
479 all_exits_.clear();
480 all_items_.clear();
481 all_sprites_.clear();
482 is_loaded_ = false;
483 }
484
485 int GetTileFromPosition(ImVec2 position) const {
486 if (current_world_ == 0) {
487 return map_tiles_.light_world[position.x][position.y];
488 } else if (current_world_ == 1) {
489 return map_tiles_.dark_world[position.x][position.y];
490 } else {
491 return map_tiles_.special_world[position.x][position.y];
492 }
493 }
494
495 OWBlockset &GetMapTiles(int world_type) {
496 switch (world_type) {
497 case 0:
498 return map_tiles_.light_world;
499 case 1:
500 return map_tiles_.dark_world;
501 case 2:
503 default:
504 return map_tiles_.light_world;
505 }
506 }
507
508 auto overworld_maps() const { return overworld_maps_; }
509 auto overworld_map(int i) const { return &overworld_maps_[i]; }
510 auto mutable_overworld_map(int i) { return &overworld_maps_[i]; }
511 auto exits() const { return &all_exits_; }
512 auto mutable_exits() { return &all_exits_; }
513 std::vector<gfx::Tile16> tiles16() const { return tiles16_; }
514 auto mutable_tiles16() { return &tiles16_; }
515 auto sprites(int state) const { return all_sprites_[state]; }
516 auto mutable_sprites(int state) { return &all_sprites_[state]; }
517 auto current_graphics() const {
518 return overworld_maps_[current_map_].current_graphics();
519 }
520 auto &entrances() { return all_entrances_; }
522 auto &holes() { return all_holes_; }
523 auto mutable_holes() { return &all_holes_; }
524 auto deleted_entrances() const { return deleted_entrances_; }
526 auto current_area_palette() const {
527 return overworld_maps_[current_map_].current_palette();
528 }
530 return overworld_maps_[current_map_].bitmap_data();
531 }
532 auto tile16_blockset_data() const {
533 return overworld_maps_[current_map_].current_tile16_blockset();
534 }
535 auto is_loaded() const { return is_loaded_; }
536 void set_current_map(int i) { current_map_ = i; }
537 auto map_tiles() const { return map_tiles_; }
538 auto mutable_map_tiles() { return &map_tiles_; }
539 auto all_items() const { return all_items_; }
540 auto mutable_all_items() { return &all_items_; }
541 auto all_tiles_types() const { return all_tiles_types_; }
543
544 private:
551
552 void FetchLargeMaps();
553 absl::StatusOr<uint16_t> GetTile16ForTile32(int index, int quadrant,
554 int dimension);
555 absl::Status AssembleMap32Tiles();
556 void AssembleMap16Tiles();
557 void AssignWorldTiles(int x, int y, int sx, int sy, int tpos,
558 OWBlockset &world);
559 void OrganizeMapTiles(std::vector<uint8_t> &bytes,
560 std::vector<uint8_t> &bytes2, int i, int sx, int sy,
561 int &ttpos);
562 absl::Status DecompressAllMapTiles();
563
564 bool is_loaded_ = false;
565
566 int game_state_ = 0;
570
573
574 uint8_t all_tiles_types_[0x200];
575
576 std::vector<gfx::Tile16> tiles16_;
577 std::vector<gfx::Tile32> tiles32_;
578 std::vector<uint16_t> tiles32_list_;
579 std::vector<gfx::Tile32> tiles32_unique_;
580 std::vector<OverworldMap> overworld_maps_;
581 std::vector<OverworldEntrance> all_entrances_;
582 std::vector<OverworldEntrance> all_holes_;
583 std::vector<OverworldExit> all_exits_;
584 std::vector<OverworldItem> all_items_;
585 std::vector<std::vector<Sprite>> all_sprites_;
586
587 std::vector<uint64_t> deleted_entrances_;
588
589 std::vector<std::vector<uint8_t>> map_data_p1 =
590 std::vector<std::vector<uint8_t>>(kNumOverworldMaps);
591 std::vector<std::vector<uint8_t>> map_data_p2 =
592 std::vector<std::vector<uint8_t>>(kNumOverworldMaps);
593
594 std::vector<int> map_pointers1_id = std::vector<int>(kNumOverworldMaps);
595 std::vector<int> map_pointers2_id = std::vector<int>(kNumOverworldMaps);
596
597 std::vector<int> map_pointers1 = std::vector<int>(kNumOverworldMaps);
598 std::vector<int> map_pointers2 = std::vector<int>(kNumOverworldMaps);
599
600 std::vector<absl::flat_hash_map<uint16_t, int>> usage_stats_;
601};
602
603} // namespace overworld
604} // namespace zelda3
605} // namespace app
606} // namespace yaze
607
608#endif
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:145
A class to hold a shared pointer to a Rom object.
Definition rom.h:585
A class to manage experimental feature flags.
Definition common.h:30
Base class for all overworld and dungeon entities.
Definition common.h:31
enum yaze::app::zelda3::GameEntity::EntityType entity_type_
void UpdateMapProperties(uint16_t map_id) override
Definition overworld.h:362
OverworldEntrance(int x, int y, uchar entrance_id, short map_id, uint16_t map_pos, bool hole)
Definition overworld.h:342
OverworldExit(uint16_t room_id, uchar map_id, uint16_t vram_location, uint16_t y_scroll, uint16_t x_scroll, uint16_t player_y, uint16_t player_x, uint16_t camera_y, uint16_t camera_x, uchar scroll_mod_y, uchar scroll_mod_x, uint16_t door_type_1, uint16_t door_type_2, bool deleted=false)
Definition overworld.h:179
void UpdateMapProperties(uint16_t map_id) override
Definition overworld.h:239
OverworldItem(uint8_t id, uint16_t room_map_id, int x, int y, bool bg2)
Definition overworld.h:89
void UpdateMapProperties(uint16_t room_map_id) override
Definition overworld.h:106
Represents the full Overworld data, light and dark world.
Definition overworld.h:447
std::vector< std::vector< Sprite > > all_sprites_
Definition overworld.h:585
OWBlockset & GetMapTiles(int world_type)
Definition overworld.h:495
std::vector< OverworldItem > all_items_
Definition overworld.h:584
std::vector< gfx::Tile32 > tiles32_
Definition overworld.h:577
std::vector< absl::flat_hash_map< uint16_t, int > > usage_stats_
Definition overworld.h:600
std::vector< OverworldEntrance > all_entrances_
Definition overworld.h:581
std::vector< gfx::Tile32 > tiles32_unique_
Definition overworld.h:579
std::vector< OverworldExit > all_exits_
Definition overworld.h:583
void OrganizeMapTiles(std::vector< uint8_t > &bytes, std::vector< uint8_t > &bytes2, int i, int sx, int sy, int &ttpos)
Definition overworld.cc:177
absl::StatusOr< uint16_t > GetTile16ForTile32(int index, int quadrant, int dimension)
Definition overworld.cc:101
std::vector< uint64_t > deleted_entrances_
Definition overworld.h:587
std::vector< gfx::Tile16 > tiles16_
Definition overworld.h:576
void AssignWorldTiles(int x, int y, int sx, int sy, int tpos, OWBlockset &world)
Definition overworld.cc:165
std::vector< gfx::Tile16 > tiles16() const
Definition overworld.h:513
std::vector< OverworldEntrance > all_holes_
Definition overworld.h:582
int GetTileFromPosition(ImVec2 position) const
Definition overworld.h:485
std::vector< OverworldMap > overworld_maps_
Definition overworld.h:580
std::vector< std::vector< uint8_t > > map_data_p2
Definition overworld.h:591
std::vector< std::vector< uint8_t > > map_data_p1
Definition overworld.h:589
absl::Status LoadSpritesFromMap(int spriteStart, int spriteCount, int spriteIndex)
Definition overworld.cc:443
std::vector< uint16_t > tiles32_list_
Definition overworld.h:578
unsigned char uchar
Definition constants.h:121
constexpr int overworldTransitionPositionY
Definition overworld.h:414
constexpr int NumberOfOWSprites
Definition overworld.h:438
constexpr int kOverworldItemsAddress
Definition overworld.h:74
constexpr int OWWhirlpoolPosition
Definition overworld.h:154
constexpr int overworldSpritePaletteGroup
Definition overworld.h:382
constexpr int overworldMapParentId
Definition overworld.h:413
constexpr int GraveLinkSpecialStairs
Definition overworld.h:39
constexpr int OWExitYCameraWhirlpool
Definition overworld.h:150
constexpr int OWExitDoorPosition
Definition overworld.h:138
constexpr int overworldSpriteset
Definition overworld.h:383
constexpr int overworldMapPaletteGroup
Definition overworld.h:381
constexpr int overworldItemsEndData
Definition overworld.h:76
constexpr int OverworldScreenSizeForLoading
Definition overworld.h:417
constexpr int OverworldScreenTileMapChangeByScreen2
Definition overworld.h:421
constexpr int OWExitXCameraWhirlpool
Definition overworld.h:151
constexpr int kOverworldMapPaletteIds
Definition overworld.h:379
constexpr int overworldSpritesZelda
Definition overworld.h:388
constexpr int overworldCustomMosaicArray
Definition overworld.h:430
constexpr int OverworldMapDataOverflow
Definition overworld.h:425
constexpr int OWEntranceEntranceId
Definition overworld.h:319
constexpr int kNumTile16Individual
Definition overworld.h:434
constexpr int overworldEntranceAllowedTilesRight
Definition overworld.h:399
constexpr int kNumOverworldMaps
Definition overworld.h:433
constexpr int OWExitXScrollWhirlpool
Definition overworld.h:147
constexpr int overworldMapSize
Definition overworld.h:402
constexpr int overworldMusicDW
Definition overworld.h:397
constexpr int OWExitUnk1Whirlpool
Definition overworld.h:152
constexpr int OWExitUnk2Whirlpool
Definition overworld.h:153
constexpr int overworldMusicMasterSword
Definition overworld.h:395
constexpr int OWExitXPlayerWhirlpool
Definition overworld.h:149
constexpr int overworldCustomMosaicASM
Definition overworld.h:429
constexpr int overworldScreenSize
Definition overworld.h:416
constexpr int OWExitDoorType2
Definition overworld.h:142
constexpr int OWExitMapIdWhirlpool
Definition overworld.h:144
constexpr int overworldMusicBegining
Definition overworld.h:393
constexpr int kOverworldSpritePaletteIds
Definition overworld.h:380
constexpr int OverworldScreenTileMapChangeByScreen3
Definition overworld.h:422
constexpr int transition_target_north
Definition overworld.h:427
constexpr int overworldMusicZelda
Definition overworld.h:394
constexpr int overworldSpecialGFXGroup
Definition overworld.h:384
constexpr int overworldMapSizeHighByte
Definition overworld.h:405
constexpr int GravesCountOnY
Definition overworld.h:36
constexpr int OWExitYScrollWhirlpool
Definition overworld.h:146
constexpr int overworldSpritesBegining
Definition overworld.h:386
constexpr int overworldMusicAgahim
Definition overworld.h:396
constexpr int transition_target_west
Definition overworld.h:428
constexpr int overworldItemsBank
Definition overworld.h:75
const std::vector< std::string > kSecretItemNames
Definition overworld.h:42
constexpr int OverworldScreenTileMapChangeByScreen4
Definition overworld.h:423
constexpr int overworldSpecialPALGroup
Definition overworld.h:385
constexpr int overworldTransitionPositionX
Definition overworld.h:415
constexpr int GravesYTilePos
Definition overworld.h:29
constexpr int overworldSpritesAgahnim
Definition overworld.h:387
constexpr int OverworldScreenTileMapChangeByScreen1
Definition overworld.h:420
constexpr int OWExitDoorType1
Definition overworld.h:141
constexpr int overworldItemsPointers
Definition overworld.h:73
constexpr int GraveLinkSpecialHole
Definition overworld.h:38
constexpr int OWExitVramWhirlpool
Definition overworld.h:145
constexpr int GravesXTilePos
Definition overworld.h:30
constexpr int GravesTilemapPos
Definition overworld.h:31
constexpr int OWExitYPlayerWhirlpool
Definition overworld.h:148
constexpr int overworldEntranceAllowedTilesLeft
Definition overworld.h:398
constexpr int kOverworldMessageIds
Definition overworld.h:391
std::vector< std::vector< uint16_t > > OWBlockset
Represents tile32 data for the overworld.
Definition common.h:15
Definition common.cc:21
Overworld map tile32 data.
Definition common.h:20