Emulator Issues #3393
closed
DSPLLE plugin crash if it's JIT Dynarec is ON with DSPLLE on Thread in single core mode
Added by rodiabloalmeida about 14 years ago.
Relates to performance:
No
Relates to maintainability:
No
Description
What steps will reproduce the problem?
1.Disable Dual Core mode and choose DSPLLE plugin as sound plugin. Also, enable DSPLLE on thread so you have one core for sound and one for the rest with a dual core cpu. Locking threads to core is optional.
2.In DSPLLE options, select all 3 options
3.Run i.e. Mario Kart:DD
What is the expected output? What do you see instead?
It's expected to see the game running. But it crashs instead. Disabling the Jit Dynarec in DSPLLE options or disabling DSPLLE on dedicated thread solves the problem. But I loose speed for sure. Tested with r6302x64. The issue doesn't happen with r5289 (when the JIT was introduced to windows version) but happens starting around r5541 when major changes to the plugin was made. Disabling DTK music or audio throttle doesn't make any difference btw.
Please provide any additional information below.
Tested in windows 7 x64 on a Pentium Dual Core E5300@3.8Ghz with 3GB RAM + nvidia 9600GT. I would like to know if it's impossible to turn on the DSPLLE Jit dynarec if you're in single core mode with DSPLLE on a dedicated thread with a dual core cpu 'cos would be a cool thing to test. I mean... 3.8GHz just for the sound maybe it's enough in this gamecube game i.e. but not with the Jit dynarec OFF. And, not that it matters but, I can't afford a Intel Ci7/Ci5 cpu right now. :P
Anyway, thanks for this awesome piece of software by the way. And keep up the good work. ^^
- Status changed from New to Accepted
Yes, the LLE on thread option will crash the emulator if the CPU thread runs ahead of the DSP thread. The issue is not caused by the revisions you've listed. There is no easy fix at this time. Possible solutions are to use a timer/clock to control the various components (CPU, GPU, DSP) of the Wii/GC or to send a signal back to the CPU to wait (similar to fifobusy in the GPU code).
Will accept this issue but do not expect a quick fix.
I was trying to trackdown the culprit revision here and report back in a moment. But I think there is no need for it 'cos you may know what you're talking about. So, even if there will be no quick fix, I thank you anyway for accepting the issue, skidau. Thanks very much.
Just a question with no preasure intention: Is the "sending a signal back" solution too hard to code? What would be involved in the code? Again, no preasure. Just my curiosity. ^^'
The tricky part with pausing the CPU is that Dolphin's timer/scheduler is based on the CPU. So if the DSP tells the CPU to pause, the whole system ends up pausing (including the DSP itself). This catch 22 will be a bit tricky to solve.
Simple, give the cpu some other things to do that are unrelated so that it does not stop and will keep running. By the time the cpu finsishes doing other tasks, maybe the dsp would have caught up by then. Of course, I really have no idea what I'm talking about. :)
@ skidau
Oh, I see the big picture now. Not an easy task indeed. It's like requesting to pcsx2 team to enable overlay statistics in GSdx. Needs a total rework of things. Well, I can live with that. Thanks for the explanation about how dolphin timings works, skidau. ^^
@ Tommy
I agree with you. You don't realy know what you're talking about. Or maybe you're just kidding. I don't know. :P No offense ^^'
Yes, rodiabloalmeida, it was a bit of a joke. I was hoping for skid to respond to it but now you've ruined it. I'm kidding. :)
This affects dual core mode also.
I've gotten LLE on thread to work with JIT by doing what pierre suggested, replace all #ifdef _M_IX86 with #ifndef _M_X64.
This works as long as the game isn't a Zelda Ucode game such as Mario Kart Double Dash, Super Mario Galaxy 1/2, Zelda Windwaker, and Zelda Twilight Princess.
Yes Mario Kart Double Dash also uses the AFC decoder for race music, I was surprised as well.
By the way it doesn't crash for me, it just hangs. I suppose the reason I don't have to disable dual core mode is because I have a hyper-threaded quad core.
X2D, I know that affects dual core mode. I think skidau knows it too. And when I say "it crash", I meant it just stays there doing nothing. The emu keeps "running". Or, as you say, it hangs. And I already tried the said "replace method" 4 days ago. No luck with that, of course, as I'm trying to run one of the aformentioned games. By the way, the aformentioned games are the ones that actually NEEDS LLE to have proper sound, so it's a no go. And no surprise here. But thanks for the help :P
And yes, you don't have to disable dual core for sure, man. That's kinda obvious. 'Cos you have an extra free core to dedicate it to the LLE thread. Even two I can say! Note: if you haven't figured out yet, dolphin will not use the forth core. I don't suppose that. I can confirm it for you [lol]. :P (Btw, nice rig you got. A Ci7, right?^^)
As I mentioned replacing #ifdef _M_IX86 with #ifndef _M_X64 only works if the game isn't a Zelda Ucode game. I have it working fine with Starfox, RE games, DBZ games etc.. just not Mario or Zelda games such as the games I mentioned above.
Anyways LLE is just too slow right now, the only time I really use it if something isn't passable with HLE. I'm somewhat able to bear the crappy music or no music in some games with HLE, however hoping that will change soon and issues with LLE will be fixed or the impossible, most major issues with HLE fixed which I doubt.
X2D, I think you're missing something here. Emulation is emulation. It doesn't matter if it's ubber slow at first. If it was the case, pcsx2 couldn't never have reached the current state it has today 'cos the beta testers would have just gone crazy in the process. Ask General Plot for example (if you find him). Or you can ask Ector or skidau in this case.
Oh, btw, disabling HT on your Ci7 could help you with speed in dolphin. Unless you're setting the cpu affinity to the physical cores in task manager, preferably the last ones in the CPU list. Just a hint.
Anyway, back on topic. Shall we?^^ Want to chat? PM me at dolphin's forum. It's a better place for that. Not here.
Me and General Plot are actually buddies, I'm an admin over at General Emulation. I've been around for quite a while myself. :P
And no, I'm not complaining, I am fully aware of what you mentioned. I know there are going to be these issues, but I as anyone hope they will be fixed someday. I used PCSX2 0.8.1 and then the new versions with the speed improvements were released and it was like a godsend.
Hyper-threading isn't the problem, the problem is using lock threads to cores when hyper-threading is enabled. By disabling lock threads to cores, using Dolphin with hyper-threading enabled is just fine. ;)
By the way I was just discussing the issue in my last replies. Every bit of information helps the developers.
There seems to be a tone of arrogance and disrespect with you, rodia, maybe you can calm down a bit and realize when someone is trying to help rather than making a point to be an ass to people?
Sorry, that's not the intention by a hundred miles of distance. X2D got my msg right way in dolphins forum. I just have a tendency to be sarcastic sometimes. But I know he is always trying to help. Thing is: I'm 36 hours without sleeping at the time I'm writing this post. So sorry for any misunderstanding. Not my intention. Really.
But I really think this issue page is not the proper place to chat. No offense. You too can PM me if you want to. At dolphin's forum I'm rodiabloalmeida there too.
Again, sincerely sorry. u.u
just updating, issue is still present on zelda ucode games with r6584 64bit.
Issue 1665 has been merged into this issue.
- Status changed from Accepted to Fixed
Well, it still hangs in Super Mario Galaxy 1 and 2. For others games its fixed. Any clue about this, skidau?
And thanks for trying.
These games work for me: ZTP Wii, ZWW, SMG and SMG2. Sometimes, it takes a few tries for the game to boot, but when it boots, the game works fine.
Skidau, I've tried many many times to boot SMG and SMG2 and it always hang. Could you please share your settings for it to boot, 'cos I've already tried many combinations without success. Do you close Dolphin between each try? Or do you just hit ESC and try to run it again?
Nevermind. After sometime, I managed to get SMG booting. It's indeed fixed. Thanks again, skid. o/
Also available in: Atom
PDF