![]() |
![]() |
![]() |
![]() |
![]() |
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 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-31 00:00:00 |
I fixed a little problem with the processing of the Z value in the XYZF2/3 register of the PACKED transfer mode of the GIF.
Well, after a bit of testing, I could confirm that the unnecessary clipping is caused by the MAC flags fiddling. If I patch some instructions in the microcode to ignore the MAC flag values to determine if a triangle should be clipped or not, I obtain the right thing: Problem is, now, that I don't know which instruction should set the MAC flags the microprogram needs. The instructions from the upper and lower pipelines aren't laid out nicely like in "Slave of the VU", so there's no easy way to figure out. There's also a "load quadword" instruction that has VF1 as its target register and a "outer product multiply and substract" instruction which uses the VF1 register on the same instruction word which complicates the things a bit more... Emulating the CPU at the pipeline level might be the only solution for the best accuracy in this kind of situation. Well, I'll think that over, and work on getting the fog to work tomorrow. After completing this VU part, I'll need to go back at the beginning of the program and work on making the intro movie(s) play. Then there's a couple of things I'll need to fix with the textures, and then everything should be in order to move on into another development. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-30 00:00:00 |
Implemented instructions CLIP and FCAND.
Unfortunately, the microprogram does some fiddling with the MAC flags and I'm not quite sure which result it wants to test. I'm guessing it wants to test the result of the OPMSUB with FD set to 0, so I put some hack in there to force a write of the MAC flag bit the microprogram needs. The garbage polygons are clipped accordingly now, but there's too many polygons that are being clipped. It's probably related to the MAC flags fiddling, but I'm not sure yet. I'll try to improve the rendering further tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-29 00:00:00 |
The garbage triangles seem to be caused by some vertices that have negative components. I think the microcode should be able to clip them, but the CLIP/FCAND instructions aren't implemented yet. I've been working on CLIP and I'll try to complete it tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-28 00:00:00 |
Fixed some more things in the VIF implementation.
Implemented OPMULA, OPMSUB and B in the VU core. The world map is starting to show itself! It's still screwy though, and I'll be working on making it look better tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-27 00:00:00 |
Implemented instructions IADDI, IAND, ISUB, IBLTZ and MINIbc. I think there's a little bug somewhere in the VIF implentation, so I'll be checking this out tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-26 00:00:00 |
Implemented lower instructions FCSET, MFIR and SQ. I'll keep working on that tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-25 00:00:00 |
Most of the tweaking is complete and I'm getting some microprogram execution requests now.
I'm going to try to implement the missing instructions in the microprogram before going any further. Today I added instructions MAX and ADDi. More to come tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-24 00:00:00 |
I left the CVT.W.S instruction untouched for now because I re-thought about the "hack" I pulled out yesterday and thought it would be the best I can do for the moment (I don't want to deal with reading the RM field in the FCSR and forcing this field's value to be 1 upon writing). I also checked if the particle problem in Ys I & II was fixed, and it is.
So, I went a bit further in the game up to the point where you're supposed to be shown the world map. Some instructions were missing (VMINI and VMAX) so I implemented them. As I thought, the game uses the VIF and VU1 to be able to render the world map. Right now, I'm doing some adjustments to the DMAC and VIF implentations to be able to process the transfers I receive correctly. I'm not done yet with the tweaks, and I hope I'll be able to finish them by tomorrow. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-23 00:00:00 |
There was a bug in DSRL so I rewrote the instruction implementation and also did the same for DSRL32.
Finally, I think I found the answer... I was suspecting that the FPU rounding mode was to blame for quite a long time, but I had no idea was what the initialized mode... I did some research and it seems that the default rounding mode is the "truncate" mode and not the "nearest" mode. I added a quick hack in the CVT.W.S instruction so that this mode is forced and it seems to fix the problems with the collision detection and the NPCs movement... It also seems to fix the wierd bugs I had in Ys 1 & 2 I couldn't fix too (but I can't confirm yet). At last... I'm going to remove the hack tomorrow and put something more appropriate in there, and then I'll be able to go further in the game. |
Make 'Iris no Atelier: Eternal Mana' work.
Posted on 2006-05-22 00:00:00 |
Rewrote SLT to take the higher 32-bits in consideration, but still nothing... I might decide to work on something else (like fixing the movie playback) if I don't find anything tomorrow. |
<< Older Log Entries | Newer Log Entries >> |