Beta Mupen64Plus


hlide said:
Just for info, psx4all uses recompiler and there is no such load delay slot handling in the recompiler. I didn't remember to handle it when I worked with Zodttd on GP2x version. And rereading its source, there is no such handling.

Now, should it be worthy while handling this load delay slot to increase game compatibility ?

Seems like the static cases, or at least the simpler ones, should at least be detected and reported so you'll know if something is relying on it, then you can do code to handle it.
 
Last edited by a moderator:
Exophase said:
Calls the interpreter for every indirect branch then? Or every branch, period? How much analysis does it do to check for non-dependencies otherwise, any?

Even if it's just doing it for every indirect branch then that's probably a substantial cost, especially if the interpreter is not optimized for this. If it's only doing it for cases where collision is detected at runtime (should be close to never, if ever) then that won't be a big cost.
pcsx-df calls psxDelayTest if there is a load instruction in the delay slot. psxDelayTest calls psxTestLoadDelay which checks if the instruction at the target of the branch reads that register. If so, then it calls execI to execute that one instruction via the interpreter, and then moves the result of the load into the destination register.

psx4all apparently doesn't do this.
 
Last edited by a moderator:
I wanted to know why Conker doesn't work, and found this:

Code:
  15002ff4: LW r25,r2+4
  15002ff8: SLL r8,r25,8
  15002ffc: BEQL r8,r0,15003050
  15003000: -pagefault-
I hate delay slots.

Not sure if it's worth fixing since we have no microcode support for Conker anyway.
 
That's awful, I'm sorry :(

You're probably going to support it eventually, yeah? I wonder what other emulators do.
 
Exophase said:
That's awful, I'm sorry :(

You're probably going to support it eventually, yeah? I wonder what other emulators do.
Conker BFD seems to page in the executable on demand from a compressed filesystem. It uncompresses one 4K page at a time. (Yes, the rom is 64MB, and they compressed it.)

Original mupen deals with it by executing the delay slot in the interpreter if there is a branch in the last instruction of a 4K page. Due to differences in register caching, I don't quite have the right state set up to do that, at least not using the existing interpreter core.

Not sure what Daedalus does, but reportedly can not run this game.
 
Last edited by a moderator:
Ari64 said:
Exophase said:
That's awful, I'm sorry :(

You're probably going to support it eventually, yeah? I wonder what other emulators do.
Conker BFD seems to page in the executable on demand from a compressed filesystem. It uncompresses one 4K page at a time. (Yes, the rom is 64MB, and they compressed it.)

Original mupen deals with it by executing the delay slot in the interpreter if there is a branch in the last instruction of a 4K page. Due to differences in register caching, I don't quite have the right state set up to do that, at least not using the existing interpreter core.

Not sure what Daedalus does, but reportedly can not run this game.

It seems to have been booting once at least in Daedalus PSP. Not sure what is the status now or if just booting is enough for you to consider taking a look at their code. Look at:

http://forums.daedalusx64.com/compat.php
 
Last edited by a moderator:
kikeminchas said:
It seems to have been booting once at least in Daedalus PSP. Not sure what is the status now or if just booting is enough for you to consider taking a look at their code. Look at:

http://forums.daedalusx64.com/compat.php
As I understand it, the daedalus dynarec is basically an interpreter that records instruction traces, and then recompiles the hot paths. I assume that this could work correctly, because when it gets a page fault the first time through, it hasn't recompiled the code yet and is executing instructions one at a time.

DaedalusX64 seems to dump the entire cache if something is invalidated. This would be very inefficient given how often Conker swaps pages.

I'm not sure how you could do it efficiently though, except to reverse-engineer the compression and HLE it.
 
Last edited by a moderator:
Ari64 said:
I wanted to know why Conker doesn't work, and found this:

Code:
  15002ff4: LW r25,r2+4
  15002ff8: SLL r8,r25,8
  15002ffc: BEQL r8,r0,15003050
  15003000: -pagefault-
I hate delay slots.

Not sure if it's worth fixing since we have no microcode support for Conker anyway.

Well, it could be worse. At least you aren't emulating SPARC. :lol: (Though, I'm not familiar enough with MIPS to know it doesn't have conditionally-executed delay slots...)
 
Last edited by a moderator:
Ari64 said:
Not sure if it's worth fixing since we have no microcode support for Conker anyway.

Has any N64 emu ever worked out Rare's extra microcode for this? I thought all 64 games had been emulated one way or another....

Ari64 said:
....except to reverse-engineer the compression and HLE it.
...almost sounds like you are setting yourself a challenge... :ph34r:


Is/Was a fun a rather unusual N64 game - (and one of the few that needed a 64Meg backup unit, so it's one of the handful of carts I actually own.) Is the whole rom compressed with everything decompressed on the fly or did they use specific acoding for audio/video/gfx etc...?
 
Last edited by a moderator:
proflogic said:
Well, it could be worse. At least you aren't emulating SPARC. :lol: (Though, I'm not familiar enough with MIPS to know it doesn't have conditionally-executed delay slots...)

That's exactly what the beql is.

Emulating something like say, TMS320C6x would be a lot harder.
 
Last edited by a moderator:
Having troubles with the terminal starting this one guys, does the mupen64plus folder have to be in the root of the SD card?
Can someone give me a quick 2-3 line guide to get this started please :)
 
Exophase said:
That's exactly what the beql is.

Well, pardon me, then :) . My MIPS exposure has only come from university courses, and they naturally simplify it. I didn't experience the ugliness of delay slots until my capstone project (a latency-insensitive SPARC CPU on FPGA).

Keep up the good work! When the Pandora comes, I will help with testing and debugging, too.
 
Last edited by a moderator:
jaycee900 said:
Having troubles with the terminal starting this one guys, does the mupen64plus folder have to be in the root of the SD card?
Can someone give me a quick 2-3 line guide to get this started please :)

Do the command quoted in this post: http://www.gp32x.de/board/index.php?/topic/53683-mupen64plus/page__view__findpost__p__861329

Also, be sure to include the command line flag "--configdir config" so that it looks at the right place for your config files. (Make sure that your standard config file has the right plugins and plugin directory listed)

-God Ginrai
 
Last edited by a moderator:
silver said:
Has any N64 emu ever worked out Rare's extra microcode for this? I thought all 64 games had been emulated one way or another....
It has been emulated, but not in glN64. I also made a whole bunch of changes to the dynamic recompiler to optimize for the pandora, and this game doesn't work in the new dynamic recompiler.

silver said:
Is the whole rom compressed with everything decompressed on the fly or did they use specific acoding for audio/video/gfx etc...?
They didn't compress everything, gzip can still compress the rom image somewhat.


Exophase said:
proflogic said:
Well, it could be worse. At least you aren't emulating SPARC. :lol: (Though, I'm not familiar enough with MIPS to know it doesn't have conditionally-executed delay slots...)

That's exactly what the beql is.
I don't know for sure what happens on actual hardware, but I assume that whether or not the instruction is executed, it is still fetched, so you would get an exception on the address of the delay slot. That's not what mupen does - it skips the delay slot and faults on the next instruction if the branch is not taken. It probably doesn't make much difference, since returning from the exception will work either way.
 
Last edited by a moderator:
God Ginrai said:
jaycee900 said:
Having troubles with the terminal starting this one guys, does the mupen64plus folder have to be in the root of the SD card?
Can someone give me a quick 2-3 line guide to get this started please :)

Do the command quoted in this post: http://www.gp32x.de/board/index.php?/topic/53683-mupen64plus/page__view__findpost__p__861329

Also, be sure to include the command line flag "--configdir config" so that it looks at the right place for your config files. (Make sure that your standard config file has the right plugins and plugin directory listed)

-God Ginrai
Thanks anyway, but I've tried this and re-read it all but still wont run, does it need to be actually on the pandora file system, cause im trying to run from SD card?....its all a bit over my head this terminal stuff, never went the DOS route either so that probably wont help me to understand it!
I'll have to wait until a GUI that works.
 
Last edited by a moderator:
jaycee900 said:
God Ginrai said:
jaycee900 said:
Having troubles with the terminal starting this one guys, does the mupen64plus folder have to be in the root of the SD card?
Can someone give me a quick 2-3 line guide to get this started please :)

Do the command quoted in this post: http://www.gp32x.de/board/index.php?/topic/53683-mupen64plus/page__view__findpost__p__861329

Also, be sure to include the command line flag "--configdir config" so that it looks at the right place for your config files. (Make sure that your standard config file has the right plugins and plugin directory listed)

-God Ginrai
Thanks anyway, but I've tried this and re-read it all but still wont run, does it need to be actually on the pandora file system, cause im trying to run from SD card?....its all a bit over my head this terminal stuff, never went the DOS route either so that probably wont help me to understand it!
I'll have to wait until a GUI that works.

What error are you getting? Also, are you putting the path to your rom in the command?

-God Ginrai
 
Last edited by a moderator:
I'll have to wait until a GUI that works.
3...2...1 Here's a GUI version: Mupen64plus R1

This is mainly a usability release. The GUI should be ~fully functional.

Notes:
- Read the readme.txt.
- Added x11 support to gles2n64, Windowed & Fullscreen modes work.
- Modified Mupen64plus config gui code to fit the screen.
- You can now exit by pressing ESC (fn+q).... this is very hacked in.
- PPSP Input should work.
- Pressing "configure graphics" brings up mousepad with the gles2n64.conf file.
- I spent way too long (i have exams) trying to make this a pnd (seems to be something to do with permissions is messing me up). In its current state you can just drop the folder into /pandora/desktop and it will act like a pnd (except no icon). If anyone can fix this I would be much obliged.
- I will add it to pandora apps when i get upload privileges.
- Just noticed it doesn't want to run from Minimenu.... so XFCE only at the moment.

EDIT: Heres a PND which fixes the minimenu issues: Mupen64plus R1.... Thanks SteveM!
 
Anybody else having a hard time getting it to recognize the SD card? When I go to change the rom directory I get an error message:

Could not mount 16.1 GB Media
Failed to execute child process "gnome-mount" (No such file or directory)

Any ideas as to what may be wrong? The SD card is clearly inserted since the mupen64plus that is running is on the SD card.
 
Anybody else having a hard time getting it to recognize the SD card? When I go to change the rom directory I get an error message:
I've had the same problem, i don't think it has anything to do with mupen. You can manually navigate to the SD card by clicking File System then: /media/mmcblk0p1 (or mmcblk1p1, etc).
 
Adventus said:
- I spent way too long (i have exams) trying to make this a pnd (seems to be something to do with permissions is messing me up). In its current state you can just drop the folder into /pandora/desktop and it will act like a pnd (except no icon). If anyone can fix this I would be much obliged.

PXML wasn't quite right, will sent you a fix. Quick PND here: http://dl.openhandhelds.org/cgi-bin/pandora.cgi?0,0,0,0,71,92

- Just noticed it doesn't want to run from Minimenu....
It does now ;-)
 
Last edited by a moderator:
Back
Top