housekeeping
This commit is contained in:
@@ -82,18 +82,7 @@ class OverworldEditor {
|
|||||||
bool selected_tile_loaded_ = false;
|
bool selected_tile_loaded_ = false;
|
||||||
bool update_selected_tile_ = true;
|
bool update_selected_tile_ = true;
|
||||||
|
|
||||||
ImGuiTableFlags toolset_table_flags = ImGuiTableFlags_SizingFixedFit;
|
|
||||||
ImGuiTableFlags ow_map_flags = ImGuiTableFlags_Borders;
|
|
||||||
ImGuiTableFlags ow_edit_flags = ImGuiTableFlags_Reorderable |
|
|
||||||
ImGuiTableFlags_Resizable |
|
|
||||||
ImGuiTableFlags_SizingStretchSame;
|
|
||||||
|
|
||||||
Bytes selected_tile_data_;
|
Bytes selected_tile_data_;
|
||||||
std::unordered_map<int, gfx::Bitmap> graphics_bin_;
|
|
||||||
std::unordered_map<int, gfx::Bitmap> current_graphics_set_;
|
|
||||||
std::unordered_map<int, gfx::Bitmap> maps_bmp_;
|
|
||||||
std::unordered_map<int, gfx::Bitmap> sprite_previews_;
|
|
||||||
|
|
||||||
std::vector<Bytes> tile16_individual_data_;
|
std::vector<Bytes> tile16_individual_data_;
|
||||||
std::vector<gfx::Bitmap> tile16_individual_;
|
std::vector<gfx::Bitmap> tile16_individual_;
|
||||||
|
|
||||||
@@ -101,16 +90,27 @@ class OverworldEditor {
|
|||||||
PaletteEditor palette_editor_;
|
PaletteEditor palette_editor_;
|
||||||
zelda3::Overworld overworld_;
|
zelda3::Overworld overworld_;
|
||||||
|
|
||||||
|
gui::Canvas ow_map_canvas_;
|
||||||
|
gui::Canvas current_gfx_canvas_;
|
||||||
|
gui::Canvas blockset_canvas_;
|
||||||
|
gui::Canvas graphics_bin_canvas_;
|
||||||
|
|
||||||
gfx::SNESPalette palette_;
|
gfx::SNESPalette palette_;
|
||||||
gfx::Bitmap selected_tile_bmp_;
|
gfx::Bitmap selected_tile_bmp_;
|
||||||
gfx::Bitmap tile16_blockset_bmp_;
|
gfx::Bitmap tile16_blockset_bmp_;
|
||||||
gfx::Bitmap current_gfx_bmp_;
|
gfx::Bitmap current_gfx_bmp_;
|
||||||
gfx::Bitmap all_gfx_bmp;
|
gfx::Bitmap all_gfx_bmp;
|
||||||
|
|
||||||
gui::Canvas ow_map_canvas_;
|
gfx::BitmapTable maps_bmp_;
|
||||||
gui::Canvas current_gfx_canvas_;
|
gfx::BitmapTable graphics_bin_;
|
||||||
gui::Canvas blockset_canvas_;
|
gfx::BitmapTable current_graphics_set_;
|
||||||
gui::Canvas graphics_bin_canvas_;
|
gfx::BitmapTable sprite_previews_;
|
||||||
|
|
||||||
|
ImGuiTableFlags toolset_table_flags = ImGuiTableFlags_SizingFixedFit;
|
||||||
|
ImGuiTableFlags ow_map_flags = ImGuiTableFlags_Borders;
|
||||||
|
ImGuiTableFlags ow_edit_flags = ImGuiTableFlags_Reorderable |
|
||||||
|
ImGuiTableFlags_Resizable |
|
||||||
|
ImGuiTableFlags_SizingStretchSame;
|
||||||
};
|
};
|
||||||
} // namespace editor
|
} // namespace editor
|
||||||
} // namespace app
|
} // namespace app
|
||||||
|
|||||||
@@ -484,6 +484,8 @@ absl::StatusOr<Bytes> ROM::CompressOverworld(const int pos, const int length) {
|
|||||||
return Compress(pos, length, kNintendoMode1);
|
return Compress(pos, length, kNintendoMode1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::StatusOr<Bytes> ROM::Decompress(int offset, int size, int mode) {
|
absl::StatusOr<Bytes> ROM::Decompress(int offset, int size, int mode) {
|
||||||
Bytes buffer(size, 0);
|
Bytes buffer(size, 0);
|
||||||
uint length = 0;
|
uint length = 0;
|
||||||
@@ -577,6 +579,8 @@ absl::StatusOr<Bytes> ROM::DecompressOverworld(int pos, int size) {
|
|||||||
return Decompress(pos, size, kNintendoMode1);
|
return Decompress(pos, size, kNintendoMode1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::StatusOr<Bytes> ROM::Load2bppGraphics() {
|
absl::StatusOr<Bytes> ROM::Load2bppGraphics() {
|
||||||
Bytes sheet;
|
Bytes sheet;
|
||||||
const uint8_t sheets[] = {113, 114, 218, 219, 220, 221};
|
const uint8_t sheets[] = {113, 114, 218, 219, 220, 221};
|
||||||
@@ -636,6 +640,8 @@ absl::Status ROM::LoadAllGraphicsData() {
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
|
absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
|
||||||
filename_ = filename;
|
filename_ = filename;
|
||||||
std::ifstream file(filename.data(), std::ios::binary);
|
std::ifstream file(filename.data(), std::ios::binary);
|
||||||
@@ -661,6 +667,8 @@ absl::Status ROM::LoadFromFile(const absl::string_view& filename) {
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::Status ROM::LoadFromPointer(uchar* data, size_t length) {
|
absl::Status ROM::LoadFromPointer(uchar* data, size_t length) {
|
||||||
if (!data)
|
if (!data)
|
||||||
return absl::InvalidArgumentError(
|
return absl::InvalidArgumentError(
|
||||||
@@ -671,6 +679,8 @@ absl::Status ROM::LoadFromPointer(uchar* data, size_t length) {
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::Status ROM::LoadFromBytes(const Bytes& data) {
|
absl::Status ROM::LoadFromBytes(const Bytes& data) {
|
||||||
if (data.empty()) {
|
if (data.empty()) {
|
||||||
return absl::InvalidArgumentError(
|
return absl::InvalidArgumentError(
|
||||||
@@ -680,6 +690,8 @@ absl::Status ROM::LoadFromBytes(const Bytes& data) {
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::Status ROM::SaveToFile() {
|
absl::Status ROM::SaveToFile() {
|
||||||
std::fstream file(filename_.data(), std::ios::binary | std::ios::out);
|
std::fstream file(filename_.data(), std::ios::binary | std::ios::out);
|
||||||
if (!file.is_open()) {
|
if (!file.is_open()) {
|
||||||
@@ -692,9 +704,7 @@ absl::Status ROM::SaveToFile() {
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ROM::RenderBitmap(gfx::Bitmap* bitmap) const {
|
// ============================================================================
|
||||||
bitmap->CreateTexture(renderer_);
|
|
||||||
}
|
|
||||||
|
|
||||||
gfx::SNESColor ROM::ReadColor(int offset) {
|
gfx::SNESColor ROM::ReadColor(int offset) {
|
||||||
short color = toint16(offset);
|
short color = toint16(offset);
|
||||||
@@ -706,6 +716,8 @@ gfx::SNESColor ROM::ReadColor(int offset) {
|
|||||||
return snes_color;
|
return snes_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
gfx::SNESPalette ROM::ReadPalette(int offset, int num_colors) {
|
gfx::SNESPalette ROM::ReadPalette(int offset, int num_colors) {
|
||||||
int color_offset = 0;
|
int color_offset = 0;
|
||||||
std::vector<gfx::SNESColor> colors(num_colors);
|
std::vector<gfx::SNESColor> colors(num_colors);
|
||||||
@@ -732,6 +744,8 @@ void ROM::WriteShort(int addr, int value) {
|
|||||||
rom_data_[addr + 1] = (uchar)((value >> 8) & 0xFF);
|
rom_data_[addr + 1] = (uchar)((value >> 8) & 0xFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
void ROM::LoadAllPalettes() {
|
void ROM::LoadAllPalettes() {
|
||||||
// 35 colors each, 7x5 (0,2 on grid)
|
// 35 colors each, 7x5 (0,2 on grid)
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
@@ -802,6 +816,8 @@ void ROM::LoadAllPalettes() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
absl::Status ROM::ApplyAssembly(const absl::string_view& filename,
|
absl::Status ROM::ApplyAssembly(const absl::string_view& filename,
|
||||||
size_t patch_size) {
|
size_t patch_size) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
@@ -815,6 +831,8 @@ absl::Status ROM::ApplyAssembly(const absl::string_view& filename,
|
|||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
// TODO(scawful): Test me!
|
// TODO(scawful): Test me!
|
||||||
absl::Status ROM::PatchOverworldMosaic(
|
absl::Status ROM::PatchOverworldMosaic(
|
||||||
char mosaic_tiles[core::kNumOverworldMaps], int routine_offset) {
|
char mosaic_tiles[core::kNumOverworldMaps], int routine_offset) {
|
||||||
|
|||||||
Reference in New Issue
Block a user