What is Play! ?
Play! is a PlayStation2 emulator for Windows, macOS, UNIX, Android, iOS & web browser platforms. For more information about this project please visit the "About" section of this site.

Compatibility Status
Fetching compatibility status...

Development Log

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-22 00:00:00
The underlaying problem seems to be that a pointer table isn't initialized correctly. It's cleared to zero at the beginning of the program execution, but it's never set to valid values afterwards. I don't know yet what's supposed to fill this table, but the function called to get one of those pointers seems to be called by a lot of different things. Also, this fonction is, most of the time, called with a single constant argument, which is ANDed with 0x7F and XORed over and over. Could be some protection scheme... Well, I'll keep investigating on this.

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-21 00:00:00
I didn't find anything significant today... I'll keep investigating tomorrow.

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-19 00:00:00
One of the threads is apparently responsible for maintaining a DMA buffers linked list and the way it knew a transfer was complete and that a buffer was available was through a DMAC handler installed the VIF1 and GIF channels. But my "homemade" kernel didn't supply a valid 1st parameter when calling this DMAC handler, so it wouldn't end up relaying the good messages. I fixed that and the mecanism seems to work alright now.

Now, there's another problem involving writing to a NULL address which screws up things a little bit. I'll try to fix this one tomorrow.

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-18 00:00:00
There was a problem with the starting of the newly created threads due to ReferThreadStatus not being implemented. I implemented this system call and tidied some of the threading stuff.

Now, there seem to be some sort of communication between 2 threads, but it still doesn't goes any further. I'll see what this communication is supposed to be about tomorrow.

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-17 00:00:00
I fixed the interrupt handler so it could handle the INT3 (V-Blank End) line. The handler for the line was using some 'i' variants of some system calls that I added. But all this didn't made any visible change.

So, I decided to apply some temporary patches to see how the program would react. It seems to signal and wait for semaphores kinda often, but it's not the same semaphores as the ones in the INT3 interrupt handler.

I implemented instructions VRINIT and VRXOR.

At some point, it writes in the kernel memory area and makes the emulator crash... Well, I think I'd better remove those patches and check what all this semaphore checking is about.

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-16 00:00:00
I completed the necessary functions in the CDVDFSV module to satisfy the game and let it go a bit further. The same thing was required with the PADMAN module.

Right now, it gets stuck waiting for some value in memory to change. Could be related to the bad handling of some interrupts, since there's 3 interrupts handlers installed : one for the vblank start, one for vblank end and another one for the second timer. I'll keep investigating tomorrow.

Make 'Castlevania: Yami no Juin' work up to the title screen.
Posted on 2006-06-15 00:00:00
The goal is this development is to get this game to display its title screen and no more. It shouldn't be too hard considering there's no VU stuff and no IPU stuff involved.

I'd also like, in the context of thie development, complete some of the SIF/IOP logging stuff that was neglected in the past developments.

Upon booting the disk, the emulator encountered an unhandled instruction, PLZCW, which I implemented. Then the game does a lot of meddling with the CDVDFSV IOP module and won't go any further if it doesn't work as it wants. I haven't completed the implementation of the required functions by the game yet but I'll try to have them completed by tomorrow.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-14 00:00:00
The moment at which the game clears the screen isn't invalid afterall... All the rendering for movies happens in an interrupt handler on the vblank start line. First, it renders all the textured primitives on an offscreen frame buffer and at the end, changes the read circuit's frame buffer location to the offscreen one and switches it with the frame buffer location for drawing.

This is just simple double-buffering, but it's not supported very well by the current renderer since all it does is rendering the primitives on the output window regardless of which "virtual" frame buffer is being used for rendering and whether it's visible or not.

The same double-buffering mechanism is used for the other stuff too, but this stuff is visible because it's rendered on the offscreen buffer before the v-blank interrupt is triggered and not at the same time. So, there's no easy solution for this. We could try detecting changes to the read circuit's frame buffer location and flip our offscreen buffer at this moment, but this isn't very good for programs that don't use double buffering (I wonder if there is a lot of these?). There might be other solutions that fits with everything and that are implementable with OpenGL, but I can't confirm anything. And of course, a good software renderer wouldn't have this kind of problem. I also tried creating a patch to prevent the frame-buffer switch to happen, but it prevents the second movie from playing...

So, what I'll do for now is keep that patch that allowed us to skip movies and come back to this problem later. The last thing I'd like to work on in the context of this development, is to make the US version of this game work. But there's a little problem with reading data from a disk drive that I'll have to fix before.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-14 00:00:00
Fixed reading of disks from a physical device. Seems like Windows XP 64-bits edition restricts reads from a physical volume to sectors, so I had to create a new stream class to go around this limitation.


Screenshot #000132 Screenshot #000133


The english version works without any problems. I ported the patches from the japanese version to the english version, so both versions should be working at the same level.

I'm going to stop working on this game for the now. It's been 2 months and even though there's still some problems left, I'm quite happy with the result. I think I should have splitted the job into smaller pieces to make it easier to focus on one aspect of the game instead of having lots of differents things to work on.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-12 00:00:00
The skipped frames in the movies was caused by a misunderstanding of the IVF flag of the IPU_CTRL register that's supposed to select which VLC table to use to decode DCT coefficients but only for intra blocks. I fixed the handling of this flag and all frames are visible now. There's some artifacts visible though, but that's not really important for the moment.

Tomorrow, I'll check what I can do to get the "frame buffer clear" happen at the right moment.

<< Older Log Entries Newer Log Entries >>