all repos — mgba @ f5f1cbf037e94c665a698eaa21be7311a75f3f83

mGBA Game Boy Advance Emulator

GBA BIOS: Fix undefined instruction HLE behavior
Vicki Pfau vi@endrift.com
Mon, 10 Feb 2020 18:03:48 -0800
commit

f5f1cbf037e94c665a698eaa21be7311a75f3f83

parent

ce400fd827c32ae88113b6d30b54087318b4623c

3 files changed, 10 insertions(+), 3 deletions(-)

jump to
M CHANGESCHANGES

@@ -5,6 +5,7 @@ Emulation fixes:

- ARM: Fix ALU reading PC after shifting - ARM: Fix STR storing PC after address calculation - GB Serialize: Fix timing bug loading channel 4 timing + - GBA BIOS: Fix undefined instruction HLE behavior - GBA DMA: Linger last DMA on bus (fixes mgba.io/i/301 and mgba.io/i/1320) - GBA Memory: Misaligned SRAM writes are ignored - GBA Memory: Improve gamepak prefetch timing
M src/gba/hle-bios.csrc/gba/hle-bios.c

@@ -3,10 +3,10 @@

#include <mgba/internal/gba/memory.h> const uint8_t hleBios[SIZE_BIOS] = { - 0x06, 0x00, 0x00, 0xea, 0xfe, 0xff, 0xff, 0xea, 0x0b, 0x00, 0x00, 0xea, + 0x06, 0x00, 0x00, 0xea, 0x88, 0x00, 0x00, 0xea, 0x0b, 0x00, 0x00, 0xea, 0xfe, 0xff, 0xff, 0xea, 0xfe, 0xff, 0xff, 0xea, 0x00, 0x00, 0xa0, 0xe1, 0x2c, 0x00, 0x00, 0xea, 0xfe, 0xff, 0xff, 0xea, 0x02, 0x03, 0xa0, 0xe3, - 0x03, 0x10, 0xd0, 0xe5, 0xea, 0x00, 0x51, 0xe3, 0xf8, 0x01, 0x9f, 0x15, + 0x03, 0x10, 0xd0, 0xe5, 0xea, 0x00, 0x51, 0xe3, 0x04, 0x02, 0x9f, 0x15, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x29, 0xe1, 0x00, 0x00, 0x5d, 0xe3, 0x01, 0xd3, 0xa0, 0x03, 0x20, 0xd0, 0x4d, 0x02, 0x00, 0x58, 0x2d, 0xe9, 0x02, 0xb0, 0x5e, 0xe5, 0x9c, 0xc0, 0xa0, 0xe3,

@@ -49,5 +49,6 @@ 0x03, 0x70, 0xa0, 0xe1, 0x03, 0x80, 0xa0, 0xe1, 0x03, 0x90, 0xa0, 0xe1,

0x03, 0xa0, 0xa0, 0xe1, 0x02, 0x00, 0x51, 0xe1, 0xf8, 0x07, 0xa1, 0xb8, 0xfc, 0xff, 0xff, 0xba, 0x03, 0x00, 0x00, 0xea, 0x02, 0x00, 0x51, 0xe1, 0xf8, 0x07, 0xb0, 0xb8, 0xf8, 0x07, 0xa1, 0xb8, 0xfb, 0xff, 0xff, 0xba, - 0xf0, 0x87, 0xbd, 0xe8, 0xc0, 0x00, 0x00, 0x02 + 0xf0, 0x87, 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0x00, 0x00, 0x00, + 0x04, 0xe0, 0xa0, 0x03, 0xc0, 0x00, 0x00, 0x02 };
M src/gba/hle-bios.ssrc/gba/hle-bios.s

@@ -187,4 +187,9 @@ blt 0b

2: ldmfd sp!, {r4-r10, pc} +undefBase: +subs pc, lr, #4 +.word 0 +.word 0x03A0E004 + .ltorg