Emulator: Set camera zoom-level and screen flip in scene JSON
This commit is contained in:
@@ -4,6 +4,13 @@
|
||||
"translate": [ 0.0, 0.0, -1.0 ],
|
||||
"rotate": [ 0.0, 0.0, 0.0 ],
|
||||
"scale": [ 1.0, 1.0, 1.0 ],
|
||||
"type": "orthographic"
|
||||
"type": "orthographic",
|
||||
"zoom-level": 0.45
|
||||
},
|
||||
"quad" : [
|
||||
{
|
||||
"name": "Screen",
|
||||
"scale": [ 1.0, -0.9, 1.0 ]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
+3
-12
@@ -20,25 +20,16 @@
|
||||
#include "ppu.h"
|
||||
#include "ruc/meta/assert.h"
|
||||
|
||||
PPU ::PPU(uint32_t frequency)
|
||||
PPU::PPU(uint32_t frequency)
|
||||
: ProcessingUnit(frequency)
|
||||
{
|
||||
m_shared_registers.emplace("LY", &m_lcd_y_coordinate);
|
||||
|
||||
// Setup screen
|
||||
|
||||
auto& scene = Inferno::Application::the().scene();
|
||||
m_entity = scene.createEntity("Screen");
|
||||
|
||||
// Flip the screen to accommodate OpenGL's coordinate system
|
||||
auto& transform = scene.getComponent<Inferno::TransformComponent>(m_entity);
|
||||
transform.scale.y = -1.0f;
|
||||
|
||||
auto texture = std::make_shared<Inferno::Texture>(m_screen.data(), SCREEN_WIDTH, SCREEN_HEIGHT, FORMAT_SIZE);
|
||||
scene.addComponent<Inferno::SpriteComponent>(m_entity, glm::vec4 { 1.0f }, texture);
|
||||
m_entity = scene.findEntity("Screen");
|
||||
}
|
||||
|
||||
PPU ::~PPU()
|
||||
PPU::~PPU()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user