From 0083fad9663157e2745e363896644267c5155105 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sun, 28 Aug 2016 03:42:38 -0700 Subject: [PATCH] GB Video: Fix sprite latching using old sprite data --- src/gb/renderers/software.c | 6 +++--- src/gb/video.c | 6 +++--- src/gb/video.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gb/renderers/software.c b/src/gb/renderers/software.c index d4b7316fa..3ef56087a 100644 --- a/src/gb/renderers/software.c +++ b/src/gb/renderers/software.c @@ -12,7 +12,7 @@ static void GBVideoSoftwareRendererInit(struct GBVideoRenderer* renderer, enum G static void GBVideoSoftwareRendererDeinit(struct GBVideoRenderer* renderer); static uint8_t GBVideoSoftwareRendererWriteVideoRegister(struct GBVideoRenderer* renderer, uint16_t address, uint8_t value); static void GBVideoSoftwareRendererWritePalette(struct GBVideoRenderer* renderer, int index, uint16_t value); -static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj** obj, size_t oamMax); +static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj* obj, size_t oamMax); static void GBVideoSoftwareRendererFinishScanline(struct GBVideoRenderer* renderer, int y); static void GBVideoSoftwareRendererFinishFrame(struct GBVideoRenderer* renderer); static void GBVideoSoftwareRendererGetPixels(struct GBVideoRenderer* renderer, unsigned* stride, const void** pixels); @@ -101,7 +101,7 @@ static void GBVideoSoftwareRendererWritePalette(struct GBVideoRenderer* renderer softwareRenderer->palette[index] = color; } -static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj** obj, size_t oamMax) { +static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj* obj, size_t oamMax) { struct GBVideoSoftwareRenderer* softwareRenderer = (struct GBVideoSoftwareRenderer*) renderer; uint8_t* maps = &softwareRenderer->d.vram[GB_BASE_MAP]; if (GBRegisterLCDCIsTileMap(softwareRenderer->lcdc)) { @@ -128,7 +128,7 @@ static void GBVideoSoftwareRendererDrawRange(struct GBVideoRenderer* renderer, i if (GBRegisterLCDCIsObjEnable(softwareRenderer->lcdc)) { size_t i; for (i = 0; i < oamMax; ++i) { - GBVideoSoftwareRendererDrawObj(softwareRenderer, obj[i], startX, endX, y); + GBVideoSoftwareRendererDrawObj(softwareRenderer, &obj[i], startX, endX, y); } } color_t* row = &softwareRenderer->outputBuffer[softwareRenderer->outputBufferStride * y]; diff --git a/src/gb/video.c b/src/gb/video.c index d439953bf..a38efce4d 100644 --- a/src/gb/video.c +++ b/src/gb/video.c @@ -17,7 +17,7 @@ static void GBVideoDummyRendererInit(struct GBVideoRenderer* renderer, enum GBMo static void GBVideoDummyRendererDeinit(struct GBVideoRenderer* renderer); static uint8_t GBVideoDummyRendererWriteVideoRegister(struct GBVideoRenderer* renderer, uint16_t address, uint8_t value); static void GBVideoDummyRendererWritePalette(struct GBVideoRenderer* renderer, int index, uint16_t value); -static void GBVideoDummyRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj** obj, size_t oamMax); +static void GBVideoDummyRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj* obj, size_t oamMax); static void GBVideoDummyRendererFinishScanline(struct GBVideoRenderer* renderer, int y); static void GBVideoDummyRendererFinishFrame(struct GBVideoRenderer* renderer); static void GBVideoDummyRendererGetPixels(struct GBVideoRenderer* renderer, unsigned* stride, const void** pixels); @@ -239,7 +239,7 @@ static void _cleanOAM(struct GBVideo* video, int y) { continue; } // TODO: Sort - video->objThisLine[o] = &video->oam.obj[i]; + video->objThisLine[o] = video->oam.obj[i]; ++o; if (o == 10) { break; @@ -410,7 +410,7 @@ static void GBVideoDummyRendererWritePalette(struct GBVideoRenderer* renderer, i UNUSED(value); } -static void GBVideoDummyRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj** obj, size_t oamMax) { +static void GBVideoDummyRendererDrawRange(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj* obj, size_t oamMax) { UNUSED(renderer); UNUSED(endX); UNUSED(startX); diff --git a/src/gb/video.h b/src/gb/video.h index 1555385ea..064505eb6 100644 --- a/src/gb/video.h +++ b/src/gb/video.h @@ -59,7 +59,7 @@ struct GBVideoRenderer { uint8_t (*writeVideoRegister)(struct GBVideoRenderer* renderer, uint16_t address, uint8_t value); void (*writePalette)(struct GBVideoRenderer* renderer, int index, uint16_t value); - void (*drawRange)(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj** objOnLine, size_t nObj); + void (*drawRange)(struct GBVideoRenderer* renderer, int startX, int endX, int y, struct GBObj* objOnLine, size_t nObj); void (*finishScanline)(struct GBVideoRenderer* renderer, int y); void (*finishFrame)(struct GBVideoRenderer* renderer); @@ -111,7 +111,7 @@ struct GBVideo { int vramCurrentBank; union GBOAM oam; - struct GBObj* objThisLine[10]; + struct GBObj objThisLine[10]; int objMax; int bcpIndex;