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-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
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-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-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.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-11 00:00:00
Problem #1 was caused by some confusion on my behalf that was caused by inconsistant patching to fix Problem #4. So, it wasn't really a problem and it's fine.

Problem #3 might be caused by some MPEG decoding problems. I checked on the stdout output and the game reports some errors while playing the movie. I've started doing some tracing to see what's wrong, but I haven't completed my research yet. I've also added the DMVector VLC table because it was required at one point. I'll keep working on this tomorrow.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-10 00:00:00
Ok, making the movie playing work normally is a bit more troublesome than I thought. I can make it display almost correctly with some things commented out in the source code but if I leave everything as it should be, nothing shows up.


Screenshot #000131


Here's a summary of the problems I'm having right now:

1. The textures used to display the frames are using the decal function, which doesn't seem to work very well for some reason.
2. The frame buffer is cleared just after rendering the frame.
3. A lot of frames are skipped by the game.
4. The texture dimension given for each primitive is 1024x1024 while in reality only the upper-left 640x16 part contains the fragment of frame to render. I don't think this is illegal to do on the real PS2, but it causes problems with the emulator since we end up uploading ~30x 1024x1024 textures during one frame.

Problem #1 shouldn't be too hard to fix. Problems #2 and #3 might be related. Problem #4 is fixable with a patch, but patches aren't very appealing.

I'll see what I can do for #1, #2 and #3 tomorrow.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-09 00:00:00
I made some changes to the way interrupts are handled to accomodate the way this game does its video playback. I hacked some things around so I could be able to see what's being decoded and here's some preliminary screen shots:


Screenshot #000129 Screenshot #000130


I'll try to make that look better tomorrow.

Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-06-08 00:00:00
Completed the necessary MPEG tables required for this first frame.

The game uses some interrupt handler on DMA channel 3 to manage the color space conversion command status. The required emulation to support this isn't quite complete yet, but I should be able to have something working tomorrow.

<< Older Log Entries Newer Log Entries >>