-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JO_480p Makefile Option #30
Comments
Commenting here instead of segaXtreme forums so Jo can read it :)
Here we are getting down to the specifics of interlaced video. This also shows another problem, because VDP1's framebuffer size is 512x256 in size and VDP2's display window of that is a fixed size. To render interlaced video, VDP1 has to draw the odd scanlines, framebuffer change and erase must be executed, VDP2 must encode the "done" framebuffer as the odd scanlines, then VDP1 has to go back over the same command list for the even scanlines. Hi-res progressive scan modes have the similar problem. VDP1 has to write to some half of the framebuffer, change and erase, while VDP2 is stitching them together. But in this case, you can output 60Hz you just still lose 5ms to hardware complication (so you have very little time!). Though I understand your comment is about representing this necessary change in frame-rate to the programmer. Instead of relying on this system variable, you can use jo_fixed_point_time and retrieve the data from the jo engine variable "delta_time".
|
@ponut64 There are 60 different fields per second in NTSC, and each field is displayed one at a time on a CRT TV, all the odd ones, then all the even ones, etc... On the hardware level of Sega Saturn, nothing prevents to draw a different picture on each field with VDP1 when it's set to double interlace, using different command lists that you can change during vblank. Of course, due to the offset of one scanline between fields, this results in combing effects, which are transient on a CRT TV due to afterglow of one field over the next, but which can become very obvious on modern progressive display if video post processing combines consecutive fields in one frame without any other deinterlacing. I think it might just be SGL implementation that makes it repeat the same command list for 2 consecutive fields when VDP1 is set to double interlace. When VDP1 is set in high res, its framebuffer becomes 8 bpp which doubles its width. In progressive mode, it draws a complete frame each time, not half. On topic, why not ""jo_480i", or more generic "jo_double_interlace" ? |
thonk i forgot to mention that the high-res modes force vdp1 to be 8bpp which makes it 512x512 I did mean that each pulse of normal TV is even field then odd field, but it is helpful to be more specific as you say as "half a frame" could mean different. In high progressive scan modes like 704x224, how does it draw the whole frame at once? Unless, instead of going to 512x512, they re-order it bitwise to do 1024x256 As usual you are the one with the best answers :) asking these Q's on the discord server help me work through my stupidity instead of just vomiting it out in a paragraph |
Yes, high res framebuffer is 8 bpp 1024x256. A 704x224 drawing area fits in. 8 bpp framebuffer 512x512 is rotation8 : a standard res framebuffer that can be rotated without its limits becoming visible on screen. |
I'm sure at one point I knew all of this reading the manuals... but then I read some other part of some other manual and stopped messing with it so I forgot... |
Hi Johannes,
I was looking at different resolutions for Jo Engine and I just wanted to document my thoughts, I don't expect you to change anything. I am not an expert on this so I could very well be completely wrong.
The text was updated successfully, but these errors were encountered: