kukugt / mupen64plus

Automatically exported from code.google.com/p/mupen64plus
0 stars 0 forks source link

Signal number 4 caught #174

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
Gentoo 2008 / Linux 2.6.25-gentoo-r9
Intel i686 Pentium II (Deschutes) 400mhz 320Mb ram (32bit)
Mupen64plus 1.4.1
All included plugins tried

I've tried both the Mupen64plus 32bit binary and compiled from source - 
the results are the same.  Tried Demos and other roms, and combinations 
of plugins & various settings.

I have an ATI Radeon 9250 and Mupen64 0.5 with certain plugin 
combinations does work.

** output below (audio/video plugins disabled) **
(mupen64plus:7732): Gtk-CRITICAL **: gtk_list_store_remove: assertion 
`VALID_ITER (iter, list_store)' failed
Compression: gzip
Imagetype: .v64 (byteswapped)
Rom size: 8388608 bytes (or 8 Mb or 64 Megabits)
MD5: E3CFB5F1828CAF1F00B23ADA863460AD
80 37 12 40
ClockRate = f
Version: 1447
CRC: daa76993 d8acf77c
Name:
Manufacturer: 0
Cartridge_ID: 0
Demo
PC = 80000400
EEPROM type: 0
init timer!
memory initialized
Signal number 4 caught:
        errno = 0 (Success)

Original issue reported on code.google.com by topherwh...@gmail.com on 28 Nov 2008 at 3:56

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Pentium II 400? No offense, but that setup won't run mupen at anything 
playable. I 
could barely play the least intensive games (Mario 64) on a PIII 750 with 
Radeon 
9500. If you want to work on optimizing our dynarec, it can be made faster. I'm 
very surprised if mupen 0.5 is playable on your machine.

Your issue is SSE, as Pentium IIs lack this. The binaries we distribute compile 
for 
P3 or higher, additionally the makefiles will give SSE issues unless you 
modified 
them: -march=i686 -mtune=pentium-m -mmmx -msse 

We do have an experimental Gentoo ebuild, which should replace this with your 
flags, you might want to try this.

Also, Rice is the only plugin which actually needs SSE. I believe glN64 and 
glide64 
should work if compiled with the right settings.

Original comment by sknau...@wesleyan.edu on 29 Nov 2008 at 1:04

GoogleCodeExporter commented 8 years ago
Well, Corn (the old n64 emu) runs too fast on my pII 400mhz setup (under 
win9x).  
So it should be possible to provide smooth emulation on my setup (under 
GNU/Linux).  
Some other emulators come close, and it just seems as though a little more 
optimization and it would be there.

Anyway, I appreciate your advice. I disabled "sse" in "pre.mk" and glide64's 
Makefile.  Those seem to be the only two places it is enabled; Rice didn't 
compile 
at all with these settings.  And I still get a crash with any video plugins 
set.  
However, it seems to do something with just video disabled (or at least hang 
nicely).

I had to disable asm to get "all" to make.  I'm going to try some other 
C(XX)FLAGS 
combinations and see if I have any better luck.  

I am interested in helping optimize in any way I can.  I have a little C 
programming experience and understand only the very basics of asm/c++.  But I 
could 
at least give profile/debug output or whatever would help.  I don't know what 
the "dynarec" is but I would like to work on that too.

Off to dig in the sources to see if I can learn something... 

Original comment by topherwh...@gmail.com on 29 Nov 2008 at 3:59

GoogleCodeExporter commented 8 years ago
Hmm... I assume you also changed mtune=pentium2 when you disabled -msse? 
(Note: for your chip -march=pentium2 should be enough)

Double check your plugins are compiled without SSE. If you change the flags but 
no 
files, its possible make will overlook some things. If you're sure everything 
is 
compiled with SSE and it works with the dummy video plugin, but no others (do 
you 
hear sound?), this points to your OpenGL install being an issue. Do other 3D 
apps 
work? glxgears? 

Note: since you are x86, you don't want to disable all asm (except maybe for 
testing). Rice doesn't work in NO_ASM mode currently (this is a known issue), 
so 
just pull rice from the all target in the makefile. 

As far as Corn / UHLE, the only emulators playable on your setup, know that 
they 
were very high level emulators with narrow compatibility. The best project to 
compare us to is Project64, which is almost twice as fast, primarily due to 
optimizations in the dynarec (dynamic recompiler) which turns native N64 MIPS 
asm 
instructions into x86 asm instructions. 

The method of optimization that Zilmar used in Project64 was to turn an atomic 
dynarec system where each MIPS op becomes one x86 op to a more EPIC (explicitly 
parallel instruction compiler) system so common combinations of operations 
become 
one x86 op. This works well since MIPS is RISC and x86 is CISC. Once you get 
things 
working, if you want to comb the code and research this kind of optimization, 
it 
would be appreciated. 

Original comment by sknau...@wesleyan.edu on 29 Nov 2008 at 10:29

GoogleCodeExporter commented 8 years ago
Yes, I did "-march=pentium2" which brings in mmx and ppro opts.  I deleted the
"mtune" and "sse" args.  

The asm compile crashes.  I can report the error if wanted.  

No sound is heard.

Yes - OpenGL/mesa works - glx gears does anyway and direct rendering: yes

Rice actually did compile, even with no asm, although it gives a brief SSE 
error on
startup of mupen64plus of course.

Thanks for the dynarec info, I will see what i can do.  I am wondering if real 
inline
asm would work better than the C wrappers that are currently in use.  It seems 
like
that could cause some obfuscation of code.

I attached a text file of my "glxinfo" output in case of interest.

Original comment by topherwh...@gmail.com on 30 Nov 2008 at 5:07

Attachments:

GoogleCodeExporter commented 8 years ago
While porting to Windows, I compiled Rice Video with no SSE code (NO_ASM=1) and
verified that this does work. Please re-test with the latest code in Mercurial 
and
re-open this issue report if you encounter problems.

Original comment by richard...@gmail.com on 12 Jan 2010 at 5:28