tag:blogger.com,1999:blog-3684028292581698421.post8796867478347460829..comments2023-08-12T17:37:14.939+07:00Comments on GLideN64: Rendering in Low Level Emulation mode. Part I.gonetzhttp://www.blogger.com/profile/08505275620490166369noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-3684028292581698421.post-37193834607851179632019-11-05T11:58:39.425+07:002019-11-05T11:58:39.425+07:00Yes, the plugin processes interlacing in Video Int...Yes, the plugin processes interlacing in Video Interface emulation part. It does not skip even/odd lines, just takes into account which field is currently active.<br /><br />Interlacing effect in Perfect dark glasses/lens is specially programmed, and does not depend on hardware interlacing. Perfect Dark itself uses 320x220 resolution without interlacing.gonetzhttps://www.blogger.com/profile/08505275620490166369noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-11240813161822545012019-11-03T23:20:13.341+07:002019-11-03T23:20:13.341+07:00Haha, you makes me dig into years old code (and re...Haha, you makes me dig into years old code (and realize my code related to rasterization emulation is lost forever...). So:<br /><br />There is a 64 bits RDP command: Set Scissor (0x2d)<br /><br />2 bits of this command (25:24) are related to interlace: Video Mode: Enable scissoring of odd/even lines for interlaced displays.<br /><br />00: Draw all lines<br />01: Draw odd lines<br />11: Draw even lines<br /><br />The other place is maybe something you already knows: The 17 bits VI global register:<br /><br />1 bit is "Enable Serrate" (interlace)<br /><br />Last thing is Vertical Current Line Register (0x04400010)<br /><br />Quote:<br /><br />This register is updated once per vertical line to reflect the current line being displayed. In interlaced mode, the least significant bit will be constant for the current field. A write to this register does not change the vertical line currently being displayed. Instead, it clears any currently asserted interrupt caused by the VI_V_INTR_REG register.<br /><br />The reason why those effects are hard to emulate in non native resolution is because odd/even lines does not have save screen size (width of 1/1080 on HD screen VS 1/240 or 1/576 on N64).<br /><br />Now, I talk mostly of the hardware side. I'm not sure how games are using them but I suggest to keep an eye on those registers to detect a potentatialy "interlace dependent" effect (Perfect dark glasses/lens?).<br /><br />http://en64.shoutwiki.com/wiki/VI_Registers_Detailed<br />https://patater.com/gbaguy/day3n64.htm<br /><br />Hope this help. Keep the good work!Unknownhttps://www.blogger.com/profile/03920537548081893568noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-83707345185268970032019-10-29T15:41:14.951+07:002019-10-29T15:41:14.951+07:00No, I haven't considered drawing horizontal sp...No, I haven't considered drawing horizontal spans with lines. It sounds crazy. I guess, that crazy idea can be used if we will want to emulate interlacing.gonetzhttps://www.blogger.com/profile/08505275620490166369noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-8965868795643232942019-10-29T15:37:44.749+07:002019-10-29T15:37:44.749+07:00Hardware plugin does not use DpDy at all.
I tried ...Hardware plugin does not use DpDy at all.<br />I tried to understand how it is used by reading sources of AL RDP plugin. If I got it correctly, use of DpDy depends on the kind of P.<br />For textures, DsDy and DtDy are used to get next texel of T0 tile in the second stage of color combiner.<br />Depth and color DpDy are used for anti-aliasing, to calculate color and depth of pixels partially covered by the primitive being rendered.gonetzhttps://www.blogger.com/profile/08505275620490166369noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-61992189852474570002019-10-28T19:58:57.455+07:002019-10-28T19:58:57.455+07:00Interesting article! However one thing I cannot fi...Interesting article! However one thing I cannot figure out is what the DpDy values in the triangle commands are used for, could you explain those please?Foxhttps://www.blogger.com/profile/10593400514057905209noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-10445848566908586542019-10-28T18:42:04.400+07:002019-10-28T18:42:04.400+07:00gonetz, have you considered not drawing triangles ...gonetz, have you considered not drawing triangles at all and simply drawing horizontal spans with GL_LINES? Kind of a mix between software and hardware rendering. But the expensive part is still done in hardware.Ianhttps://www.blogger.com/profile/10233346176729415228noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-62235074844001294072019-10-28T17:04:00.536+07:002019-10-28T17:04:00.536+07:00> (for interlace effects)
For interlace effect...> (for interlace effects)<br /><br />For interlace effects!!!<br />Could you give me an example of such effect?<br /><br />> LLE is fascinating, keep the good work!<br /><br />Thanks!<br />gonetzhttps://www.blogger.com/profile/08505275620490166369noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-60199138013577167172019-10-28T16:55:58.741+07:002019-10-28T16:55:58.741+07:00Thanks :)Thanks :)gonetzhttps://www.blogger.com/profile/08505275620490166369noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-46138824648303860772019-10-28T16:54:25.643+07:002019-10-28T16:54:25.643+07:00I'm a mathematician. Kind of.I'm a mathematician. Kind of.gonetzhttps://www.blogger.com/profile/08505275620490166369noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-16892831445610019382019-10-28T15:39:33.665+07:002019-10-28T15:39:33.665+07:00Hi Gonetz, I started to wrote a CPU RDP LLE plugin...Hi Gonetz, I started to wrote a CPU RDP LLE plugin long time ago. You didn’t mention it in the flaws but you also have the "odd" filling mode (for interlace effects) which can be tricky to implement with general GPU rasterization process. The RDP use a line counter to determine if line is odd or even.<br /><br />Because of this, I realized the only uninterrupted "primitive" call is the horizontal line.<br /><br />If you plan to represent native resolutions (320×240, 384×288, 640×480, 720×576) it shouldn’t be a problem, but I don’t know how unative resolution could be handles.<br /><br />It was years ago, and I don’t remember all the details. LLE is fascinating, keep the good work!Unknownhttps://www.blogger.com/profile/03920537548081893568noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-20571970301766609082019-10-27T17:35:48.127+07:002019-10-27T17:35:48.127+07:00Wow... @Gonetz you're pushing the N64 to the h...Wow... @Gonetz you're pushing the N64 to the highest level. I take my hat off.Forgottenshadowhttps://www.blogger.com/profile/15333283186905429455noreply@blogger.comtag:blogger.com,1999:blog-3684028292581698421.post-70630859791209792142019-10-27T09:35:09.730+07:002019-10-27T09:35:09.730+07:00you should get in touch with a mathematician to co...you should get in touch with a mathematician to come up with a better option TechGuruhttps://www.blogger.com/profile/03244459121554697259noreply@blogger.com