diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 387f3879..b0957b7b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -550,6 +550,7 @@ set(SRC_DRIVERS_SDL ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleViewerGL.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleViewerSDL.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleViewerQWidget.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleViewerInterface.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/InputConf.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/GamePadConf.cpp ${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/FamilyKeyboard.cpp diff --git a/src/drivers/Qt/ConsoleViewerGL.cpp b/src/drivers/Qt/ConsoleViewerGL.cpp index c877cefe..d7dbe7e3 100644 --- a/src/drivers/Qt/ConsoleViewerGL.cpp +++ b/src/drivers/Qt/ConsoleViewerGL.cpp @@ -92,7 +92,7 @@ ConsoleViewGL_t::ConsoleViewGL_t(QWidget *parent) if ( localBuf ) { - memset( localBuf, 0, localBufSize ); + memset32( localBuf, alphaMask, localBufSize ); } vsyncEnabled = true; @@ -502,7 +502,7 @@ void ConsoleViewGL_t::transfer2LocalBuffer(void) } else { - memcpy( localBuf, src, cpSize ); + copyPixels32( dest, src, cpSize, alphaMask); } } diff --git a/src/drivers/Qt/ConsoleViewerInterface.cpp b/src/drivers/Qt/ConsoleViewerInterface.cpp new file mode 100644 index 00000000..362a30f3 --- /dev/null +++ b/src/drivers/Qt/ConsoleViewerInterface.cpp @@ -0,0 +1,28 @@ +// ConsoleViewerInterface.cpp +// +#include "Qt/ConsoleViewerInterface.h" + +//---------------------------------------------------------- +void ConsoleViewerBase::memset32( void *buf, uint32_t val, size_t size) +{ + uint32_t *p = static_cast(buf); + size_t n = size / sizeof(uint32_t); + + for (size_t i=0; i(dest); + uint32_t *s = static_cast(src); + size_t n = size / sizeof(uint32_t); + + for (size_t i=0; i #include #include @@ -47,5 +48,9 @@ class ConsoleViewerBase virtual void setMinimumSize(const QSize &) = 0; virtual void setMaximumSize(const QSize &) = 0; + static void memset32( void *buf, uint32_t val, size_t size); + static void copyPixels32( void *dest, void *src, size_t size, uint32_t alphaMask); + + static constexpr uint32_t alphaMask = 0xff000000; protected: }; diff --git a/src/drivers/Qt/ConsoleViewerQWidget.cpp b/src/drivers/Qt/ConsoleViewerQWidget.cpp index d0d2f55e..427012cb 100644 --- a/src/drivers/Qt/ConsoleViewerQWidget.cpp +++ b/src/drivers/Qt/ConsoleViewerQWidget.cpp @@ -25,6 +25,7 @@ #include //#include +#include "../../profiler.h" #include "Qt/nes_shm.h" #include "Qt/throttle.h" #include "Qt/fceuWrapper.h" @@ -86,7 +87,7 @@ ConsoleViewQWidget_t::ConsoleViewQWidget_t(QWidget *parent) if ( localBuf ) { - memset( localBuf, 0, localBufSize ); + memset32( localBuf, alphaMask, localBufSize ); } forceAspect = true; @@ -227,7 +228,8 @@ void ConsoleViewQWidget_t::transfer2LocalBuffer(void) } else { - memcpy( localBuf, src, cpSize ); + //memcpy( localBuf, src, cpSize ); + copyPixels32( dest, src, cpSize, alphaMask); } } @@ -488,7 +490,7 @@ void ConsoleViewQWidget_t::paintEvent(QPaintEvent *event) int rowPitch = nesWidth * sizeof(uint32_t); - QImage tmpImage( (const uchar*)localBuf, nesWidth, nesHeight, rowPitch, QImage::Format_RGB32); + QImage tmpImage( (const uchar*)localBuf, nesWidth, nesHeight, rowPitch, QImage::Format_ARGB32); //SDL_Rect source = {0, 0, nesWidth, nesHeight }; QRect dest( sx, sy, rw, rh ); diff --git a/src/drivers/Qt/ConsoleViewerSDL.cpp b/src/drivers/Qt/ConsoleViewerSDL.cpp index 04216592..339ec1c6 100644 --- a/src/drivers/Qt/ConsoleViewerSDL.cpp +++ b/src/drivers/Qt/ConsoleViewerSDL.cpp @@ -89,7 +89,7 @@ ConsoleViewSDL_t::ConsoleViewSDL_t(QWidget *parent) if ( localBuf ) { - memset( localBuf, 0, localBufSize ); + memset32( localBuf, alphaMask, localBufSize ); } forceAspect = true; @@ -240,7 +240,7 @@ void ConsoleViewSDL_t::transfer2LocalBuffer(void) } else { - memcpy( localBuf, src, cpSize ); + copyPixels32( dest, src, cpSize, alphaMask); } }