|
|
|
|
|
| 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 "cubemastah.elf" work.
Posted on 2005-09-30 00:00:00 |
|
Found out why the program was calling negative kernel functions. Apparently the negative functions (-100 for example) are the same as thier positive counterparts (100, which is FlushCache) except for a little something which I don't know about yet.
Added the color gouraud shaded triangles. Works as expected. The z-buffering stuff is bugging me a little bit right now. It seems that it's turned on only 1 frame out of two... I don't know if that's the desired behavior but I'll have to figure this one out. OpenGL's depth buffering is giving me a bit of trouble right now, and that's why there's no screen shots for now. With some luck this development will be done tomorrow... After the z-buffering, I gotta clean the primivite rendering code a bit and test the older demos to see if nothing was broken. |
|
Make "bytheway.elf" work.
Posted on 2005-09-29 00:00:00 |
|
The debugger is back up and running good now. I decided to use the same message loop for the debugger and tweak the loop a little bit to support its accelerators.
Consider this development done. |
|
Make "cubemastah.elf" work.
Posted on 2005-09-29 00:00:00 |
|
This demo uses cubes to make up letters on the screen and display a scrolling text. It seems to use some depth testing. It also does its projections using the FPU, so no VUs are involved in this demo.
Running it for the first time, it was complaining about unimplemented instructions. So I implemented NEG.S, LWU, SRLV and LQ. Next, it was complaining about a missing triangle shading type. This demo uses triangles with differing colors on each of thier vertices. I implemented a quick thing so it can render only white triangles for now and here's what I get: The demo seems to be able to run completely without any problems. Of course, color and depth testing are missing right now, so I'll have to add those tomorrow. It also seems to use a system call to write to the GS IMR register... I'll have to check what it's writing in there. |
|
Make "bytheway.elf" work.
Posted on 2005-09-28 00:00:00 |
|
Been working on the redesign of the emulator. It's almost done except that it's impossible to start the debugger right now. I'm not sure if I'll have the message loop for the debugger in another thread or in the same thread as the main user interface... The thing that's bugging me are the windows accelerators.
Here's a screen shot of the main user interface window design: It's basically just the output window with a menu and a status bar. After this is done, I'm going to start working on another demo. |
|
Make "bytheway.elf" work.
Posted on 2005-09-27 00:00:00 |
|
Rewrote the DMA transfer handling and moved it into the base GS handler class. Should be safer in cases of misplaced state loads now.
Got rid of the purple outlines by using a nearest magnification and minification filter for the textures, which should be the right thing to do since the filters are controlled by the TEX1_x registers (which sets the filters to "nearest" initially) and that this demo doesn't touch this register at all. Some purple pixels remain in the first screen, but I think that's due to a badly made textures. Started cleaning up some classes to be able to change the program's design and make the debugger only an optional piece of the it. Should be done around tomorrow. |
|
Make "bytheway.elf" work.
Posted on 2005-09-26 00:00:00 |
|
Rewrote the caching functions to allow more than one texture to be cached at the same time. This demo uses 2, and the current maximum is 5. This speed up things a bit.
Added GS state saving. A rewrite of the GS Block Transfer DMA handler would be required in order to be sure it wouldn't crash in case you save a state in between a transfer. Also found out a wierd bug: if you run "demo2d.elf" then "1987.elf" the texture of the latter demo will be the one from demo2d. This is probably due to a bug in the texture caching mechanism, but I can't figure out what's going on right now... |
|
Make "bytheway.elf" work.
Posted on 2005-09-25 00:00:00 |
| Not much today. Completed the stuff I wanted in the memory viewer and fixed some stuff in the user interface. |
|
Make "bytheway.elf" work.
Posted on 2005-09-24 00:00:00 |
|
Implemented the triangle primitive since the demo needed them during the second part. This didn't make the stars show up though since the vertices fed to the GS were off screen.
The bad vertex positions were caused by a problem with the DIV instruction. I forgot to sign extend the value of eax into edx when executing the idiv instruction, and this yielded to bad results when dividing negative numbers. With those changes, the stars are showing up: I started some work on the memory viewer in the debugger. I'll finish the features I need to have tomorrow. Still gotta find out about the purple outlines too... |
|
Make "bytheway.elf" work.
Posted on 2005-09-23 00:00:00 |
|
After studying the GS register trace, I found out how this demo what managing to do its double buffering.
The previous demos were working this way: Set the address of the back buffer in the FRAME_1 register, render some stuff, set the address contained in DISPFB2 (read circuit) to point at the same address as FRAME_1, flip the back buffer pointer, set FRAME_1 with the new back buffer pointer, render, etc. The new demo works this way: Set the address of buffer 1 in FRAME_1, set the address of buffer 2 in FRAME_2, render some stuff with the back buffer context, set the address in DISPFB2 to point to the back buffer, flip back buffer pointer, render some stuff with the current back buffer context, set the address in DISPFB2 to point to the back buffer address. This doesn't cause too many problems to implement with OpenGL since it's just another way to achieve double buffering and not some other nasty effect. It was just a matter of tweaking the renderer to be able to set the OpenGL state according to the rendering context of the primitives to be rendered. This fixed the blank frame we were getting one frame out of two. Some screen shots: There's still a couple of problems with the rendering though. We can see some ugly purple outlines around the textures, probably due to broken alpha blending or something like that. And there's supposed to be two white star things rotating in the 2nd screen. The demo is running awefully slow compared to how it does in nSX2. I don't know if that's due to some speed hack present in nSX2, but I'll have to investigate this too. |
|
Make "bytheway.elf" work.
Posted on 2005-09-22 00:00:00 |
|
This demo doesn't work right now, but it's not much more complex than the previous one. Running it right now will tell that DIVU is missing and it will hang in the "strlen" function.
I'd also like to change how the program is designed right now. How it works right now is that the debugger window is currently the main window and the output window is just a normal window controlled by the debugger window thread. I'd like to reverse roles with these windows, or at least make them independant from each other. I'd also like to add the menus to toggle the various logging stuff in the debugger and also add a memory viewer. |
| << Older Log Entries | Newer Log Entries >> |