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

aminemo
Explorer
I wander if it is possible to place the main camera relatively to any object of the scene.
I remeber that metroid prime was having a bug which was placing the camera relatively to a light object.
It think it could be interesting to lock the camera to any object position.
For exemple in fzero there is a cocpit and a character inside each car it could be fun to lock the camera to
the character's head or any part of the car.

2EyeGuy
Adventurer
"aminemo" wrote:
I wander if it is possible to place the main camera relatively to any object of the scene.
I remeber that metroid prime was having a bug which was placing the camera relatively to a light object.
It think it could be interesting to lock the camera to any object position.
For exemple in fzero there is a cocpit and a character inside each car it could be fun to lock the camera to
the character's head or any part of the car.

It's not possible to lock it perfectly, because I need to know the camera position before I start drawing anything, and I don't know the position of the chosen object until I have already drawn other objects. So there would always be one frame of lag in the camera position. But that should be OK.

But I need a way of identifying an object, some way to know when it is drawing the character and not drawing something else. I haven't worked out how to do that yet. I could try recognising objects based on the texture, the vertices, the order, the matrices, or some other rendering settings. I don't know which way would work.

I don't know what you mean about Metroid Prime placing the camera relative to a light. Isn't the camera first person in Metroid Prime? There was an issue with my camera angle lock feature on GitHub with Metroid Prime, Bomberman Generations, etc. which made the camera always aim at the floor if you locked the camera angles, but I have now fixed that. I still need to update the INI files though.

EDIT: BTW, Cegli and Penkamaster have been hard at work improving the bruteforcer, so we will have a lot more culling codes soon. Unfortunately, my computer isn't powerful enough to bruteforce anything, so I can't help much with that, but other people will be able to bruteforce culling codes easily.

aminemo
Explorer
"2EyeGuy" wrote:
"aminemo" wrote:

EDIT: BTW, Cegli and Penkamaster have been hard at work improving the bruteforcer, so we will have a lot more culling codes soon. Unfortunately, my computer isn't powerful enough to bruteforce anything




Welcome !!BTW my computer look like this one compare to yours :cry:

cegli
Honored Guest
Hey everyone! I've been quiet lately, but I've been working hard. I just spent a solid couple of days revamping penkamaster's culling code bruteforcer. It's almost at the point where it could be run by anyone now, so you guys can help find culling codes for your favorite games on the next release. Here's my to-do list on it:

1. Add an option to launch it from the GUI (right now you must add -bruteforce 0 or 1 from the command line)
2. Add the ability to post process the .map file after a run, so the next runs will focus on interesting functions.
3. Increase the range of the bruteforcing functions. For instance, be able to force f1 through f8 to various values, and also be able to force r4-r10 to various values. Right now we only force r3 to 1 or 0.
4. Possibly add something that causes certain loops to either always branch or never branch. This might help find culling functions the current bruteforcer misses.

Right now the bruteforcer only is successful on about 35% of games, so I'm hoping 3 and 4 will help increase the amount of codes found.

I've also been slowly learning how game hacking works, and have managed to make a couple interesting hacks and improve a lot of the culling codes. One hack I figured out a bit ago is how to make the camera in Paper Mario zoom all the way out and stay static. It eliminates all of the culling, which is great too. I think codes like that will be great for HMDs like the Vive, if you have a setup where you can walk around a big room. That way, you can be the camera and follow Mario around :).

biolizard89
Honored Guest
Hi,

I'm trying to use the FIFO Player to create some object removal codes, and I'm encountering a weird bug. It seems that a subset of the objects have the first line of the analysis blanked. See this screenshot:



Since the first line is blanked, I cannot figure out what code to use for the object removal.

Is this a known bug? The FIFO dump is from mission 3 of Starfox Assault; the object shown in the screenshot is part of Fox's model. The issue shows up with multiple dumps from this level, dumped with multiple versions of Dolphin (both VR and official, including the stable 4.0.1 release). I can share the FIFO dump if you need it to debug. The screenshot was taken with Dolphin-VR 4.0-6754 (using the binary posted by cegli).

Thanks.

cegli
Honored Guest
Hey Biolizard,

Yep, the FIFO Player is fairly rough in Dolphin. I haven't tested it in a bit, but I probably should to make sure none of my changes have broken anything. Long ago, the FIFO player (purposefully?) made the first line unreadable if it considered it to not perfectly match. Back then I made a change to have it display on the first line anyway, but I haven't looked at it in a while. Maybe a change they made to the main branch broke this change?

I've found that it's much easier to just quickly bruteforce an object removal code. Just get to the spot you want to remove something in game, then go to the hide object tab, choose 8-bit, type in 00, press up then down (to make sure 00 gets covered), then rapidly press up until the object disappears. Then choose 16-bit, add two 00s to the front, and repeat. Keep doing this until you've found your code.

You can even hold the enter key after you've pressed the up button to rapidly fly from 00->FF, watching for it to flicker.

If that doesn't work, let me know. I might have time to look into the FIFO Player bug at some point too, but I've found the bruteforcing is way faster considering the FIFO Player crashes all the time!

Edit: The caveat might be if you're trying to remove a ton of objects. If you need 20 individual objects removed or something, it'd probably be easier to use the FIFO Player...

Edit 2: Okay, I fixed that bug. It was because some of the labels were so long, that wxWidgets couldn't handle them so it just showed it blank. Now, I've noticed that there is another (fairly new) issue where the fifoplayer trace doesn't open unless a game has been opened first. I'll track that down and fix it too.

Edit 3: All fixed! Here's the link: https://mega.co.nz/#!PRdkETjL!4rn_35rTA ... HsDTgsWLZo

Note to everyone, this isn't an official release because I haven't tested it too much! If you're okay with finding possible bugs, feel free to play around with it though.

2EyeGuy
Adventurer
"cegli" wrote:
3. Increase the range of the bruteforcing functions. For instance, be able to force f1 through f8 to various values, and also be able to force r4-r10 to various values. Right now we only force r3 to 1 or 0.

I think that will be a waste of time. All functions that return an int, or a bool, or a pointer, or void will return it in r3.

"cegli" wrote:
4. Possibly add something that causes certain loops to either always branch or never branch. This might help find culling functions the current bruteforcer misses.

That would be more useful and likely to find it.

"cegli" wrote:
One hack I figured out a bit ago is how to make the camera in Paper Mario zoom all the way out and stay static. It eliminates all of the culling, which is great too. I think codes like that will be great for HMDs like the Vive, if you have a setup where you can walk around a big room. That way, you can be the camera and follow Mario around :).

I've been working on locking the game camera more generally. I can now lock the camera rotation in one third of all games. It has been on my todo list for a long time in order to prevent pitch and roll, but with the ability to also lock yaw it will help with playing standing up and making the world feel more solid. Later, I will also be able to lock position, to a lesser extent.

"cegli" wrote:
Note to everyone, this isn't an official release because I haven't tested it too much! If you're okay with finding possible bugs, feel free to play around with it though.

Also you haven't pulled my branch (or master). 😞

cegli
Honored Guest
"2EyeGuy" wrote:
"cegli" wrote:
3. Increase the range of the bruteforcing functions. For instance, be able to force f1 through f8 to various values, and also be able to force r4-r10 to various values. Right now we only force r3 to 1 or 0.

I think that will be a waste of time. All functions that return an int, or a bool, or a pointer, or void will return it in r3.

At gc-forever they've found an example of a game that uses a float for its culling function, so I think it's worth a shot. Also, the more I manually hack at games the more I see functions updating r4 and r5. I think this happens when you pass in the references of multiple variables to the function.

"2EyeGuy" wrote:
Also you haven't pulled my branch (or master). 😞

Don't worry, I did. Your updates are in there, I just hadn't done a git push, so it didn't show up in my github.

Edit: Woooo! I'm 90% done with the culling codes for Paper Mario: The Thousand Year Door! Man, it looks great with no culling. Right now the code is really sloppy, and I'm still missing the culling for boxes (save blocks, coin blocks, bricks), but all the geometry, enemies, etc. is done. I've been working on it on and off for so long now, so glad it's finally coming together!

Anonymous
Not applicable
"cegli" wrote:

Edit: Woooo! I'm 90% done with the culling codes for Paper Mario: The Thousand Year Door! Man, it looks great with no culling. Right now the code is really sloppy, and I'm still missing the culling for boxes (save blocks, coin blocks, bricks), but all the geometry, enemies, etc. is done. I've been working on it on and off for so long now, so glad it's finally coming together!


Great news!!! I'm really looking forward for those codes.
Many thanks for your hard work.

2EyeGuy
Adventurer
"fugazi" wrote:
"cegli" wrote:

Edit: Woooo! I'm 90% done with the culling codes for Paper Mario: The Thousand Year Door! Man, it looks great with no culling. Right now the code is really sloppy, and I'm still missing the culling for boxes (save blocks, coin blocks, bricks), but all the geometry, enemies, etc. is done. I've been working on it on and off for so long now, so glad it's finally coming together!

Great news!!! I'm really looking forward for those codes.
Many thanks for your hard work.

All those people who liked the paper town Crescent Bay demo will finally have their own whole professional game exactly like that. Thanks to your culling codes and the camera lock.
Great work.

I'd better start on merging master. It conflicts with your bruteforcer changes though, so you might need to fix it if I break anything.

EDIT: I've merged master, but I kept the CompiledBlock function which master has deleted, because it contained your bruteforcer code. You should check if it is still needed, and if not, remove entry 2 from the Interpreter table and the corresponding fallbacks in the JIT tables.