#include <emulator_render_service.h>

Public Member Functions | |
| EmulatorRenderService (Rom *rom, zelda3::GameData *game_data=nullptr) | |
| ~EmulatorRenderService () | |
| EmulatorRenderService (const EmulatorRenderService &)=delete | |
| EmulatorRenderService & | operator= (const EmulatorRenderService &)=delete |
| absl::Status | Initialize () |
| absl::Status | GenerateBaselineStates () |
| absl::StatusOr< RenderResult > | Render (const RenderRequest &request) |
| absl::StatusOr< std::vector< RenderResult > > | RenderBatch (const std::vector< RenderRequest > &requests) |
| bool | IsReady () const |
| void | SetRenderMode (RenderMode mode) |
| RenderMode | GetRenderMode () const |
| emu::Snes * | snes () |
| SaveStateManager * | state_manager () |
Private Member Functions | |
| absl::StatusOr< RenderResult > | RenderDungeonObject (const RenderRequest &req) |
| absl::StatusOr< RenderResult > | RenderDungeonObjectStatic (const RenderRequest &req) |
| absl::StatusOr< RenderResult > | RenderSprite (const RenderRequest &req) |
| absl::StatusOr< RenderResult > | RenderFullRoom (const RenderRequest &req) |
| void | InjectRoomContext (int room_id, uint8_t blockset, uint8_t palette) |
| void | LoadPaletteIntoCgram (int palette_id) |
| void | LoadGraphicsIntoVram (uint8_t blockset) |
| void | InitializeTilemapPointers () |
| void | ClearTilemapBuffers () |
| void | MockApuPorts () |
| absl::StatusOr< int > | LookupHandlerAddress (int object_id, int *data_offset) |
| absl::Status | ExecuteHandler (int handler_addr, int data_offset, int tilemap_pos) |
| void | RenderPpuFrame () |
| std::vector< uint8_t > | ExtractPixelsFromPpu () |
Private Attributes | |
| Rom * | rom_ = nullptr |
| zelda3::GameData * | game_data_ = nullptr |
| std::unique_ptr< emu::Snes > | snes_ |
| std::unique_ptr< SaveStateManager > | state_manager_ |
| RenderMode | render_mode_ = RenderMode::kHybrid |
| bool | initialized_ = false |
Definition at line 59 of file emulator_render_service.h.
|
explicit |
Definition at line 17 of file emulator_render_service.cc.
|
default |
|
delete |
|
delete |
| absl::Status yaze::emu::render::EmulatorRenderService::Initialize | ( | ) |
Definition at line 22 of file emulator_render_service.cc.
References initialized_, yaze::Rom::is_loaded(), rom_, snes_, state_manager_, and yaze::Rom::vector().

| absl::Status yaze::emu::render::EmulatorRenderService::GenerateBaselineStates | ( | ) |
Definition at line 43 of file emulator_render_service.cc.
References state_manager_.
| absl::StatusOr< RenderResult > yaze::emu::render::EmulatorRenderService::Render | ( | const RenderRequest & | request | ) |
Definition at line 50 of file emulator_render_service.cc.
References initialized_, yaze::emu::render::kDungeonObject, yaze::emu::render::kFullRoom, yaze::emu::render::kHybrid, yaze::emu::render::kSprite, yaze::emu::render::kStatic, render_mode_, RenderDungeonObject(), RenderDungeonObjectStatic(), RenderFullRoom(), RenderSprite(), and yaze::emu::render::RenderRequest::type.
Referenced by RenderBatch(), yaze::gui::DungeonObjectEmulatorPreview::TriggerEmulatedRender(), and yaze::gui::DungeonObjectEmulatorPreview::TriggerStaticRender().

| absl::StatusOr< std::vector< RenderResult > > yaze::emu::render::EmulatorRenderService::RenderBatch | ( | const std::vector< RenderRequest > & | requests | ) |
Definition at line 75 of file emulator_render_service.cc.
References yaze::emu::render::RenderResult::error, Render(), and yaze::emu::render::RenderResult::success.

|
inline |
Definition at line 83 of file emulator_render_service.h.
References initialized_.
Referenced by yaze::gui::DungeonObjectEmulatorPreview::TriggerEmulatedRender(), and yaze::gui::DungeonObjectEmulatorPreview::TriggerStaticRender().
|
inline |
Definition at line 86 of file emulator_render_service.h.
References render_mode_.
Referenced by yaze::gui::DungeonObjectEmulatorPreview::TriggerEmulatedRender().
|
inline |
Definition at line 87 of file emulator_render_service.h.
References render_mode_.
Referenced by yaze::gui::DungeonObjectEmulatorPreview::TriggerEmulatedRender().
|
inline |
Definition at line 90 of file emulator_render_service.h.
References snes_.
|
inline |
Definition at line 93 of file emulator_render_service.h.
References state_manager_.
|
private |
Definition at line 95 of file emulator_render_service.cc.
References yaze::emu::render::RenderRequest::blockset, yaze::zelda3::Room::blockset, ClearTilemapBuffers(), yaze::emu::render::RenderRequest::entity_id, yaze::emu::render::RenderResult::error, ExecuteHandler(), ExtractPixelsFromPpu(), yaze::emu::render::RenderResult::handler_address, yaze::emu::render::RenderResult::height, InitializeTilemapPointers(), InjectRoomContext(), yaze::emu::render::kRoomLoaded, yaze::zelda3::LoadRoomFromRom(), LookupHandlerAddress(), MockApuPorts(), yaze::emu::render::RenderRequest::palette, yaze::zelda3::Room::palette, RenderPpuFrame(), yaze::emu::render::RenderResult::rgba_pixels, rom_, yaze::emu::render::RenderRequest::room_id, snes_, state_manager_, yaze::emu::render::RenderResult::success, yaze::emu::render::RenderRequest::use_room_defaults, yaze::emu::render::RenderResult::width, yaze::emu::render::RenderRequest::x, and yaze::emu::render::RenderRequest::y.
Referenced by Render().
|
private |
Definition at line 155 of file emulator_render_service.cc.
References yaze::gfx::BackgroundBuffer::bitmap(), yaze::emu::render::RenderRequest::blockset, yaze::zelda3::Room::blockset, yaze::zelda3::Room::CopyRoomGraphicsToBuffer(), yaze::zelda3::ObjectDrawer::DrawObject(), yaze::gfx::PaletteGroupMap::dungeon_main, yaze::gfx::BackgroundBuffer::EnsureBitmapInitialized(), yaze::emu::render::RenderRequest::entity_id, yaze::emu::render::RenderResult::error, game_data_, yaze::zelda3::Room::get_gfx_buffer(), yaze::emu::render::RenderResult::height, yaze::zelda3::ObjectDrawer::InitializeDrawRoutines(), yaze::zelda3::LoadRoomFromRom(), yaze::zelda3::Room::LoadRoomGraphics(), yaze::emu::render::RenderRequest::output_height, yaze::emu::render::RenderRequest::output_width, yaze::emu::render::RenderRequest::palette, yaze::zelda3::Room::palette, yaze::zelda3::GameData::palette_groups, yaze::emu::render::RenderResult::rgba_pixels, rom_, yaze::emu::render::RenderRequest::room_id, yaze::zelda3::Room::SetGameData(), yaze::emu::render::RenderRequest::size, yaze::emu::render::RenderResult::success, yaze::emu::render::RenderRequest::use_room_defaults, yaze::emu::render::RenderResult::used_static_fallback, yaze::emu::render::RenderResult::width, yaze::emu::render::RenderRequest::x, and yaze::emu::render::RenderRequest::y.
Referenced by Render().
|
private |
Definition at line 244 of file emulator_render_service.cc.
References yaze::emu::render::RenderResult::error, and yaze::emu::render::RenderResult::success.
Referenced by Render().
|
private |
Definition at line 252 of file emulator_render_service.cc.
References yaze::emu::render::RenderResult::error, and yaze::emu::render::RenderResult::success.
Referenced by Render().
|
private |
Definition at line 260 of file emulator_render_service.cc.
References yaze::emu::render::ConvertLinear8bppToPlanar4bpp(), yaze::zelda3::Room::CopyRoomGraphicsToBuffer(), yaze::Rom::data(), yaze::gfx::PaletteGroupMap::dungeon_main, game_data_, yaze::zelda3::Room::get_gfx_buffer(), yaze::emu::render::wram_addresses::kRoomId, yaze::emu::render::rom_addresses::kSpriteAuxPalettes, yaze::zelda3::LoadRoomFromRom(), yaze::zelda3::Room::LoadRoomGraphics(), yaze::zelda3::GameData::palette_groups, rom_, yaze::zelda3::Room::SetGameData(), yaze::Rom::size(), snes_, and yaze::emu::render::SnesToPc().
Referenced by RenderDungeonObject().
|
private |
Definition at line 315 of file emulator_render_service.cc.
References yaze::gfx::PaletteGroupMap::dungeon_main, game_data_, yaze::zelda3::GameData::palette_groups, and snes_.
|
private |
Definition at line 329 of file emulator_render_service.cc.
|
private |
Definition at line 333 of file emulator_render_service.cc.
References yaze::emu::render::wram_addresses::kBG1TilemapBuffer, yaze::emu::render::wram_addresses::kTilemapPointers, yaze::emu::render::wram_addresses::kTilemapRowStride, and snes_.
Referenced by RenderDungeonObject().
|
private |
Definition at line 349 of file emulator_render_service.cc.
References yaze::emu::render::wram_addresses::kBG1TilemapBuffer, yaze::emu::render::wram_addresses::kBG2TilemapBuffer, yaze::emu::render::wram_addresses::kTilemapBufferSize, and snes_.
Referenced by RenderDungeonObject().
|
private |
Definition at line 356 of file emulator_render_service.cc.
References snes_.
Referenced by RenderDungeonObject().
|
private |
Definition at line 364 of file emulator_render_service.cc.
References yaze::Rom::data(), yaze::emu::render::rom_addresses::kType1DataTable, yaze::emu::render::rom_addresses::kType1HandlerTable, yaze::emu::render::rom_addresses::kType2DataTable, yaze::emu::render::rom_addresses::kType2HandlerTable, yaze::emu::render::rom_addresses::kType3DataTable, yaze::emu::render::rom_addresses::kType3HandlerTable, rom_, yaze::Rom::size(), and yaze::emu::render::SnesToPc().
Referenced by RenderDungeonObject().

|
private |
Definition at line 404 of file emulator_render_service.cc.
References snes_.
Referenced by RenderDungeonObject().
|
private |
Definition at line 462 of file emulator_render_service.cc.
References yaze::emu::render::wram_addresses::kBG1TilemapBuffer, yaze::emu::render::wram_addresses::kBG2TilemapBuffer, and snes_.
Referenced by RenderDungeonObject().
|
private |
Definition at line 485 of file emulator_render_service.cc.
References snes_.
Referenced by RenderDungeonObject().
|
private |
Definition at line 120 of file emulator_render_service.h.
Referenced by Initialize(), InjectRoomContext(), LookupHandlerAddress(), RenderDungeonObject(), and RenderDungeonObjectStatic().
|
private |
Definition at line 121 of file emulator_render_service.h.
Referenced by InjectRoomContext(), LoadPaletteIntoCgram(), and RenderDungeonObjectStatic().
|
private |
Definition at line 122 of file emulator_render_service.h.
Referenced by ClearTilemapBuffers(), ExecuteHandler(), ExtractPixelsFromPpu(), Initialize(), InitializeTilemapPointers(), InjectRoomContext(), LoadPaletteIntoCgram(), MockApuPorts(), RenderDungeonObject(), RenderPpuFrame(), and snes().
|
private |
Definition at line 123 of file emulator_render_service.h.
Referenced by GenerateBaselineStates(), Initialize(), RenderDungeonObject(), and state_manager().
|
private |
Definition at line 125 of file emulator_render_service.h.
Referenced by GetRenderMode(), Render(), and SetRenderMode().
|
private |
Definition at line 126 of file emulator_render_service.h.
Referenced by Initialize(), IsReady(), and Render().