all repos — mgba @ e8871b980f2fb8421b95f922940833a761a4470f

mGBA Game Boy Advance Emulator

GB Video: Fix 16-bit screenshots (fixes #826)
Vicki Pfau vi@endrift.com
Thu, 27 Jul 2017 13:39:59 -0700
commit

e8871b980f2fb8421b95f922940833a761a4470f

parent

8e7cdc61f31c9637f3c1a8ef2727deb05b61d5c3

2 files changed, 1 insertions(+), 27 deletions(-)

jump to
M CHANGESCHANGES

@@ -6,6 +6,7 @@ - Qt: Fix command line debugger closing second game

- GB MBC: Pocket Cam memory should be accessible without enabling - GB Memory: Initialize peripheral pointers - GB MBC: Fix SRAM sizes 4 and 5 + - GB Video: Fix 16-bit screenshots (fixes mgba.io/i/826) Misc: - Qt: Don't rebuild library view if style hasn't changed
M src/gb/renderers/software.csrc/gb/renderers/software.c

@@ -448,36 +448,9 @@ }

static void GBVideoSoftwareRendererGetPixels(struct GBVideoRenderer* renderer, size_t* stride, const void** pixels) { struct GBVideoSoftwareRenderer* softwareRenderer = (struct GBVideoSoftwareRenderer*) renderer; - // TODO: Share with GBAVideoSoftwareRendererGetPixels -#ifdef COLOR_16_BIT - *stride = GB_VIDEO_HORIZONTAL_PIXELS; - if (!softwareRenderer->temporaryBuffer) { - softwareRenderer->temporaryBuffer = anonymousMemoryMap(GB_VIDEO_HORIZONTAL_PIXELS * GB_VIDEO_VERTICAL_PIXELS * 4); - } - *pixels = softwareRenderer->temporaryBuffer; - unsigned y, x; - for (y = 0; y < GB_VIDEO_VERTICAL_PIXELS; ++y) { - for (x = 0; x < GB_VIDEO_HORIZONTAL_PIXELS; ++x) { - color_t inColor = softwareRenderer->outputBuffer[softwareRenderer->outputBufferStride * y + x]; - uint32_t outColor; -#ifdef COLOR_5_6_5 - outColor = (inColor & 0x1F) << 19; - outColor |= (inColor & 0x7C0) << 5; - outColor |= (inColor & 0xF800) >> 8; -#else - outColor = (inColor & 0x1F) << 3; - outColor |= (inColor & 0x3E0) << 6; - outColor |= (inColor & 0x7C00) << 9; -#endif - softwareRenderer->temporaryBuffer[GB_VIDEO_HORIZONTAL_PIXELS * y + x] = outColor; - } - } -#else *stride = softwareRenderer->outputBufferStride; *pixels = softwareRenderer->outputBuffer; -#endif } - static void GBVideoSoftwareRendererPutPixels(struct GBVideoRenderer* renderer, size_t stride, const void* pixels) { struct GBVideoSoftwareRenderer* softwareRenderer = (struct GBVideoSoftwareRenderer*) renderer;