yaze 0.2.0
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
room.h
Go to the documentation of this file.
1#ifndef YAZE_APP_ZELDA3_DUNGEON_ROOM_H
2#define YAZE_APP_ZELDA3_DUNGEON_ROOM_H
3
4#include <cstdint>
5#include <fstream>
6#include <string>
7#include <string_view>
8#include <vector>
9
10#include "app/core/constants.h"
11#include "app/gfx/bitmap.h"
13#include "app/gfx/snes_tile.h"
14#include "app/gui/canvas.h"
15#include "app/rom.h"
18
19namespace yaze {
20namespace app {
21namespace zelda3 {
22namespace dungeon {
23
24// room_object_layout_pointer 0x882D
25// room_object_pointer 0x874C
26// 0x882D -> readlong() -> 2FEF04 (04EF2F -> toPC->026F2F) ->
27
28// 47EF04 ; layout00 ptr
29// AFEF04 ; layout01 ptr
30// F0EF04 ; layout02 ptr
31// 4CF004 ; layout03 ptr
32// A8F004 ; layout04 ptr
33// ECF004 ; layout05 ptr
34// 48F104 ; layout06 ptr
35// A4F104 ; layout07 ptr
36// also they are not exactly the same as rooms
37// the object array is terminated by a 0xFFFF there's no layers
38// in normal room when you encounter a 0xFFFF it goes to the next layer
39
40constexpr int room_object_layout_pointer = 0x882D;
41constexpr int room_object_pointer = 0x874C; // Long pointer
42
43constexpr int dungeons_main_bg_palette_pointers = 0xDEC4B; // JP Same
44constexpr int dungeons_palettes = 0xDD734;
45constexpr int room_items_pointers = 0xDB69; // JP 0xDB67
46constexpr int rooms_sprite_pointer = 0x4C298; // JP Same //2byte bank 09D62E
47constexpr int kRoomHeaderPointer = 0xB5DD; // LONG
48constexpr int kRoomHeaderPointerBank = 0xB5E7; // JP Same
49constexpr int gfx_groups_pointer = 0x6237;
50constexpr int chests_length_pointer = 0xEBF6;
51constexpr int chests_data_pointer1 = 0xEBFB;
52
53constexpr int messages_id_dungeon = 0x3F61D;
54
55constexpr int blocks_length = 0x8896; // Word value
56constexpr int blocks_pointer1 = 0x15AFA;
57constexpr int blocks_pointer2 = 0x15B01;
58constexpr int blocks_pointer3 = 0x15B08;
59constexpr int blocks_pointer4 = 0x15B0F;
60constexpr int torch_data = 0x2736A; // JP 0x2704A
61constexpr int torches_length_pointer = 0x88C1;
62constexpr int sprite_blockset_pointer = 0x5B57;
63
64constexpr int sprites_data = 0x4D8B0;
65constexpr int sprites_data_empty_room = 0x4D8AE;
66constexpr int sprites_end_data = 0x4EC9E;
67constexpr int pit_pointer = 0x394AB;
68constexpr int pit_count = 0x394A6;
69constexpr int doorPointers = 0xF83C0;
70
71// doors
72constexpr int door_gfx_up = 0x4D9E;
73constexpr int door_gfx_down = 0x4E06;
74constexpr int door_gfx_cavexit_down = 0x4E06;
75constexpr int door_gfx_left = 0x4E66;
76constexpr int door_gfx_right = 0x4EC6;
77constexpr int door_pos_up = 0x197E;
78constexpr int door_pos_down = 0x1996;
79constexpr int door_pos_left = 0x19AE;
80constexpr int door_pos_right = 0x19C6;
81
82constexpr int dungeon_spr_ptrs = 0x090000;
83
84constexpr int NumberOfRooms = 296;
85
86constexpr ushort stairsObjects[] = {0x139, 0x138, 0x13B, 0x12E, 0x12D};
87
89 public:
90 DungeonDestination() = default;
92 DungeonDestination(uint8_t i) : Index(i) {}
93
94 uint8_t Index;
95 uint8_t Target = 0;
96 uint8_t TargetLayer = 0;
97};
98
100 object_door() = default;
101 object_door(short id, uint8_t x, uint8_t y, uint8_t size, uint8_t layer)
102 : id_(id), x_(x), y_(y), size_(size), layer_(layer) {}
103
104 short id_;
105 uint8_t x_;
106 uint8_t y_;
107 uint8_t size_;
108 uint8_t type_;
109 uint8_t layer_;
110};
111
112struct ChestData {
113 ChestData() = default;
114 ChestData(uchar i, bool s) : id_(i), size_(s){};
115
117 bool size_;
118};
119
121 StaircaseRooms() = default;
122 StaircaseRooms(uchar i, uchar r, const char* label)
123 : id_(i), room_(r), label_(label){};
124
127 const char* label_;
128};
129
130class Room : public SharedRom {
131 public:
132 Room() = default;
133 Room(int room_id) : room_id_(room_id) {}
134 ~Room() = default;
135 void LoadHeader();
136 void LoadRoomFromROM();
137
138 void LoadRoomGraphics(uchar entrance_blockset = 0xFF);
141
142 void LoadObjects();
143 void LoadSprites();
144 void LoadChests();
145
146 auto blocks() const { return blocks_; }
147 auto& mutable_blocks() { return blocks_; }
148 auto layer1() const { return background_bmps_[0]; }
149 auto layer2() const { return background_bmps_[1]; }
150 auto layer3() const { return background_bmps_[2]; }
151 auto room_size() const { return room_size_; }
152 auto room_size_ptr() const { return room_size_pointer_; }
153 auto set_room_size(uint64_t size) { room_size_ = size; }
154
155 RoomObject AddObject(short oid, uint8_t x, uint8_t y, uint8_t size,
156 uint8_t layer) {
157 return RoomObject(oid, x, y, size, layer);
158 }
159
160 uint8_t blockset = 0;
161 uint8_t spriteset = 0;
162 uint8_t palette = 0;
163 uint8_t layout = 0;
164 uint8_t holewarp = 0;
165 uint8_t floor1 = 0;
166 uint8_t floor2 = 0;
167
168 uint16_t message_id_ = 0;
169
171 std::vector<uint8_t> bg1_buffer_;
172 std::vector<uint8_t> bg2_buffer_;
173 std::vector<uint8_t> current_gfx16_;
174
175 private:
180
183
186
189
193 uint8_t palette_;
197
198 uint64_t room_size_;
200
201 std::array<uint8_t, 16> blocks_;
202 std::array<uchar, 16> chest_list_;
203
204 std::array<gfx::Bitmap, 3> background_bmps_;
205 std::vector<zelda3::Sprite> sprites_;
206 std::vector<StaircaseRooms> staircase_rooms_vec_;
207
214
215 std::vector<ChestData> chests_in_room_;
216 std::vector<RoomObject> tile_objects_;
217
218 std::vector<int> room_addresses_;
219};
220
221constexpr std::string_view kRoomNames[] = {
222 "Ganon",
223 "Hyrule Castle (North Corridor)",
224 "Behind Sanctuary (Switch)",
225 "Houlihan",
226 "Turtle Rock (Crysta-Roller)",
227 "Empty",
228 "Swamp Palace (Arrghus[Boss])",
229 "Tower of Hera (Moldorm[Boss])",
230 "Cave (Healing Fairy)",
231 "Palace of Darkness",
232 "Palace of Darkness (Stalfos Trap)",
233 "Palace of Darkness (Turtle)",
234 "Ganon's Tower (Entrance)",
235 "Ganon's Tower (Agahnim2[Boss])",
236 "Ice Palace (Entrance )",
237 "Empty Clone ",
238 "Ganon Evacuation Route",
239 "Hyrule Castle (Bombable Stock )",
240 "Sanctuary",
241 "Turtle Rock (Hokku-Bokku Key 2)",
242 "Turtle Rock (Big Key )",
243 "Turtle Rock",
244 "Swamp Palace (Swimming Treadmill)",
245 "Tower of Hera (Moldorm Fall )",
246 "Cave",
247 "Palace of Darkness (Dark Maze)",
248 "Palace of Darkness (Big Chest )",
249 "Palace of Darkness (Mimics / Moving Wall )",
250 "Ganon's Tower (Ice Armos)",
251 "Ganon's Tower (Final Hallway)",
252 "Ice Palace (Bomb Floor / Bari )",
253 "Ice Palace (Pengator / Big Key )",
254 "Agahnim's Tower (Agahnim[Boss])",
255 "Hyrule Castle (Key-rat )",
256 "Hyrule Castle (Sewer Text Trigger )",
257 "Turtle Rock (West Exit to Balcony)",
258 "Turtle Rock (Double Hokku-Bokku / Big chest )",
259 "Empty Clone ",
260 "Swamp Palace (Statue )",
261 "Tower of Hera (Big Chest)",
262 "Swamp Palace (Entrance )",
263 "Skull Woods (Mothula[Boss])",
264 "Palace of Darkness (Big Hub )",
265 "Palace of Darkness (Map Chest / Fairy )",
266 "Cave",
267 "Empty Clone ",
268 "Ice Palace (Compass )",
269 "Cave (Kakariko Well HP)",
270 "Agahnim's Tower (Maiden Sacrifice Chamber)",
271 "Tower of Hera (Hardhat Beetles )",
272 "Hyrule Castle (Sewer Key Chest )",
273 "Desert Palace (Lanmolas[Boss])",
274 "Swamp Palace (Push Block Puzzle / Pre-Big Key )",
275 "Swamp Palace (Big Key / BS )",
276 "Swamp Palace (Big Chest )",
277 "Swamp Palace (Map Chest / Water Fill )",
278 "Swamp Palace (Key Pot )",
279 "Skull Woods (Gibdo Key / Mothula Hole )",
280 "Palace of Darkness (Bombable Floor )",
281 "Palace of Darkness (Spike Block / Conveyor )",
282 "Cave",
283 "Ganon's Tower (Torch 2)",
284 "Ice Palace (Stalfos Knights / Conveyor Hellway)",
285 "Ice Palace (Map Chest )",
286 "Agahnim's Tower (Final Bridge )",
287 "Hyrule Castle (First Dark )",
288 "Hyrule Castle (6 Ropes )",
289 "Desert Palace (Torch Puzzle / Moving Wall )",
290 "Thieves Town (Big Chest )",
291 "Thieves Town (Jail Cells )",
292 "Swamp Palace (Compass Chest )",
293 "Empty Clone ",
294 "Empty Clone ",
295 "Skull Woods (Gibdo Torch Puzzle )",
296 "Palace of Darkness (Entrance )",
297 "Palace of Darkness (Warps / South Mimics )",
298 "Ganon's Tower (Mini-Helmasaur Conveyor )",
299 "Ganon's Tower (Moldorm )",
300 "Ice Palace (Bomb-Jump )",
301 "Ice Palace Clone (Fairy )",
302 "Hyrule Castle (West Corridor)",
303 "Hyrule Castle (Throne )",
304 "Hyrule Castle (East Corridor)",
305 "Desert Palace (Popos 2 / Beamos Hellway )",
306 "Swamp Palace (Upstairs Pits )",
307 "Castle Secret Entrance / Uncle Death ",
308 "Skull Woods (Key Pot / Trap )",
309 "Skull Woods (Big Key )",
310 "Skull Woods (Big Chest )",
311 "Skull Woods (Final Section Entrance )",
312 "Palace of Darkness (Helmasaur King[Boss])",
313 "Ganon's Tower (Spike Pit )",
314 "Ganon's Tower (Ganon-Ball Z)",
315 "Ganon's Tower (Gauntlet 1/2/3)",
316 "Ice Palace (Lonely Firebar)",
317 "Ice Palace (Hidden Chest / Spike Floor )",
318 "Hyrule Castle (West Entrance )",
319 "Hyrule Castle (Main Entrance )",
320 "Hyrule Castle (East Entrance )",
321 "Desert Palace (Final Section Entrance )",
322 "Thieves Town (West Attic )",
323 "Thieves Town (East Attic )",
324 "Swamp Palace (Hidden Chest / Hidden Door )",
325 "Skull Woods (Compass Chest )",
326 "Skull Woods (Key Chest / Trap )",
327 "Empty Clone ",
328 "Palace of Darkness (Rupee )",
329 "Ganon's Tower (Mimics s)",
330 "Ganon's Tower (Lanmolas )",
331 "Ganon's Tower (Gauntlet 4/5)",
332 "Ice Palace (Pengators )",
333 "Empty Clone ",
334 "Hyrule Castle (Small Corridor to Jail Cells)",
335 "Hyrule Castle (Boomerang Chest )",
336 "Hyrule Castle (Map Chest )",
337 "Desert Palace (Big Chest )",
338 "Desert Palace (Map Chest )",
339 "Desert Palace (Big Key Chest )",
340 "Swamp Palace (Water Drain )",
341 "Tower of Hera (Entrance )",
342 "Empty Clone ",
343 "Empty Clone ",
344 "Empty Clone ",
345 "Ganon's Tower",
346 "Ganon's Tower (East Side Collapsing Bridge / Exploding Wall )",
347 "Ganon's Tower (Winder / Warp Maze )",
348 "Ice Palace (Hidden Chest / Bombable Floor )",
349 "Ice Palace ( Big Spike Traps )",
350 "Hyrule Castle (Jail Cell )",
351 "Hyrule Castle",
352 "Hyrule Castle (Basement Chasm )",
353 "Desert Palace (West Entrance )",
354 "Desert Palace (Main Entrance )",
355 "Desert Palace (East Entrance )",
356 "Empty Clone ",
357 "Tower of Hera (Tile )",
358 "Empty Clone ",
359 "Eastern Palace (Fairy )",
360 "Empty Clone ",
361 "Ganon's Tower (Block Puzzle / Spike Skip / Map Chest )",
362 "Ganon's Tower (East and West Downstairs / Big Chest )",
363 "Ganon's Tower (Tile / Torch Puzzle )",
364 "Ice Palace",
365 "Empty Clone ",
366 "Misery Mire (Vitreous[Boss])",
367 "Misery Mire (Final Switch )",
368 "Misery Mire (Dark Bomb Wall / Switches )",
369 "Misery Mire (Dark Cane Floor Switch Puzzle )",
370 "Empty Clone ",
371 "Ganon's Tower (Final Collapsing Bridge )",
372 "Ganon's Tower (Torches 1 )",
373 "Misery Mire (Torch Puzzle / Moving Wall )",
374 "Misery Mire (Entrance )",
375 "Eastern Palace (Eyegore Key )",
376 "Empty Clone ",
377 "Ganon's Tower (Many Spikes / Warp Maze )",
378 "Ganon's Tower (Invisible Floor Maze )",
379 "Ganon's Tower (Compass Chest / Invisible Floor )",
380 "Ice Palace (Big Chest )",
381 "Ice Palace",
382 "Misery Mire (Pre-Vitreous )",
383 "Misery Mire (Fish )",
384 "Misery Mire (Bridge Key Chest )",
385 "Misery Mire",
386 "Turtle Rock (Trinexx[Boss])",
387 "Ganon's Tower (Wizzrobes s)",
388 "Ganon's Tower (Moldorm Fall )",
389 "Tower of Hera (Fairy )",
390 "Eastern Palace (Stalfos Spawn )",
391 "Eastern Palace (Big Chest )",
392 "Eastern Palace (Map Chest )",
393 "Thieves Town (Moving Spikes / Key Pot )",
394 "Thieves Town (Blind The Thief[Boss])",
395 "Empty Clone ",
396 "Ice Palace",
397 "Ice Palace (Ice Bridge )",
398 "Agahnim's Tower (Circle of Pots)",
399 "Misery Mire (Hourglass )",
400 "Misery Mire (Slug )",
401 "Misery Mire (Spike Key Chest )",
402 "Turtle Rock (Pre-Trinexx )",
403 "Turtle Rock (Dark Maze)",
404 "Turtle Rock (Chain Chomps )",
405 "Turtle Rock (Map Chest / Key Chest / Roller )",
406 "Eastern Palace (Big Key )",
407 "Eastern Palace (Lobby Cannonballs )",
408 "Eastern Palace (Dark Antifairy / Key Pot )",
409 "Thieves Town (Hellway)",
410 "Thieves Town (Conveyor Toilet)",
411 "Empty Clone ",
412 "Ice Palace (Block Puzzle )",
413 "Ice Palace Clone (Switch )",
414 "Agahnim's Tower (Dark Bridge )",
415 "Misery Mire (Compass Chest / Tile )",
416 "Misery Mire (Big Hub )",
417 "Misery Mire (Big Chest )",
418 "Turtle Rock (Final Crystal Switch Puzzle )",
419 "Turtle Rock (Laser Bridge)",
420 "Turtle Rock",
421 "Turtle Rock (Torch Puzzle)",
422 "Eastern Palace (Armos Knights[Boss])",
423 "Eastern Palace (Entrance )",
424 "??",
425 "Thieves Town (North West Entrance )",
426 "Thieves Town (North East Entrance )",
427 "Empty Clone ",
428 "Ice Palace (Hole to Kholdstare )",
429 "Empty Clone ",
430 "Agahnim's Tower (Dark Maze)",
431 "Misery Mire (Conveyor Slug / Big Key )",
432 "Misery Mire (Mire02 / Wizzrobes )",
433 "Empty Clone ",
434 "Empty Clone ",
435 "Turtle Rock (Laser Key )",
436 "Turtle Rock (Entrance )",
437 "Empty Clone ",
438 "Eastern Palace (Zeldagamer / Pre-Armos Knights )",
439 "Eastern Palace (Canonball ",
440 "Eastern Palace",
441 "Thieves Town (Main (South West) Entrance )",
442 "Thieves Town (South East Entrance )",
443 "Empty Clone ",
444 "Ice Palace (Kholdstare[Boss])",
445 "Cave",
446 "Agahnim's Tower (Entrance )",
447 "Cave (Lost Woods HP)",
448 "Cave (Lumberjack's Tree HP)",
449 "Cave (1/2 Magic)",
450 "Cave (Lost Old Man Final Cave)",
451 "Cave (Lost Old Man Final Cave)",
452 "Cave",
453 "Cave",
454 "Cave",
455 "Empty Clone ",
456 "Cave (Spectacle Rock HP)",
457 "Cave",
458 "Empty Clone ",
459 "Cave",
460 "Cave (Spiral Cave)",
461 "Cave (Crystal Switch / 5 Chests )",
462 "Cave (Lost Old Man Starting Cave)",
463 "Cave (Lost Old Man Starting Cave)",
464 "House",
465 "House (Old Woman (Sahasrahla's Wife?))",
466 "House (Angry Brothers)",
467 "House (Angry Brothers)",
468 "Empty Clone ",
469 "Empty Clone ",
470 "Cave",
471 "Cave",
472 "Cave",
473 "Cave",
474 "Empty Clone ",
475 "Cave",
476 "Cave",
477 "Cave",
478
479 "Chest Minigame",
480 "Houses",
481 "Sick Boy house",
482 "Tavern",
483 "Link's House",
484 "Sarashrala Hut",
485 "Chest Minigame",
486 "Library",
487 "Chicken House",
488 "Witch Shop",
489 "A Aginah's Cave",
490 "Dam",
491 "Mimic Cave",
492 "Mire Shed",
493 "Cave",
494 "Shop",
495 "Shop",
496 "Archery Minigame",
497 "DW Church/Shop",
498 "Grave Cave",
499 "Fairy Fountain",
500 "Fairy Upgrade",
501 "Pyramid Fairy",
502 "Spike Cave",
503 "Chest Minigame",
504 "Blind Hut",
505 "Bonzai Cave",
506 "Circle of bush Cave",
507 "Big Bomb Shop, C-House",
508 "Blind Hut 2",
509 "Hype Cave",
510 "Shop",
511 "Ice Cave",
512 "Smith",
513 "Fortune Teller",
514 "MiniMoldorm Cave",
515 "Under Rock Caves",
516 "Smith",
517 "Cave",
518 "Mazeblock Cave",
519 "Smith Peg Cave"};
520
521constexpr std::string_view kEntranceNames[] = {
522 "Link's House Intro",
523 "Link's House Post-intro",
524 "Sanctuary",
525 "Hyrule Castle West",
526 "Hyrule Castle Central",
527 "Hyrule Castle East",
528 "Death Mountain Express (Lower)",
529 "Death Mountain Express (Upper)",
530 "Eastern Palace",
531 "Desert Palace Central",
532 "Desert Palace East",
533 "Desert Palace West",
534 "Desert Palace Boss Lair",
535 "Kakariko Elder's House West",
536 "Kakariko Elder's House East",
537 "Kakariko Angry Bros West",
538 "Kakariko Angry Bros East",
539 "Mad Batter Lair",
540 "Under Lumberjacks' Weird Tree",
541 "Death Mountain Maze 0000",
542 "Death Mountain Maze 0001",
543 "Turtle Rock Mountainface 1",
544 "Death Mountain Cape Heart Piece Cave (Lower)",
545 "Death Mountain Cape Heart Piece Cave (Upper)",
546 "Turtle Rock Mountainface 2",
547 "Turtle Rock Mountainface 3",
548 "Death Mountain Maze 0002",
549 "Death Mountain Maze 0003",
550 "Death Mountain Maze 0004",
551 "Death Mountain Maze 0005",
552 "Death Mountain Maze 0006",
553 "Death Mountain Maze 0007",
554 "Death Mountain Maze 0008",
555 "Spectacle Rock Maze 1",
556 "Spectacle Rock Maze 2",
557 "Spectacle Rock Maze 3",
558 "Hyrule Castle Tower",
559 "Swamp Palace",
560 "Palace of Darkness",
561 "Misery Mire",
562 "Skull Woods 1",
563 "Skull Woods 2",
564 "Skull Woods Big Chest",
565 "Skull Woods Boss Lair",
566 "Lost Woods Thieves' Lair",
567 "Ice Palace",
568 "Death Mountain Escape West",
569 "Death Mountain Escape East",
570 "Death Mountain Elder's Cave (Lower)",
571 "Death Mountain Elder's Cave (Upper)",
572 "Hyrule Castle Secret Cellar",
573 "Tower of Hera",
574 "Thieves's Town",
575 "Turtle Rock Main",
576 "Ganon's Pyramid Sanctum (Lower)",
577 "Ganon's Tower",
578 "Fairy Cave 1",
579 "Kakariko Western Well",
580 "Death Mountain Maze 0009",
581 "Death Mountain Maze 0010",
582 "Treasure Shell Game 1",
583 "Storyteller Cave 1",
584 "Snitch House 1",
585 "Snitch House 2",
586 "SickBoy House",
587 "Byrna Gauntlet",
588 "Kakariko Pub South",
589 "Kakariko Pub North",
590 "Kakariko Inn",
591 "Sahasrahlah's Disco Infernum",
592 "Kakariko's Lame Shop",
593 "Village of Outcasts Chest Game",
594 "Village of Outcasts Orphanage",
595 "Kakariko Library",
596 "Kakariko Storage Shed",
597 "Kakariko Sweeper Lady's House",
598 "Potion Shop",
599 "Aginah's Desert Cottage",
600 "Watergate",
601 "Death Mountain Maze 0011",
602 "Fairy Cave 2",
603 "Refill Cave 0001",
604 "Refill Cave 0002",
605 "The Bomb \"Shop\"",
606 "Village of Outcasts Retirement Center",
607 "Fairy Cave 3",
608 "Good Bee Cave",
609 "General Store 1",
610 "General Store 2",
611 "Archery Game",
612 "Storyteller Cave 2",
613 "Hall of the Invisibility Cape",
614 "Pond of Wishing",
615 "Pond of Happiness",
616 "Fairy Cave 4",
617 "Swamp of Evil Heart Piece Hall",
618 "General Store 3",
619 "Blind's Old Hideout",
620 "Storyteller Cave 3",
621 "Warped Pond of Wishing",
622 "Chez Smithies",
623 "Fortune Teller 1",
624 "Fortune Teller 2",
625 "Chest Shell Game 2",
626 "Storyteller Cave 4",
627 "Storyteller Cave 5",
628 "Storyteller Cave 6",
629 "Village House 1",
630 "Thief Hideout 1",
631 "Thief Hideout 2",
632 "Heart Piece Cave 1",
633 "Thief Hideout 3",
634 "Refill Cave 3",
635 "Fairy Cave 5",
636 "Heart Piece Cave 2",
637 "Hyrule Castle Prison",
638 "Hyrule Castle Throne Room",
639 "Hyrule Tower Agahnim's Sanctum",
640 "Skull Woods 3 (Drop In)",
641 "Skull Woods 4 (Drop In)",
642 "Skull Woods 5 (Drop In)",
643 "Skull Woods 6 (Drop In)",
644 "Lost Woods Thieves' Hideout (Drop In)",
645 "Ganon's Pyramid Sanctum (Upper)",
646 "Fairy Cave 6 (Drop In)",
647 "Hyrule Castle Secret Cellar (Drop In)",
648 "Mad Batter Lair (Drop In)",
649 "Under Lumberjacks' Weird Tree (Drop In)",
650 "Kakariko Western Well (Drop In)",
651 "Hyrule Sewers Goodies Room (Drop In)",
652 "Chris Houlihan Room (Drop In)",
653 "Heart Piece Cave 3 (Drop In)",
654 "Ice Rod Cave"};
655
656} // namespace dungeon
657} // namespace zelda3
658} // namespace app
659} // namespace yaze
660
661#endif
A class to hold a shared pointer to a Rom object.
Definition rom.h:585
Represents a bitmap image.
Definition bitmap.h:70
std::array< gfx::Bitmap, 3 > background_bmps_
Definition room.h:204
std::vector< uint8_t > bg1_buffer_
Definition room.h:171
DungeonDestination stair1_
Definition room.h:210
std::vector< uint8_t > bg2_buffer_
Definition room.h:172
RoomObject AddObject(short oid, uint8_t x, uint8_t y, uint8_t size, uint8_t layer)
Definition room.h:155
void LoadRoomGraphics(uchar entrance_blockset=0xFF)
Definition room.cc:196
std::vector< ChestData > chests_in_room_
Definition room.h:215
std::vector< RoomObject > tile_objects_
Definition room.h:216
auto set_room_size(uint64_t size)
Definition room.h:153
std::array< uchar, 16 > chest_list_
Definition room.h:202
std::array< uint8_t, 16 > blocks_
Definition room.h:201
DungeonDestination stair2_
Definition room.h:211
DungeonDestination pits_
Definition room.h:209
DungeonDestination stair3_
Definition room.h:212
std::vector< int > room_addresses_
Definition room.h:218
std::vector< uint8_t > current_gfx16_
Definition room.h:173
std::vector< StaircaseRooms > staircase_rooms_vec_
Definition room.h:206
DungeonDestination stair4_
Definition room.h:213
std::vector< zelda3::Sprite > sprites_
Definition room.h:205
unsigned char uchar
Definition constants.h:121
unsigned short ushort
Definition constants.h:119
constexpr int pit_pointer
Definition room.h:67
constexpr int door_pos_up
Definition room.h:77
constexpr int kRoomHeaderPointerBank
Definition room.h:48
constexpr int rooms_sprite_pointer
Definition room.h:46
constexpr int blocks_length
Definition room.h:55
constexpr int sprites_data_empty_room
Definition room.h:65
constexpr int door_gfx_cavexit_down
Definition room.h:74
constexpr int door_gfx_right
Definition room.h:76
constexpr int blocks_pointer4
Definition room.h:59
constexpr int chests_length_pointer
Definition room.h:50
constexpr int door_gfx_down
Definition room.h:73
constexpr int chests_data_pointer1
Definition room.h:51
constexpr int doorPointers
Definition room.h:69
constexpr int dungeons_main_bg_palette_pointers
Definition room.h:43
constexpr int torches_length_pointer
Definition room.h:61
constexpr int door_gfx_left
Definition room.h:75
constexpr ushort stairsObjects[]
Definition room.h:86
constexpr int door_pos_left
Definition room.h:79
constexpr int room_items_pointers
Definition room.h:45
constexpr int door_gfx_up
Definition room.h:72
constexpr int dungeons_palettes
Definition room.h:44
constexpr int NumberOfRooms
Definition room.h:84
constexpr int torch_data
Definition room.h:60
constexpr int kRoomHeaderPointer
Definition room.h:47
constexpr int pit_count
Definition room.h:68
constexpr std::string_view kEntranceNames[]
Definition room.h:521
constexpr int blocks_pointer2
Definition room.h:57
constexpr int blocks_pointer3
Definition room.h:58
constexpr int blocks_pointer1
Definition room.h:56
constexpr int room_object_pointer
Definition room.h:41
constexpr int sprite_blockset_pointer
Definition room.h:62
constexpr std::string_view kRoomNames[]
Definition room.h:221
constexpr int messages_id_dungeon
Definition room.h:53
constexpr int door_pos_down
Definition room.h:78
constexpr int gfx_groups_pointer
Definition room.h:49
constexpr int sprites_end_data
Definition room.h:66
constexpr int door_pos_right
Definition room.h:80
constexpr int room_object_layout_pointer
Definition room.h:40
constexpr int sprites_data
Definition room.h:64
constexpr int dungeon_spr_ptrs
Definition room.h:82
Definition common.cc:21
StaircaseRooms(uchar i, uchar r, const char *label)
Definition room.h:122
object_door(short id, uint8_t x, uint8_t y, uint8_t size, uint8_t layer)
Definition room.h:101