yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
title_screen.h
Go to the documentation of this file.
1#ifndef YAZE_APP_ZELDA3_SCREEN_H
2#define YAZE_APP_ZELDA3_SCREEN_H
3
4#include "absl/status/status.h"
9#include "rom/rom.h"
10#include "zelda3/game_data.h"
11
12namespace yaze {
13namespace zelda3 {
14
26 public:
32 absl::Status Create(Rom* rom, GameData* game_data = nullptr);
33
34 // Clear ROM-derived logical state without moving queued Bitmap owners.
35 void ResetForReload();
36
37 // Accessors for layer data
38 auto& bg1_buffer() { return tiles_bg1_buffer_; }
39 auto& bg2_buffer() { return tiles_bg2_buffer_; }
40 auto& oam_buffer() { return oam_data_; }
41
42 // Mutable accessors for editing
45
46 // Accessors for bitmaps
47 auto& bg1_bitmap() { return tiles_bg1_bitmap_; }
48 auto& bg2_bitmap() { return tiles_bg2_bitmap_; }
49 auto& oam_bitmap() { return oam_bg_bitmap_; }
50 auto& tiles8_bitmap() { return tiles8_bitmap_; }
52 auto& blockset() { return tile16_blockset_; }
53
54 // Palette access
55 auto& palette() { return palette_; }
56
57 // Save changes back to ROM
58 absl::Status Save(Rom* rom);
59
64 absl::Status RenderBG1Layer();
65
70 absl::Status RenderBG2Layer();
71
77 absl::Status RenderCompositeLayer(bool show_bg1, bool show_bg2);
78
79 private:
84 absl::Status BuildTileset(Rom* rom);
85
90 absl::Status LoadTitleScreen(Rom* rom);
91
93
94 std::array<uint16_t, 0x1000> tiles_bg1_buffer_; // BG1 tilemap (32x32 tiles)
95 std::array<uint16_t, 0x1000> tiles_bg2_buffer_; // BG2 tilemap (32x32 tiles)
96
98
99 gfx::Bitmap tiles_bg1_bitmap_; // Rendered BG1 layer
100 gfx::Bitmap tiles_bg2_bitmap_; // Rendered BG2 layer
101 gfx::Bitmap oam_bg_bitmap_; // Rendered OAM layer
102 gfx::Bitmap tiles8_bitmap_; // 8x8 tile graphics
103 gfx::Bitmap title_composite_bitmap_; // Composite BG1+BG2 with transparency
104
105 gfx::Tilemap tile16_blockset_; // 16x16 tile blockset
106 gfx::SnesPalette palette_; // Title screen palette
107 GameData* game_data_ = nullptr; // GameData for palette access
108};
109
110} // namespace zelda3
111} // namespace yaze
112
113#endif // YAZE_APP_ZELDA3_SCREEN_H
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
Represents a bitmap image optimized for SNES ROM hacking.
Definition bitmap.h:67
Object Attribute Memory tile abstraction container.
Definition snes_tile.h:170
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
TitleScreen manages the title screen graphics and tilemap data.
std::array< uint16_t, 0x1000 > tiles_bg2_buffer_
gfx::OamTile oam_data_[10]
gfx::SnesPalette palette_
gfx::Bitmap title_composite_bitmap_
std::array< uint16_t, 0x1000 > tiles_bg1_buffer_
absl::Status Create(Rom *rom, GameData *game_data=nullptr)
Initialize and load title screen data from ROM.
absl::Status RenderCompositeLayer(bool show_bg1, bool show_bg2)
Render composite layer with BG1 on top of BG2 with transparency.
absl::Status BuildTileset(Rom *rom)
Build the tile16 blockset from ROM graphics.
absl::Status Save(Rom *rom)
absl::Status RenderBG2Layer()
Render BG2 tilemap into bitmap pixels Converts tile IDs from tiles_bg2_buffer_ into pixel data.
absl::Status RenderBG1Layer()
Render BG1 tilemap into bitmap pixels Converts tile IDs from tiles_bg1_buffer_ into pixel data.
absl::Status LoadTitleScreen(Rom *rom)
Load title screen tilemap data from ROM.
Tilemap structure for SNES tile-based graphics management.
Definition tilemap.h:118