mirror of https://github.com/mgba-emu/mgba.git
GB: Fix GBC game registers after skipping BIOS
This commit is contained in:
parent
46860b40e6
commit
f33593537b
1
CHANGES
1
CHANGES
|
@ -5,6 +5,7 @@ Features:
|
|||
Emulation fixes:
|
||||
- ARM: Fix ALU reading PC after shifting
|
||||
- ARM: Fix STR storing PC after address calculation
|
||||
- GB: Fix GBC game registers after skipping BIOS
|
||||
- GBA: Add missing RTC overrides for Legendz games
|
||||
- GBA BIOS: Implement dummy sound driver calls
|
||||
- GBA BIOS: Improve HLE BIOS timing
|
||||
|
|
11
src/gb/gb.c
11
src/gb/gb.c
|
@ -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;
|
||||
cpu->l = 0x7C;
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue