SDL_Texture streaming in ROM, dungeon housekeeping

This commit is contained in:
scawful
2023-11-26 16:50:29 -05:00
parent d2fa9c0c53
commit e529e6ca34
3 changed files with 21 additions and 8 deletions

View File

@@ -203,8 +203,8 @@ absl::StatusOr<Bytes> ROM::Load2BppGraphics() {
}
absl::Status ROM::LoadLinkGraphics() {
const auto link_gfx_offset = 0x80000;
const auto link_gfx_length = 0x500;
const auto link_gfx_offset = 81920; // $10:8000
const auto link_gfx_length = 0x800;
// Load Links graphics from the ROM
for (int i = 0; i < 14; i++) {

View File

@@ -475,14 +475,27 @@ class ROM : public core::ExperimentFlags {
renderer_ = renderer;
}
void RenderBitmap(gfx::Bitmap* bitmap) const {
bitmap->CreateTexture(renderer_);
void RenderBitmap(gfx::Bitmap* bitmap) {
if (flags()->kLoadTexturesAsStreaming) {
// bitmaps_to_create_.emplace(bitmap);
bitmap->CreateTexture(renderer_.get());
} else {
bitmap->CreateTexture(renderer_);
}
}
void UpdateBitmap(gfx::Bitmap* bitmap) const {
bitmap->UpdateTexture(renderer_);
void UpdateBitmap(gfx::Bitmap* bitmap) {
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_; }
std::vector<std::vector<uint8_t>> main_blockset_ids;
@@ -604,7 +617,7 @@ class SharedROM {
return rom;
}
private:
// private:
static std::shared_ptr<ROM> shared_rom_;
};

View File

@@ -188,7 +188,7 @@ class DungeonObjectRenderer : public SharedROM {
emu::MemoryImpl memory_;
emu::ClockImpl clock_;
emu::CPU cpu{memory_, clock_};
emu::PPU ppu{memory_, clock_};
emu::Ppu ppu{memory_, clock_};
gfx::Bitmap bitmap_;
PseudoVram vram_;
};