Okay, after a bunch of heachace tables, here's what i found out. What's actually happening with mdecs in some games such as ff9 is that the software expects the MDEC_IN_SYNC (or mdec busy) signal to be toggled while the mdec is being decompressed. Once it's set all the time, then ff9 mdecs work. BUT, some other games expect this bit to be OFF all the time (i.e Dino, gundam etc) or mdecs won't work at all. Although i thought this was the case at first, it was only half true. The MDEC_IN_SYNC signal should remain ON while the MDEC is decompressing, and should only be turned OFF at the last Macroblock, which actually make much sense from a hardware point of view. In FF9 what's happening is that, since the MDEC_IN_SYNC is turned off at the first macroblock, the software considers this as the end of the row and hence moves to the next row. Which produced the "column" effect i was talking about in the previous post. So inorder to solve this problem then the following should be done.
1. Correct DMA timing for MDEC_out / GPU slice.
2. Unsetting the MDEC_IN_SYNC only in the last macroblock. For example for a 320x240 image where macroblocks are arranged left -> right. Then the bit should only be unset in the last macroblock or in this case 320/16 = 20th.
This should fix this problem, and not screw up mdecs for other games as well. I still don't know if some other things might contribute to this, or if i'm seeing nothing but a side effect of the real problem, but i'll try to see if i can look for more once i have more time, or when im not as lazy as i am now

.