GBA I/O: Fix writing to DISPCNT CGB flag (fixes #902)

This commit is contained in:
Vicki Pfau 2018-01-14 21:03:10 -08:00
parent 4d2f721a80
commit e344e2efa5
4 changed files with 11 additions and 1 deletions

View File

@ -16,6 +16,7 @@ Bugfixes:
- GB MBC: Fix MBC2 saves (fixes mgba.io/i/954)
- GBA Memory: Fix copy-on-write memory leak
- Core: Fix ROM patches not being unloaded when disabled (fixes mgba.io/i/962)
- GBA I/O: Fix writing to DISPCNT CGB flag (fixes mgba.io/i/902)
Misc:
- GBA: Improve multiboot image detection
- GB MBC: Remove erroneous bank 0 wrapping

View File

@ -171,11 +171,16 @@ static uint16_t* _vramBlock(struct mVideoLogger* logger, uint32_t address) {
uint16_t GBAVideoProxyRendererWriteVideoRegister(struct GBAVideoRenderer* renderer, uint32_t address, uint16_t value) {
struct GBAVideoProxyRenderer* proxyRenderer = (struct GBAVideoProxyRenderer*) renderer;
switch (address) {
case REG_DISPCNT:
value &= 0xFFF7;
break;
case REG_BG0CNT:
case REG_BG1CNT:
value &= 0xDFFF;
break;
case REG_BG2CNT:
case REG_BG3CNT:
value &= 0xFFCF;
value &= 0xFFFF;
break;
case REG_BG0HOFS:
case REG_BG0VOFS:

View File

@ -147,6 +147,7 @@ static uint16_t GBAVideoSoftwareRendererWriteVideoRegister(struct GBAVideoRender
struct GBAVideoSoftwareRenderer* softwareRenderer = (struct GBAVideoSoftwareRenderer*) renderer;
switch (address) {
case REG_DISPCNT:
value &= 0xFFF7;
softwareRenderer->dispcnt = value;
GBAVideoSoftwareRendererUpdateDISPCNT(softwareRenderer);
break;

View File

@ -216,6 +216,9 @@ static void GBAVideoDummyRendererDeinit(struct GBAVideoRenderer* renderer) {
static uint16_t GBAVideoDummyRendererWriteVideoRegister(struct GBAVideoRenderer* renderer, uint32_t address, uint16_t value) {
UNUSED(renderer);
switch (address) {
case REG_DISPCNT:
value &= 0xFFF7;
break;
case REG_BG0CNT:
case REG_BG1CNT:
value &= 0xDFFF;