From 27f5468e01d4361705a1dd0615c195e138e17710 Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Mon, 29 Jul 2013 01:30:27 -0700 Subject: [PATCH] Writing for Window registers --- src/gba/renderers/video-software.c | 18 +++++++++++++++ src/gba/renderers/video-software.h | 36 ++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/gba/renderers/video-software.c b/src/gba/renderers/video-software.c index 2272ce9fe..491654ae4 100644 --- a/src/gba/renderers/video-software.c +++ b/src/gba/renderers/video-software.c @@ -246,6 +246,24 @@ static uint16_t GBAVideoSoftwareRendererWriteVideoRegister(struct GBAVideoRender } _updatePalettes(softwareRenderer); break; + case REG_WIN0H: + softwareRenderer->win0H.packed = value; + break; + case REG_WIN1H: + softwareRenderer->win1H.packed = value; + break; + case REG_WIN0V: + softwareRenderer->win0V.packed = value; + break; + case REG_WIN1V: + softwareRenderer->win1V.packed = value; + break; + case REG_WININ: + softwareRenderer->winin.packed = value; + break; + case REG_WINOUT: + softwareRenderer->winout.packed = value; + break; default: GBALog(GBA_LOG_STUB, "Stub video register write: %03x", address); } diff --git a/src/gba/renderers/video-software.h b/src/gba/renderers/video-software.h index 892ca8b7c..2adecdb85 100644 --- a/src/gba/renderers/video-software.h +++ b/src/gba/renderers/video-software.h @@ -50,6 +50,34 @@ enum PixelFlags { FLAG_TARGET_2 = 0x02000000 }; +union Window { + struct { + uint8_t end; + uint8_t start; + }; + uint16_t packed; +}; + +union WindowControl { + struct { + unsigned bg0EnableLo : 1; + unsigned bg1EnableLo : 1; + unsigned bg2EnableLo : 1; + unsigned bg3EnableLo : 1; + unsigned objEnableLo : 1; + unsigned blendEnableLo : 1; + unsigned : 2; + unsigned bg0EnableHi : 1; + unsigned bg1EnableHi : 1; + unsigned bg2EnableHi : 1; + unsigned bg3EnableHi : 1; + unsigned objEnableHi : 1; + unsigned blendEnableHi : 1; + unsigned : 2; + }; + uint16_t packed; +}; + struct GBAVideoSoftwareRenderer { struct GBAVideoRenderer d; @@ -73,6 +101,14 @@ struct GBAVideoSoftwareRenderer { uint16_t bldb; uint16_t bldy; + union Window win0H; + union Window win0V; + union Window win1H; + union Window win1V; + + union WindowControl winin; + union WindowControl winout; + struct GBAVideoSoftwareBackground bg[4]; uint32_t* row;