FIX94 / Nintendont

A Wii Homebrew Project to play GC Games on Wii and vWii on Wii U
1.9k stars 323 forks source link

Implement More Widescreen Hacks #272

Open cheatfreak47 opened 8 years ago

cheatfreak47 commented 8 years ago

Something I've noticed is that there is a metric ton of available widescreen hacks on the Dolphin wiki that happen to just work with various games. I'm planning on going through and testing each of these myself, for the record and will update the issue with more information as I test each one.

The idea is that I might find patches that work incredibly well for specific games either better than the existing ones or ones that take a previously not working game, and make it work. If so, those patches should be quite suitable to be implemented into Nintendont itself.

I'll also add more games with working patches as I find them. You can find any of the codes/patches I'm referring to on the Dolphin Wiki pages for said games.

Otherwise this issue is just a generic "more widescreen patches" enhancement request, but I will try to maintain this as I actively search out and test more patches

Legend:

None = untested Italics = Works, but more research is needed to determine if it's better than the default WS hack Bold + Italics = Is definitely good enough to be added to Nintendont Strikethrough = Doesn't seem to work ^ = note

List of ones checked:

^absolutely perfect: v1 and v2 do not seem to be much different, but I prefer v2 myself it just looks better, I think it's just more accurate fov or something. The codes are here.

^Minor visual distortion during chaos control, works great otherwise. Code is here.

^definitely fixes a lot of clipping related problems, the code is here.

^works beautifully, but may not be needed though according to @carnage702 I checked myself, it's definitely needed, game has really bad clipping on the sides of the screen without it. Code is here.

^default widescreen patch doesn't work at all, use v2 because v1 unstretches the ui, causing some graphical bugs in-game. Code is here.

^the default widescreen patch tends to crash the game, no kidding, so this is a must, works perfectly. Code is here.

16:9 and thus the patching isn't needed, please add to exceptions list. Yes, I did check to make sure these aren't already in the exceptions.

carnage702 commented 8 years ago

most widescreens hacks might not work straight away due to nintendont changing some adresses and such and need to be modified.

Also make sure nintendont default widescreen hack doesnt work already i remenber wario world default widescreen from nintendont working great on it so there is no point of forcing a custom widescreen hack on it.

cheatfreak47 commented 8 years ago

Will do, I plan on looking into more of these tomorrow, so far Kirby Air Ride, Shadow, and Paper Mario are definitely improvments over the standard widescreen hacks

Kirby and Shadow does nothing with the existing hack Paper Mario seems to have horrendous clipping issues

carnage702 commented 8 years ago

preety sure sunshine also works great with nintendont default widescreen hack among others i would say first try the default nintendont widescreen hack then dolphins if nothing changes then there is no point on porting the code.

cheatfreak47 commented 8 years ago

@carnage702 Yeah I know, but that list is just of games I found had patches, only bolded and italicised ones are ones I'm recommending actually be added. Ones without any formatting I haven't actually manually checked yet.

Tomorrow when I have time, I'll be checking the following things for each game and patch before posting a result:

-how the game's existing Widescreen hack behaves -how the patch behaves compared to how the widescreen hack behaves -play for an extended period with the patch spread across as much of a game as I can feasibly do, checking for potential side effects

Last I checked wario world had clipping issues but maybe it's since been fixed (haven't played it in a while) As for Sunshine has indeed improved greatly with the built in hacks but still has some issues with the mirrors in gelato beach, I'd like to test this widescreen hack to see if this corrects it before I write it off

cheatfreak47 commented 8 years ago

Alright so I went ahead and checked Wario World and simply put, you are wrong. @carnage702
It has... frankly awful clipping on the edges of the screen. (even worse than some other games)

The code corrects this rather gracefully, and should be used instead.


Added a section for games that are missing the exceptons list in PatchWidescreen.c, but include a 16:9 option natively.


Reorganized a bit, checked Billy Hatcher, Checked Wind Waker

carnage702 commented 8 years ago

i wasnt wrong i played warioware long time ago and the widescreen patch was changed several times to be more compatible with more games i played it when the game was compatible wich was when they added the external font support so like 200+ revs ago lol.

cheatfreak47 commented 8 years ago

@carnage702 The current Widescreen hack with the latest release version of Nintendont causes Wario World to have horrible clipping and pop-in on the edges of the screen. I literally just checked myself not even 20 minutes ago. (Wario World, not to be confused with WarioWare Inc. Mega Party Game$, which iirc doesn't have any 3D elements, but I haven't tested the Widescreen hack with it, so I'll look into it eventually, might be something there)

carnage702 commented 8 years ago

no i meant wario world the 3d platformer like i said i tested it long long ago and the widescreen patch was changed so manny times i dont doubt it changed across several games.

cheatfreak47 commented 8 years ago

@carnage702 Well either you're mistaken or something changed since then that broke it. This is what the current widescreen hack does on Wario World. Yes, it's widescreen, but the clipping is so bad, it takes out you of the game. https://u.teknik.io/MOUtn.mp4

As you can see, pretty nasty clipping problems.

carnage702 commented 8 years ago

im not mistaken some games even lost the widescreen hack altogether while others gained the hack itself was changed numerous times for reaching more games while breaking others so yeah it wasnt like that whn i tryed but like i said it totaly changed alot the widescreen ahck to reach more games.

cheatfreak47 commented 8 years ago

I see, I guess some commit along the way may have just broken that one then, from the sound of things. Either way, the code I linked works pefectly for Wario World, fixes all the clipping problems entirely, which is why I'm saying it'd be nice if it could be implemented as an automatic patch in PatchWidescreen.c

GerbilSoft commented 8 years ago

@cheatfreak47 I attempted to implement the Shadow code in PatchWidescreen.c, but it simply didn't do anything. That's why I didn't include it in the exFAT branch. (The Sonic Heroes code worked perfectly [in-level only], and I was able to port it to the JP version, but it did nothing when I tried porting it to the PAL version, so I probably missed something.)

I'll check the other games you listed, but I haven't played many of them so it'll take some time to test those codes.

Both THPS4 and Jimmy Neutron weren't listed on https://en.wikipedia.org/wiki/List_of_GameCube_games_with_alternate_display_modes, which is why I didn't add those to the exception list. I'll add those in when I test the other widescreen codes.

EDIT: Also, as I mentioned on https://github.com/FIX94/Nintendont/issues/266#issuecomment-228511033, I found the commit that broke widescreen in SA2B, but unfortunately, "fixing" it causes the game to crash.

cheatfreak47 commented 8 years ago

@GerbilSoft Strange, any idea why the code would work as a GCT but not as a hardcoded patch? Seems like there'd be less limitations on the latter, but what do I know? ¯\(º_o)/¯

GerbilSoft commented 8 years ago

@cheatfreak47 If the code modifies a value in .data or allocated on the heap, then a hard-coded version won't work, since the hard-coded one applies the change on .dol load only. That value will then get overwritten later, so the patch has no effect.

You'd need to dig deeper into the code to figure out where it sets that value, then modify that code to set the right value.

EDIT: I took a quick look at the Wario World code, and it uses some conditional codes. I'm not sure if those can be easily implemented as a static widescreen patch.

cheatfreak47 commented 8 years ago

Pardon me if this is a bit of a misguided suggestion but... has an internally stored GCT for these widescreen patches been considered? IE, a GCT code that's just packed in nintendont that's loaded in like a standard code to load in when the appropriate title has Widescreen Hack enabled and/or the code is appended on the fly to whatever GCT the user has loading (if they use one for actual cheats)

Just a thought, would probably save effort in trying to convert codes from Gecko Code format to Hard-coded patches if something like that could be implemented.

GerbilSoft commented 8 years ago

I was thinking of a custom "widescreen hack" patch format that could be used to move all of these widescreen hacks out of the main code so it'd be easier to add more hacks without having to implement it manually, but that would basically be the same as GCTs.

I suppose that's an option, but for now, the manual patching is preferred because of the way certain games handle it (e.g. N64 emulation).

ArgonUK commented 7 years ago

Could widescreen hacks found at https://forums.dolphin-emu.org/Thread-unofficial-widescreen-development-topic-archive be implemented into Nintendont?

I would like to request implementation of the widescreen hacks for the following Nintendo exclusive games:

Metal Gear: Twin Snakes

GGSEA4
Metal Gear Solid - The Twin Snakes

16:9 Widescreen Support
48000000 800030C8
DE000000 7E007FFF
1410CC00 C3020000
E0000000 80008000
042864A0 3F400000

Star Wars Rogue Leader: Rogue Squadron II

GSWE64
Star Wars - Rogue Squadron II - Rogue Leader

16:9 Widescreen Support
48000000 80005454
DE000000 7E007FFF
30015410 C07D0124
14014D08 4848B2F8
E0000000 80008000
060A0000 00000010
C0C20000 EC2101B2
D023012C 4BB74D00
0409EA20 3FAAAAAB

Star Wars Rogue Leader: Rogue Squadron III

GLRE64
Star Wars - Rogue Squadron III - Rebel Strike

16:9 Widescreen Support
48000000 8005F71C
DE000000 7E007FFF
301AA484 801F0060
141AA480 C00D0000
E0000000 80008000
040A88A0 3FAAAAAB

Baten Kaitos: Eternal Wings and the Lost Ocean

GKBEAF
Baten Kaitos - Eternal Wings and the Lost Ocean

16:9 Widescreen Support
F6000001 80008180
5403D97E E3E10038
D2000008 00000002
38600001 CBE10030
60000000 00000000
E0000000 80008000
F6000001 80008180
ED6A4824 ED080172
D2000000 00000005
3821FFFC 93E10000
3FE03FAB 93E30000
C1630000 ED2B0272
ED6A4824 83E10000
38210004 00000000
E0000000 80008000
F6000001 80008180
ED4B5024 ECA90172
D2000000 00000006
3821FFF4 93E10000
D9210004 3FE03FAB
93E30000 C1230000
ED4902B2 ED4B5024
83E10000 C9210004
3821000C 00000000
E0000000 80008000
F6000001 80008180
5460063F 418201FC
D200002C 00000006
3C803F40 90810008
C0210008 C0030000
EC010032 D0030000
C003000C EC010032
D003000C 38800001
60000000 00000000
E0000000 80008000
F6000001 80008180
5460063F 418203A4
D2000040 00000006
3C803F40 90810008
C0210008 C0030000
EC010032 D0030000
C003000C EC010032
D003000C 38800001
60000000 00000000
E0000000 80008000

Baten Kaitos Origins

GK4E01
Baten Kaitos Origins

16:9 Widescreen Support
F6000001 80008180
5403D97E E3E10038
D2000008 00000002
38600001 CBE10030
60000000 00000000
E0000000 80008000
F6000001 80008180
ED6A4824 ED080172
D2000000 00000005
3821FFFC 93E10000
3FE03FAB 93E30000
C1630000 ED2B0272
ED6A4824 83E10000
38210004 00000000
E0000000 80008000
F6000001 80008180
ED4B5024 ECA90172
D2000000 00000006
3821FFF4 93E10000
D9210004 3FE03FAB
93E30000 C1230000
ED4902B2 ED4B5024
83E10000 C9210004
3821000C 00000000
E0000000 80008000
F6000001 80008180
5460063F 418201FC
D200002C 00000006
3C803F40 90810008
C0210008 C0030000
EC010032 D0030000
C003000C EC010032
D003000C 38800001
60000000 00000000
E0000000 80008000
F6000001 80008180
5460063F 418203A4
D2000040 00000006
3C803F40 90810008
C0210008 C0030000
EC010032 D0030000
C003000C EC010032
D003000C 38800001
60000000 00000000
E0000000 80008000

Harvest Moon A Wonderful Life

GYWEE9
Harvest Moon - A Wonderful Life

16:9 Widescreen Support
C208620C 00000004
C09F0058 3C803FAB
90830000 C0A30000
EC850132 EC6500F2
60000000 00000000
C21B895C 00000003
3FE03FAB 93E30000
C3C30000 EFA207B2
60000000 00000000
0434AECC C3BC0000
0434AEE0 443C0000
0434A5C0 43830000
0434A5C8 43970000
0434A5D0 43AB0000
21170424 FFECFFEC
03170218 000000C4
0317020C 0000012C
03170200 0000015F
031701F4 0000010F
031701E8 0000013B
03170410 0000014C
E2000001 80008000
040143A4 C3C40038
2039AA58 C0240038
0439AA54 C0440038
E2000001 80008000

Kirby Air Ride

GKYE01
Kirby Air Ride

16:9 Widescreen Support
C20C2878 00000003
3DC03FAB 91C20000
C2220000 EC310072
EC2107F2 00000000
C20C9814 00000003
3DC03FAB 91C20000
C2220000 EC310072
EC2107F2 00000000
C2115950 00000004
3DC03FAB 91C20000
C2220000 EC310072
D03D0044 80010024
60000000 00000000
C21167DC 00000004
3DC03FAB 91C20000
C2220000 EC310072
D0230044 C03F001C
60000000 00000000
C2115BE0 00000004
3DC03FAB 91C20000
C2220000 EC310072
D0230044 39610020
60000000 00000000

Paper Mario: The Thousand-Year Door

G8ME01
Paper Mario - The Thousand-Year Door

16:9 Widescreen Support
C202F310 00000003
3DC08042 3DE03FD8
91EEF6D8 4E800020
60000000 00000000
04199598 4E800020
C200F500 00000004
3DE08082 3DC0402B
61CE12A2 91CFA1BC
60000000 387D015C
60000000 00000000
C200F508 00000004
3DE08082 3DC04063
61CEE8D3 91CFA1BC
60000000 7FC3F378
60000000 00000000

Smuggler's Run: Warzones

GSRE7S
Smuggler's Run - Warzones

16:9 Widescreen Support
C21D382C 00000003
3DE0803D C00FEC10
EF7B0032 3D20802B
60000000 00000000
043CEC10 3FAAAAAB

Star Fox: Assault

GF7E01
Star Fox Assault

16:9 Widescreen Support
04003D00 C3A2BCE0
04003D04 EC441024
04003D08 EC420772
04003D0C 4817C7A0
04003D10 1C000005
04003D14 7C030E70
04003D18 4E800020
04018400 4BFEB911
04018410 4BFEB901
041804A8 4BE83858
04068D2C 60000000
04068D7C 60000000
04068E60 60000000
04068ED0 60000000
0438A900 3F400000
C218030C 00000003
3DC03F40 91C20000
C2220000 EC5100B2
D0440000 00000000
C218068C 00000003
3DC03F40 91C20000
C2220000 EC5100B2
D0440000 00000000

Wario World - Much better code than the current one

GWWE01
Wario World

16:9 Widescreen Support
F6000001 80008180
3FAAAAAB 42340000
14000000 3FE38E39
E0000000 80008000

Super Mario Sunshine (Updated widescreen patch)

GMSE01
Super Mario Sunshine

16:9 Widescreen Support
F6000001 80008180
90850420 C0030000
D2000000 00000002
90A22004 90850420
60000000 00000000
E0000000 80008000
F6000002 80008180
57A006F7 41820010
387F0000 38800001
D200000C 00000008
80822004 80840444
3CA04420 7C042800
40820028 3C803F40
90822000 C0030000
C0222000 EC010032
D0030000 C003000C
EC010032 D003000C
38800001 00000000
E0000000 80008000
F6000001 80008180
418200A8 88030026
1400027C 38008000
140002A4 38007FFF
E0000000 80008000
F6000001 80008180
41F00000 3FAAAAAB
14000004 3FE38E39
E0000000 80008000
F6000001 80008180
3E99999A 656E6473
14000034 3F9A7643
E0000000 80008000
F6000002 80008180
7C1F00D0 7C1C0734
3FA0CC01 B39D8000
D200000C 00000002
3B9CFF96 B39D8000
3B9C006A 00000000
D200005C 00000002
3B9CFF96 B39D8000
3B9C006A 00000000
1400001C 386002EB
14000040 386002EB
E0000000 80008000
F6000001 80008180
931F01C4 3B000000
D2000000 00000003
83B80004 3BBD0064
93B80004 931F01C4
60000000 00000000
E0000000 80008000
F6000001 80008180
931F0450 38600068
D2000000 00000003
80780004 3863FF9C
90780004 931F0450
60000000 00000000
E0000000 80008000
F6000001 80008180
931F042C 38600068
D2000000 00000003
80780004 3863FF9C
90780004 931F042C
60000000 00000000
E0000000 80008000
F6000001 80008180
931F0400 38600068
D2000000 00000003
80780004 3863FF9C
90780004 931F0400
60000000 00000000
E0000000 80008000
F6000001 80008180
931F0140 3B200000
D2000000 00000003
83380004 3B39FF9C
93380004 931F0140
60000000 00000000
E0000000 80008000
F6000001 80008180
931F0160 38600068
D2000000 00000003
80780004 3863FF9C
90780004 931F0160
60000000 00000000
E0000000 80008000
F6000001 80008180
931F0108 3B200000
D2000000 00000003
83380004 3B39FF9C
93380004 931F0108
60000000 00000000
E0000000 80008000
F6000001 80008180
3881006A 901F0014
D2000004 00000004
2C0001ED 40820010
7C050378 38A50064
7CA02B78 901F0014
60000000 00000000
E0000000 80008000
F6000001 80008180
807F0014 38C1015C
D2000000 00000004
809F0018 38A0EC78
90A40014 38A01388
90A4001C 807F0014
60000000 00000000
E0000000 80008000
F6000004 80008180
B0858000 93E58000
8001002C 83E10024
83C10020 38210028
7C0803A6 4E800020
5A010000 FFFFFFA0
14000000 3800F000
14000028 38001000
E0000000 80008000
F6000002 80008180
48000008 3800FFFF
2C00FFFF 41820028
1400000C 48000028
E0000000 80008000
F6000001 80008180
EC0001B2 C05D0000
D2000004 00000003
3C003FAB 90010040
C05D0000 C0810040
EC4400B2 00000000
E0000000 80008000
F6000001 80008180
C03D0024 38610080
D2000000 00000002
3C6047FF 90610080
C0210080 00000000
E0000000 80008000
F6000001 80008180
C03D0024 386100B8
D2000000 00000002
3C6040FF 906100B8
C02100B8 00000000
E0000000 80008000
F6000001 80008180
380000A0 B01F0330
D2000000 00000002
386000A0 3803FF9C
60000000 00000000
E0000000 80008000
F6000001 80008180
38000184 B01F0330
D2000000 00000002
38600184 38030064
60000000 00000000
E0000000 80008000
F6000001 80008180
4800005C 807C0090
D2000004 00000004
807C0080 3880016A
38840064 90830374
3884000A 9083037C
807C0090 00000000
E0000000 80008000

All patches are current and were acquired from https://forums.dolphin-emu.org/Thread-unofficial-widescreen-development-topic-archive https://sites.google.com/site/gamemasterplcscheatcodes/

I believe that gamemasterplc created most of the patches above. All patches were tested in Nintendont.

@GerbilSoft @cheatfreak47 @carnage702 It seems to me, that implementing the widescreen codes as a static patches would not be an easy task. Would it be better to configure Nintendont to read widescreen patches from "ws_patches" folder, so the GCT files in there could be picked up automatically by Ocarina, once widescreen option is enabled in Nintendont?

SevenWillis commented 7 years ago

Mega Man Network Transmission also has the clipping issue. :/