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

PsfPlayer v0.50
Posted on 2010-12-05 12:04:24
I've released a new version of PsfPlayer which fixes a crash problem that was occurring when playing music from Parasite Eve. It was caused by a division by zero safety check that I removed while I was "porting" the PS2 emulator to the new JIT compiler engine. It's available on the downloads page.

The reason I removed that division by zero check is because it was generating a jump to a label that was exceeding 127 bytes when generating the x86 code for 64-bits MIPS emulation which is necessary for the Emotion Engine CPU. I was able to put it back in by changing the way the check was working by sign-extending the results after the division operation is completed. All was well until I encountered the problem later this week with a different MIPS code block while trying to make Final Fantasy X run again. Sounds like I'll have no choices but to handle long jumps properly...

Besides that, I've made some good progress on getting the emulator back in shape. Most games can run at the same state as they were before. I'm currently busy with Final Fantasy X as I was saying before, but I found out some other games that run while I was fooling around:


Screenshot #000214


I can't show you more because I'm stuck at that screen, but it's nice to see new games that displays some stuff without having to do a massive investigation.

I also changed the official icon because I was tired of the old one.

Register Allocation Woes and PsfPlayer Update
Posted on 2010-10-24 20:44:58
While I was working on the x64 code generator, I found out that the register allocation phase in the JIT compiler was inserting register spill instructions inside function call sequences. This can cause problems on the x64 and ARM platforms because they both use registers to pass function arguments. I couldn't find an easy way to fix the register allocation algorithm, so I decided to use a 'naive' register allocator (the one I was using before) instead of the linear scan algorithm that was present. It doesn't seem to make any difference in the emulation speed, so I guess it's all good for now.

This bug was present in the x64 version of PsfPlayer and it was noticeable in some PSF sets, which would play in an strange manner. I released a new version that fixes the problem. It's available on the downloads page.

Besides that, I also implemented enough of the x64 code generator to be able to play Doom and Quake. I was glad to see that both games were running faster in the x64 version of the emulator. That means that all that wasn't for nothing after all. I'm currently busy getting some of the commercial games running again. More info coming soon...

Classics Revisited
Posted on 2010-10-12 20:39:14
I've been busy these past months with getting my emulator back in shape. I also wanted to test the performance of my new JIT compilation engine, so I decided to try two games that, in my opinion, have an interesting load on the CPU while using basic PS2 hardware.


Screenshot #000212 Screenshot #000213


Well, these choices were pretty obvious. Quake was one of the first games that I tried to support in the emulator... I also saw that there was a Doom port for the PS2, so I decided to try it out. While it didn't take too much work to make these run, I'm kinda disappointed by the performance of both games: Quake runs as fast as with the old compiler engine and Doom doesn't work very fast either.

So, what I'm realizing now is that it's another case of premature optimization. I thought the generated code would be a lot faster and that it would make most games run at interesting speeds, but it's really not the case. But, on the other side, the new JIT compiler framework is a lot cleaner and generates cleaner code too. For example, I wasn't able to target the x64 processor properly beforehand, while this time, I'm able do it without any problem.

That's what I'm going to work on next. I don't think there's going to be a big difference between x86 and x64, but it's worth trying. I also thought of other solutions that could make a big speed difference, but I'm still not sure if I'm going to implement them yet.

PsfPlayer 0.48 Released
Posted on 2010-08-27 14:54:11
I've put the next version of PsfPlayer online 2 days ago. The major change of this version is that it's now using the new JIT compiler library I've been working on during the past few months. I hoped that it would make the player a bit faster, but it doesn't seem to give a big speed improvement, if any... But this new library allows me to target different CPU architectures more efficiently and I can now release a 64-bits version, which is also available for download.

This release of PsfPlayer means that the JIT compiler library is stable enough to be used in the PS2 emulator itself. I still need to add support for SIMD primitives, but it shouldn't be too much of a problem. I'm also working on targeting the ARM architecture to make PsfPlayer work on iPhone, but I'm not sure it will be fast enough to play songs. But it's still fun to learn about the ARM architecture and I'm sure it could come in handy someday. Well, I hope I can show you some of that soon.

PsfPlayer Information
Posted on 2010-08-09 18:17:04
As I've said previously, I've released my PSF music player for everyone to see. I've been working on it for about 2 years, at the same time I was working on Play!. My idea was to use the opportunity of creating a PSF music player to have a good IOP emulation and integrate it in the PS2 emulator when it'll going good enough. Right now, I've integrated most parts of PsfPlayer's IOP emulation core in the emulator and that's what is running the IO drivers coming from the games.

The player in itself isn't that great... Highly Experimental performs better and gives better results, while PsfPlayer still have its quirks when it comes to playing some specific games music (the music coming from the Final Fantasy series for example). But it's been a great sandbox for testing various things, in particular, my new JIT compilation engine.

But also, during the past 6 months, I also took the opportunity to test another idea of mine. We all know there's PSF soundtracks for the PSX and PS2 games... While playing Phantasy Star Portable on my PSP, I noticed that most songs sounded like they were synthesized. So, I decided to check if this game was using a synthesized music format and if it was the case, write something that could play them in the same way PSF's and PSF2's are played.

Well, it was a success. I found out that the game was using MIDI files along with instrument banks to play its music. I wrote a mini PSP emulator, disassembled and patched the game executable so that it only tries to play music and wrapped all of that in PsfPlayer. The PSFP (PlayStation Sound Format Portable) support is available in the version I've posted last week. I'll try to make a new page that explains what are PSFP's and explain which of the PSP's system features are needed to play these files. I'll also post the Phantasy Star Portable pack, (which can be downloaded here for now) but I'd like to have more than one pack of music in there, so, I'm looking for other potential games that could have its music ripped in the same manner. Trying the PSPF player with different games will be a good test for the file format and will allow me to fix some problems that are currently present in the player (screwed up reverb emulation for example).

Hopefully, I'll be able to post that info sometime this week. I'd also like to write about my new big JIT compiler project I've been working on, which is almost ready to be used in Play! and PsfPlayer.

Releases and Website Updates
Posted on 2010-07-31 17:46:55
Even though I'm not posting here actively these days, I'm still working behind the scenes. First of all, I've released the emulator in its current state, because I'd like to integrate my new just-in-time compilation engine I've been preparing over the past year. I know it's probably going to break lots of stuff, so, I wanted to keep an image of the state of the emulator before the big changes I'm going to make. It's available in the revamped downloads page. I haven't tested it much, but it should be able to run Final Fantasy X with the same problems you've seen in the screen shots of my previous posts.

I've also released PsfPlayer. It's a PSF music format player I've been working on for almost 2 years now. It was mostly a test bed for my IOP emulation stuff, but it has evolved to a point where it can play most PSF/PSF2 songs available out there without major problems (there's still some obvious problems though). It's also available on the downloads page. I'll probably be posting more info about PsfPlayer sometime this week.

The organization of the website changed a little bit. I've removed the 'News' section because I thought it was a bit useless in the presence of the current 'Dev Log' format. I've changed the downloads section to add a section for PsfPlayer and a section for the SVN repositories. The links were also updated, because some of them were broken...

Stay tuned for more info.

I can read!
Posted on 2010-01-13 19:26:03
After researching a bit more, I found that the fonts were not drawn correctly because of CLUT problems. The CLUT buffer wasn't updated every time the TEX0 or TEX2 register was accessed and it was causing some inconsistencies.


Screenshot #000208 Screenshot #000209


The next thing I'm going to do is to fix "Castlevania: Curse of Darkness", because it's still broken. Then I'm going to fix the VU flags problems I have in both Castlevania and Final Fantasy X.

I'm also working on a better IPU emulation, one that will be error resilient. For that purpose, I've been working on a PS2 video player:


Screenshot #000210Screenshot #000211


The decoding part seems to be robust for now since it's able to play almost anything I'm giving it. I don't know if I'm going to make this a full fledged application because that would be a lot of work. I only bothered displaying the I-pictures. I also mucked around with the sound decoding part, but it's only dumping the PCM samples to the disk at the moment... So it's far from being complete.

Almost playable
Posted on 2009-12-15 21:51:47
So, I fixed the memory card support for the game so I could load some saved games. That worked without much trouble. Next, I had to implement some instructions that weren't supported by the emulator. I needed to implement a few instructions to be able to see the field, a few more for the particle engine (I think) and finally some more for the battle mode.


Screenshot #000201 Screenshot #000202 Screenshot #000203 Screenshot #000204
Screenshot #000205 Screenshot #000206 Screenshot #000207


As you can see, it's still very ugly, but I can move around everywhere without crashing. I'm going to check why the fonts are acting weird next. After, I'll try to see if I can fix the bugs that cause some of the uglyness by analyzing the simple monster arena scene.

Incompleteness
Posted on 2009-11-27 18:24:06
I found out yesterday that I wasn't sending all the data the DIRECT VIF command was sending to the GIF. Final Fantasy X sends many small packets at the same time through a single DIRECT command and my implementation of DIRECT was just sending the first packet to the GIF.


Screenshot #000197 Screenshot #000200 Screenshot #000198 Screenshot #000199


With that bug fixed, the scenes appear to be more "complete". There's still a lot of problems with the VU, so most of the 3D scenes look weird. It doesn't crash anymore when playing the intro and we can see the whole thing. But it does crash when we start a new game, after the intro has finished playing. That's probably due to a another missing instruction that is encountered while trying to play a different scene.

The fonts also don't show up properly. Can't say why for the moment. I'd also like to load one of my saved games to show you some game play, if that's possible.

<< Older Log Entries Newer Log Entries >>