Corrected behavior of palette registers in DMG mode. This affected a broken Game & Watch Gallery 2 ROM that was previously used in the automation test.
This commit is contained in:
parent
80a1b12ae7
commit
4904277f0d
@ -197,7 +197,7 @@ static uint8_t read_high_memory(GB_gameboy_t *gb, uint16_t addr)
|
|||||||
|
|
||||||
case GB_IO_BGPI:
|
case GB_IO_BGPI:
|
||||||
case GB_IO_OBPI:
|
case GB_IO_OBPI:
|
||||||
if (!gb->is_cgb) {
|
if (!gb->cgb_mode && gb->boot_rom_finished) {
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
}
|
}
|
||||||
return gb->io_registers[addr & 0xFF] | 0x40;
|
return gb->io_registers[addr & 0xFF] | 0x40;
|
||||||
@ -205,7 +205,7 @@ static uint8_t read_high_memory(GB_gameboy_t *gb, uint16_t addr)
|
|||||||
case GB_IO_BGPD:
|
case GB_IO_BGPD:
|
||||||
case GB_IO_OBPD:
|
case GB_IO_OBPD:
|
||||||
{
|
{
|
||||||
if (!gb->is_cgb) {
|
if (!gb->cgb_mode && gb->boot_rom_finished) {
|
||||||
return 0xFF;
|
return 0xFF;
|
||||||
}
|
}
|
||||||
uint8_t index_reg = (addr & 0xFF) - 1;
|
uint8_t index_reg = (addr & 0xFF) - 1;
|
||||||
@ -479,14 +479,16 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value)
|
|||||||
|
|
||||||
case GB_IO_BGPI:
|
case GB_IO_BGPI:
|
||||||
case GB_IO_OBPI:
|
case GB_IO_OBPI:
|
||||||
if (!gb->is_cgb) {
|
if (!gb->cgb_mode && gb->boot_rom_finished) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gb->io_registers[addr & 0xFF] = value;
|
gb->io_registers[addr & 0xFF] = value;
|
||||||
return;
|
return;
|
||||||
case GB_IO_BGPD:
|
case GB_IO_BGPD:
|
||||||
case GB_IO_OBPD:
|
case GB_IO_OBPD:
|
||||||
if (!gb->is_cgb) {
|
if (!gb->cgb_mode && gb->boot_rom_finished) {
|
||||||
|
/* Todo: Due to the behavior of a broken Game & Watch Gallery 2 ROM on a real CGB. A proper test ROM
|
||||||
|
is required. */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint8_t index_reg = (addr & 0xFF) - 1;
|
uint8_t index_reg = (addr & 0xFF) - 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user