![]() |
![]() |
![]() |
![]() |
![]() |
Make 'Ys I & II Eternal Story' able to boot.
Posted on 2005-12-14 00:00:00 |
Implemented "GsSetIMR", "EnableIntc", "AddIntcHandler", "WakeupThread" system calls.
Modified some parts to fire a VSYNC interrupt each time the bit for this thing in the CSR is written. The interrupt thing isn't totally correct as it seem to screw the program counter if we use a different timing... So that'll require some work later. Expanded the current interrupt handler to be able to call the registered INTC channel 2 handlers. With those, it goes a bit further, but some more problems surfaced. First, the program is writing some stuff in the SPR (scratch pad RAM) area. This area is accessible through virtual memory addresses 0x70000000 ~ 0x70003FFF, but with the current memory address translator, it conflicted with the hardware registers area since all memory addresses were ANDed with 0x1FFFFFFF to obtain the physical counterpart. I had to tweak the memory translation function to take this particular case in consideration. It DMAs some stuff to the GIF, but in some cases it uses the source chain DMA mode which wasn't supported. I started the implementation of this mode and I added support for the "END" and "CNT" DMA tag IDs. This seems to be fine, but now the problem seems to be the GIF emulation. The current implementation doesn't play very well with what the DMA feeds to it because it's not very well implemented. I'll probably rewrite most of this part tomorrow. Also, some textures seem to be used later on, but I couldn't really check what they were since they are 8-bits ones... |