yaze 0.2.2
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 <yaze.h>
5
6#include <cstdint>
7#include <string_view>
8#include <vector>
9
10#include "app/gfx/bitmap.h"
11#include "app/rom.h"
14
15namespace yaze {
16namespace zelda3 {
17
18// room_object_layout_pointer 0x882D
19// room_object_pointer 0x874C
20// 0x882D -> readlong() -> 2FEF04 (04EF2F -> toPC->026F2F) ->
21
22// 47EF04 ; layout00 ptr
23// AFEF04 ; layout01 ptr
24// F0EF04 ; layout02 ptr
25// 4CF004 ; layout03 ptr
26// A8F004 ; layout04 ptr
27// ECF004 ; layout05 ptr
28// 48F104 ; layout06 ptr
29// A4F104 ; layout07 ptr
30// also they are not exactly the same as rooms
31// the object array is terminated by a 0xFFFF there's no layers
32// in normal room when you encounter a 0xFFFF it goes to the next layer
33
34constexpr int room_object_layout_pointer = 0x882D;
35constexpr int room_object_pointer = 0x874C; // Long pointer
36
37constexpr int dungeons_main_bg_palette_pointers = 0xDEC4B; // JP Same
38constexpr int dungeons_palettes = 0xDD734;
39constexpr int room_items_pointers = 0xDB69; // JP 0xDB67
40constexpr int rooms_sprite_pointer = 0x4C298; // JP Same //2byte bank 09D62E
41constexpr int kRoomHeaderPointer = 0xB5DD; // LONG
42constexpr int kRoomHeaderPointerBank = 0xB5E7; // JP Same
43constexpr int gfx_groups_pointer = 0x6237;
44constexpr int chests_length_pointer = 0xEBF6;
45constexpr int chests_data_pointer1 = 0xEBFB;
46
47constexpr int messages_id_dungeon = 0x3F61D;
48
49constexpr int blocks_length = 0x8896; // Word value
50constexpr int blocks_pointer1 = 0x15AFA;
51constexpr int blocks_pointer2 = 0x15B01;
52constexpr int blocks_pointer3 = 0x15B08;
53constexpr int blocks_pointer4 = 0x15B0F;
54constexpr int torch_data = 0x2736A; // JP 0x2704A
55constexpr int torches_length_pointer = 0x88C1;
56constexpr int sprite_blockset_pointer = 0x5B57;
57
58constexpr int sprites_data = 0x4D8B0;
59constexpr int sprites_data_empty_room = 0x4D8AE;
60constexpr int sprites_end_data = 0x4EC9E;
61constexpr int pit_pointer = 0x394AB;
62constexpr int pit_count = 0x394A6;
63constexpr int doorPointers = 0xF83C0;
64
65// doors
66constexpr int door_gfx_up = 0x4D9E;
67constexpr int door_gfx_down = 0x4E06;
68constexpr int door_gfx_cavexit_down = 0x4E06;
69constexpr int door_gfx_left = 0x4E66;
70constexpr int door_gfx_right = 0x4EC6;
71constexpr int door_pos_up = 0x197E;
72constexpr int door_pos_down = 0x1996;
73constexpr int door_pos_left = 0x19AE;
74constexpr int door_pos_right = 0x19C6;
75
76constexpr int dungeon_spr_ptrs = 0x090000;
77
78constexpr int NumberOfRooms = 296;
79
80constexpr uint16_t stairsObjects[] = {0x139, 0x138, 0x13B, 0x12E, 0x12D};
81
83 uint8_t ID;
84 std::string Name;
88 LayerMergeType() = default;
89 LayerMergeType(uint8_t id, std::string name, bool see, bool top, bool trans) {
90 ID = id;
91 Name = name;
92 Layer2OnTop = top;
93 Layer2Translucent = trans;
94 Layer2Visible = see;
95 }
96};
97
98const static LayerMergeType LayerMerge00{0x00, "Off", true, false, false};
99const static LayerMergeType LayerMerge01{0x01, "Parallax", true, false, false};
100const static LayerMergeType LayerMerge02{0x02, "Dark", true, true, true};
101const static LayerMergeType LayerMerge03{0x03, "On top", true, true, false};
102const static LayerMergeType LayerMerge04{0x04, "Translucent", true, true, true};
103const static LayerMergeType LayerMerge05{0x05, "Addition", true, true, true};
104const static LayerMergeType LayerMerge06{0x06, "Normal", true, false, false};
105const static LayerMergeType LayerMerge07{0x07, "Transparent", true, true, true};
106const static LayerMergeType LayerMerge08{0x08, "Dark room", true, true, true};
107
108const static LayerMergeType kLayerMergeTypeList[] = {
109 LayerMerge00, LayerMerge01, LayerMerge02, LayerMerge03, LayerMerge04,
110 LayerMerge05, LayerMerge06, LayerMerge07, LayerMerge08};
111
119
130
131enum TagKey {
196};
197
198class Room : public SharedRom {
199 public:
200 Room(int room_id) : room_id_(room_id) {}
201
202 void LoadRoomGraphics(uint8_t entrance_blockset = 0xFF);
205
206 void LoadObjects();
207 void LoadSprites();
208 void LoadChests();
209
210 auto blocks() const { return blocks_; }
211 auto &mutable_blocks() { return blocks_; }
212 auto &layer1() { return background_bmps_[0]; }
213 auto &layer2() { return background_bmps_[1]; }
214 auto &layer3() { return background_bmps_[2]; }
215
216 uint8_t blockset = 0;
217 uint8_t spriteset = 0;
218 uint8_t palette = 0;
219 uint8_t layout = 0;
220 uint8_t holewarp = 0;
221 uint8_t floor1 = 0;
222 uint8_t floor2 = 0;
223
224 uint16_t message_id_ = 0;
225
227 std::vector<uint8_t> bg1_buffer_;
228 std::vector<uint8_t> bg2_buffer_;
229 std::vector<uint8_t> current_gfx16_;
230
235
238
241
245 uint8_t palette_;
249
250 std::array<uint8_t, 16> blocks_;
251 std::array<chest, 16> chest_list_;
252
253 std::array<gfx::Bitmap, 3> background_bmps_;
254 std::vector<RoomObject> tile_objects_;
255 std::vector<zelda3::Sprite> sprites_;
256 std::vector<staircase> z3_staircases_;
257 std::vector<chest_data> chests_in_room_;
258
264
271};
272
273// Loads a room from the ROM.
274Room LoadRoomFromRom(Rom *rom, int room_id);
275
276struct RoomSize {
278 int64_t room_size;
279};
280
281// Calculates the size of a room in the ROM.
282RoomSize CalculateRoomSize(Rom *rom, int room_id);
283
284static const std::string RoomEffect[] = {"Nothing",
285 "Nothing",
286 "Moving Floor",
287 "Moving Water",
288 "Trinexx Shell",
289 "Red Flashes",
290 "Light Torch to See Floor",
291 "Ganon's Darkness"};
292
293constexpr std::string_view kRoomNames[] = {
294 "Ganon",
295 "Hyrule Castle (North Corridor)",
296 "Behind Sanctuary (Switch)",
297 "Houlihan",
298 "Turtle Rock (Crysta-Roller)",
299 "Empty",
300 "Swamp Palace (Arrghus[Boss])",
301 "Tower of Hera (Moldorm[Boss])",
302 "Cave (Healing Fairy)",
303 "Palace of Darkness",
304 "Palace of Darkness (Stalfos Trap)",
305 "Palace of Darkness (Turtle)",
306 "Ganon's Tower (Entrance)",
307 "Ganon's Tower (Agahnim2[Boss])",
308 "Ice Palace (Entrance )",
309 "Empty Clone ",
310 "Ganon Evacuation Route",
311 "Hyrule Castle (Bombable Stock )",
312 "Sanctuary",
313 "Turtle Rock (Hokku-Bokku Key 2)",
314 "Turtle Rock (Big Key )",
315 "Turtle Rock",
316 "Swamp Palace (Swimming Treadmill)",
317 "Tower of Hera (Moldorm Fall )",
318 "Cave",
319 "Palace of Darkness (Dark Maze)",
320 "Palace of Darkness (Big Chest )",
321 "Palace of Darkness (Mimics / Moving Wall )",
322 "Ganon's Tower (Ice Armos)",
323 "Ganon's Tower (Final Hallway)",
324 "Ice Palace (Bomb Floor / Bari )",
325 "Ice Palace (Pengator / Big Key )",
326 "Agahnim's Tower (Agahnim[Boss])",
327 "Hyrule Castle (Key-rat )",
328 "Hyrule Castle (Sewer Text Trigger )",
329 "Turtle Rock (West Exit to Balcony)",
330 "Turtle Rock (Double Hokku-Bokku / Big chest )",
331 "Empty Clone ",
332 "Swamp Palace (Statue )",
333 "Tower of Hera (Big Chest)",
334 "Swamp Palace (Entrance )",
335 "Skull Woods (Mothula[Boss])",
336 "Palace of Darkness (Big Hub )",
337 "Palace of Darkness (Map Chest / Fairy )",
338 "Cave",
339 "Empty Clone ",
340 "Ice Palace (Compass )",
341 "Cave (Kakariko Well HP)",
342 "Agahnim's Tower (Maiden Sacrifice Chamber)",
343 "Tower of Hera (Hardhat Beetles )",
344 "Hyrule Castle (Sewer Key Chest )",
345 "Desert Palace (Lanmolas[Boss])",
346 "Swamp Palace (Push Block Puzzle / Pre-Big Key )",
347 "Swamp Palace (Big Key / BS )",
348 "Swamp Palace (Big Chest )",
349 "Swamp Palace (Map Chest / Water Fill )",
350 "Swamp Palace (Key Pot )",
351 "Skull Woods (Gibdo Key / Mothula Hole )",
352 "Palace of Darkness (Bombable Floor )",
353 "Palace of Darkness (Spike Block / Conveyor )",
354 "Cave",
355 "Ganon's Tower (Torch 2)",
356 "Ice Palace (Stalfos Knights / Conveyor Hellway)",
357 "Ice Palace (Map Chest )",
358 "Agahnim's Tower (Final Bridge )",
359 "Hyrule Castle (First Dark )",
360 "Hyrule Castle (6 Ropes )",
361 "Desert Palace (Torch Puzzle / Moving Wall )",
362 "Thieves Town (Big Chest )",
363 "Thieves Town (Jail Cells )",
364 "Swamp Palace (Compass Chest )",
365 "Empty Clone ",
366 "Empty Clone ",
367 "Skull Woods (Gibdo Torch Puzzle )",
368 "Palace of Darkness (Entrance )",
369 "Palace of Darkness (Warps / South Mimics )",
370 "Ganon's Tower (Mini-Helmasaur Conveyor )",
371 "Ganon's Tower (Moldorm )",
372 "Ice Palace (Bomb-Jump )",
373 "Ice Palace Clone (Fairy )",
374 "Hyrule Castle (West Corridor)",
375 "Hyrule Castle (Throne )",
376 "Hyrule Castle (East Corridor)",
377 "Desert Palace (Popos 2 / Beamos Hellway )",
378 "Swamp Palace (Upstairs Pits )",
379 "Castle Secret Entrance / Uncle Death ",
380 "Skull Woods (Key Pot / Trap )",
381 "Skull Woods (Big Key )",
382 "Skull Woods (Big Chest )",
383 "Skull Woods (Final Section Entrance )",
384 "Palace of Darkness (Helmasaur King[Boss])",
385 "Ganon's Tower (Spike Pit )",
386 "Ganon's Tower (Ganon-Ball Z)",
387 "Ganon's Tower (Gauntlet 1/2/3)",
388 "Ice Palace (Lonely Firebar)",
389 "Ice Palace (Hidden Chest / Spike Floor )",
390 "Hyrule Castle (West Entrance )",
391 "Hyrule Castle (Main Entrance )",
392 "Hyrule Castle (East Entrance )",
393 "Desert Palace (Final Section Entrance )",
394 "Thieves Town (West Attic )",
395 "Thieves Town (East Attic )",
396 "Swamp Palace (Hidden Chest / Hidden Door )",
397 "Skull Woods (Compass Chest )",
398 "Skull Woods (Key Chest / Trap )",
399 "Empty Clone ",
400 "Palace of Darkness (Rupee )",
401 "Ganon's Tower (Mimics s)",
402 "Ganon's Tower (Lanmolas )",
403 "Ganon's Tower (Gauntlet 4/5)",
404 "Ice Palace (Pengators )",
405 "Empty Clone ",
406 "Hyrule Castle (Small Corridor to Jail Cells)",
407 "Hyrule Castle (Boomerang Chest )",
408 "Hyrule Castle (Map Chest )",
409 "Desert Palace (Big Chest )",
410 "Desert Palace (Map Chest )",
411 "Desert Palace (Big Key Chest )",
412 "Swamp Palace (Water Drain )",
413 "Tower of Hera (Entrance )",
414 "Empty Clone ",
415 "Empty Clone ",
416 "Empty Clone ",
417 "Ganon's Tower",
418 "Ganon's Tower (East Side Collapsing Bridge / Exploding Wall )",
419 "Ganon's Tower (Winder / Warp Maze )",
420 "Ice Palace (Hidden Chest / Bombable Floor )",
421 "Ice Palace ( Big Spike Traps )",
422 "Hyrule Castle (Jail Cell )",
423 "Hyrule Castle",
424 "Hyrule Castle (Basement Chasm )",
425 "Desert Palace (West Entrance )",
426 "Desert Palace (Main Entrance )",
427 "Desert Palace (East Entrance )",
428 "Empty Clone ",
429 "Tower of Hera (Tile )",
430 "Empty Clone ",
431 "Eastern Palace (Fairy )",
432 "Empty Clone ",
433 "Ganon's Tower (Block Puzzle / Spike Skip / Map Chest )",
434 "Ganon's Tower (East and West Downstairs / Big Chest )",
435 "Ganon's Tower (Tile / Torch Puzzle )",
436 "Ice Palace",
437 "Empty Clone ",
438 "Misery Mire (Vitreous[Boss])",
439 "Misery Mire (Final Switch )",
440 "Misery Mire (Dark Bomb Wall / Switches )",
441 "Misery Mire (Dark Cane Floor Switch Puzzle )",
442 "Empty Clone ",
443 "Ganon's Tower (Final Collapsing Bridge )",
444 "Ganon's Tower (Torches 1 )",
445 "Misery Mire (Torch Puzzle / Moving Wall )",
446 "Misery Mire (Entrance )",
447 "Eastern Palace (Eyegore Key )",
448 "Empty Clone ",
449 "Ganon's Tower (Many Spikes / Warp Maze )",
450 "Ganon's Tower (Invisible Floor Maze )",
451 "Ganon's Tower (Compass Chest / Invisible Floor )",
452 "Ice Palace (Big Chest )",
453 "Ice Palace",
454 "Misery Mire (Pre-Vitreous )",
455 "Misery Mire (Fish )",
456 "Misery Mire (Bridge Key Chest )",
457 "Misery Mire",
458 "Turtle Rock (Trinexx[Boss])",
459 "Ganon's Tower (Wizzrobes s)",
460 "Ganon's Tower (Moldorm Fall )",
461 "Tower of Hera (Fairy )",
462 "Eastern Palace (Stalfos Spawn )",
463 "Eastern Palace (Big Chest )",
464 "Eastern Palace (Map Chest )",
465 "Thieves Town (Moving Spikes / Key Pot )",
466 "Thieves Town (Blind The Thief[Boss])",
467 "Empty Clone ",
468 "Ice Palace",
469 "Ice Palace (Ice Bridge )",
470 "Agahnim's Tower (Circle of Pots)",
471 "Misery Mire (Hourglass )",
472 "Misery Mire (Slug )",
473 "Misery Mire (Spike Key Chest )",
474 "Turtle Rock (Pre-Trinexx )",
475 "Turtle Rock (Dark Maze)",
476 "Turtle Rock (Chain Chomps )",
477 "Turtle Rock (Map Chest / Key Chest / Roller )",
478 "Eastern Palace (Big Key )",
479 "Eastern Palace (Lobby Cannonballs )",
480 "Eastern Palace (Dark Antifairy / Key Pot )",
481 "Thieves Town (Hellway)",
482 "Thieves Town (Conveyor Toilet)",
483 "Empty Clone ",
484 "Ice Palace (Block Puzzle )",
485 "Ice Palace Clone (Switch )",
486 "Agahnim's Tower (Dark Bridge )",
487 "Misery Mire (Compass Chest / Tile )",
488 "Misery Mire (Big Hub )",
489 "Misery Mire (Big Chest )",
490 "Turtle Rock (Final Crystal Switch Puzzle )",
491 "Turtle Rock (Laser Bridge)",
492 "Turtle Rock",
493 "Turtle Rock (Torch Puzzle)",
494 "Eastern Palace (Armos Knights[Boss])",
495 "Eastern Palace (Entrance )",
496 "??",
497 "Thieves Town (North West Entrance )",
498 "Thieves Town (North East Entrance )",
499 "Empty Clone ",
500 "Ice Palace (Hole to Kholdstare )",
501 "Empty Clone ",
502 "Agahnim's Tower (Dark Maze)",
503 "Misery Mire (Conveyor Slug / Big Key )",
504 "Misery Mire (Mire02 / Wizzrobes )",
505 "Empty Clone ",
506 "Empty Clone ",
507 "Turtle Rock (Laser Key )",
508 "Turtle Rock (Entrance )",
509 "Empty Clone ",
510 "Eastern Palace (Zeldagamer / Pre-Armos Knights )",
511 "Eastern Palace (Canonball ",
512 "Eastern Palace",
513 "Thieves Town (Main (South West) Entrance )",
514 "Thieves Town (South East Entrance )",
515 "Empty Clone ",
516 "Ice Palace (Kholdstare[Boss])",
517 "Cave",
518 "Agahnim's Tower (Entrance )",
519 "Cave (Lost Woods HP)",
520 "Cave (Lumberjack's Tree HP)",
521 "Cave (1/2 Magic)",
522 "Cave (Lost Old Man Final Cave)",
523 "Cave (Lost Old Man Final Cave)",
524 "Cave",
525 "Cave",
526 "Cave",
527 "Empty Clone ",
528 "Cave (Spectacle Rock HP)",
529 "Cave",
530 "Empty Clone ",
531 "Cave",
532 "Cave (Spiral Cave)",
533 "Cave (Crystal Switch / 5 Chests )",
534 "Cave (Lost Old Man Starting Cave)",
535 "Cave (Lost Old Man Starting Cave)",
536 "House",
537 "House (Old Woman (Sahasrahla's Wife?))",
538 "House (Angry Brothers)",
539 "House (Angry Brothers)",
540 "Empty Clone ",
541 "Empty Clone ",
542 "Cave",
543 "Cave",
544 "Cave",
545 "Cave",
546 "Empty Clone ",
547 "Cave",
548 "Cave",
549 "Cave",
550
551 "Chest Minigame",
552 "Houses",
553 "Sick Boy house",
554 "Tavern",
555 "Link's House",
556 "Sarashrala Hut",
557 "Chest Minigame",
558 "Library",
559 "Chicken House",
560 "Witch Shop",
561 "A Aginah's Cave",
562 "Dam",
563 "Mimic Cave",
564 "Mire Shed",
565 "Cave",
566 "Shop",
567 "Shop",
568 "Archery Minigame",
569 "DW Church/Shop",
570 "Grave Cave",
571 "Fairy Fountain",
572 "Fairy Upgrade",
573 "Pyramid Fairy",
574 "Spike Cave",
575 "Chest Minigame",
576 "Blind Hut",
577 "Bonzai Cave",
578 "Circle of bush Cave",
579 "Big Bomb Shop, C-House",
580 "Blind Hut 2",
581 "Hype Cave",
582 "Shop",
583 "Ice Cave",
584 "Smith",
585 "Fortune Teller",
586 "MiniMoldorm Cave",
587 "Under Rock Caves",
588 "Smith",
589 "Cave",
590 "Mazeblock Cave",
591 "Smith Peg Cave"};
592
593static const std::string RoomTag[] = {"Nothing",
594 "NW Kill Enemy to Open",
595 "NE Kill Enemy to Open",
596 "SW Kill Enemy to Open",
597 "SE Kill Enemy to Open",
598 "W Kill Enemy to Open",
599 "E Kill Enemy to Open",
600 "N Kill Enemy to Open",
601 "S Kill Enemy to Open",
602 "Clear Quadrant to Open",
603 "Clear Full Tile to Open",
604
605 "NW Push Block to Open",
606 "NE Push Block to Open",
607 "SW Push Block to Open",
608 "SE Push Block to Open",
609 "W Push Block to Open",
610 "E Push Block to Open",
611 "N Push Block to Open",
612 "S Push Block to Open",
613 "Push Block to Open",
614 "Pull Lever to Open",
615 "Collect Prize to Open",
616
617 "Hold Switch Open Door",
618 "Toggle Switch to Open Door",
619 "Turn off Water",
620 "Turn on Water",
621 "Water Gate",
622 "Water Twin",
623 "Moving Wall Right",
624 "Moving Wall Left",
625 "Crash",
626 "Crash",
627 "Push Switch Exploding Wall",
628 "Holes 0",
629 "Open Chest (Holes 0)",
630 "Holes 1",
631 "Holes 2",
632 "Defeat Boss for Dungeon Prize",
633
634 "SE Kill Enemy to Push Block",
635 "Trigger Switch Chest",
636 "Pull Lever Exploding Wall",
637 "NW Kill Enemy for Chest",
638 "NE Kill Enemy for Chest",
639 "SW Kill Enemy for Chest",
640 "SE Kill Enemy for Chest",
641 "W Kill Enemy for Chest",
642 "E Kill Enemy for Chest",
643 "N Kill Enemy for Chest",
644 "S Kill Enemy for Chest",
645 "Clear Quadrant for Chest",
646 "Clear Full Tile for Chest",
647
648 "Light Torches to Open",
649 "Holes 3",
650 "Holes 4",
651 "Holes 5",
652 "Holes 6",
653 "Agahnim Room",
654 "Holes 7",
655 "Holes 8",
656 "Open Chest for Holes 8",
657 "Push Block for Chest",
658 "Clear Room for Triforce Door",
659 "Light Torches for Chest",
660 "Kill Boss Again"};
661
662} // namespace zelda3
663} // namespace yaze
664
665#endif
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:59
SharedRom()=default
Represents a bitmap image.
Definition bitmap.h:66
std::array< gfx::Bitmap, 3 > background_bmps_
Definition room.h:253
destination pits_
Definition room.h:266
std::vector< RoomObject > tile_objects_
Definition room.h:254
EffectKey effect_
Definition room.h:261
uint8_t palette_
Definition room.h:245
auto & layer3()
Definition room.h:214
uint8_t staircase_plane_[4]
Definition room.h:239
Room(int room_id)
Definition room.h:200
std::vector< uint8_t > bg1_buffer_
Definition room.h:227
void LoadChests()
Definition room.cc:457
std::vector< zelda3::Sprite > sprites_
Definition room.h:255
gfx::Bitmap current_graphics_
Definition room.h:226
std::vector< uint8_t > current_gfx16_
Definition room.h:229
void CopyRoomGraphicsToBuffer()
Definition room.cc:225
destination stair2_
Definition room.h:268
uint8_t floor1
Definition room.h:221
auto & layer1()
Definition room.h:212
void LoadRoomGraphics(uint8_t entrance_blockset=0xFF)
Definition room.cc:190
uint8_t layer2_behavior_
Definition room.h:244
uint8_t layer2_mode_
Definition room.h:248
auto & mutable_blocks()
Definition room.h:211
uint8_t holewarp
Definition room.h:220
auto & layer2()
Definition room.h:213
destination stair4_
Definition room.h:270
int animated_frame_
Definition room.h:237
uint8_t blockset
Definition room.h:216
uint8_t layout
Definition room.h:219
uint8_t sprite_tileset_
Definition room.h:243
uint16_t message_id_
Definition room.h:224
uint8_t staircase_rooms_[4]
Definition room.h:240
std::array< uint8_t, 16 > blocks_
Definition room.h:250
uint8_t floor2_graphics_
Definition room.h:247
background2 bg2_
Definition room.h:265
std::array< chest, 16 > chest_list_
Definition room.h:251
uint8_t floor1_graphics_
Definition room.h:246
auto blocks() const
Definition room.h:210
void LoadObjects()
Definition room.cc:269
uint8_t spriteset
Definition room.h:217
destination stair3_
Definition room.h:269
uint8_t palette
Definition room.h:218
void LoadAnimatedGraphics()
Definition room.cc:249
std::vector< chest_data > chests_in_room_
Definition room.h:257
LayerMergeType layer_merging_
Definition room.h:259
std::vector< staircase > z3_staircases_
Definition room.h:256
void LoadSprites()
Definition room.cc:410
destination stair1_
Definition room.h:267
uint8_t background_tileset_
Definition room.h:242
uint8_t floor2
Definition room.h:222
CollisionKey collision_
Definition room.h:260
std::vector< uint8_t > bg2_buffer_
Definition room.h:228
Zelda 3 specific classes and functions.
constexpr int room_object_layout_pointer
Definition room.h:34
constexpr int chests_length_pointer
Definition room.h:44
constexpr int door_pos_down
Definition room.h:72
constexpr int door_gfx_up
Definition room.h:66
constexpr int chests_data_pointer1
Definition room.h:45
constexpr int pit_count
Definition room.h:62
constexpr int blocks_pointer3
Definition room.h:52
constexpr int door_gfx_left
Definition room.h:69
constexpr int dungeons_palettes
Definition room.h:38
constexpr int blocks_pointer4
Definition room.h:53
@ Ganon_Room
Definition room.h:128
@ Moving_Floor
Definition room.h:123
@ Effect_Nothing
Definition room.h:121
@ Red_Flashes
Definition room.h:126
@ Moving_Water
Definition room.h:124
@ Torch_Show_Floor
Definition room.h:127
constexpr int sprites_data_empty_room
Definition room.h:59
constexpr int door_pos_left
Definition room.h:73
constexpr int NumberOfRooms
Definition room.h:78
constexpr int rooms_sprite_pointer
Definition room.h:40
RoomSize CalculateRoomSize(Rom *rom, int room_id)
Definition room.cc:17
@ Kill_boss_Again
Definition room.h:195
@ Secret_Wall_Right
Definition room.h:160
@ Kill_Enemy_to_clear_level
Definition room.h:169
@ NE_Kill_Enemy_to_Open
Definition room.h:134
@ S_Kill_Enemy_for_Chest
Definition room.h:180
@ N_Push_Block_to_Open
Definition room.h:149
@ E_Kill_Enemy_to_Open
Definition room.h:138
@ Light_Torches_to_Open
Definition room.h:183
@ N_Kill_Enemy_to_Open
Definition room.h:139
@ W_Kill_Enemy_for_Chest
Definition room.h:177
@ Water_Twin
Definition room.h:159
@ N_Kill_Enemy_for_Chest
Definition room.h:179
@ Clear_Level_to_Open
Definition room.h:153
@ Push_Block_to_Open
Definition room.h:151
@ E_Kill_Enemy_for_Chest
Definition room.h:178
@ Secret_Wall_Left
Definition room.h:161
@ NE_Push_Block_to_Open
Definition room.h:144
@ Open_Chest_for_Holes_8
Definition room.h:191
@ S_Kill_Enemy_to_Open
Definition room.h:140
@ S_Push_Block_to_Open
Definition room.h:150
@ Trigger_activated_Chest
Definition room.h:171
@ SW_Kill_Enemy_for_Chest
Definition room.h:175
@ SE_Kill_Enemy_for_Chest
Definition room.h:176
@ Pull_lever_to_Bomb_Wall
Definition room.h:172
@ Pull_Switch_to_bomb_Wall
Definition room.h:164
@ Agahnim_Room
Definition room.h:188
@ Water_Gate
Definition room.h:158
@ SE_Kill_Enemy_to_Move_Block
Definition room.h:170
@ NE_Kill_Enemy_for_Chest
Definition room.h:174
@ SE_Push_Block_to_Open
Definition room.h:146
@ Pull_Lever_to_Open
Definition room.h:152
@ W_Push_Block_to_Open
Definition room.h:147
@ E_Push_Block_to_Open
Definition room.h:148
@ Kill_to_open_Ganon_Door
Definition room.h:193
@ SW_Push_Block_to_Open
Definition room.h:145
@ Turn_on_Water
Definition room.h:157
@ W_Kill_Enemy_to_Open
Definition room.h:137
@ Open_Chest_Activate_Holes_0
Definition room.h:166
@ Clear_Room_for_Chest
Definition room.h:182
@ Clear_Room_to_Open
Definition room.h:142
@ NW_Push_Block_to_Open
Definition room.h:143
@ Switch_Open_Door_Toggle
Definition room.h:155
@ SW_Kill_Enemy_to_Open
Definition room.h:135
@ Clear_Quadrant_for_Chest
Definition room.h:181
@ NW_Kill_Enemy_to_Open
Definition room.h:133
@ Switch_Open_Door_Hold
Definition room.h:154
@ SE_Kill_Enemy_to_Open
Definition room.h:136
@ Turn_off_Water
Definition room.h:156
@ Clear_Quadrant_to_Open
Definition room.h:141
@ Push_Block_for_Chest
Definition room.h:192
@ NW_Kill_Enemy_for_Chest
Definition room.h:173
@ Light_Torches_to_get_Chest
Definition room.h:194
constexpr std::string_view kRoomNames[]
Definition room.h:293
constexpr int messages_id_dungeon
Definition room.h:47
constexpr int room_items_pointers
Definition room.h:39
constexpr int blocks_length
Definition room.h:49
constexpr int sprites_data
Definition room.h:58
constexpr int sprite_blockset_pointer
Definition room.h:56
constexpr int blocks_pointer2
Definition room.h:51
constexpr int dungeons_main_bg_palette_pointers
Definition room.h:37
constexpr int door_gfx_down
Definition room.h:67
constexpr uint16_t stairsObjects[]
Definition room.h:80
Room LoadRoomFromRom(Rom *rom, int room_id)
Definition room.cc:77
constexpr int gfx_groups_pointer
Definition room.h:43
constexpr int blocks_pointer1
Definition room.h:50
constexpr int torches_length_pointer
Definition room.h:55
constexpr int doorPointers
Definition room.h:63
constexpr int door_gfx_cavexit_down
Definition room.h:68
constexpr int kRoomHeaderPointer
Definition room.h:41
constexpr int torch_data
Definition room.h:54
constexpr int kRoomHeaderPointerBank
Definition room.h:42
constexpr int door_gfx_right
Definition room.h:70
constexpr int room_object_pointer
Definition room.h:35
constexpr int door_pos_up
Definition room.h:71
constexpr int door_pos_right
Definition room.h:74
constexpr int sprites_end_data
Definition room.h:60
constexpr int pit_pointer
Definition room.h:61
@ Moving_Water_Collision
Definition room.h:117
@ One_Collision
Definition room.h:113
@ Moving_Floor_Collision
Definition room.h:116
@ Both_With_Scroll
Definition room.h:115
constexpr int dungeon_spr_ptrs
Definition room.h:76
Main namespace for the application.
Definition controller.cc:18
LayerMergeType(uint8_t id, std::string name, bool see, bool top, bool trans)
Definition room.h:89
int64_t room_size_pointer
Definition room.h:277
background2
Definition zelda.h:130