![]() |
![]() |
![]() |
![]() |
![]() |
Make 'Lobotomia by No Recess/CONDENSE' work.
Posted on 2005-11-22 00:00:00 |
I implemented the "viewport resolution according to the Crt register" thingie. It seems to work, except that there's a couple of problems with some demos that use line primitives, point primitives and direct frame buffer transfers.
Because OpenGL seems to only draw 1 pixel points and 1 pixels wide lines no matter what, it kinda screws up if the viewport width/height is greater than the read circuit's width/height since you'd expect the points and lines to be a bit larger than 1 pixel. But the case of points and lines isn't too bad and were fixed by having the line width equal to the viewport width/read circuit width ratio. The points are now rendered using quad primitives instead of point primitives. But the point case still bugs me as the logo in this demo (as shown in this screen shot) still seems to be missing one pixel out of two. I don't think this is related to the implementation of this new thing, because it seemed to be broken in the previous screen shot too. I've checked if that would have been a problem with the CPU emulation, but everything seems good on this side. So it deliberately draws a point at each even X pixel coordinate. I've checked on the demo video and there doesn't seem to be gaps like those, but the video's X resolution is 384 pixels which could probably wouldn't make it a good source to check this kind of thing. I'll probably leave this one out for now and fix the direct frame buffer transfer case tomorrow. Afterwards, there's some instructions I'll need to implement. I also fixed a little bug with function analysis that was introduced when I fixed the multiple program segment loading problem. |