From ae6c3c377d996ecd76341a406dd52dcc5f362f2d Mon Sep 17 00:00:00 2001 From: Tim Allen Date: Tue, 8 Nov 2011 22:58:50 +1100 Subject: [PATCH] Update to v084 ninja bug-fix. byuu says: Hiding the viewport is necessary on Windows to prevent it from overlapping the status bar. I've changed it to set the size to 1,1 when nothing is loaded. That still puts a 1x1 pixel over the status bar when you resize the window to 1xHeight, but ... you know, don't do that. Also corrected the mask overscan option for NES/SNES. Silently updated the bsnes_v084-source.tar.bz2 archive with those fixes, there were only 48 downloads. --- bsnes/ui/interface/gameboy/gameboy.cpp | 2 +- bsnes/ui/interface/nes/nes.cpp | 8 ++++---- bsnes/ui/interface/snes/snes.cpp | 8 ++++---- bsnes/ui/utility/utility.cpp | 9 ++++----- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/bsnes/ui/interface/gameboy/gameboy.cpp b/bsnes/ui/interface/gameboy/gameboy.cpp index ce5fe67a..dc26ec6e 100755 --- a/bsnes/ui/interface/gameboy/gameboy.cpp +++ b/bsnes/ui/interface/gameboy/gameboy.cpp @@ -94,7 +94,7 @@ void InterfaceGameBoy::videoRefresh(const uint16_t *data) { } } - interface->videoRefresh(output, 160 * 4, 160, 144); + interface->videoRefresh(output, 160 * sizeof(uint32_t), 160, 144); } void InterfaceGameBoy::audioSample(int16_t csample, int16_t lsample, int16_t rsample) { diff --git a/bsnes/ui/interface/nes/nes.cpp b/bsnes/ui/interface/nes/nes.cpp index 4ea94931..611656d8 100755 --- a/bsnes/ui/interface/nes/nes.cpp +++ b/bsnes/ui/interface/nes/nes.cpp @@ -120,15 +120,15 @@ void InterfaceNES::videoRefresh(const uint16_t *data) { for(unsigned y = 0; y < 240; y++) { uint32_t *dp = output + y * 256; if(y < osh || y >= 240 - osh) { - memset(dp, 0, 256 * 2); + memset(dp, 0, 256 * sizeof(uint32_t)); } else { - memset(dp + 0, 0, osw * 2); - memset(dp + 256 - osw, 0, osw * 2); + memset(dp + 0, 0, osw * sizeof(uint32_t)); + memset(dp + 256 - osw, 0, osw * sizeof(uint32_t)); } } } - interface->videoRefresh(output, 256 * 4, 256, 240); + interface->videoRefresh(output, 256 * sizeof(uint32_t), 256, 240); } void InterfaceNES::audioSample(int16_t sample) { diff --git a/bsnes/ui/interface/snes/snes.cpp b/bsnes/ui/interface/snes/snes.cpp index 1ca01147..51d444db 100755 --- a/bsnes/ui/interface/snes/snes.cpp +++ b/bsnes/ui/interface/snes/snes.cpp @@ -292,15 +292,15 @@ void InterfaceSNES::videoRefresh(const uint32_t *data, bool hires, bool interlac for(unsigned y = 0; y < height; y++) { uint32_t *dp = output + y * 512; if(y < osh || y >= height - osh) { - memset(dp, 0, width * 2); + memset(dp, 0, width * sizeof(uint32_t)); } else { - memset(dp + 0, 0, osw * 2); - memset(dp + width - osw, 0, osw * 2); + memset(dp + 0, 0, osw * sizeof(uint32_t)); + memset(dp + width - osw, 0, osw * sizeof(uint32_t)); } } } - interface->videoRefresh(output, 512 * 4, width, height); + interface->videoRefresh(output, 512 * sizeof(uint32_t), width, height); } void InterfaceSNES::audioSample(int16_t lsample, int16_t rsample) { diff --git a/bsnes/ui/utility/utility.cpp b/bsnes/ui/utility/utility.cpp index 9a4831af..0facf416 100755 --- a/bsnes/ui/utility/utility.cpp +++ b/bsnes/ui/utility/utility.cpp @@ -8,7 +8,6 @@ void Utility::setMode(Interface::Mode mode) { mainWindow->nesMenu.setVisible(false); mainWindow->snesMenu.setVisible(false); mainWindow->gameBoyMenu.setVisible(false); - mainWindow->viewport.setVisible(mode != Interface::Mode::None); if(mode == Interface::Mode::None) { mainWindow->setTitle(application->title); @@ -48,16 +47,16 @@ void Utility::resizeMainWindow(bool shrink) { unsigned width = geometry.width, height = geometry.height; switch(interface->mode()) { - case Interface::Mode::None: return; + case Interface::Mode::None: return mainWindow->viewport.setGeometry({ 0, 0, 1, 1 }); case Interface::Mode::NES: width = 256, height = 240; break; case Interface::Mode::SNES: width = 256, height = 240; break; case Interface::Mode::GameBoy: width = 160, height = 144; break; } if(config->video.correctAspectRatio) { - if(interface->mode() != Interface::Mode::GameBoy) { - width = (double)width * 1.226; - } + if(interface->mode() == Interface::Mode::NES + || interface->mode() == Interface::Mode::SNES + ) width = (double)width * 1.226; } unsigned maxW = geometry.width / width;