![]() |
![]() |
![]() |
![]() |
![]() |
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 |
False Hope
Posted on 2009-07-27 19:19:34 |
I'm still trying to fix that texture coordinates problem. I thought I had found the cause, since there was a bug in the implementation of the MR32 instruction. I fixed it, but it doesn't change anything... Well, back to investigating and debugging. |
DMA happiness
Posted on 2009-07-15 19:25:08 |
Well, I fixed the little DMA synchronization problems I had. I thought it would automagically fix everything, but it's not the case...
What it fixes though, is the randomly disappearing geometry and some texture mess-ups (like fonts showing up on a wall for example). The main title is also visible now. Well, it's back to figuring out why texture coordinates are screwed up. (Also back to Windows XP since my hard drive that had Windows 7 decided to die.) |
DMA woes
Posted on 2009-07-12 19:57:47 |
After some more investigation, I found out what was causing the texture corruptions. It's basically a synchronization problem between the DMAC and the VIF which causes some VIF packets to be skipped. It causes problems with the texture coordinates because the MASK register of the VIF isn't set correctly, hence causing indeterminate values (read, random) being written in the VPU memory.
I've been trying to think of a solution that would fix it, but I'm not quite sure about the right way of doing this. Today, I've also made a minor change to the website, because the dates on the log entries were not rendered correctly on Internet Explorer and Google Chrome (and maybe others). |
Z Buffered Crow Bars
Posted on 2009-07-02 17:24:35 |
I added the z-buffering stuff in the Direct3D9 GS handler.
Nothing really special about that, especially that I now have a new GeForce video card that supports accelerated OpenGL on Windows 7. I'll be able to look for what's causing all the problems with the textures now. |
Textured Crow Bars
Posted on 2009-06-29 18:43:39 |
Today, I implemented the various alpha blending formulas needed by this game.
I disabled the one that modulates a texture's alpha channel with the frame buffer because it was screwing things up a little bit. I'm going to fix the z-buffering tomorrow and I'll be able to start looking for what's causing the problems with the texture coordinates. |
Crowbar Power - DirectX9 version
Posted on 2009-06-28 18:00:07 |
These past two weeks, I've been busy with writing a new GS handler for Direct3D9. Turns out that the video card driver that ships with Windows 7 RC1 doesn't support OpenGL hardware acceleration. I tried on my previous installation of Windows which support OpenGL acceleration and the game was looking a bit better. So, that was partly the reason why all the textures were looking horrible.
Here's what I'm getting right now: Ok, it's not much better, but at least we can see the textures on the characters. I'm aware that the textures on the wall are modulated using an alpha map and that's done with a special alpha-blending formula I've yet to support in the GS handler. |
Half Life - Crowbar Power
Posted on 2009-06-07 00:00:00 |
Some unhandled case in the UNPACK command was causing the emulation thread to be stuck in an infinite loop. I fixed that and added support for some more masking functions of UNPACK, then the graphics from the game's initial scene appeared:
Obviously, a lot of things look broken. But most of the geometry seems to be correct: the guard character seems to be rendered perfectly and the level geometry also seems to be accurate. The biggest problem is texture mapping I think. It doesn't select the right textures at all and the texture coordinates look like they could be wrong too. |
Half Life - Crowbar Power
Posted on 2009-06-05 00:00:00 |
Well, seems that the game was using a different PadMan structure to store the status of the controller. I found out how it was laid out and could make the game detect the controller properly.
We can go and start a new game, but it seems to hang with a blank screen after the menu disappears. Gotta investigate that next. |
Half Life - Crowbar Power
Posted on 2009-05-30 00:00:00 |
Found out why I was getting incomplete text in that screen:
I overlooked the use of BC0T and BC0F by the game, so the DMA transfers weren't synchronized properly. The DMA controller has a special register which can control whether you want to set or not a special COP0 register upon completion of a DMA transfer. The game was using that to wait for the end of its VIF and GIF transfers. Without the BC0T and BC0F instructions, it couldn't wait for the transfer's end and would just keep going with a new one, creating the situation where some primitives were missing. Now, that screen is kinda weird. First, it tells us that no input device is connected. Second, it asks us if we want to create the data file on the memory card. It also tells us that it's accessing the memory card in slot one. Kinda disturbing... |
Half Life - Crowbar Power
Posted on 2009-05-24 00:00:00 |
Time for some PC game port action. The game is a very straightforward port of the original game without much modifications.
Right now, I can get some stuff to display. I'm kinda stuck there right now though. In that second screen, we can't see all the text : some letters seem to be missing. To get there I had to change a few things. First, I had to fix a problem with the IOP module loader. It wasn't taking the initial GP value in consideration. Also had to implement some functions from the "cdvdman" module and fix some bugs in the SIF handling on the IOP side. Also, the first output I had on the screen was all screwed up because of the lack of proper VU instruction scheduling. So, I had to add that in the VU emulation core, and now we've got what we have above. Now, I want to figure out why I can't see all the letters of that message. I need to know what they're telling me! |
<< Older Log Entries | Newer Log Entries >> |