diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 0d8d5e298..4c470484c 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -378,11 +378,10 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render backdrop |= softwareRenderer->variantPalette[0]; } for (int x = 0; x < VIDEO_HORIZONTAL_PIXELS; ++x) { - row[x] = backdrop; + softwareRenderer->row[x] = backdrop; } } - softwareRenderer->row = row; memset(softwareRenderer->spriteLayer, 0, sizeof(softwareRenderer->spriteLayer)); softwareRenderer->windows[0].endX = VIDEO_HORIZONTAL_PIXELS; @@ -400,6 +399,7 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render } _drawScanline(softwareRenderer, y); + memcpy(row, softwareRenderer->row, VIDEO_HORIZONTAL_PIXELS * sizeof(*row)); } static void GBAVideoSoftwareRendererFinishFrame(struct GBAVideoRenderer* renderer) { diff --git a/src/gba/renderers/video-software.h b/src/gba/renderers/video-software.h index f6230194a..4d710ab4c 100644 --- a/src/gba/renderers/video-software.h +++ b/src/gba/renderers/video-software.h @@ -86,6 +86,7 @@ struct GBAVideoSoftwareRenderer { union GBARegisterDISPCNT dispcnt; + uint32_t row[VIDEO_HORIZONTAL_PIXELS]; uint32_t spriteLayer[VIDEO_HORIZONTAL_PIXELS]; // BLDCNT @@ -118,7 +119,6 @@ struct GBAVideoSoftwareRenderer { struct GBAVideoSoftwareBackground bg[4]; - uint32_t* row; int start; int end;