Writing for Window registers

This commit is contained in:
Jeffrey Pfau 2013-07-29 01:30:27 -07:00
parent 3f122dcf14
commit 27f5468e01
2 changed files with 54 additions and 0 deletions

View File

@ -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);
}

View File

@ -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;