GB Memory: Initialize RAM pattern for GBC

This commit is contained in:
Jeffrey Pfau 2016-09-22 06:49:32 -07:00
parent 05edd2fe52
commit 3ceadd4ccd
2 changed files with 15 additions and 0 deletions

View File

@ -14,6 +14,7 @@ Bugfixes:
Misc:
- All: Only update version info if needed
- FFmpeg: Encoding cleanup
- GB Memory: Initialize RAM pattern for GBC
0.5.0: (2016-09-19)
Features:

View File

@ -89,6 +89,20 @@ void GBMemoryReset(struct GB* gb) {
mappedMemoryFree(gb->memory.wram, GB_SIZE_WORKING_RAM);
}
gb->memory.wram = anonymousMemoryMap(GB_SIZE_WORKING_RAM);
if (gb->model >= GB_MODEL_CGB) {
uint32_t* base = (uint32_t*) gb->memory.wram;
size_t i;
uint32_t pattern = 0;
for (i = 0; i < GB_SIZE_WORKING_RAM / 4; i += 4) {
if ((i & 0x1FF) == 0) {
pattern = ~pattern;
}
base[i + 0] = pattern;
base[i + 1] = pattern;
base[i + 2] = ~pattern;
base[i + 3] = ~pattern;
}
}
GBMemorySwitchWramBank(&gb->memory, 1);
gb->memory.romBank = &gb->memory.rom[GB_SIZE_CART_BANK0];
gb->memory.currentBank = 1;