Ancurio / mkxp

Free Software implementation of the Ruby Game Scripting System (RGSS)
GNU General Public License v2.0
516 stars 133 forks source link

Random graphical glitches on OS X #54

Closed elizagamedev closed 9 years ago

elizagamedev commented 9 years ago

I'm encountering three unrelated (?) graphical glitches when running mkxp on OS X.

The first two are explained here.

The third issue is that, on occasion, pressing keys will not graphically update the title screen. The sounds will still play, and you can still select other menu options, but the menu graphics don't change. This seems to only last during the title screen.

One of these games uses an rgssad archive, the other doesn't, so that seems to be irrelevant.

I'd be happy to help debug this issue if you need someone to test things out.

Ancurio commented 9 years ago

Are you familiar with apitrace? I'd like you to capture a trace of a corrupted game session, verify it by replaying it a couple times (making sure the corruptions always show up, otherwise your driver is being random), and send it to me.

You can find it here: https://github.com/apitrace/apitrace

There is some info in the readme on how to use it on OSX. If you have any questions, please feel free to ask.

elizagamedev commented 9 years ago

Alright, I'll check it out tomorrow.

elizagamedev commented 9 years ago

Okay, here's a collection of traces I generated.

The mkxp.1* files refer to the first game, the mkxp.2* files refer to the second game. For the first game, I ventured only past the help screen at the latest. For the second game, I stopped at the name selection screen. The menu update bug didn't seem to happen for the second game.

Ancurio commented 9 years ago

Thanks. Aside from the traces, I saw that you compiled using the GLES2 headers. Have you tried with the normal GL headers? You might have to link against the OpenGL framework to get it to work in qmake.

elizagamedev commented 9 years ago

I had to change gl-fun.h to typedef PFNGLGENBUFFERSPROC, etc. because they weren't defined by SDL_opengl.h on OS X, but I didn't compile using the GLES2 headers. Is it possible these prototypes are different with GLES? (If so, I feel really foolish...) mkxp's output indicates that it's using OpenGL 2.1.

elizagamedev commented 9 years ago

Okay, using the latest versions of the dependencies seems to have fixed it, somehow. I probably should have been more careful when submitting this bug...

(On an unrelated note, would it be appropriate for me to submit the iniCodec patch now that the NFD code is merged? Cocoa crashes when trying to interpret non-UTF-8 strings for the window title, and changing the ini itself would break compatibility with the official RGSS engine.)

Ancurio commented 9 years ago

Is it possible these prototypes are different with GLES? (If so, I feel really foolish...) mkxp's output indicates that it's using OpenGL 2.1.

No, they shouldn't be.. AFAIK the only differing prototypes are the KHR_debug ones. Very strange. I can use either GLES or normal GL headers on linux (amd64 and arm) without problems, so it must be something OSX specific.

Regarding the ini: I don't like the part of the user having to manually guess / determine the encoding, it would be better to automatically recognize it with something like libguess. I will cook up a patch sometime later.

Feel free to submit your general osx compatibility changes for mkxp.pro though.

Ancurio commented 9 years ago

Pushed 10bfcb57b7b44686457ae274bcf661b6a97452b2, that should at least stop the crashing on your side for now.

elizagamedev commented 9 years ago

Thank you, that will be useful.