GB: Fix GBC game registers after skipping BIOS

This commit is contained in:
Vicki Pfau 2020-05-13 01:41:02 -07:00
parent f0997c6214
commit b716ba2117
2 changed files with 10 additions and 3 deletions

View File

@ -1,5 +1,5 @@
0.8.2: (Future)
Emulation fixes:
- GB: Fix GBC game registers after skipping BIOS
- GBA: Add missing RTC overrides for Legendz games
- GBA SIO: Fix Multiplayer busy bit
- GBA SIO: Fix double-unloading active driver

View File

@ -478,6 +478,7 @@ void GBReset(struct SM83Core* cpu) {
void GBSkipBIOS(struct GB* gb) {
struct SM83Core* cpu = gb->cpu;
const struct GBCartridge* cart = (const struct GBCartridge*) &gb->memory.rom[0x100];
int nextDiv = 0;
switch (gb->model) {
@ -539,9 +540,15 @@ void GBSkipBIOS(struct GB* gb) {
cpu->a = 0x11;
cpu->f.packed = 0x80;
cpu->c = 0;
cpu->e = 0x08;
cpu->h = 0;
if (cart->cgb & 0x80) {
cpu->d = 0xFF;
cpu->e = 0x56;
cpu->l = 0x0D;
} else {
cpu->e = 0x08;
cpu->l = 0x7C;
}
gb->timer.internalDiv = 0x1EA;
nextDiv = 0xC;
break;