diff --git a/src/app/rom.cc b/src/app/rom.cc index 939566a4..83692dd3 100644 --- a/src/app/rom.cc +++ b/src/app/rom.cc @@ -80,7 +80,7 @@ absl::Status Rom::LoadLinkGraphics() { return absl::OkStatus(); } -absl::Status Rom::LoadAllGraphicsData() { +absl::Status Rom::LoadAllGraphicsData(bool defer_render) { std::vector sheet; bool bpp3 = false; @@ -121,7 +121,10 @@ absl::Status Rom::LoadAllGraphicsData() { palette_groups_.dungeon_main[0], 0)); } } - graphics_sheets_[i].CreateTexture(Renderer::GetInstance().renderer()); + + if (!defer_render) { + graphics_sheets_[i].CreateTexture(Renderer::GetInstance().renderer()); + } for (int j = 0; j < graphics_sheets_[i].size(); ++j) { graphics_buffer_.push_back(graphics_sheets_[i].at(j)); diff --git a/src/app/rom.h b/src/app/rom.h index 60ae946e..3eeb660b 100644 --- a/src/app/rom.h +++ b/src/app/rom.h @@ -177,7 +177,7 @@ class Rom : public core::ExperimentFlags { * | 218-222 | Compressed 2bpp | 0x800 chars | Decompressed each | * */ - absl::Status LoadAllGraphicsData(); + absl::Status LoadAllGraphicsData(bool defer_render = false); /** * Load Rom data from a file. diff --git a/src/test/zelda3/overworld_test.cc b/src/test/zelda3/overworld_test.cc index 27d61553..fac567c2 100644 --- a/src/test/zelda3/overworld_test.cc +++ b/src/test/zelda3/overworld_test.cc @@ -4,6 +4,7 @@ #include #include "app/rom.h" +#include "app/zelda3/overworld/overworld.h" #include "app/zelda3/overworld/overworld_map.h" #include "test/core/testing.h" @@ -39,13 +40,17 @@ TEST_F(OverworldTest, OverworldLoadNoRomDataError) { TEST_F(OverworldTest, OverworldLoadRomDataOk) { // Arrange EXPECT_OK(rom()->LoadFromFile("zelda3.sfc")); - EXPECT_OK(rom()->LoadAllGraphicsData()); + EXPECT_OK(rom()->LoadAllGraphicsData(/*defer_render=*/true)); // Act auto status = overworld_.Load(*rom()); // Assert EXPECT_TRUE(status.ok()); + EXPECT_EQ(overworld_.overworld_maps().size(), + app::zelda3::overworld::kNumOverworldMaps); + EXPECT_EQ(overworld_.tiles16().size(), + app::zelda3::overworld::kNumTile16Individual); } } // namespace zelda3