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

PsfPlayer v0.54
Posted on 2011-10-13 21:04:57
Yet another update to PsfPlayer today. I was just feeling like fixing some long standing issues, like the lack of unicode path support. I also had lots of fun adding a themed border for the SPU register view using Windows' Theme APIs (OpenThemeData, DrawThemedBackground, etc.). It looks much nicer now. As a little extra, I added a playlist shuffle mode because randomness is good sometimes.

As usual, you can get it at the downloads page.

I promise I'm going to stop working on PsfPlayer and get back to Play!...

PsfPlayer v0.53
Posted on 2011-09-17 12:41:38
Greetings!

I made an update to PsfPlayer. Most of the changes are cosmetic, but it also fixes small problems that could occur when reading PSF files from ZIP or RAR archives. You can get it at the downloads page.

Encrypted Valkyrie
Posted on 2011-07-24 13:00:09
Hi there,

I merged most of my MPEG-2 stuff in Play! last month with mixed success. It's much more resilient to input stream interruption and so it seems to be a lot more stable. But it's still not working very well. I think there's issues with my DMAC emulation, which makes it crash/hang prone. I fixed a bug related to source chain mode transfer interruption but I think there's other bugs like this one that I'll have to track down eventually. So I decided to leave it as is for now and move to something else...

I've heard from many sources that Valkyrie Profile 2: Silmeria was using a very specific element from the PS2 behavior to decrypt its game data. So I thought it would be fun to check that out. After a few days of tidying things up in my emulator, I finally got to the point where the game was using its decryption scheme.

Basically, it is using a VU micro-subroutine to generate a decryption key which is later used when reading executable data from the DVD. The micro-subroutine in itself is rather simple:


VU Micro-subroutine


What this does is, multiply each component of an input vector with a constant and add a constant to each component to form an output value that is used as a decryption key. This would easily run on a x86 CPU, but the problem comes from the fact that this piece of code relies on how the PS2 implemented the IEEE 754 standard to obtain a correct value for decrypting the game data. From what I've read, the PS2 doesn't use any round, guard or sticky bit in its floating point operations and also use the truncate rounding mode, which is contrary to what the x86 does. The result is only off by one when we execute this on a x86 CPU, but this one bit is crucial in making the game work properly. So, I had to implement a custom multiply routine which truncates the result of its operation and that seemed to fix the problem. But apparently, the PCSX2 team had to create a special addition routine to work around this problem... So I have no idea if my custom multiply was the appropriate thing to do.

Anyways, the game seems to be able to get a bit further with that custom multiply routine :


Screenshot #000223Screenshot #000224


I can also get to what I think is the title screen, but it's pretty much gibberish for now. The game heavily uses VCALLMS which is used to call VU micro-subroutines on the VU0. It also uses a lot of VU stuff I haven't implemented yet. I think this game uses the capabilities of the PS2 to the extreme, so I think my emulator is going to break apart once it's going to try to display its main game stuff. We'll see when I get there...

PsfPlayer v0.52
Posted on 2011-06-06 18:30:47
Hello!

Today, I've released an update to the PSF music player. This version only fixes bugs I discovered while trying to listen to some game's music. More specifically, it fixes problems with Vagrant Story, Granstream Saga, Final Fantasy 6 and Chrono Trigger PSF sets (and maybe others I don't know about). As usual, it's available at the downloads page.

Play! v0.30
Posted on 2011-05-31 18:50:28
As promised, here's the latest version of the PlayStation 2 emulator. It's available on the downloads page. This version comes in two flavors : 32-bits and 64-bits. Choose wisely.

It's still way too slow, buggy and incomplete to allow you to actually play a game, but if all you want to do is see the games I've been testing, running on the emulator, then this release is for you. Enjoy!

As for what's coming next... I'm still not sure. I'd like to merge the MPEG-2 decoding stuff I did last year into the emulator, but trying to make another game work would be pretty fun too. I'll think about it and post an update when I'll have something interesting to show.

Video Action
Posted on 2011-05-21 19:09:32
I've mostly been busy fixing bugs in my emulator during this past month. I got Half-Life to work again, but I couldn't fix the rendering bugs even with the tool I used for Final Fantasy X. I didn't spend a lot of time looking for the problem, but my guess is that it's coming from the VIF emulation. Otherwise, it works at the same level as before... Except that I don't get stuck at the same place anymore because I changed the way the COUNTER register is incremented. It was incrementing too fast before and it was making the game run at a crazy in-game speed.

I also got Castlevania : Curse of Darkness to work again. There was a bug in the IOP BIOS emulation that was causing a deadlock to happen and was causing the loading sequence to never end. It still occurs right now, but less often. I also implemented missing instructions that were required by the game at various points. Thanks to the fixes I made for Final Fantasy X, the game looks pretty good right now. There's still a few glitches, but it's way better than before. Some of the remaining bugs are caused by the FSAND instruction that is not being emulated properly. I also saw that the game was using the VU0 in micro mode, which I don't support... So that could be another source of bugs.

To show you how the games are running, I thought it would be better to make videos instead of static screen shots. So I added the functionality to record the video output of the emulator in an AVI file.





It's kinda hard to make good videos because recording slows down everything to 4fps. But I hope it will give you a good idea of the current state of the emulator.

Since everything is relatively stable right now, I'm thinking of releasing a new version soon. Maybe this week if I have enough time.

Getting it right - Continued
Posted on 2011-04-06 18:48:34
I found out why the lighting wasn't working properly. It was simply because I wasn't blending in the vertex colors in my shader that emulates some of the odd texture wrapping modes of the PS2. After fixing that, the game looks even better:


Screenshot #000219 Screenshot #000220 Screenshot #000221


I'm quite surprised that it fixed Cid's ship, because it was looking really bad before. I guess they use vertex colors pretty heavily in some parts of the game.

I also tested Atelier Iris, just to realize that most of the 3D rendering was broken after the changes I made for FFX... But after some investigation, I saw that were was no dependency generated for the FMAC flags register. So, to get it working, I had to simulate the latency of FMAC operations in order to have the proper flag values when the microprogram issues a flag test instruction. This worked like a charm and almost everything was back to normal. The other problem was a wrong value used for the latency of the DIV instruction which was easily fixed. The one thing I'm really happy about is that these fixes allowed me to get rid of some patches I added a long time ago to make the 3D rendering work without flag emulation. This means I'm getting on the right track with all this.

Coming up next, is, perhaps, Castlevania: Curse of Darkness or Half-Life. Both games were really broken before and I'm really curious to see how they are behaving right now.

Getting it right
Posted on 2011-03-27 21:23:08
This past month, I completed the first version of my VU microprogram debugger that I was able to use to inspect what the FFX micro-programs does.

I've been able to find some issues with the DIV pipeline that wasn't emulated properly. I fixed those problems, but it didn't really change anything. I also saw that the micro-programs were using some MAC flags to determine if a polygon is visible or not. So, I added the appropriate MAC flags generation in some specific instructions and I was able to see that the terrain was now working properly. But it also made the rendering of other objects worse (characters and chests for example). So I investigated a bit further and I realized that I wasn't setting the sign flag properly when the result was minus 0. I'm not quite sure the sign flag should be cleared even on minus zero, but it seems to be what works best. With that, the characters were working again and after fixing a depth testing issue, I was able to get these results:


Screenshot #000216 Screenshot #000217 Screenshot #000218


It's way better than before! There's no more missing polygons. But there's still a lot of problems... First, the lighting doesn't seem to be blended in properly. I know it's computed in the VU micro-program because I've seen it in the vertex color values, but somehow, it's not being blended with the textures. Some of the textures are also wrong (as seen in the first and second screen shots), but that's probably because of another bug in my texture caching routines. There's also problems with most spell effects which seem to hide everything that's on screen, but that may be related to the general lack of stability of the game. I'm quite happy of the results and I'll try to go a bit further. I think I could make the lighting work first and see if I can something about the rest after.

Updated Phantasy Star Portable PSF Set
Posted on 2011-03-06 20:09:57
Phantasy Star Portable 2 Infinity was released a couple of weeks ago, so I decided to update my PS Portable music pack with songs coming from this new version of the game. Most of them have unknown titles and are labeled as such in the pack. I will fix that if they ever release an official OST for this game. I could also be missing some songs because I was missing some songs from the original games after I extracted the soundtrack from the data files. But I haven't played this new version, so I can't really be sure.

Well, in any case, enjoy!

PsfPlayer v0.51 and then some
Posted on 2011-02-26 17:47:13
Hello everyone. I've released version 0.51 of my PSF player. This version include several bug fixes, such as crashes happening with the Shadow Hearts PSF set and hang ups when seeking too fast in the play list. I also added ZIP and RAR archive support for those who like to keep their files all packed up in one big lump and also added automatic "discovery" of the song titles and lengths within a play list because it was a bit annoying to have to seek through all your files to see the titles. As always, it's available on the downloads page.

If you want to use the archive feature, I would recommend using ZIP files because seeking in a RAR file is an expansive operation. This is due to the design of the format and there's not much we can do about it. So if you can't bear the extra time it takes to load a PSF from a RAR file, simply switch to ZIPs :)

On the PS2 emulator side, I've continued my work on making Final Fantasy X work again with the new JIT infrastructure. I've been able to go back to the state I was before I started this job.


Screenshot #000215


Next, I'd like to fix the crappy rendering I'm having in virtually all games that have 3D. I was thinking of creating a tool that would help me debug VIF command lists, because it's really hard to do so within the emulator. If I do that, I'll have to find some good test cases which will allow me to isolate the problems. A scene with only a character, like in the screen shot above, would probably be a good one. There might be some games which have simpler 3D stuff which I could use to debug my VU code. If I could get the games to display nicely with only minor glitches, I'd be really happy.

<< Older Log Entries Newer Log Entries >>