bsnes/ui/interface.cpp

56 lines
1.7 KiB
C++
Executable File

Interface interface;
void Interface::video_refresh(const uint8_t *data) {
uint32_t *buffer;
unsigned pitch;
if(video.lock(buffer, pitch, 160, 144)) {
for(unsigned y = 0; y < 144; y++) {
uint32_t *line = buffer + y * (pitch >> 2);
const uint8_t *source = data + y * 160;
for(unsigned x = 0; x < 160; x++) {
uint32_t color = *source++;
*line++ = (color << 16) | (color << 8) | (color << 0);
}
}
video.unlock();
video.refresh();
}
static unsigned frameCounter = 0;
static time_t timeCounter = time(0);
frameCounter++;
time_t currentTime = time(0);
if(currentTime != timeCounter) {
timeCounter = currentTime;
mainWindow.setStatusText({ "FPS: ", frameCounter });
frameCounter = 0;
}
}
void Interface::audio_sample(signed left, signed right) {
}
void Interface::input_poll() {
input.poll(inputState);
}
bool Interface::input_poll(unsigned id) {
switch(id) {
case GameBoy::Input::Up: return inputState[keyboard(0)[Keyboard::Up]];
case GameBoy::Input::Down: return inputState[keyboard(0)[Keyboard::Down]];
case GameBoy::Input::Left: return inputState[keyboard(0)[Keyboard::Left]];
case GameBoy::Input::Right: return inputState[keyboard(0)[Keyboard::Right]];
case GameBoy::Input::B: return inputState[keyboard(0)[Keyboard::Z]];
case GameBoy::Input::A: return inputState[keyboard(0)[Keyboard::X]];
case GameBoy::Input::Select: return inputState[keyboard(0)[Keyboard::Apostrophe]];
case GameBoy::Input::Start: return inputState[keyboard(0)[Keyboard::Return]];
}
return false;
}
void Interface::message(const string &text) {
MessageWindow::information(mainWindow, text);
}