![]() |
![]() |
![]() |
![]() |
![]() |
Make 'Ys I & II Eternal Story' playable.
Posted on 2006-02-07 00:00:00 |
Implemented PSRAH and finished QFSRV.
Tried to fix the data filling problem with setjmp and longjmp, but it didn't work at all. I tried one of my other solutions that consists on evaluating the risk of being out of data while executing a command, to not process the command immediately if there's a one, and cause the program to send some more data. It fixes the infinite loops, but the movie playing still seems to be screwy from times to times... But I did that now to make sure that the decoded frames weren't corrupted by this problem and that the bad frames weren't caused by this. I'll come with a more complete solution when I'll finally get around fixing the frames. Fixed a bug with CSC that caused the red and blue bytes to be inverted in the pixel. That was causing the logo to be red instead of blue. Fixed a block output order problem with BDEC that was causing a part of the screwed up picture. Now, that's what I get: Oddly, I get both frames while playing the movie and it seems to jump from one to the other randomly. But the right one is perfect and the difference with the left one seems to be that the macroblock columns are reversed by pairs (ie.: columns 0 and 1 appear as 1 and 0). If we look closer, we can see that this only affects Y blocks because the Cb component seems to remain at the same place. It doesn't seem to be a problem with the MMI instructions either because the bad frame seems to occur only on I pictures and the good one occurs on predicted (P or B) pictures (taking the hypothesis that the MMI isn't used much on I pictures)... Well, I'll be investigating this tomorrow... |