eibma / mupen64plus

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

Legend of Zelda: OOT crash when moving towards Malon in Castle Town #579

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Describe your system:
 - Operating System (be specific): Mac OS X 10.8.5
 - Machine type (32-bit or 64-bit): 64-bit, of course.  :)
 - Mupen64Plus version: Current (2.0.0)
 - Plugins used: glide64mk2

For visual artifacts, give:
- game name and CRC/MD5 hash (printed on console)
- description of the artifact (missing polygons, flashing, wrong colors,
etc)

Describe the problem:
Ocarina of Time runs smoothly until I enter Castle Town and approach Malon the 
red-headed girl, and/or scroll through the Castle Town map until Hyrule Castle 
just comes in view.  The game crashes every time I do this.  Attached is a 
crash log for your reading pleasure.  

Original issue reported on code.google.com by like2ra...@gmail.com on 1 Oct 2013 at 12:41

Attachments:

GoogleCodeExporter commented 9 years ago
I'd like to note that this bug does not happen if using the Rice plugin, but 
the Rice plugin has its own other issues, not the least of which being the 
persistent frames that make gameplay quite epileptic.

Original comment by like2ra...@gmail.com on 2 Oct 2013 at 8:37

GoogleCodeExporter commented 9 years ago
Can you please attach a savestate right before the crash happens and a 
explanation what someone must do from the point of the savestate until the 
crash happens. Thanks

Original comment by s...@narfation.org on 4 Oct 2013 at 11:50

GoogleCodeExporter commented 9 years ago
Ask and ye shall receive.  All you should have to do to repeat the crash is to 
attempt to cross Castle Town to get to Hyrule Castle.  Dolphin 2.0, Mac, 
glide64mk2

Original comment by like2ra...@gmail.com on 4 Oct 2013 at 11:11

Attachments:

GoogleCodeExporter commented 9 years ago
Tested it on Linux (Debian unstable packages of mupen64plus 2.0; with and 
without valgrind) and could ran around on the market, talk to Marlon and reach 
the hyrule castle. So I cannot reproduce it and therefore it is quite hard to 
fix for me.

Could be driver, library or compiler related.

Original comment by s...@narfation.org on 8 Oct 2013 at 9:18

GoogleCodeExporter commented 9 years ago
This is specifically a Mac issue.  

Original comment by like2ra...@gmail.com on 8 Oct 2013 at 12:01

GoogleCodeExporter commented 9 years ago

Original comment by s...@narfation.org on 9 Oct 2013 at 9:50

GoogleCodeExporter commented 9 years ago
It happens on Android too. Galaxy S II, glide64mk2. In order to move around the 
town I need to change to Rice video plugin (which happens to work worse overall 
in another locations). 

Original comment by zito.ban...@gmail.com on 5 Nov 2013 at 2:41

GoogleCodeExporter commented 9 years ago
Issue 586 has been merged into this issue.

Original comment by s...@narfation.org on 18 Dec 2013 at 12:42

GoogleCodeExporter commented 9 years ago
This happens to me using Ubuntu Linux 13.10 64 bit, and Mupen64Plus 2.0 64 bit 
with the Glide 64 plugin.  Using the Rice plugin everything works fine, except 
the other issues with Rice (drop in framerate, weird color issues in Mario 64, 
etc.).  Using the Glide plugin, which overall gives me better performance, 
causes the game to crash when rounding the fountain to talk to Malon.  I don't 
think this has anything to do with her though, because if you come around the 
fountain from the other direction (Link's left, player's right if entering from 
the draw-bridge) she will come into view without the crash, but if I keep 
walking and try to get close to her, when the camera pans around to where the 
steps to the Temple of Time and the Happy Mask shop would be brought into view, 
it crashes.  Also, I switched to the Rice plugin long enough to get the egg, 
then re-loaded with the Glide plugin, and even now that Malon is no longer in 
the market, the game still crashes when it tries to bring the Happy Mask shop 
entirely into view.  When running the game with the --verbose tag, it ran very 
slowly, and when coming in from the left (Link's right) side of the fountain, 
itrendered the door of the Happy Mask shop right before it crashed.  When 
coming from the right side (Link's left) of the fountain, it never quite makes 
it to the left edge of the Happy Mask Shop door.

When running it from the command line, even with the --verbose tag, all I get 
is:
Segmentation fault (core dumped)

Changing the emulation mode between Pure Interpreter, Interpreter, and Dynamic 
Re-compiler doesn't seem to affect anything, which reinforces the fact that it 
has something to do with Glide64.

I've uploaded a short video to YouTube to show what happens.  Using Rice it 
doesn't do this, but Rice stutters and gives me random other issues.
http://youtu.be/HRe-Yq6GuII

System information is as follows:

OS: Ubuntu Linux 13.10 64 bit
Graphics Card: ATI Radeon HD 4200 (AMD RS880)
Graphics Driver: Gallium 0.4 (Open source)
Mupen64Plus Info: Version 2.0, downloaded and extracted from official website, 
not installed from Ubuntu repositories

Original comment by marcusde...@gmail.com on 24 Jan 2014 at 4:03

GoogleCodeExporter commented 9 years ago
Can you remove the version you've installed from this website and try the 
version from this ppa: 
https://launchpad.net/~sven-eckelmann/+archive/ppa-mupen64plus and report back? 
Make sure that you don't accidentally use the version from the website. A 
possible way is to enforce the plugins by specifing the complete path:

mupen64plus --corelib /usr/lib/x86_64-linux-gnu/libmupen64plus.so.2 --rsp 
/usr/lib/x86_64-linux-gnu/mupen64plus/mupen64plus-rsp-hle.so --gfx 
/usr/lib/x86_64-linux-gnu/mupen64plus/mupen64plus-video-glide64mk2.so --audio 
/usr/lib/x86_64-linux-gnu/mupen64plus/mupen64plus-audio-sdl.so --input 
/usr/lib/x86_64-linux-gnu/mupen64plus/mupen64plus-input-sdl.so $ROM

Original comment by s...@narfation.org on 24 Jan 2014 at 9:39

GoogleCodeExporter commented 9 years ago
Using the version of Mupen64Plus from that PPA, the game functions properly 
using both the regular glide64 and the glide64mk2 graphics plugins.

Original comment by marcusde...@gmail.com on 25 Jan 2014 at 12:14

GoogleCodeExporter commented 9 years ago
I'd like to report that the stuttering disappears from the Rice plugin if you 
set the ScreenUpdateSetting to 2 in the .conf file

Original comment by like2ra...@gmail.com on 9 Feb 2014 at 5:16

GoogleCodeExporter commented 9 years ago
Does the crash still happen when compiling with following patch?

Original comment by conc...@web.de on 28 Jun 2014 at 3:08

Attachments:

GoogleCodeExporter commented 9 years ago
Or does this patch work better?

Original comment by conc...@web.de on 28 Jun 2014 at 3:31

Attachments:

GoogleCodeExporter commented 9 years ago
Second patch solves the problem. Fedora 20 64bit, mupen64plus 2.0, glide64mk2 
master branch from git.

Original comment by thesourc...@gmail.com on 1 Nov 2014 at 12:33

GoogleCodeExporter commented 9 years ago
Though second patch also creates glitch on Happy Mask shop door - texture 
coordinates are wrong and the door vertical edge appears inside the door. Looks 
like clamping exp to 0 is not the best solution, negative exp values should be 
recalculated to positive using texture width, but I'm not sure how this works 
in this case.

Original comment by thesourc...@gmail.com on 2 Nov 2014 at 10:21

GoogleCodeExporter commented 9 years ago
I tried the replace_negative_int_shift2.patch as well, and it does fix the 
crash on a Debian jessie 32-bit machine, with a rebuilt 
mupen64plus-video-glide64mk2_2.0-3 package from Debian. However I didn't notice 
any mask shop door texture issues once the patch was applied. thesource, can 
you post a screenshot indicating the problem?

Original comment by wit...@gmail.com on 23 Nov 2014 at 7:11

GoogleCodeExporter commented 9 years ago
is there a way to patch the android version of mupen64 for this problem

Original comment by a.wis...@gmail.com on 14 Dec 2014 at 7:19

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
Here is a savegame from Starlord which can be used to reproduce this problem. 
Just wait until the bomb exploded.

The original sra from him is also available. You would have to jump to the 
middle and then to the right wall. Plant a bomb before the suspicious wall and 
let it explode to reach the hidden stone figure. glide64mk2 should have caused 
a crash when this is done. But following github issue has the relevant patch 
and instructions how to catch this with a trap and gdb:  
https://github.com/mupen64plus/mupen64plus-video-glide64mk2/issues/30#issuecomme
nt-68728174

It has to be compiled via:

#download the sources with the:
# wget 
https://github.com/mupen64plus/mupen64plus-core/raw/master/tools/m64p_helper_scr
ipts.tar.gz
# tar xvf m64p_helper_scripts.tar.gz
# ./m64p_get.sh
# apply patch to source/mupen64plus-video-glide64mk2

CFLAGS="-g3" ./m64p_build.sh OPTFLAGS="" INSTALL_STRIP_FLAG=""
(cd ./test/ && gdb --args ./mupen64plus --emumode 0 --gfx 
./mupen64plus-video-glide64mk2.so --datadir `pwd` ../zeldaoot.v64  )

Btw. it is much better to not rely on such a trap hack and instead use the 
GCC/clang sanitizers to detect the problems without knowing where the buffer 
overflow happened (otherwise you would not know where to add the "int $3"). 
Just compile it with following flags:

CFLAGS="-g3 -fsanitize=undefined -fsanitize=address" ./m64p_build.sh 
INSTALL_STRIP_FLAG="" OPTFLAGS=""

Original comment by conc...@web.de on 5 Jan 2015 at 4:10

Attachments:

GoogleCodeExporter commented 9 years ago
Just the patch used to get the info mentioned in 
https://github.com/mupen64plus/mupen64plus-video-glide64mk2/issues/30#issuecomme
nt-68745279

I've now changed my setup slightly to only build the glide64mk2 component and 
automatically load the savestate

CFLAGS="-g3 -fsanitize=undefined -fsanitize=address" 
M64P_COMPONENTS="video-glide64mk2" ./m64p_build.sh INSTALL_STRIP_FLAG="" 
OPTFLAGS="" -j5
(cd ./test/ && gdb -ex run --args ./mupen64plus --emumode 0 --gfx 
./mupen64plus-video-glide64mk2.so --datadir `pwd` --savestate ../Legend\ of\ 
Zelda,\ The\ -\ Ocarina\ of\ Time\ \(E\)\ \(M3\)\ \(V1.0\)\ \[\!\].st0 
../zeldaoot.v64 )

Original comment by conc...@web.de on 5 Jan 2015 at 5:55

Attachments:

GoogleCodeExporter commented 9 years ago
Has this issue been resolved yet? I'm having the same issue when I approach 
Malon in the Market. Glide64Plus will crash unexpectedly: when I use Rice, this 
issue doesn't exist but other things like trees rocks, the sky and the menu map 
don't render correctly. Any help would be great. I'm on a MacBook Pro running a 
3.06 Ghz Intel core 2 Duo, 8GB Memory and NVIDIA GeForce card.

Original comment by ryanverd...@gmail.com on 15 Mar 2015 at 2:48

GoogleCodeExporter commented 9 years ago
Yes the issue has been resolved, if you dig through the notes I posted about it 
and somebody sent me a link to an updated version and it fixed it for me.

Original comment by marcusde...@gmail.com on 15 Mar 2015 at 2:53

GoogleCodeExporter commented 9 years ago
Well, that PPA link doesn't exactly have a Mac build ready to use, but I've got 
the next best thing.  Install Homebrew, and then after you get it working 
("brew doctor" command returns no errors), then you can install the mupen64plus 
and mupen64plus-video-glide64mk2 packages from the /homebrew/games tap.  Then 
you can just run mupen64plus as a command and pass a ROM path.  I even wrote a 
nice four-line Applescript to give me a dialog to choose the ROM I want to 
play. 

Original comment by like2ra...@gmail.com on 16 Mar 2015 at 3:12

GoogleCodeExporter commented 9 years ago
Sorry this defect was still present in the recently released version 2.5.  I 
reverted conchurnavid's original patch because it introduced visual artifacts 
in some games.  I just committed a proper fix in our git repo changeset 15f1f88.

Original comment by richard...@gmail.com on 2 May 2015 at 3:46