-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Patches for Resident Evil 2/3 audio issues
These games are erroneously zeroing buffers before they can be fully copied to ARAM by DMA. The responsible memset() calls are followed by a call to DVDRead() which issues dcbi instructions that effectively cancel the memset() on real hardware. Because Dolphin lacks dcache emulation, the effects of the memset() calls are observed, which causes missing audio. In a comment on the original bug, phire noted that the issue can be corrected by simply nop'ing out the offending memset() calls. Because the games dynamically load different .rel executables based on the character and/or language, the addresses of these calls can vary. To deal generally with the problem of dynamic code being loaded to fixed, known addresses, the patch engine is extended to support conditional patches which require a match against a known value. This sort of thing is already achievable with Action Replay codes, but their use depends on enabling cheats globally in Dolphin, which is not a prerequisite shared by patches. Patches are included for every region, character, and language combination. The end result is an approximation of the games' behavior on real hardware without the associated complexity of proper dcache emulation. https://bugs.dolphin-emu.org/issues/9840
- Loading branch information
Showing
10 changed files
with
162 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# GHAE08 - Resident Evil 2 / Biohazard 2 | ||
|
||
[OnFrame] | ||
# Skip memset call that is followed by dcbi, simulating dcache behavior | ||
$Fix audio issues | ||
# main.dol | ||
0x800339E4:dword:0x60000000 | ||
# leon.rel | ||
0x8055ACBC:dword:0x60000000:0x4BAA8445 | ||
# claire.rel | ||
0x8055AB54:dword:0x60000000:0x4BAA85AD |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# GHAJ08 - Biohazard 2 | ||
|
||
[OnFrame] | ||
# Skip memset call that is followed by dcbi, simulating dcache behavior | ||
$Fix audio issues | ||
# main.dol | ||
0x80065FFC:dword:0x60000000 | ||
# leon.rel | ||
0x805C5CC4:dword:0x60000000:0x4BA3D43D | ||
# claire.rel | ||
0x805C5BFC:dword:0x60000000:0x4BA3D505 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
# GHAP08 - Resident Evil 2 / Biohazard 2 | ||
|
||
[OnFrame] | ||
# Skip memset call that is followed by dcbi, simulating dcache behavior | ||
$Fix audio issues | ||
# main.dol | ||
0x80033D60:dword:0x60000000 | ||
# leon.rel | ||
0x8055C5F8:dword:0x60000000:0x4BAA6B09 | ||
# claire.rel | ||
0x8055C490:dword:0x60000000:0x4BAA6C71 | ||
# leon_g.rel | ||
0x8055C3B8:dword:0x60000000:0x4BAA6D49 | ||
# claire_g.rel | ||
0x8055C328:dword:0x60000000:0x4BAA6DD9 | ||
# leon_f.rel | ||
0x8055D188:dword:0x60000000:0x4BAA5F79 | ||
# claire_f.rel | ||
0x8055D068:dword:0x60000000:0x4BAA6099 | ||
# leon_s.rel | ||
0x8055D100:dword:0x60000000:0x4BAA6001 | ||
# claire_s.rel | ||
0x8055D064:dword:0x60000000:0x4BAA609D | ||
# leon_i.rel | ||
0x8055CFDC:dword:0x60000000:0x4BAA6125 | ||
# claire_i.rel | ||
0x8055CEBC:dword:0x60000000:0x4BAA6245 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# GLEE08 - Resident Evil 3: Nemesis | ||
|
||
[OnFrame] | ||
# Skip memset call that is followed by dcbi, simulating dcache behavior | ||
$Fix audio issues | ||
# main.dol | ||
0x80150E94:dword:0x60000000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# GLEJ08 - BioHazard 3: Last Escape | ||
|
||
[OnFrame] | ||
# Skip memset call that is followed by dcbi, simulating dcache behavior | ||
$Fix audio issues | ||
# main.dol | ||
0x8015110C:dword:0x60000000 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# GLEP08 - Resident Evil 3: Nemesis | ||
|
||
[OnFrame] | ||
# Skip memset call that is followed by dcbi, simulating dcache behavior | ||
$Fix audio issues | ||
# eng.rel | ||
0x8058C174:dword:0x60000000:0x4BA76F8D | ||
# ger.rel | ||
0x8058CE40:dword:0x60000000:0x4BA762C1 | ||
# fra.rel | ||
0x8058D03C:dword:0x60000000:0x4BA760C5 | ||
# spa.rel | ||
0x8058D024:dword:0x60000000:0x4BA760DD | ||
# ita.rel | ||
0x8058CEA4:dword:0x60000000:0x4BA7625D |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters