all repos — mgba @ 8a3d54c769b94e247998b8ac4d8e9243c9c43578

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

8a3d54c769b94e247998b8ac4d8e9243c9c43578

parent

e0f04a0d5ae03dabe71787f9c2425d8a3e5373a6

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

jump to
M CHANGESCHANGES

@@ -12,6 +12,7 @@ - GB Video: Fix dot clock timing being slightly wrong

- 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: - GBA Timer: Use global cycles for timers - GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)
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;