GBA BIOS: Fix HuffUnComp to work when games pass an invalid bit length

This commit is contained in:
Jeffrey Pfau 2015-01-13 20:46:29 -08:00
parent 757646ec84
commit 23d35c4b29
2 changed files with 5 additions and 0 deletions

View File

@ -28,6 +28,7 @@ Bugfixes:
- GBA Memory: Filter out top nybble of DMA addresses
- Debugger: Fix binary print putting spaces between digits
- GBA BIOS: Fix LZ77UnCompVram to use 16-bit loads from decompressed memory
- GBA BIOS: Fix HuffUnComp to work when games pass an invalid bit length
Misc:
- Qt: Disable sync to video by default
- GBA: Exit cleanly on FATAL if the port supports it

View File

@ -310,6 +310,10 @@ static void _unHuffman(struct GBA* gba, uint32_t source, uint32_t dest) {
uint32_t header = cpu->memory.load32(cpu, source, 0);
int remaining = header >> 8;
int bits = header & 0xF;
if (bits == 0) {
GBALog(gba, GBA_LOG_GAME_ERROR, "Invalid Huffman bits");
bits = 8;
}
if (32 % bits) {
GBALog(gba, GBA_LOG_STUB, "Unimplemented unaligned Huffman");
return;