For a while now, we have used the INI setting SuggestedAspectRatio
to indicate that a Wii game doesn't support 16:9, making Dolphin
switch to 4:3 when playing those games (as long as the aspect ratio
setting is set to Auto). However, we didn't have a complete list of
games that don't support 16:9. Yesterday, I found what seems like
such a list in the vWii system menu (the PAL one, in case it matters).
This commit sets SuggestedAspectRatio = 2 in the INIs for all the
titles in that list, with a few exceptions:
E5Z E62 E63 E6W E6X E6Z: These titles are already covered by E.ini.
HAJ HAP HCB: HAJ and HAP do in fact support 16:9, but are not
installable on vWii without hacking. I don't know anything about HCB
other than what its GameTDB entry says, but since HAJ and HAP do
in fact support 16:9, it's probably best to not mark HCB unless
someone actually can check that it doesn't support 16:9.
All newly added files in this commit were automatically generated,
and all existing files that were edited were handled manually.
Interesting to note is that some of the titles in the vWii list
seem to be completely unknown. Perhaps they are unreleased games.
Causes a crash during the final boss. This game is timing sensitive in
general though, so I wouldn't be surprised if certain other stages also
had crashing issues.
Closes emulator issue #10186
This adds Vertex Rounding to the Sonic Heroes' GameINI (allowing you enjoy Sonic Heroes in higher resolution without problem) and then removed the forced 1x Native and Anti-Aliasing settings as they are not needed when Vertex Rounding is enabled.
This will avoid effects being unexpectedly broken in these games if the user disables the option globally. This list is by no means comprehensive, these are just the games I could confirm use custom mipmaps.
Work around a dcache issue by preventing the game from doing
something pointless.
The game's DVD read function writes 0x87654321 to the entire read
buffer and 0x12345678 to the last 4 bytes. It then calls DVDReadAsync()
and without waiting for the read to complete at all, it checks if the
last 4 bytes are still 0x12345678. If they are, then the game fails.
The check always passes on console because DVDReadAsync() calls
issueCommand(), which calls DCInvalidateRange(read_buffer) (dcbi).
Dolphin cannot emulate this without an extremely significant
performance hit.
Forcing people to use hacks is a bad idea in general, and there are
two practical problems with doing it for immediate XFB in particular:
1. It breaks the GC IPL, which some users run when launching games.
2. Competitive players don't necessarily want the lowest possible
latency - they might want the latency that's the closest to console,
so if they're playing locally with a low-latency monitor, they might
not want to use immediate XFB. (This isn't a theoretical concern -
I've seen Melee players want to increase their latency.)
Besides, it feels arbitrary that just these five specific games should
have immediate XFB forced on.
This reverts commit 1fc910b3ea,
replacing the old INI setting EFBScale with a new INI setting
called InternalResolution, which has a simpler mapping:
| EFBScale | InternalResolution
----------------- | -------------------- | --------------------
Auto (fractional) | 0 |
Auto (integral) | 1 | 0
1x | 2 | 1
1.5x | 3 |
2x | 4 | 2
2.5x | 5 |
3x | 6 | 3
4x | 7 | 4
5x | 8 | 5
6x | 9 | 6
All the fractional IRs were removed in f090a943.
Without virtual xfb, the game will show distorted graphics once leaving
the title screen. This adds an INI file to make the game playable.
The wiki page for this game also notes the need for virtual xfb.
This could cause the first branch of the bootucode procedure, which
takes its parameters from the AX registers, to run during the ROM init
sequence. Since the ROM doesn't set any of the AX registers, the values
aren't meaningful, and can cause bad DMA transfers and crashes.
Wii.Widescreen is a setting that cannot be changed on the fly after
emulation has started, so anything booted after the initial title
will have an unexpected aspect ratio.
We can just set Video_Settings.AspectRatio instead, which *can* be live
changed, since it doesn't involve messing with the SYSCONF at any time.
This is also much closer to the behaviour of the Wii U, which
configures the DMCU to force 4:3 transparently, instead of doing it the
intrusive way (touching the SYSCONF).
Based off codehandleronly.bin. Improves support for codes with conditionals due to adding cache invalidation on stores. You also have support for mode code lines at once before Dolphin freezes at startup.
- coef: Explicitly set 23 different values that are used by GBA UCode,
and tweaked overall parameters to more closely match those 23 values.
- irom: Moved a few functions to their proper places, updated BootUCode
to configure DMA transfers using AX registers as well as IX registers
(the GBA UCode uses this to do two sequential transfers in one call),
and added partial functions used by GBA UCode.
All functions were reverse-engineered solely based off of observed
effects on the virtual machine: register states before-and-after, dmem
interactions, and DMA transfers. The specific coefficients were observed
being read from dmem, and must be exactly those values to function
properly. I have no knowledge of how the official ROM implements these
functions, or how it is implemented overall.
Tested with The Legend of Zelda: Four Swords Adventures, Final Fantasy
Crystal Chronicles, and Billy Hatcher and the Giant Egg (to download
ChuChu Rocket!).