Permalink
Browse files

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

  • Loading branch information...
endrift committed Jan 15, 2018
1 parent 7792960 commit 67e03bda91d1ffd0162a545d91f819fd56195923
Showing with 11 additions and 1 deletion.
  1. +1 −0 CHANGES
  2. +6 −1 src/gba/extra/proxy.c
  3. +1 −0 src/gba/renderers/video-software.c
  4. +3 −0 src/gba/video.c
View
@@ -40,6 +40,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 Timer: Use global cycles for timers
- GBA: Extend oddly-sized ROMs to full address space (fixes mgba.io/i/722)
View
@@ -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:
@@ -157,6 +157,7 @@ static uint16_t GBAVideoSoftwareRendererWriteVideoRegister(struct GBAVideoRender
switch (address) {
case REG_DISPCNT:
+ value &= 0xFFF7;
softwareRenderer->dispcnt = value;
GBAVideoSoftwareRendererUpdateDISPCNT(softwareRenderer);
break;
View
@@ -217,6 +217,9 @@ static uint16_t GBAVideoDummyRendererWriteVideoRegister(struct GBAVideoRenderer*
GBAVideoCacheWriteVideoRegister(renderer->cache, address, value);
}
switch (address) {
+ case REG_DISPCNT:
+ value &= 0xFFF7;
+ break;
case REG_BG0CNT:
case REG_BG1CNT:
value &= 0xDFFF;

0 comments on commit 67e03bd

Please sign in to comment.