diff --git a/include/mgba/internal/gba/io.h b/include/mgba/internal/gba/io.h index 197e19d62..2891c650c 100644 --- a/include/mgba/internal/gba/io.h +++ b/include/mgba/internal/gba/io.h @@ -17,7 +17,7 @@ CXX_GUARD_START enum GBAIORegisters { // Video GBA_REG_DISPCNT = 0x000, - GBA_REG_GREENSWP = 0x002, + GBA_REG_STEREOCNT = 0x002, GBA_REG_DISPSTAT = 0x004, GBA_REG_VCOUNT = 0x006, GBA_REG_BG0CNT = 0x008, diff --git a/include/mgba/internal/gba/renderers/video-software.h b/include/mgba/internal/gba/renderers/video-software.h index d9a012fa8..ce918775a 100644 --- a/include/mgba/internal/gba/renderers/video-software.h +++ b/include/mgba/internal/gba/renderers/video-software.h @@ -110,7 +110,7 @@ struct GBAVideoSoftwareRenderer { uint16_t bldy; GBAMosaicControl mosaic; - bool greenswap; + bool stereo; struct WindowN { struct GBAVideoWindowRegion h; diff --git a/include/mgba/internal/gba/video.h b/include/mgba/internal/gba/video.h index 5fc68eb59..5ee2bc36f 100644 --- a/include/mgba/internal/gba/video.h +++ b/include/mgba/internal/gba/video.h @@ -42,7 +42,8 @@ enum { enum GBAVideoObjMode { OBJ_MODE_NORMAL = 0, OBJ_MODE_SEMITRANSPARENT = 1, - OBJ_MODE_OBJWIN = 2 + OBJ_MODE_OBJWIN = 2, + OBJ_MODE_STEREO = 3, }; enum GBAVideoObjShape { @@ -142,6 +143,7 @@ DECL_BITS(GBARegisterDISPSTAT, VcountSetting, 8, 8); DECL_BITFIELD(GBARegisterBGCNT, uint16_t); DECL_BITS(GBARegisterBGCNT, Priority, 0, 2); DECL_BITS(GBARegisterBGCNT, CharBase, 2, 2); +DECL_BITS(GBARegisterBGCNT, StereoMode, 4, 2); DECL_BIT(GBARegisterBGCNT, Mosaic, 6); DECL_BIT(GBARegisterBGCNT, 256Color, 7); DECL_BITS(GBARegisterBGCNT, ScreenBase, 8, 5); diff --git a/src/gba/io.c b/src/gba/io.c index cb6058f7f..0747986f0 100644 --- a/src/gba/io.c +++ b/src/gba/io.c @@ -934,7 +934,7 @@ uint16_t GBAIORead(struct GBA* gba, uint32_t address) { } // Fall through case GBA_REG_DISPCNT: - case GBA_REG_GREENSWP: + case GBA_REG_STEREOCNT: case GBA_REG_DISPSTAT: case GBA_REG_VCOUNT: case GBA_REG_BG0CNT: diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 83550bcfa..e2dab9033 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -136,7 +136,7 @@ static void GBAVideoSoftwareRendererReset(struct GBAVideoRenderer* renderer) { softwareRenderer->oamMax = 0; softwareRenderer->mosaic = 0; - softwareRenderer->greenswap = false; + softwareRenderer->stereo = false; softwareRenderer->nextY = 0; softwareRenderer->objOffsetX = 0; @@ -195,8 +195,8 @@ static uint16_t GBAVideoSoftwareRendererWriteVideoRegister(struct GBAVideoRender softwareRenderer->dispcnt = value; GBAVideoSoftwareRendererUpdateDISPCNT(softwareRenderer); break; - case GBA_REG_GREENSWP: - softwareRenderer->greenswap = value & 1; + case GBA_REG_STEREOCNT: + softwareRenderer->stereo = value & 1; break; case GBA_REG_BG0CNT: value &= 0xDFFF; @@ -705,7 +705,7 @@ static void GBAVideoSoftwareRendererDrawScanline(struct GBAVideoRenderer* render } int x; - if (softwareRenderer->greenswap) { + if (softwareRenderer->stereo) { for (x = 0; x < GBA_VIDEO_HORIZONTAL_PIXELS; x += 4) { row[x] = softwareRenderer->row[x] & (M_COLOR_RED | M_COLOR_BLUE); row[x] |= softwareRenderer->row[x + 1] & M_COLOR_GREEN; diff --git a/src/gba/video.c b/src/gba/video.c index 749a29be0..a86413251 100644 --- a/src/gba/video.c +++ b/src/gba/video.c @@ -128,7 +128,7 @@ void GBAVideoAssociateRenderer(struct GBAVideo* video, struct GBAVideoRenderer* video->renderer->init(video->renderer); video->renderer->reset(video->renderer); renderer->writeVideoRegister(renderer, GBA_REG_DISPCNT, video->p->memory.io[GBA_REG(DISPCNT)]); - renderer->writeVideoRegister(renderer, GBA_REG_GREENSWP, video->p->memory.io[GBA_REG(GREENSWP)]); + renderer->writeVideoRegister(renderer, GBA_REG_STEREOCNT, video->p->memory.io[GBA_REG(STEREOCNT)]); int address; for (address = GBA_REG_BG0CNT; address < 0x56; address += 2) { if (address == 0x4E) { diff --git a/src/platform/qt/IOViewer.cpp b/src/platform/qt/IOViewer.cpp index 9b44af04f..8ef921b7c 100644 --- a/src/platform/qt/IOViewer.cpp +++ b/src/platform/qt/IOViewer.cpp @@ -60,7 +60,7 @@ const QList& IOViewer::registerDescriptions(mPlat { tr("Enable Window 1"), 14 }, { tr("Enable OBJ Window"), 15 }, }); - // 0x04000002: Green swap + // 0x04000002: STEREOCNT regGBA.append({ { tr("Swap green components"), 0 }, });