cancel
Showing results for 
Search instead for 
Did you mean: 

Dolphin Emulator DK2 compatibility

lohan
Honored Guest
The title pretty much says it all. I would like to know if anyone here has already tried to run the dolphin emulator with the DK2. Some say it should work. If yes this one should give us hundreds of titles to try out during the "starving period" even if those Wii/Gamecube titles don't use the full potential of the DK2.
1,298 REPLIES 1,298

Anonymous
Not applicable
"aminemo" wrote:

one seem to be used for the culling...


the functions that have worked in other games begins by "clip__11J3DUClipperFPA4" these functions are not in these .map,
but there is other like these

000a65b4 0000d4 800acfb4 4 AddToRendererClippedParticleGenMap__17CParticleDatabaseCFRCQ24rstl236map
000a6688 000050 800ad088 4 AddToRendererClipped__17CParticleDatabaseCFRC14CFrustumPlanes

cegli
Honored Guest
Good work on so far on trying to find the culling/clipping functions! It's anyone's guess what does what, but if you can try forcing the functions with an action replay code and see them returning properly, that would be amazing. It's really hard though, I tried a couple games for a small amount of time and wasn't successful. Also, it appears that some games require you to start with the function disabled, or it doesn't work.

FictionX - I'm not sure about the Linux build, but maybe Feilien will be on to help at some point.

aminemo
Explorer
"cegli" wrote:
Good work on so far on trying to find the culling/clipping functions! It's anyone's guess what does what, but if you can try forcing the functions with an action replay code and see them returning properly, that would be amazing. It's really hard though, I tried a couple games for a small amount of time and wasn't successful. Also, it appears that some games require you to start with the function disabled, or it doesn't work.

FictionX - I'm not sure about the Linux build, but maybe Feilien will be on to help at some point.



I found it
the file has a GXSetCullMode which was reported in the gc forever forum

Re: Culling in GameCube and Wii Games (@Ralf)
AFAIK, it's possible to enable/disable culling using the following GameCube SDK function:

void GXSetCullMode(GXCullMode mode)

GXCullModes

GX_CULL_NONE 0
GX_CULL_FRONT 1
GX_CULL_BACK 2
GX_CULL_ALL 3


0030bddc 000050 803127dc 4 GXSetCullMode




002d645c 000050 802dce5c 4 GXSetCullMode gx.a GXGeometry.c

cegli
Honored Guest
GXCullMode doesn't actually help us :(. Often GC/Wii games refer to culling as stopping actual level from rendering outside of the viewport. We already disable this during emulation (force culling to none), which is why we can look around and it's not all black.

Some of those others might still be it though! Try disabling them and see what happens.

aminemo
Explorer
"cegli" wrote:
GXCullMode doesn't actually help us :(. Often GC/Wii games refer to culling as stopping actual level from rendering outside of the viewport. We already disable this during emulation (force culling to none), which is why we can look around and it's not all black.

Some of those others might still be it though! Try disabling them and see what happens.


I am not familiar with action replay code ,I am not a cheater..... :roll:

Anonymous
Not applicable
"cegli" wrote:
Good work on so far on trying to find the culling/clipping functions! It's anyone's guess what does what, but if you can try forcing the functions with an action replay code and see them returning properly, that would be amazing. It's really hard though, I tried a couple games for a small amount of time and wasn't successful. Also, it appears that some games require you to start with the function disabled, or it doesn't work.


I have tried these functions of the three distincts .map files with no luck at all 😞

000a65b4 0000d4 800acfb4 4 AddToRendererClippedParticleGenMap__17CParticleDatabaseCFRCQ24rstl236map<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>,Q24rstl28auto_ptr<16CParticleGenInfo>,Q24rstl81less<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>,Q24rstl17rmemory_allocator>RC14CFrustumPlanes CParticleDatabase.o
000a6688 000050 800ad088 4 AddToRendererClipped__17CParticleDatabaseCFRC14CFrustumPlanes CParticleDatabase.o
00204258 000534 8020ac58 4 draw_clipped_triangle__FPC9CVector3fRC6CPlanePi MetaRenderCWP.a CCubeRenderer.cpp

AR CODES

040ACFB4 38600000
040ACFB8 4E800020

040AD088 38600000
040AD08C 4E800020

0420AC58 38600000
0420AC5C 4E800020


000c23e0 0000d4 800c8de0 4 AddToRendererClippedParticleGenMap__17CParticleDatabaseCFRCQ24rstl236map<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>,Q24rstl28auto_ptr<16CParticleGenInfo>,Q24rstl81less<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>,Q24rstl17rmemory_allocator>RC14CFrustumPlanes CParticleDatabase.o
000c24b4 000050 800c8eb4 4 AddToRendererClipped__17CParticleDatabaseCFRC14CFrustumPlanes CParticleDatabase.o
0023053c 0006c4 80236f3c 4 draw_clipped_triangle__FPC9CVector3fRC6CPlanePi MetaRenderCW.a CCubeRenderer.cpp

AR CODES

040C8DE0 38600000
040C8DE4 4E800020

040C8EB4 38600000
040C8EB8 4E800020

04236F3C 38600000
04236F40 4E800020

000c3274 00001c 80173554 4 GetPreRenderClipped__6CActorCFv CActor.o
000c3290 000014 80173570 4 SetPreRenderClipped__6CActorFb CActor.o
00188ad8 00004c 80238db8 4 AddToRendererClipped__17CParticleDatabaseCFRC14CFrustumPlanes CParticleDatabase.o
00188b24 0000f0 80238e04 4 AddToRendererClippedParticleGenMap__17CParticleDatabaseCFRCQ24rstl236map<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>,Q24rstl28auto_ptr<16CParticleGenInfo>,Q24rstl81less<Q24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>>,Q24rstl17rmemory_allocator>RC14CFrustumPlanes CParticleDatabase.o
0036c0a0 0006e8 8041c380 4 draw_clipped_triangle__FPC9CVector3fRC6CPlanePi MetaRenderCWD.a CCubeRenderer.cpp
0036cb34 000084 8041ce14 4 draw_clipped_triangle__FPC9CVector3fRC6CPlaneiii MetaRenderCWD.a CCubeRenderer.cpp
0042f764 000030 804dfa44 4 __ct__Q29CGraphics18CClippedScreenRectFiiiiiffff Kyoto_CWD.a DolphinCGraphics.cpp
0042f7c8 00000c 804dfaa8 4 __ct__Q29CGraphics18CClippedScreenRectFv Kyoto_CWD.a DolphinCGraphics.cpp
004548a0 000008 80504b80 4 IsValid__Q29CGraphics18CClippedScreenRectCFv Kyoto_CWD.a CElementGen.cpp
004548a8 000054 80504b88 4 __ct__Q29CGraphics18CClippedScreenRectFRCQ29CGraphics18CClippedScreenRect Kyoto_CWD.a CElementGen.cpp

AR CODES

04173554 38600000
04173558 4E800020

04173570 38600000
04173574 4E800020

04238DB8 38600000
04238DBC 4E800020

04238E04 38600000
04238E08 4E800020

0441C380 38600000
0441C384 4E800020

0441CE14 38600000
0441CE18 4E800020

044DFA44 38600000
044DFA48 4E800020

044DFAA8 38600000
044DFAAC 4E800020

04504B80 38600000
04504B84 4E800020

04504B88 38600000
04504B8C 4E800020

cegli
Honored Guest
Guys, I've solved it! I just was playing Paper Mario: The Thousand Year door at 60fps, with 75fps heading tracking! Perfectly smooth no judder :). It's part of the same Opcode Replay Buffer code! I think we should now be able to play any game at the correct speed with 75fps head tracking (20fps, 30fps, 60fps, etc.). Here's what I still have to do before releasing it:

1. Fix the bugs that are making it unstable (some games crash).
2. Add GUI control for the post divider, that lets us change games to 60fps. Right now it's hardcoded.
3. Sound is still running at 1.25x speed, so I have to slow that down just as much as the post divider is dividing.

Woo, I'm so excited!!

OculusRiftRocks
Explorer
amazing news, so I will get judder free headtracking in games but still play those games at the correct speed, but the sound may be sped up? How interesting, I guess the audio/visual cutscenes would go out of alignment then?

well,whether the sound gets fixed or not for the next build I'm certainly looking forward to it, RE4 and zelda twilight had aweful judder as well as far as I recall.

FictionX
Honored Guest
"feilen" wrote:


Okay, I know what this is. You'll need to download and build the Oculus SDK, and stick LibOVR from that in Externals/

Then after the other git apply, make a file 'findfix.patch' with the contents:

diff --git a/CMakeTests/FindOculusSDK.cmake b/CMakeTests/FindOculusSDK.cmake
index afd00d2..458879d 100644
--- a/CMakeTests/FindOculusSDK.cmake
+++ b/CMakeTests/FindOculusSDK.cmake
@@ -10,17 +10,25 @@ if (NOT OCULUSSDK_FOUND)
find_path(OCULUSSDK_INCLUDE_DIR NAMES OVR.h
PATHS
/usr/include/ovr-0.4.3/LibOVR/Include
+ /usr/include/ovr-0.4.4/LibOVR/Include
/usr/include
/usr/local/include/ovr-0.4.3/LibOVR/Include
+ /usr/local/include/ovr-0.4.4/LibOVR/Include
/usr/local/include
+ Externals/LibOVR/Include
+ Externals/
)

find_path(OCULUSSDK_SRC_DIR NAMES OVR_CAPI_GL.h
PATHS
/usr/include/ovr-0.4.3/LibOVR/Src
+ /usr/include/ovr-0.4.4/LibOVR/Src
/usr/include
/usr/local/include/ovr-0.4.3/LibOVR/Src
+ /usr/local/include/ovr-0.4.4/LibOVR/Src
/usr/local/include
+ Externals/LibOVR/Src
+ Externals/
)

if(OCULUSSDK_INCLUDE_DIR AND OCULUSSDK_SRC_DIR)


And then do 'git apply /path/to/findfix.patch' right after the other 'git apply' command.
I only set up the directories so far to support finding the Oculus SDK when it was installed to the filesystem on Arch Linux. This has been fixed upstream but what we're building for Linux is an old patch (while they fix some weird OpenGL glitches with the latest stereo modes)

If that builds, when you run Dolphin make absolutely sure it's got 'Oculus SDK 0.4.4' in the corner! Otherwise you've got just regular dolphin to build.


Thanks for helping out - but I'm afraid that didn't work for me:

~/dolphin $ git apply ./findfix.patch
error: patch failed: CMakeTests/FindOculusSDK.cmake:10
error: CMakeTests/FindOculusSDK.cmake: patch does not apply

I tried editing FindOculusSDK.cmake manually to add the paths, but I get the same result about not being able to find
-lOculusVR

Maybe I don't process LibOVR correctly? I just run "make", and then copy the folder to Externals. Is that correct?

Sorry.. I know I'm a n00b! 🙂

cegli
Honored Guest
"OculusRiftRocks" wrote:
amazing news, so I will get judder free headtracking in games but still play those games at the correct speed, but the sound may be sped up? How interesting, I guess the audio/visual cutscenes would go out of alignment then?

well,whether the sound gets fixed or not for the next build I'm certainly looking forward to it, RE4 and zelda twilight had aweful judder as well as far as I recall.


I *should* be able to slow the sound down without too much difficulty to make it run at normal speed. I just haven't written the code yet :). Step 1 is probably the hardest. Right now it works perfectly on some games, but gives "FIFO Desync" warnings on others. I think I'm not replaying certain types of commands correctly, so I'm going to have to find those and fix them. I hope when it's all done, every game will be able to played at normal speed, with normal sound, at its normal frame rate with 75fps head tracking.

Edit: I've finished step 2 and checked in what I have so far! I have now seen 20fps, 30fps, and 60fps games all running nicely with native 75fps head tracking! Really gotta fix the FIFO Desync bugs now...

1. Fix the bugs that are making it unstable (some games crash).
2. Add GUI control for the post divider, that lets us change games to 60fps. Right now it's hardcoded.
3. Sound is still running at 1.25x speed, so I have to slow that down just as much as the post divider is dividing.