Fix palette writes in MIPS

Was not writing to the right address (but decoded memory was working).
Most game worked well except those that depend on modifying the existing
palette bits (instead of copying from ROM/RAM). Fixes several games.
This commit is contained in:
David Guillen Fandos 2021-04-04 18:13:15 +02:00
parent 5bee4d66c2
commit a5c06f62d6
1 changed files with 4 additions and 3 deletions

View File

@ -2950,13 +2950,14 @@ static void emit_palette_hdl(
}
mips_emit_addu(reg_rv, reg_rv, reg_base);
// Store the data (delay slot from the SMC branch)
// Store the data in real palette memory
if (realsize == 2) {
mips_emit_sw(reg_a1, reg_base, 0x100);
mips_emit_sw(reg_a1, reg_rv, 0x100);
} else if (realsize == 1) {
mips_emit_sh(reg_a1, reg_base, 0x100);
mips_emit_sh(reg_a1, reg_rv, 0x100);
}
// Convert and store in mirror memory
palette_convert();
mips_emit_sh(reg_temp, reg_rv, 0x500);