![]() |
![]() |
![]() |
![]() |
![]() |
Make 'Ys I & II Eternal Story' able to boot.
Posted on 2005-12-08 00:00:00 |
Implemented instructions PADDUW, MTHI, MTLO1, MTHI1, MTSAH, ADDA.S, CTC1. All of these instructions are used to reset the various registers.
PADDUW caused me some trouble since there's no support for saturation add/sub operations for 32-bit words in the x86 instruction set. There's some problems with the PS2OS system now though: - First, the program uses the "SetSyscall" system call, that's used to change an entry in the OS system call table and used to call a custom system call using the SYSCALL instruction. I implemented the "SetSyscall" system call, but it uses an hack with the recompiler to force a change of PC address which I don't really like. It also has a little problem with the return address. - The program also uses a custom system call that searches for a specific value in the BIOS memory space. The value it looks for is the address previously set custom system call address. I don't really know why it does that, but I needed to store my custom system call table in my designated BIOS memory space so that the lookup work correctly. - The program also seems to create a thread. They aren't supported right now and I don't know how I'm going to support them. Maybe it would be the time to make the PS2OS system a bit better. I was thinking about writing some MIPS assembly routines to support the harder to support features of the BIOS, like custom system calls, interrupt handling and threading. This solution would also work well for keeping all the state of the OS in the PS2 RAM, something that seems to be required by this program. Well, I'll ponder this a little bit and see what I can come up with... |