yaze 0.2.0
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
overworld_map.cc
Go to the documentation of this file.
1#include "overworld_map.h"
2
3#include <cstddef>
4#include <cstdint>
5#include <unordered_map>
6#include <vector>
7
8#include "app/gfx/snes_tile.h"
9#include "app/rom.h"
11
12namespace yaze {
13namespace app {
14namespace zelda3 {
15namespace overworld {
16
17OverworldMap::OverworldMap(int index, Rom& rom, bool load_custom_data)
18 : index_(index), parent_(index), rom_(rom) {
20
21 if (load_custom_data) {
22 // If the custom overworld ASM has NOT already been applied, manually set
23 // the vanilla values.
24 uint8_t asm_version = rom_[OverworldCustomASMHasBeenApplied];
25 if (asm_version == 0x00) {
27 } else {
28 SetupCustomTileset(asm_version);
29 }
30 }
31}
32
33absl::Status OverworldMap::BuildMap(int count, int game_state, int world,
34 std::vector<gfx::Tile16>& tiles16,
35 OWBlockset& world_blockset) {
36 game_state_ = game_state;
37 world_ = world;
38 if (large_map_) {
39 if (parent_ != index_ && !initialized_) {
40 if (index_ >= 0x80 && index_ <= 0x8A && index_ != 0x88) {
43 } else if (index_ == 0x88) {
44 area_graphics_ = 0x51;
45 area_palette_ = 0x00;
46 } else {
49 }
50
51 initialized_ = true;
52 }
53 }
54
57 RETURN_IF_ERROR(BuildTiles16Gfx(tiles16, count))
59 RETURN_IF_ERROR(BuildBitmap(world_blockset))
60 built_ = true;
61 return absl::OkStatus();
62}
63
65 if (index_ != 0x80) {
66 if (index_ <= 128)
67 large_map_ = (rom_[overworldMapSize + (index_ & 0x3F)] != 0);
68 else {
70 index_ == 129 || index_ == 130 || index_ == 137 || index_ == 138;
71 }
72 }
73
75
76 if (index_ < 0x40) {
79
84
88
92 } else if (index_ < 0x80) {
96
100
104 } else {
105 if (index_ == 0x94) {
106 parent_ = 0x80;
107 } else if (index_ == 0x95) {
108 parent_ = 0x03;
109 } else if (index_ == 0x96) {
110 parent_ = 0x5B; // pyramid bg use 0x5B map
111 } else if (index_ == 0x97) {
112 parent_ = 0x00; // pyramid bg use 0x5B map
113 } else if (index_ == 0x9C) {
114 parent_ = 0x43;
115 } else if (index_ == 0x9D) {
116 parent_ = 0x00;
117 } else if (index_ == 0x9E) {
118 parent_ = 0x00;
119 } else if (index_ == 0x9F) {
120 parent_ = 0x2C;
121 } else if (index_ == 0x88) {
122 parent_ = 0x88;
123 } else if (index_ == 129 || index_ == 130 || index_ == 137 ||
124 index_ == 138) {
125 parent_ = 129;
126 }
127
129 if ((index_ >= 0x80 && index_ <= 0x8A && index_ != 0x88) ||
130 index_ == 0x94) {
133 } else if (index_ == 0x88) {
134 area_graphics_ = 0x51;
135 area_palette_ = 0x00;
136 } else {
137 // pyramid bg use 0x5B map
140 }
141
145
149 }
150}
151
153 // Set the main palette values.
154 if (index_ < 0x40) {
155 area_palette_ = 0;
156 } else if (index_ >= 0x40 && index_ < 0x80) {
157 area_palette_ = 1;
158 } else if (index_ >= 0x80 && index_ < 0xA0) {
159 area_palette_ = 0;
160 }
161
162 if (index_ == 0x03 || index_ == 0x05 || index_ == 0x07) {
163 area_palette_ = 2;
164 } else if (index_ == 0x43 || index_ == 0x45 || index_ == 0x47) {
165 area_palette_ = 3;
166 } else if (index_ == 0x88) {
167 area_palette_ = 4;
168 }
169
170 // Set the mosaic values.
171 mosaic_ = index_ == 0x00 || index_ == 0x40 || index_ == 0x80 ||
172 index_ == 0x81 || index_ == 0x88;
173
174 int indexWorld = 0x20;
175
176 if (parent_ >= 0x40 && parent_ < 0x80) // DW
177 {
178 indexWorld = 0x21;
179 } else if (parent_ == 0x88) // Triforce room
180 {
181 indexWorld = 0x24;
182 }
183
184 const auto overworld_gfx_groups2 =
186
187 // Main Blocksets
188
189 for (int i = 0; i < 8; i++) {
190 custom_gfx_ids_[i] =
191 (uint8_t)rom_[overworld_gfx_groups2 + (indexWorld * 8) + i];
192 }
193
194 const auto overworldgfxGroups = rom_.version_constants().kOverworldGfxGroups1;
195
196 // Replace the variable tiles with the variable ones.
197 uint8_t temp = rom_[overworldgfxGroups + (area_graphics_ * 4)];
198 if (temp != 0) {
199 custom_gfx_ids_[3] = temp;
200 } else {
201 custom_gfx_ids_[3] = 0xFF;
202 }
203
204 temp = rom_[overworldgfxGroups + (area_graphics_ * 4) + 1];
205 if (temp != 0) {
206 custom_gfx_ids_[4] = temp;
207 } else {
208 custom_gfx_ids_[4] = 0xFF;
209 }
210
211 temp = rom_[overworldgfxGroups + (area_graphics_ * 4) + 2];
212 if (temp != 0) {
213 custom_gfx_ids_[5] = temp;
214 } else {
215 custom_gfx_ids_[5] = 0xFF;
216 }
217
218 temp = rom_[overworldgfxGroups + (area_graphics_ * 4) + 3];
219 if (temp != 0) {
220 custom_gfx_ids_[6] = temp;
221 } else {
222 custom_gfx_ids_[6] = 0xFF;
223 }
224
225 // Set the animated GFX values.
226 if (index_ == 0x03 || index_ == 0x05 || index_ == 0x07 || index_ == 0x43 ||
227 index_ == 0x45 || index_ == 0x47) {
228 animated_gfx_ = 0x59;
229 } else {
230 animated_gfx_ = 0x5B;
231 }
232
233 // Set the subscreen overlay values.
234 subscreen_overlay_ = 0x00FF;
235
236 if (index_ == 0x00 ||
237 index_ == 0x40) // Add fog 2 to the lost woods and skull woods.
238 {
239 subscreen_overlay_ = 0x009D;
240 } else if (index_ == 0x03 || index_ == 0x05 ||
241 index_ == 0x07) // Add the sky BG to LW death mountain.
242 {
243 subscreen_overlay_ = 0x0095;
244 } else if (index_ == 0x43 || index_ == 0x45 ||
245 index_ == 0x47) // Add the lava to DW death mountain.
246 {
247 subscreen_overlay_ = 0x009C;
248 } else if (index_ == 0x5B) // TODO: Might need this one too "index == 0x1B"
249 // but for now I don't think so.
250 {
251 subscreen_overlay_ = 0x0096;
252 } else if (index_ == 0x80) // Add fog 1 to the master sword area.
253 {
254 subscreen_overlay_ = 0x0097;
255 } else if (index_ ==
256 0x88) // Add the triforce room curtains to the triforce room.
257 {
258 subscreen_overlay_ = 0x0093;
259 }
260}
261
262void OverworldMap::SetupCustomTileset(uint8_t asm_version) {
265
266 // This is just to load the GFX groups for ROMs that have an older version
267 // of the Overworld ASM already applied.
268 if (asm_version >= 0x01 && asm_version != 0xFF) {
269 for (int i = 0; i < 8; i++) {
270 custom_gfx_ids_[i] =
272 }
273
275 } else {
276 int indexWorld = 0x20;
277
278 if (parent_ >= 0x40 && parent_ < 0x80) // DW
279 {
280 indexWorld = 0x21;
281 } else if (parent_ == 0x88) // Triforce room
282 {
283 indexWorld = 0x24;
284 }
285
286 // Main Blocksets
287
288 for (int i = 0; i < 8; i++) {
289 custom_gfx_ids_[i] =
291 (indexWorld * 8) + i];
292 }
293
294 const auto overworldgfxGroups =
296
297 // Replace the variable tiles with the variable ones.
298 // If the variable is 00 set it to 0xFF which is the new "don't load
299 // anything" value.
300 uint8_t temp = rom_[overworldgfxGroups + (area_graphics_ * 4)];
301 if (temp != 0x00) {
302 custom_gfx_ids_[3] = temp;
303 } else {
304 custom_gfx_ids_[3] = 0xFF;
305 }
306
307 temp = rom_[overworldgfxGroups + (area_graphics_ * 4) + 1];
308 if (temp != 0x00) {
309 custom_gfx_ids_[4] = temp;
310 } else {
311 custom_gfx_ids_[4] = 0xFF;
312 }
313
314 temp = rom_[overworldgfxGroups + (area_graphics_ * 4) + 2];
315 if (temp != 0x00) {
316 custom_gfx_ids_[5] = temp;
317 } else {
318 custom_gfx_ids_[5] = 0xFF;
319 }
320
321 temp = rom_[overworldgfxGroups + (area_graphics_ * 4) + 3];
322 if (temp != 0x00) {
323 custom_gfx_ids_[6] = temp;
324 } else {
325 custom_gfx_ids_[6] = 0xFF;
326 }
327
328 // Set the animated GFX values.
329 if (index_ == 0x03 || index_ == 0x05 || index_ == 0x07 || index_ == 0x43 ||
330 index_ == 0x45 || index_ == 0x47) {
331 animated_gfx_ = 0x59;
332 } else {
333 animated_gfx_ = 0x5B;
334 }
335 }
336
339}
340
341// ============================================================================
342
344 if (parent_ < 0x40) {
345 main_gfx_id_ = 0x20;
346 } else if (parent_ >= 0x40 && parent_ < 0x80) {
347 main_gfx_id_ = 0x21;
348 } else if (parent_ == 0x88) {
349 main_gfx_id_ = 0x24;
350 }
351}
352
354 int static_graphics_base = 0x73;
355 static_graphics_[8] = static_graphics_base + 0x00;
356 static_graphics_[9] = static_graphics_base + 0x01;
357 static_graphics_[10] = static_graphics_base + 0x06;
358 static_graphics_[11] = static_graphics_base + 0x07;
359
360 for (int i = 0; i < 4; i++) {
361 static_graphics_[12 + i] =
362 (rom_[rom_.version_constants().kSpriteBlocksetPointer +
363 (sprite_graphics_[game_state_] * 4) + i] +
364 static_graphics_base);
365 }
366}
367
369 for (int i = 0; i < 8; i++) {
371 (main_gfx_id_ * 8) + i];
372 }
373}
374
375// For animating water tiles on the overworld map.
376// We want to swap out static_graphics_[07] with the next sheet
377// Usually it is 5A, so we make it 5B instead.
378// There is a middle frame which contains tiles from the bottom half
379// of the 5A sheet, so this will need some special manipulation to make work
380// during the BuildBitmap step (or a new one specifically for animating).
382 std::cout << "static_graphics_[6] = "
383 << core::UppercaseHexByte(static_graphics_[6]) << std::endl;
384 std::cout << "static_graphics_[7] = "
385 << core::UppercaseHexByte(static_graphics_[7]) << std::endl;
386 std::cout << "static_graphics_[8] = "
387 << core::UppercaseHexByte(static_graphics_[8]) << std::endl;
388 if (static_graphics_[7] == 0x5B) {
389 static_graphics_[7] = 0x5A;
390 } else {
391 if (static_graphics_[7] == 0x59) {
392 static_graphics_[7] = 0x58;
393 }
394 static_graphics_[7] = 0x5B;
395 }
396}
397
399 for (int i = 0; i < 4; i++) {
401 (area_graphics_ * 4) + i];
402 if (value != 0) {
403 static_graphics_[3 + i] = value;
404 }
405 }
406}
407
408// TODO: Change the conditions for death mountain gfx
409// JaredBrian: This is how ZS did it, but in 3.0.4 I changed it to just check
410// for 03, 05, 07, and the DW ones as that's how it would appear in-game if
411// you were to make area 03 not a large area anymore for example, so you might
412// want to do the same.
414 static_graphics_[7] = (((parent_ >= 0x03 && parent_ <= 0x07) ||
415 (parent_ >= 0x0B && parent_ <= 0x0E)) ||
416 ((parent_ >= 0x43 && parent_ <= 0x47) ||
417 (parent_ >= 0x4B && parent_ <= 0x4E)))
418 ? 0x59
419 : 0x5B;
420}
421
429
430namespace palette_internal {
431
432absl::Status SetColorsPalette(Rom& rom, int index, gfx::SnesPalette& current,
435 gfx::SnesPalette hud, gfx::SnesColor bgrcolor,
437 // Palettes infos, color 0 of a palette is always transparent (the arrays
438 // contains 7 colors width wide) There is 16 color per line so 16*Y
439
440 // Left side of the palette - Main, Animated
441 std::vector<gfx::SnesColor> new_palette(256);
442
443 // Main Palette, Location 0,2 : 35 colors [7x5]
444 int k = 0;
445 for (int y = 2; y < 7; y++) {
446 for (int x = 1; x < 8; x++) {
447 new_palette[x + (16 * y)] = main[k];
448 k++;
449 }
450 }
451
452 // Animated Palette, Location 0,7 : 7colors
453 for (int x = 1; x < 8; x++) {
454 new_palette[(16 * 7) + (x)] = animated[(x - 1)];
455 }
456
457 // Right side of the palette - Aux1, Aux2
458
459 // Aux1 Palette, Location 8,2 : 21 colors [7x3]
460 k = 0;
461 for (int y = 2; y < 5; y++) {
462 for (int x = 9; x < 16; x++) {
463 new_palette[x + (16 * y)] = aux1[k];
464 k++;
465 }
466 }
467
468 // Aux2 Palette, Location 8,5 : 21 colors [7x3]
469 k = 0;
470 for (int y = 5; y < 8; y++) {
471 for (int x = 9; x < 16; x++) {
472 new_palette[x + (16 * y)] = aux2[k];
473 k++;
474 }
475 }
476
477 // Hud Palette, Location 0,0 : 32 colors [16x2]
478 for (int i = 0; i < 32; i++) {
479 new_palette[i] = hud[i];
480 }
481
482 // Hardcoded grass color (that might change to become invisible instead)
483 for (int i = 0; i < 8; i++) {
484 new_palette[(i * 16)] = bgrcolor;
485 new_palette[(i * 16) + 8] = bgrcolor;
486 }
487
488 // Sprite Palettes
489 k = 0;
490 for (int y = 8; y < 9; y++) {
491 for (int x = 1; x < 8; x++) {
492 auto pal_group = rom.palette_group().sprites_aux1;
493 new_palette[x + (16 * y)] = pal_group[1][k];
494 k++;
495 }
496 }
497
498 // Sprite Palettes
499 k = 0;
500 for (int y = 8; y < 9; y++) {
501 for (int x = 9; x < 16; x++) {
502 auto pal_group = rom.palette_group().sprites_aux3;
503 new_palette[x + (16 * y)] = pal_group[0][k];
504 k++;
505 }
506 }
507
508 // Sprite Palettes
509 k = 0;
510 for (int y = 9; y < 13; y++) {
511 for (int x = 1; x < 16; x++) {
512 auto pal_group = rom.palette_group().global_sprites;
513 new_palette[x + (16 * y)] = pal_group[0][k];
514 k++;
515 }
516 }
517
518 // Sprite Palettes
519 k = 0;
520 for (int y = 13; y < 14; y++) {
521 for (int x = 1; x < 8; x++) {
522 new_palette[x + (16 * y)] = spr[k];
523 k++;
524 }
525 }
526
527 // Sprite Palettes
528 k = 0;
529 for (int y = 14; y < 15; y++) {
530 for (int x = 1; x < 8; x++) {
531 new_palette[x + (16 * y)] = spr2[k];
532 k++;
533 }
534 }
535
536 // Sprite Palettes
537 k = 0;
538 for (int y = 15; y < 16; y++) {
539 for (int x = 1; x < 16; x++) {
540 auto pal_group = rom.palette_group().armors;
541 new_palette[x + (16 * y)] = pal_group[0][k];
542 k++;
543 }
544 }
545
546 current.Create(new_palette);
547 for (int i = 0; i < 256; i++) {
548 current[(i / 16) * 16].set_transparent(true);
549 }
550
551 return absl::OkStatus();
552}
553} // namespace palette_internal
554
555// New helper function to get a palette from the Rom.
556absl::StatusOr<gfx::SnesPalette> OverworldMap::GetPalette(
557 const gfx::PaletteGroup& palette_group, int index, int previous_index,
558 int limit) {
559 if (index == 255) {
561 (previous_index * 4)];
562 }
563 if (index >= limit) {
564 index = limit - 1;
565 }
566 return palette_group[index];
567}
568
570 int previousPalId =
572 int previousSprPalId =
574
575 area_palette_ = std::min((int)area_palette_, 0xA3);
576
577 uchar pal0 = 0;
579 (area_palette_ * 4)];
581 (area_palette_ * 4) + 1];
583 (area_palette_ * 4) + 2];
584 uchar pal4 =
587 (sprite_palette_[game_state_] * 2) + 1];
588
589 auto grass_pal_group = rom_.palette_group().grass;
590 ASSIGN_OR_RETURN(gfx::SnesColor bgr, grass_pal_group[0].GetColor(0));
591
592 auto ow_aux_pal_group = rom_.palette_group().overworld_aux;
594 GetPalette(ow_aux_pal_group, pal1, previousPalId, 20));
596 GetPalette(ow_aux_pal_group, pal2, previousPalId, 20));
597
598 // Additional handling of `pal3` and `parent_`
599 if (pal3 == 255) {
601 (previousPalId * 4) + 2];
602 }
603
604 if (parent_ < 0x40) {
605 pal0 = parent_ == 0x03 || parent_ == 0x05 || parent_ == 0x07 ? 2 : 0;
606 ASSIGN_OR_RETURN(bgr, grass_pal_group[0].GetColor(0));
607 } else if (parent_ >= 0x40 && parent_ < 0x80) {
608 pal0 = parent_ == 0x43 || parent_ == 0x45 || parent_ == 0x47 ? 3 : 1;
609 ASSIGN_OR_RETURN(bgr, grass_pal_group[0].GetColor(1));
610 } else if (parent_ >= 128 && parent_ < kNumOverworldMaps) {
611 pal0 = 0;
612 ASSIGN_OR_RETURN(bgr, grass_pal_group[0].GetColor(2));
613 }
614
615 if (parent_ == 0x88) {
616 pal0 = 4;
617 }
618
619 auto ow_main_pal_group = rom_.palette_group().overworld_main;
621 GetPalette(ow_main_pal_group, pal0, previousPalId, 255));
622 auto ow_animated_pal_group = rom_.palette_group().overworld_animated;
624 GetPalette(ow_animated_pal_group, std::min((int)pal3, 13),
625 previousPalId, 14));
626
627 auto hud_pal_group = rom_.palette_group().hud;
628 gfx::SnesPalette hud = hud_pal_group[0];
629
631 GetPalette(rom_.palette_group().sprites_aux3, pal4,
632 previousSprPalId, 24));
634 GetPalette(rom_.palette_group().sprites_aux3, pal5,
635 previousSprPalId, 24));
636
638 rom_, parent_, current_palette_, main, animated, aux1, aux2, hud, bgr,
639 spr, spr2));
640
641 if (palettesets_.count(area_palette_) == 0) {
643 main, animated, aux1, aux2, bgr, hud, spr, spr2, current_palette_};
644 }
645
646 return absl::OkStatus();
647}
648
649// New helper function to process graphics buffer.
650void OverworldMap::ProcessGraphicsBuffer(int index, int static_graphics_offset,
651 int size) {
652 for (int i = 0; i < size; i++) {
653 auto byte = all_gfx_[i + (static_graphics_offset * size)];
654 switch (index) {
655 case 0:
656 case 3:
657 case 4:
658 case 5:
659 byte += 0x88;
660 break;
661 }
662 current_gfx_[(index * size) + i] = byte;
663 }
664}
665
668 if (current_gfx_.size() == 0) current_gfx_.resize(0x10000, 0x00);
669
670 for (int i = 0; i < 0x10; i++) {
672 }
673
674 return absl::OkStatus();
675}
676
677absl::Status OverworldMap::BuildTiles16Gfx(std::vector<gfx::Tile16>& tiles16,
678 int count) {
679 if (current_blockset_.size() == 0) current_blockset_.resize(0x100000, 0x00);
680
681 const int offsets[] = {0x00, 0x08, 0x400, 0x408};
682 auto yy = 0;
683 auto xx = 0;
684
685 for (auto i = 0; i < count; i++) {
686 for (auto tile = 0; tile < 0x04; tile++) {
687 gfx::TileInfo info = tiles16[i].tiles_info[tile];
688 int offset = offsets[tile];
689 for (auto y = 0; y < 0x08; ++y) {
690 for (auto x = 0; x < 0x08; ++x) {
691 int mx = x;
692 int my = y;
693
694 if (info.horizontal_mirror_ != 0) {
695 mx = 0x07 - x;
696 }
697
698 if (info.vertical_mirror_ != 0) {
699 my = 0x07 - y;
700 }
701
702 int xpos = ((info.id_ % 0x10) * 0x08);
703 int ypos = (((info.id_ / 0x10)) * 0x400);
704 int source = ypos + xpos + (x + (y * 0x80));
705
706 auto destination = xx + yy + offset + (mx + (my * 0x80));
707 current_blockset_[destination] =
708 (current_gfx_[source] & 0x0F) + (info.palette_ * 0x10);
709 }
710 }
711 }
712
713 xx += 0x10;
714 if (xx >= 0x80) {
715 yy += 0x800;
716 xx = 0;
717 }
718 }
719
720 return absl::OkStatus();
721}
722
723absl::Status OverworldMap::BuildBitmap(OWBlockset& world_blockset) {
724 if (bitmap_data_.size() != 0) {
725 bitmap_data_.clear();
726 }
727 bitmap_data_.reserve(0x40000);
728 for (int i = 0; i < 0x40000; i++) {
729 bitmap_data_.push_back(0x00);
730 }
731
732 int superY = ((index_ - (world_ * 0x40)) / 0x08);
733 int superX = index_ - (world_ * 0x40) - (superY * 0x08);
734
735 for (int y = 0; y < 0x20; y++) {
736 for (int x = 0; x < 0x20; x++) {
737 auto xt = x + (superX * 0x20);
738 auto yt = y + (superY * 0x20);
739 gfx::CopyTile8bpp16((x * 0x10), (y * 0x10), world_blockset[xt][yt],
741 }
742 }
743 return absl::OkStatus();
744}
745
746} // namespace overworld
747} // namespace zelda3
748} // namespace app
749} // namespace yaze
static std::unordered_map< uint8_t, gfx::Paletteset > palettesets_
The Rom class is used to load, save, and modify Rom data.
Definition rom.h:136
auto palette_group()
Definition rom.h:474
VersionConstants version_constants() const
Definition rom.h:482
std::vector< uint8_t > graphics_buffer() const
Definition rom.h:457
uint16_t toint16(int offset)
Definition rom.h:266
SNES Color container.
Definition snes_color.h:39
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
void Create(const std::vector< SnesColor > &cols)
SNES 16-bit tile metadata container.
Definition snes_tile.h:50
absl::Status BuildTiles16Gfx(std::vector< gfx::Tile16 > &tiles16, int count)
void ProcessGraphicsBuffer(int index, int static_graphics_offset, int size)
void SetupCustomTileset(uint8_t asm_version)
absl::StatusOr< gfx::SnesPalette > GetPalette(const gfx::PaletteGroup &group, int index, int previous_index, int limit)
absl::Status BuildBitmap(OWBlockset &world_blockset)
absl::Status BuildMap(int count, int game_state, int world, std::vector< gfx::Tile16 > &tiles16, OWBlockset &world_blockset)
#define RETURN_IF_ERROR(expression)
Definition constants.h:62
#define ASSIGN_OR_RETURN(type_variable_name, expression)
Definition constants.h:70
unsigned char uchar
Definition constants.h:114
int main(int argc, char **argv)
Main entry point for the application.
Definition emu.cc:33
std::string UppercaseHexByte(uint8_t byte, bool leading)
Definition common.cc:103
void CopyTile8bpp16(int x, int y, int tile, std::vector< uint8_t > &bitmap, std::vector< uint8_t > &blockset)
Definition snes_tile.cc:389
absl::Status SetColorsPalette(Rom &rom, int index, gfx::SnesPalette &current, gfx::SnesPalette main, gfx::SnesPalette animated, gfx::SnesPalette aux1, gfx::SnesPalette aux2, gfx::SnesPalette hud, gfx::SnesColor bgrcolor, gfx::SnesPalette spr, gfx::SnesPalette spr2)
constexpr int overworldSpritePaletteGroup
Definition overworld.h:388
constexpr int overworldSpriteset
Definition overworld.h:389
constexpr int OverworldCustomAnimatedGFXArray
constexpr int OverworldCustomASMHasBeenApplied
constexpr int kOverworldMapPaletteIds
Definition overworld.h:385
constexpr int kNumOverworldMaps
Definition overworld.h:446
constexpr int overworldMapSize
Definition overworld.h:408
constexpr int overworldMusicDW
Definition overworld.h:403
constexpr int overworldMusicMasterSword
Definition overworld.h:401
constexpr int overworldMusicBegining
Definition overworld.h:399
constexpr int kOverworldSpritePaletteIds
Definition overworld.h:386
constexpr int overworldMusicZelda
Definition overworld.h:400
constexpr int overworldSpecialGFXGroup
Definition overworld.h:390
constexpr int OverworldCustomTileGFXGroupArray
constexpr int overworldMusicAgahim
Definition overworld.h:402
constexpr int overworldSpecialPALGroup
Definition overworld.h:391
constexpr int OverworldCustomMosaicArray
constexpr int OverworldCustomMainPaletteArray
constexpr int OverworldCustomSubscreenOverlayArray
constexpr int kOverworldMessageIds
Definition overworld.h:397
std::vector< std::vector< uint16_t > > OWBlockset
Represents tile32 data for the overworld.
Definition common.h:19
Definition common.cc:22
uint32_t kOverworldGfxGroups2
Definition rom.h:48
uint32_t kOverworldGfxGroups1
Definition rom.h:47
uint32_t overworldMapPaletteGroup
Definition rom.h:51
Represents a group of palettes.
Represents a set of palettes used in a SNES graphics system.