![]() |
![]() |
![]() |
![]() |
![]() |
Make 'Ys I & II Eternal Story' able to boot.
Posted on 2005-12-30 00:00:00 |
Implemented missing instructions MULA.S, MADD.S, MSUB.S. Well, only the basic functionality of these instructions (and some other previous FPU instructions) were implemented since they seem to check a lot of stuff related to overflowing and underflowing in reality. But, no one reads the FCSR to check if these flag bits are set or not, so the basic functionality is good for what it needs.
Added a stub for the "AllocSysMemory" function of IOP module "SYSMEM". I rechecked the function that calls "SetVSyncFlag" and found out that it passes 2 addresses from its stack frame to it. It then loops waiting for the word value at the first address to be different from zero. So, I got rid of the patch and made "SetVSyncFlag" write a word value of 1 in the first address. It seems to work fine with this now. During the time this peculiar system call is called, I saw that the program sends some non-system commands (0x4000) to the SIF manager on the IOP side. I think it tries to communicate with a module on the IOP and that this module has an handler registered for this command number. I have no clue why it doesn't use normal RPC calls instead, so it's a bit wierd. But I think this is all related to the sound stuff though, which I have no interest in for the moment. The only thing remaining is the ability to bind the "cdrom0" device with a physical device. That's coming tomorrow. |