• Login
  • Register
  • Dolphin Forums
  • Home
  • FAQ
  • Download
  • Wiki
  • Code


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Site › dolphin-emu.org articles v
1 2 3 Next »

Game Modification: 60 FPS Hacks and Patches
View New Posts | View Today's Posts

Pages (84): « Previous 1 ... 20 21 22 23 24 ... 84 Next »
Jump to page 
Thread Rating:
  • 3 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Modes
Game Modification: 60 FPS Hacks and Patches
10-14-2016, 02:38 PM (This post was last modified: 10-14-2016, 02:38 PM by masterotaku.)
#211
masterotaku Offline
Picky 3D user
****
Posts: 552
Threads: 7
Joined: Aug 2013
Confirmed. Using it as a patch works Big Grin . If anyone doesn't know how to do that, select:

dword
Offset: 80255ADC
Value: 2C000001
CPU: Intel Core i5 4670k @ 4.4GHz
GPU: GAINWARD GeForce GTX 1080 Phoenix "GLH"
RAM: G.SKILL Ripjaws X DDR3 16GB 1600MHz CL7
OS: Windows 7 Ultimate x64
Find
Reply
10-14-2016, 11:42 PM
#212
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
Just tried it, never tried strobbing before, and well there is indeed much sharper flow.
However, the flickering makes me motion sick:S
Though i can imagine at 120hz+ it might be more bearable.
Find
Reply
10-14-2016, 11:58 PM
#213
masterotaku Offline
Picky 3D user
****
Posts: 552
Threads: 7
Joined: Aug 2013
(10-14-2016, 11:42 PM)Zerowalker Wrote: Though i can imagine at 120hz+ it might be more bearable.

Not really. It's still inserting black frames at a 30Hz rate, but it can be encapsulated inside 120Hz strobing, 60Hz strobing with the right kind of monitor, or with no strobing.

The difference is in the motion blur you get, or double image or not (you get double image if your monitor strobes at 120Hz), etc. For perfect motion with these codes, the monitor should strobe at 60Hz.
CPU: Intel Core i5 4670k @ 4.4GHz
GPU: GAINWARD GeForce GTX 1080 Phoenix "GLH"
RAM: G.SKILL Ripjaws X DDR3 16GB 1600MHz CL7
OS: Windows 7 Ultimate x64
Find
Reply
10-15-2016, 12:45 AM
#214
Admentus Offline
Nothing but perfection for gaming
*******
Posts: 1,977
Threads: 25
Joined: May 2015
It has been a long time since I booted Wind Waker. So with all this activity recently about a 60 FPS code for The Wind Waker, does it really play at 60 FPS without any considerable issues? In other words, would it be playable from start to finish at 60 FPS? Don't mind me through, I could be reading this thread wrong. I was just wondering how far progresss actually came. Well in any case, the progress made here is awesome. I think I should boot Wind Waker myself and see it with my own eyes. Tongue
Super Mario 64 - Super Smash Bros. 64 - Mario Kart 64 - Zelda 64 - Star Fox 64 - Patreon - Discord
Find
Reply
10-15-2016, 04:31 AM
#215
Zerowalker Offline
Member
***
Posts: 208
Threads: 19
Joined: Jan 2016
(10-14-2016, 11:58 PM)masterotaku Wrote: Not really. It's still inserting black frames at a 30Hz rate, but it can be encapsulated inside 120Hz strobing, 60Hz strobing with the right kind of monitor, or with no strobing.

The difference is in the motion blur you get, or double image or not (you get double image if your monitor strobes at 120Hz), etc. For perfect motion with these codes, the monitor should strobe at 60Hz.

Yeah i meant the strobing effect at 120hz as in, 60 black frames.

Do you have such a monitor and has used that effect?
Or do you use just 60hz?

Cause i myself can't see how one can't notice that flicker at 60hz 30fps, it looks like the elecricity is failing XD

Though Much sharper in motion, huge difference.
Find
Reply
10-15-2016, 05:44 AM
#216
retroben Offline
N64 Code Hunter
****
Posts: 328
Threads: 21
Joined: Jul 2015
@Admentus: The 60fps codes for both WW and TP are framedrop threshold caps and are too fast at double paced real 60fps for Wind Waker and Twilight Princess,just like the Ocarina and Majora codes run at triple pace and merely need to run at 1/3rd of that pace in order to be perfect and maybe Ocarina would even keep its audio playing (race condition makes audio flags miss in some areas) if the pacing was slowed to match the original.

If I could just find the address like Banjo-Kazooie/Tooie both have where it runs as slow as the fps is to the same value in pacing rate to VI/s,for example 20fps would be 20VI/s worth of pacing but still run at 100% 60VI/s as emulators will indicate but slower than the original speed.
Shield TV Pro (stock/non-rooted OTA 6.3)

Acer Aspire E 15 E5-575G-59EE

CPU: i5-6200U 2.3-2.8Ghz _ GPU: Nvidia GeForce 940MX 2GB (GDDR5) VRAM
Hyundai 8GB DDR4 Dual-channel SDRAM _ 1000GB HDD
New; CPU: Intel i9 9900KF_ GPU: Nvidia RTX 2060 Super | ◕‿◕
Find
Reply
10-15-2016, 06:54 AM
#217
retroben Offline
N64 Code Hunter
****
Posts: 328
Threads: 21
Joined: Jul 2015
Double post.

I probably should have mentioned this sooner,but the framelimit is not what we are looking for,its actually the game speed we need to change,which is independent of the actual framerate and stays the same while the current 60fps code makes the limit run faster but smoother too while not touching the real game speed value.

For example,changing that value to be double game speed and not using the current 60fps code will result in the game running twice as fast but at the same framerate 30fps and 60 VI/s while half by itself is a smoother half speed pace and the best part would be with the 60fps code and that value halved for flawless 60fps gameplay but only with overclocking to bypass native slowdown.
Shield TV Pro (stock/non-rooted OTA 6.3)

Acer Aspire E 15 E5-575G-59EE

CPU: i5-6200U 2.3-2.8Ghz _ GPU: Nvidia GeForce 940MX 2GB (GDDR5) VRAM
Hyundai 8GB DDR4 Dual-channel SDRAM _ 1000GB HDD
New; CPU: Intel i9 9900KF_ GPU: Nvidia RTX 2060 Super | ◕‿◕
Find
Reply
10-15-2016, 07:33 AM (This post was last modified: 10-15-2016, 07:35 AM by Meowmaritus. Edit Reason: formatting )
#218
Meowmaritus Offline
Zelda Enthusiast
***
Posts: 111
Threads: 0
Joined: Oct 2016
(10-15-2016, 06:54 AM)retroben Wrote: Double post.

I probably should have mentioned this sooner,but the framelimit is not what we are looking for,its actually the game speed we need to change,which is independent of the actual framerate and stays the same while the current 60fps code makes the limit run faster but smoother too while not touching the real game speed value.

For example,changing that value to be double game speed and not using the current 60fps code will result in the game running twice as fast but at the same framerate 30fps and 60 VI/s while half by itself is a smoother half speed pace and the best part would be with the 60fps code and that value halved for flawless 60fps gameplay but only with overclocking to bypass native slowdown.

Well yeah what do you think we've been looking for this whole time? We already have the double speed 60 FPS code and the regular speed 60 FPS flicker code. Now we just need a way to make either method work.
We have 2 fairly viable options at this point: 
  • Get the double speed 60 FPS code to work properly by halfing the ingame timestep (extremely unlikely as wind waker seems to assume a constant timestep each frame for everything)
  • Get the flickering 60 FPS code to work properly by forcing the game to render on those frames where it would normally be black (which may or may not just end up being 60 FPS with duplicated frames, looking exactly like 30 FPS, we'll have to see)


Anyways, an update on what I've been doin': 

I've been messing around with the flickering 60 FPS code. What it does is changes one ASM instruction inside the endRender_10JFWDisplayFv function from cmpwi r0,2 (compares the value of r0 with the value of the number 2) to cmpwi r0,<whatever number you chose to use that isn't 2> (compares the value of r0 with the value of any number that isnt 2). Anyways, r0 is always equal to 2. The game has an alternate, unused branch of programming that it goes to if that compare operation returns false (which it only does if you compare it to a number that isn't 2, because that's what r0 is).

Anyways, in that unused branch there are a few function calls that the game normally never uses in endRender_10JFWDisplayFv:
  • drawendXfb_single_10JFWDisplayFv
  • copyXfb_triple_10JFWDisplayFv
Anyways, with the code active, enabling the External Frame Buffer (XFB) in dolphin's video settings on Virtual gives you a nice black screen (even though the game is supposed to be copying to xfb) and setting the xfb setting to Real instantly makes the game lock up and any game you try to run in dolphin after that point will fail to boot. Restarting Dolphin fixes the problem.


Another thing I messed with is halfing the values returned by OSGetTime in Wind Waker by adding my own function in the ASM and rerouting to it.
Here's the patch in AR code form (note: WILL IMMEDIATELY CRASH GAME)
Spoiler: (Show Spoiler)

$Half OSGetTime
043095EC 48D25A14
043095F0 7C630E70
043095F4 7C840E70
043095F8 7CA50E70
043095FC 60000000
04309600 4E800020
04309604 48D25AFC
0502F020 7C6D42E6
0502F024 7C8C42E6
0502F028 7CAD42E6
0502F02C 7C032800
0502F030 4082FFF0
0502F034 4B2DA5DC
0502F134 7C6C42E6
0502F138 7C630E70
0502F13C 4B2DA500


Here's the patch in Dolphin's patch form (add it directly to the game's .INI config file. WILL IMMEDIATELY CRASH GAME)
Spoiler: (Show Spoiler)

0x803095EC:dword:0x48D25A14
0x803095F0:dword:0x7C630E70
0x803095F4:dword:0x7C840E70
0x803095F8:dword:0x7CA50E70
0x803095FC:dword:0x60000000
0x80309600:dword:0x4E800020
0x80309604:dword:0x48D25AFC
0x8102F000:dword:0x7C6D42E6
0x8102F004:dword:0x7C8C42E6
0x8102F008:dword:0x7CAD42E6
0x8102F00C:dword:0x7C032800
0x8102F010:dword:0x4082FFF0
0x8102F014:dword:0x4B2DA5DC
0x8102F100:dword:0x7C6C42E6
0x8102F104:dword:0x7C630E70
0x8102F108:dword:0x4B2DA500


The only way to not crash game immediately is to apply the value changes BEFORE the game starts running (which dolphin patches don't do for some reason):
Spoiler: (Show Spoiler)
  • Start Dolphin in debug mode.
  • Make sure "Options > Boot to Pause" is enabled (it is by default)
  • Start Wind Waker
  • While the game is sitting there paused, adjust the values:
    • Set the value of 0x803095EC to 0x48D25A14
    • Set the value of 0x803095F0 to 0x7C630E70
    • Set the value of 0x803095F4 to 0x7C840E70
    • Set the value of 0x803095F8 to 0x7CA50E70
    • Set the value of 0x803095FC to 0x60000000
    • Set the value of 0x80309600 to 0x4E800020
    • Set the value of 0x80309604 to 0x48D25AFC
    • Set the value of 0x8102F000 to 0x7C6D42E6
    • Set the value of 0x8102F004 to 0x7C8C42E6
    • Set the value of 0x8102F008 to 0x7CAD42E6
    • Set the value of 0x8102F00C to 0x7C032800
    • Set the value of 0x8102F010 to 0x4082FFF0
    • Set the value of 0x8102F014 to 0x4B2DA5DC
    • Set the value of 0x8102F100 to 0x7C6C42E6
    • Set the value of 0x8102F104 to 0x7C630E70
    • Set the value of 0x8102F108 to 0x4B2DA500
  • Hit the Play button to run the game.

And after all that nonsense, the game will boot to the Nintendo logo at 30 FPS instead of 60. Then, as soon as the Nintendo logo is over, when the game would normally switch from 60 FPS to 30 FPS, it crashes Dolphin (at least for me) WOOO LAD
Find
Reply
10-15-2016, 08:03 AM
#219
gamemasterplc Offline
Above and Beyond
*******
Posts: 1,111
Threads: 7
Joined: Mar 2016
You placed your instructions in the middle of Actor Memory. Do not use memory below 0x817F0000 in Wind Waker or Twilight Princess or the game will crash in some areas.
Website is gamemasterplc.com. Youtube Channel is gamemasterplc.
Website Find
Reply
10-15-2016, 09:12 AM (This post was last modified: 10-15-2016, 09:13 AM by masterotaku.)
#220
masterotaku Offline
Picky 3D user
****
Posts: 552
Threads: 7
Joined: Aug 2013
(10-15-2016, 04:31 AM)Zerowalker Wrote: Do you have such a monitor and has used that effect?
Or do you use just 60hz?

Usually, I play my monitor (Dell S2716DG) in 3D Vision 2 mode. That's 60Hz per eye (the monitor itself is at 120Hz).


Let's think about a 60Hz strobing monitor, like a CRT. A 30fps game will show frames like this:

1,1,2,2,3,3,4,4,5,5,6,6

Every frame is shown twice, so following things in movement will make a double image appear. With the black frame insertion code, it's like this:

1,black,2,black,3,black,4,black5,black,6,black

This time, you only see each frame once, so it doesn't show the double image effect. However, it's effectively strobing as if it were a 30Hz CRT. Unbearable for most people.


Now, imagine that you are using a 120Hz monitor while you use ULMB (strobing). The game as usual:

1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6

Evey frame displayed four times. Quadruple image effect. With the code:

1,1,black,black,2,2,black,black,3,3,black,black,4,4,black,black,5,5,black,black,6,6,black,black

You get double image effect AND the flickering. A pretty lose-lose situation in my opinion. To lose the double image effect, you would need 1 frame followed by three black frames:

1,black,black,black,2,black,black,black,3,black,black,black,4,black,black,black,5,black,black,black,6,black,black,black


In my case, I discovered a secret mode in my monitor to enable ULMB and G-Sync at the same time. So the monitor synchronizes the strobing to the 60fps Dolphin is sending (using 60Hz automatically, without any desynchronization, tearing or input lag), but 30 of them are black frames. And that's why I'm getting the second case, as if I had a 60Hz monitor (1,black,2,black,3,black,4,black5,black,6,black). Of course, if this G-Sync+ULMB mode could work with framerates under 40fps without introducing double image, I wouldn't need the black frame insertion code.


For people with unstrobed monitors, there isn't any double image issue but there is a lot of motion blur. With the black frame insertion code you get all the bad flickering and half the motion blur (you get the same motion blur as with a 60fps game). At 120Hz it's the same because the monitor is showing the frames fully, without flickering, acting essentially the same way as a 60Hz monitor with a 60fps game.
CPU: Intel Core i5 4670k @ 4.4GHz
GPU: GAINWARD GeForce GTX 1080 Phoenix "GLH"
RAM: G.SKILL Ripjaws X DDR3 16GB 1600MHz CL7
OS: Windows 7 Ultimate x64
Find
Reply
« Next Oldest | Next Newest »
Pages (84): « Previous 1 ... 20 21 22 23 24 ... 84 Next »
Jump to page 


  • View a Printable Version
  • Subscribe to this thread
Forum Jump:


Users browsing this thread: 1 Guest(s)



Powered By MyBB | Theme by Fragma

Linear Mode
Threaded Mode