01-21-2012, 08:45 AM
As far as I can tell the freezing is caused by some kind of thread syncing issue. This would explain why the AI or scripted events seem to freeze at random, as threads would sync differently on different executions, or possibly when the emulator runs slowly. The game uses semaphores to coordinate threads, and in all likelihood, something isn't releasing the semaphore when it should (which could be anything). When the issue does occur one of the threads stops executing properly, yet is left in the list of executing threads. I didn't really look too deeply into this, so it may not even be this at all (I spent a lot of time tracing the threading code, not semaphores or mutexes). Really, we'd need TO's source code in order to debug it, and I've spent more time on this than I had wished to. I really just don't have the time to look into this, sorry guys
I recommend buying the game (I know, such a cop out ), Matsuno needs our love!
Anyway, on to some different problems unrelated to TO. When you re-size a window, that is, you click the corner of the window and drag it (and don't use the re-size option in the menu) you can get some pretty severe graphical artifacts (if anyone can post a screenshot, please feel free). The problem comes from the texture resizedTexFb in sceDisplay.java. resizedTexFb uses the texture coordinates for texFb, when it should instead be using the coordinates for the ratio of the resized window dimensions to the texture dimensions (in the drawFrameBuffer method). 'Enable saving GE screen to Textures instead of Memory' will need to be off in order to see this.
And in copyScreenToPixels, videoEngine.getMaxSpriteHeight/getMaxSpriteWidth don't appear to be working properly for this game. Part of the screen tends to get cut off (unless GE screen to Textures is enabled). Using whatever their max allowable values would display the full screen.
Also, in executeCommandTRXKICK, when data is rendered directly to the OGL framebuffer, should somethingDisplayed be set to true?
Also, some of you may have noticed that some of the transparencies in the game are way off (definitely in the logo screen and the tarot screen). This is because the game uses alpha doubling for some reason, which is not fully supported in OGL's fixed pipeline. It works correctly in the shader.
Best of luck!
I recommend buying the game (I know, such a cop out ), Matsuno needs our love!
Anyway, on to some different problems unrelated to TO. When you re-size a window, that is, you click the corner of the window and drag it (and don't use the re-size option in the menu) you can get some pretty severe graphical artifacts (if anyone can post a screenshot, please feel free). The problem comes from the texture resizedTexFb in sceDisplay.java. resizedTexFb uses the texture coordinates for texFb, when it should instead be using the coordinates for the ratio of the resized window dimensions to the texture dimensions (in the drawFrameBuffer method). 'Enable saving GE screen to Textures instead of Memory' will need to be off in order to see this.
And in copyScreenToPixels, videoEngine.getMaxSpriteHeight/getMaxSpriteWidth don't appear to be working properly for this game. Part of the screen tends to get cut off (unless GE screen to Textures is enabled). Using whatever their max allowable values would display the full screen.
Also, in executeCommandTRXKICK, when data is rendered directly to the OGL framebuffer, should somethingDisplayed be set to true?
Also, some of you may have noticed that some of the transparencies in the game are way off (definitely in the logo screen and the tarot screen). This is because the game uses alpha doubling for some reason, which is not fully supported in OGL's fixed pipeline. It works correctly in the shader.
Best of luck!