delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/03/02/12:34:04

From: jb3207 AT eclipse DOT co DOT uk (Jason Barstow)
Newsgroups: comp.os.msdos.djgpp
Subject: Re: VESA DoubleBuffer flicker and SetGetDisplayStart func 0x07h
Date: Sun, 02 Mar 1997 16:17:45 GMT
Organization: Jabber Interactive
Lines: 38
Message-ID: <5fc9e3$q9d@news.cableinet.net>
References: <5f77ph$bf8 AT news DOT cableinet DOT net> <aI4FlBBCW2FzEw+5 AT talula DOT demon DOT co DOT uk> <5fblr1$a0r AT news DOT cableinet DOT net>
Reply-To: jb3207 AT eclipse DOT co DOT uk
NNTP-Posting-Host: 195.188.32.83
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Okay,

I checked my code and it _is_ correct.
But I've worked out why the flicker occurs.

The waitforVR (80h) causes a wait *before*
the page (CRT Start Address) change.

My game loop goes:

1. Change working page to non-visual
2. Do stuff
3. Make visual page = working page
4. Repeat from 1.

I think the pages are switched, but (as Shawn suggested),
I start writing to the (now) back page before the actual
switch takes place, thus I see the changes happening.

I changed my code. Now I don't wait for VR in the set CRT
Start Address, but I do an explicit wait for VR *after*.

Everything is now rock-solid.

But now my question is:

What is the real purpose of the wait for VR flag?
Do some cards cause snow if this is not used?
I don't want to have to wait for two VRs within one game loop just
to make sure.

Any more thoughts anyone?

Jason.




- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019