SDL_Texture streaming in ROM, dungeon housekeeping
This commit is contained in:
@@ -203,8 +203,8 @@ absl::StatusOr<Bytes> ROM::Load2BppGraphics() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
absl::Status ROM::LoadLinkGraphics() {
|
absl::Status ROM::LoadLinkGraphics() {
|
||||||
const auto link_gfx_offset = 0x80000;
|
const auto link_gfx_offset = 81920; // $10:8000
|
||||||
const auto link_gfx_length = 0x500;
|
const auto link_gfx_length = 0x800;
|
||||||
|
|
||||||
// Load Links graphics from the ROM
|
// Load Links graphics from the ROM
|
||||||
for (int i = 0; i < 14; i++) {
|
for (int i = 0; i < 14; i++) {
|
||||||
|
|||||||
@@ -475,14 +475,27 @@ class ROM : public core::ExperimentFlags {
|
|||||||
renderer_ = renderer;
|
renderer_ = renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderBitmap(gfx::Bitmap* bitmap) const {
|
void RenderBitmap(gfx::Bitmap* bitmap) {
|
||||||
bitmap->CreateTexture(renderer_);
|
if (flags()->kLoadTexturesAsStreaming) {
|
||||||
|
// bitmaps_to_create_.emplace(bitmap);
|
||||||
|
bitmap->CreateTexture(renderer_.get());
|
||||||
|
} else {
|
||||||
|
bitmap->CreateTexture(renderer_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateBitmap(gfx::Bitmap* bitmap) const {
|
void UpdateBitmap(gfx::Bitmap* bitmap) {
|
||||||
bitmap->UpdateTexture(renderer_);
|
if (flags()->kLoadTexturesAsStreaming) {
|
||||||
|
// bitmaps_to_render_.emplace(bitmap);
|
||||||
|
bitmap->UpdateTexture(renderer_.get());
|
||||||
|
} else {
|
||||||
|
bitmap->UpdateTexture(renderer_);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::stack<gfx::Bitmap*> bitmaps_to_create_;
|
||||||
|
std::stack<gfx::Bitmap*> bitmaps_to_render_;
|
||||||
|
|
||||||
auto bitmap_manager() { return graphics_manager_; }
|
auto bitmap_manager() { return graphics_manager_; }
|
||||||
|
|
||||||
std::vector<std::vector<uint8_t>> main_blockset_ids;
|
std::vector<std::vector<uint8_t>> main_blockset_ids;
|
||||||
@@ -604,7 +617,7 @@ class SharedROM {
|
|||||||
return rom;
|
return rom;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
// private:
|
||||||
static std::shared_ptr<ROM> shared_rom_;
|
static std::shared_ptr<ROM> shared_rom_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ class DungeonObjectRenderer : public SharedROM {
|
|||||||
emu::MemoryImpl memory_;
|
emu::MemoryImpl memory_;
|
||||||
emu::ClockImpl clock_;
|
emu::ClockImpl clock_;
|
||||||
emu::CPU cpu{memory_, clock_};
|
emu::CPU cpu{memory_, clock_};
|
||||||
emu::PPU ppu{memory_, clock_};
|
emu::Ppu ppu{memory_, clock_};
|
||||||
gfx::Bitmap bitmap_;
|
gfx::Bitmap bitmap_;
|
||||||
PseudoVram vram_;
|
PseudoVram vram_;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user