Author Topic: Mupen64plus technical preview  (Read 19673 times)

thefifthgiant

  • *
  • Posts: 107
Re: Mupen64plus technical preview
« Reply #15 on: November 13, 2015, 01:31:22 am »
Ok, here we go, I tested a few games after work. Note that I wasn't able to have my volume on so I can't comment on sound.

Conkers Bad Fur Day:
Interpreter: Very slow, graphical glitches
JIT: same, but slightly faster

F-zero X: Climax (Hack):
Interpreter: A few glitches but pretty much full speed
JIT: same

Majora's Mask:
Interpreter: Very slow
JIT: slightly faster, still unplayable

Megaman 64:
Interpreter: Slow, but graphics looked good
JIT: not much different

The New Tetris:
Interpreter: reasonable speed, lots of graphical glitches (the pieces don't even show up!)
JIT: same

Ogre Battle 64:
Interpreter: graphics good, super slow intro (I was too impatient to wait for gameplay  :P)
JIT: Same, perhaps a little faster

Pokemon Stadium 2:
Interpreter: reasonable speed, a few graphics issues
JIT: same

Super Smash Bros.:
Interpreter: very slow
JIT: Same

Turok 2:
Interpreter: slow, graphics pretty good
JIT: Same, but somewhat faster

And because I was curious/optimistic/naive about the possibilities...

World Driver Championship
Interpreter: crash on boot (no surprise there)
JIT: crash on boot

Nebuleon (OP)

  • *
  • Posts: 37
Re: Mupen64plus technical preview
« Reply #16 on: November 13, 2015, 01:40:26 am »
Hi, for an alpha version: SUPERB RELEASE

Tried the JIT only with some games and:

- Mario Kart is FULL SPEED on time attack on most of the tracks
- Mario 64 is almost full speed but playable as I saw so far
- Harvest Moon 64 is almost full speed; Totally playable
a) - Quest 64 seems to be good speed but lacks the analog control so you cant move
- Yoshi Story is full speed but gfx is not good at all
- Cruisin USA stucks on a msg about mem card on the beginning
b) - Some games like Blast Corps only show the Nintendo logo and dont go further
- Banjo Kazzoie is FULL SPEED on not so large open areas (i was not going to try that one to not being disappointed and BANG !)

Again, superb alpha release Thanksssss

a) The directional cross on the GCW Zero should be mapped to the analog stick on player 1's N64 controller. I'll investigate the input mapping using X-OD-NeedsJoystick and separate the N64 d-pad from its analog stick.

b) Even the interpreter gets stuck on Blast Corps. I see the JIT compiling plenty of code after the Rare logo, but then it gets stuck in an emulated idle loop and redraws the same frame over and over. This is odd. It must require a feature that the main Mupen64plus code repository doesn't handle.
The Cloud is nice, but not if it decides to rain on your parade.

Nebuleon (OP)

  • *
  • Posts: 37
Re: Mupen64plus technical preview
« Reply #17 on: November 13, 2015, 01:56:20 am »
Ok, here we go, I tested a few games after work. Note that I wasn't able to have my volume on so I can't comment on sound.

Conkers Bad Fur Day:
Interpreter: Very slow, graphical glitches
a) JIT: same, but slightly faster

F-zero X: Climax (Hack):
Interpreter: A few glitches but pretty much full speed
JIT: same

Majora's Mask:
Interpreter: Very slow
JIT: slightly faster, still unplayable

Megaman 64:
Interpreter: Slow, but graphics looked good
JIT: not much different

The New Tetris:
b) Interpreter: reasonable speed, lots of graphical glitches (the pieces don't even show up!)
JIT: same

Ogre Battle 64:
Interpreter: graphics good, super slow intro (I was too impatient to wait for gameplay  :P)
JIT: Same, perhaps a little faster

Pokemon Stadium 2:
Interpreter: reasonable speed, a few graphics issues
JIT: same

Super Smash Bros.:
Interpreter: very slow
c) JIT: Same

Turok 2:
Interpreter: slow, graphics pretty good
JIT: Same, but somewhat faster

And because I was curious/optimistic/naive about the possibilities...

World Driver Championship
d) Interpreter: crash on boot (no surprise there)
JIT: crash on boot


a) I'll disagree here. Because Conker's Bad Fur Day is one of those games that give emulators trouble, due to the way it uses interrupts, exceptions, and virtual memory, I tested it extensively during the creation of the JIT, and in places, it's 4x faster than the interpreter. Though, in the others, the time taken by the GCW Zero on graphics alone is over 50%...

b) Ouch. I don't know what to do here. If you know how to unpack the OPK, mark 'mupen64plus' as executable and run it through SSH or gmenu2x, try editing the file called gles2n64.conf to see if a setting allows you to see the pieces.

c) Yep. Smash runs at 60 FPS; it's one of the few N64 games to do that. Graphics time is over 60% in that game.

d)
Code: [Select]
Core: Compiling LUI at native 702C7F94
Core: Compiling B at native 702C7F98
Core: Compiling B/[cycle count update] at native 702C7F9C
Core: Compiling B/SW at native 702C7FA8
Core: compiled 80001584+   3 at 702C7F84+ 184
Segmentation fault

The interpreter crashes too, though? That SW (Nintendo 64) instruction must be doing some really nasty stuff!

edit:

Code: [Select]
Program received signal SIGSEGV, Segmentation fault.
0x74f0acac in gDPLoadTLUT(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) () from ./mupen64plus-video-n64.so

Comes from the video plugin trying to access address 77C525A7 (for me) using a 16-bit load, but the address is both unaligned by 1 (which is somewhat bad) and not even referring to allocated memory (which is very bad).

Thanks for your testing :)
« Last Edit: November 13, 2015, 02:12:13 am by Nebuleon »
The Cloud is nice, but not if it decides to rain on your parade.

codingcampbell

  • *
  • Posts: 25
Re: Mupen64plus technical preview
« Reply #18 on: November 13, 2015, 02:10:12 am »
Thank you Nebuleon and others involved! I figured the GCW just didn't have the power for this, but this is a very impressive alpha release. Not knowing anything about emulators, my inclination is that audio processing is holding a lot of games back. I'd be interested in seeing a build without audio processing just to see if that's true. And hey, I'd play a muted full-speed Smash ;)

It'd also be great to have a L->Z and R->R shoulder mapping for games like Star Fox.


Here's a video for those interested in seeing it in action. Sorry for crappy focus, I'm not a video-making person really:

#Invalid YouTube Link#

edit: I'm wrong about the button mapping (here and in the video), though shoulder buttons weren't working for me.

Quick summary:

Using the JIT build only. The interpreter seems to work the same, just slower.

1. Diddy Kong Racing - major graphical glitches, pretty trippy effect though

2. Star Fox 64 (1:50, gameplay at 4:10) - slow cutscenes and audio, first stage playable with some various graphical glitches

3. Super Mario 64 (5:50) - very playable, just slow

4. Super Smash Bros (10:30) - playable but slow, graphical glitches (e.g no eyes on pikachu, hah). Also there's a freeze (not a crash) you can see in the video at 12:00

5. Yoshi's Story (12:30) - 2D sprites seem to be working but none of the polygons really

« Last Edit: November 13, 2015, 02:20:51 am by codingcampbell »

Nebuleon (OP)

  • *
  • Posts: 37
Re: Mupen64plus technical preview
« Reply #19 on: November 13, 2015, 02:40:32 am »
Thank you Nebuleon and others involved! I figured the GCW just didn't have the power for this, but this is a very impressive alpha release. Not knowing anything about emulators, my inclination is that audio processing is holding a lot of games back. I'd be interested in seeing a build without audio processing just to see if that's true. And hey, I'd play a muted full-speed Smash ;)

It'd also be great to have a L->Z and R->R shoulder mapping for games like Star Fox.
Yeah, it'd make sense for Star Fox 64, but then other games that need L and R wouldn't get them, and so on. It's why a good frontend with per-game mappings would be better due to the GCW Zero not having enough buttons.

Here's a video for those interested in seeing it in action. Sorry for crappy focus, I'm not a video-making person really:

YOUTUBE OBJECT

edit: I'm wrong about the button mapping (here and in the video), though shoulder buttons weren't working for me.

Quick summary:

Using the JIT build only. The interpreter seems to work the same, just slower.

1. Diddy Kong Racing - major graphical glitches, pretty trippy effect though

2. Star Fox 64 (1:50, gameplay at 4:10) - slow cutscenes and audio, first stage playable with some various graphical glitches

3. Super Mario 64 (5:50) - very playable, just slow

4. Super Smash Bros (10:30) - playable but slow, graphical glitches (e.g no eyes on pikachu, hah). Also there's a freeze (not a crash) you can see in the video at 12:00

5. Yoshi's Story (12:30) - 2D sprites seem to be working but none of the polygons really
1. [Diddy Kong Racing] Wow, that looks so bad!

2. The weird letter offsetting in Star Fox 64 is an issue with texture index numbers in the video plugin; it's not your ROM. You'll notice that, within a single "text cutscene", every instance of one letter is always the next or previous letter in the alphabet. You can see a lot of them in the voice-acted cutscene before entering Corneria.

3. [Super Mario 64] Yeah, this one runs pretty well! Note that the cake cutscene is fullspeed, or close to fullspeed, as Lakitu appears, but then as Peach's Castle also appears, the frame rate drops considerably, and in the Bob-Omb Battlefield, it sounds like it runs about 50% as fast as an N64.

4. [Super Smash Bros.] Oh, maybe a softlock caused by the JIT. Do you happen to know if it also happens in the interpreter?

5. [Yoshi's Story] Well, that's disappointing; you don't see anything...

If you know how to unpack the OPK, mark 'mupen64plus' as executable and run it through SSH or gmenu2x, try editing the file called gles2n64.conf to see if a setting allows you to see anything more than what you're seeing now. I suspect depth-test settings will make it work better, but it'll probably be slower.
The Cloud is nice, but not if it decides to rain on your parade.

codingcampbell

  • *
  • Posts: 25
Re: Mupen64plus technical preview
« Reply #20 on: November 13, 2015, 03:13:22 am »
4. [Super Smash Bros.] Oh, maybe a softlock caused by the JIT. Do you happen to know if it also happens in the interpreter?

Luckily the issue is quite reproducible on the JIT, usually under a minute of play. I gave the interpreter a 5min run and didn't see the issue. I wish I could offer some better debugging info here but GDB isn't showing that the program has stopped anywhere (and the music continues playing, so I guess not)

5. [Yoshi's Story] ...  try editing the file called gles2n64.conf to see if a setting allows you to see anything more than what you're seeing now. I suspect depth-test settings will make it work better, but it'll probably be slower.

Cool, I'll play around with this. I've tried poking the texture depth and disabling clipping, but no luck yet. I'll post an update if I find something.

As it relates to making frontends and per-game button mapping, can button maps actually be passed in as arguments to mupen? I guess, if not, the frontend could make a special config file per game to pass instead.

Anyway, thanks again for your hard work!

zhongtiao1

Re: Mupen64plus technical preview
« Reply #21 on: November 13, 2015, 04:00:08 am »
Xena, talisman of fate seems to be running full speed except for animation at the beginning. The actual fighting and the menus work perfectly.

Nebuleon (OP)

  • *
  • Posts: 37
Re: Mupen64plus technical preview
« Reply #22 on: November 13, 2015, 08:08:12 am »
4. [Super Smash Bros.] Oh, maybe a softlock caused by the JIT. Do you happen to know if it also happens in the interpreter?

Luckily the issue is quite reproducible on the JIT, usually under a minute of play. I gave the interpreter a 5min run and didn't see the issue. I wish I could offer some better debugging info here but GDB isn't showing that the program has stopped anywhere (and the music continues playing, so I guess not)
ProTip:
Code: [Select]
./mupen64plus --verbose SMSH_PLS.N64 > crash_log.txtThe --verbose switch, combined with the file redirection, will create a huge log, containing the N64 and native address, as well as the opcode mnemonic, of every N64 instruction being recompiled. You may find that the writes to the card will freeze the emulator (and the sound!). Once you have a freeze with sound, you may hit Ctrl+C and it will stop the output. You may then use the 'less' command on the log to scroll back up to the last "Core: compiled ..." line, and look at the last trace that was compiled. If, every run, the freeze is triggered at the same address, or from the same instruction, that is an indication that an instruction on the N64 is consistently being incorrectly recompiled.

As it relates to making frontends and per-game button mapping, can button maps actually be passed in as arguments to mupen? I guess, if not, the frontend could make a special config file per game to pass instead.

Anyway, thanks again for your hard work!
I don't think an input mapping can be passed in via the command-line.

You're welcome btw :)
The Cloud is nice, but not if it decides to rain on your parade.

thefifthgiant

  • *
  • Posts: 107
Re: Mupen64plus technical preview
« Reply #23 on: November 13, 2015, 12:32:59 pm »
F-zero X: Climax (Hack):
Interpreter: A few glitches but pretty much full speed
JIT: same

Unfortunately, I have to take this back. I tested a time trial before (no opponents), but It didn't occur to me to try a GP race (30 racers), because I'm an idiot.

It actually runs about half-speed or so.

lemmywinks

  • ***
  • Posts: 2426
Re: Mupen64plus technical preview
« Reply #24 on: November 13, 2015, 02:10:46 pm »
Yeah, it'd make sense for Star Fox 64, but then other games that need L and R wouldn't get them, and so on. It's why a good frontend with per-game mappings would be better due to the GCW Zero not having enough buttons.

Most games don't use the L button so you are best off mapping it to Z. The only struggle you will have is with games that use the C buttons for aiming or camera controls.
Handhelds:
GPD XD 64gb, 3DS XL, DSi XL, GBA SP, GBBC Clone, Gameboy Pocket, PSP Go
Consoles:
XBox360, Wii, PS2 Slim, PSOne
PC:
HP Touchsmart 11 (AMD A6)
Voyo A1 Mini
Psion 5 & 5MX

joebro88

  • *
  • Posts: 28
Re: Mupen64plus technical preview
« Reply #25 on: November 13, 2015, 02:22:48 pm »
This is so amazing, thanks a ton for all of the work. I'm going going to test this when I get home to see what runs well, can't wait! All I want now is USB controller support  ;)
R.I.P. in peace

Fluxchar

  • *
  • Posts: 127
Re: Mupen64plus technical preview
« Reply #26 on: November 13, 2015, 03:15:41 pm »
lol this thread is blowing up! this emulator will be complete in no time :p keep up the good work everyone.

pcercuei

  • ***
  • Posts: 1397
    • GitHub
Re: Mupen64plus technical preview
« Reply #27 on: November 13, 2015, 04:46:37 pm »
For the record, this alpha is the result of two years of almost uninterrupted work by Nebuleon - the fruit of many endless nights. The JIT has been rewritten from scratch six or seven times, everytime with new ideas.
It was a pleasure to follow its development, dirty-talk jit internals until the morning, discuss optimizations, laugh at the n64 games' very unoptimized code, debug funky bugs, etc.
So a well deserved round of applause for him.

Surkow

  • * Administrator
  • S
  • Posts: 543
Re: Mupen64plus technical preview
« Reply #28 on: November 13, 2015, 04:50:47 pm »
For Nebuleon, the main focus is the new MIPS JIT compiler - not the graphics. If you want to see graphical issues being solved, you can contribute by testing out different GLES based Mupen64Plus video plugins (like GlidenN64) or you can try to attract developers who are experienced writing GLES graphics code for embedded systems.

onthebridge

  • *
  • Posts: 53
Re: Mupen64plus technical preview
« Reply #29 on: November 13, 2015, 04:53:45 pm »
For the record, this alpha is the result of two years of almost uninterrupted work by Nebuleon - the fruit of many endless nights. The JIT has been rewritten from scratch six or seven times, everytime with new ideas.
It was a pleasure to follow its development, dirty-talk jit internals until the morning, discuss optimizations, laugh at the n64 games' very unoptimized code, debug funky bugs, etc.
So a well deserved round of applause for him.
Can this JIT  be reused in a play station emulator?

 

Post a new topic