Or can anyone help me figure out the process of turning a dither removal into a cheat code? I know to you remove it from the .dol, but not how to make it a cheat.
GXSetDither seems to be:
XXXXXXXX3C80CC0138A000613800000080C702205066177A98A4800090C4800090C70220B00700024E800020
XXXXXXXX seems to vary between games, but we always want to replace it with either 4E800020 or 48000028.
For this example we'll replace it with 4E800020 ("return" instruction).
Gecko code should be:
28YYYYYY 00003C80 // if 2 bytes at mem address 0x80YYYYYY contain 3C80
06ZZZZZZ 00000008 // write to mem address 0x80ZZZZZZ the following 8 bytes
4E800020 3C80CC01 // 8 bytes to be written
e0000000 80008000 // end of code
YYYYYY
YYYYYY = mem address discovered with eg. Dolphin debugging UI (Config > interface tab > show debugging UI) which contains the string 3C80CC0138A000613800000080C702205066177A98A4800090C4800090C70220B00700024E800020
Dolphin debugging UI doesn't seem to find long strings, so click "dump MRAM" which dumps to C:\Users\YourUsername\Documents\Dolphin Emulator\Dump\mem1.raw
Then inside mem1.raw search the string and get the offset highlighted in red:
So for this game YYYYYY = 4BDC50
Dolphin debugging UI doesn't seem to find long strings, so click "dump MRAM" which dumps to C:\Users\YourUsername\Documents\Dolphin Emulator\Dump\mem1.raw
Then inside mem1.raw search the string and get the offset highlighted in red:
So for this game YYYYYY = 4BDC50
ZZZZZZ
ZZZZZZ = YYYYYY - 4
= 4BDC50 - 4 (eg. Windows calculator > view > programmer > hex radio button)
= 4BDC4C
So the code for this game would be:
284BDC50 00003C80 // if 2 bytes at mem address 0x804BDC50 contain 3C80
064BDC4C 00000008 // write to mem address 0x804BDC4C the following 8 bytes
4E800020 3C80CC01 // 8 bytes to be written
e0000000 80008000 // end of code
= 4BDC50 - 4 (eg. Windows calculator > view > programmer > hex radio button)
= 4BDC4C
So the code for this game would be:
284BDC50 00003C80 // if 2 bytes at mem address 0x804BDC50 contain 3C80
064BDC4C 00000008 // write to mem address 0x804BDC4C the following 8 bytes
4E800020 3C80CC01 // 8 bytes to be written
e0000000 80008000 // end of code
An alternative to disabling dithering is to patch the game's vfilter to a weak strength filter like 04041010100404 ("Low" in ULGX Enhanced) which reduces dithering artefacts a bit at expense of some image clarity.
Last edited by NoobletCheese,