Please answer to my adress and not in the rec.games.programmer as read it
infrequently (my time goes to coding instead.. (8 )
- DJ -
Basicly you sod anyone with a non-compatable video card! Virtualy all boards
do wrap around, if not *ALL*, so only the minority will pack up.
Personaly, I'd carry on (well, I am, I'm doing a hardware scroller too!) and
dont bother with uncompatable boards...
--Jim
: --Jim
I disagree with that statement. I think all SVGA cards with >256k memory
will have the wrap around problem. My Orchid Farenheit 1280+ card has
that problem and I doubt it's an incompatible board.
-George
Whoa, that's one evil solution. Come on, if it's supposed to be standard VGA,
you don't want technical support from hell.
The thing is, you don't need to make your system depend on the wrapping
feature. If you plan on adding a split screen for a status bar or something,
you're going to have to work around it anyway. The scheme I personally use
for this involves keeping extra duplication space for when pages get near the
edges of video memory (a la Alien Alley from Dave Roberts' book, but for 4-way
scrolling, not just 1)....basically, start duplicating your pages as they
approach the edges of video memory, so that when they get to a point where
one's about to hit the edge, its address can be switched over to that of the
duplicated page and life continues as if nothing happened. If you really want
details, mail me cause it's not very difficult.
bye,
Ted.
--
I can do anything you do.
I'm a plane!
> I disagree with that statement. I think all SVGA cards with >256k memory
> will have the wrap around problem. My Orchid Farenheit 1280+ card has
> that problem and I doubt it's an incompatible board.
My Cirrus card has 2 megs, it wraps perfectly. My Trident card has 1/2 meg,
it wraps perfectly. Has anyone got any information on what cards wrap and what
dont around the 256K modex segment???
--Jim
> Whoa, that's one evil solution. Come on, if it's supposed to be standard VGA,
> you don't want technical support from hell.
> The thing is, you don't need to make your system depend on the wrapping
> feature. If you plan on adding a split screen for a status bar or something,
NOT depend on the wrapping? If I didn't depend on memory wrap the game would
run like every other PC scroller; slow and juddery. I'm also not interested
in split-screen, just fast 8-d hardware scrolling, which I have achieved.
> you're going to have to work around it anyway. The scheme I personally use
Work around it? Oh great... I'll have a compatable game which runs as fast
as a demented hedgehog.
> for this involves keeping extra duplication space for when pages get near the
> edges of video memory (a la Alien Alley from Dave Roberts' book, but for 4-way
> scrolling, not just 1)....basically, start duplicating your pages as they
> approach the edges of video memory, so that when they get to a point where
> one's about to hit the edge, its address can be switched over to that of the
> duplicated page and life continues as if nothing happened. If you really want
> details, mail me cause it's not very difficult.
That is as SLOW as a slow thing. Using memory wrap it requies no messing around,
you just update a single column per screen and wrap over 64K (use word commands).
I realy hate PC's....
--Jim
AFAIK, the Tseng cards are the main ones that don't wrap around. Instead, you
get whatever happens to be in the after 256k region. If you autodetected the
presence of the Tseng, you could probably still get away with auto-wrapping
with some minor code adjustments.
Joel Squire <squ...@Colorado.EDU>
> NOT depend on the wrapping? If I didn't depend on memory wrap the game would
> run like every other PC scroller; slow and juddery. I'm also not interested
> in split-screen, just fast 8-d hardware scrolling, which I have achieved.
> Work around it? Oh great... I'll have a compatable game which runs as fast
> as a demented hedgehog.
>
> That is as SLOW as a slow thing. Using memory wrap it requies no messing around,
> you just update a single column per screen and wrap over 64K (use word commands).
>
Hate to disagree, but a 386+ is a fast processor and can handle a lot of
byte manipulation, even when bottlenecked by a slow vga card. On a fast
vga card (newer 16-bit card or local bus) you can redraw each frame from
scratch and still hit 70 fps. On an older card you can still use hardware
scrolling AND take into account a split-screen and/or incompatibilities
AND STILL SCROLL AT OR NEAR 70 fps (sorry, 60 fps if you're in 320x240).
For a demo of this, see something by Frank Orbits called fastscroll. It's
available on x2ftp.oulu.fi.
Completely ignoring a sizeable number of incompatible cards is a BAD
THING for game programmers. Not only does your product look bad, but it
encourages companies like Micro$oft to try to make us all write to their
API's for everything. :)
If you still don't think that fast scrolling is possible with all vga
cards/with a split screen, check out Jazz Jackrabbit...
Joshua C. Shepard
wing...@cyberspace.com
>My Cirrus card has 2 megs, it wraps perfectly. My Trident card has 1/2 meg,
>it wraps perfectly. Has anyone got any information on what cards wrap and what
>dont around the 256K modex segment???
The only cards that I have encountered bearing this problem have been Tseng
Labs ET4000 derivatives, and that being still one of the more popular VGA
chipsets around it's suggested for a scroll routine not to depend on the
wrap-around feature of the video ram.
Instead, use a detection code to pick out the ET4000 chips and others that
have the problem, and write a slightly slower (but compatible) scroll mode
for those cards, and enable it with both a command line option and on auto-
detection. That's called user-friendliness.
Jouni
--
Jouni Mannonen (DarkShade on IRC) _________ _________ _____
Freelance game developer, author of ( _ /) _ _/ _ _ RealTime 3D
_____________________________________) (/ / / \ (- /) (/ (- / Surround GFX
____________________________________________________________/ Render Engine
>Arjan: "Jazz Jackrabbit does not use the hardware wrapping feature".
>(Well, I quoted inexactly, but he DID say it, roughly).
nope, no HW wrap at all. You can use an algorithm to work your way around
it. Here's a tip: Use the beginning of vid-mem for your panel (obviouse),
then, use the rest as 3-Full screen buffers (with boundaries). Set up VGA to
virtual page resolution of 328(+/-)by whatever. You can flip pages between
the 3 full-screen buffers, and have unlimited scrolling by changing the
offset, and sometimes doing a 'hard' page flip (which is essentially a
pointer flip). Pretty not obvious eh ? I'll try to make a better description
sometime, I've designed this scheme some 3 or 4 years ago.
>Need I say more? It's ONLY the smoothest, fastest PC scroller I've ever
>seen!
thanx. I'm working on J2 now, which has lotsa real parallax at comparable
speed as Jazz-2. The graphics are mucho better too!
-arjan
> NOT depend on the wrapping? If I didn't depend on memory wrap the game would
> run like every other PC scroller; slow and juddery. I'm also not interested
> in split-screen, just fast 8-d hardware scrolling, which I have achieved.
Arjan: "Jazz Jackrabbit does not use the hardware wrapping feature".
(Well, I quoted inexactly, but he DID say it, roughly).
Need I say more? It's ONLY the smoothest, fastest PC scroller I've ever
seen!
Memory wrap does not work on ANY tseng card, (my information, could be
remembered wrong). Tseng make a WHOLE lot of chipsets. I don't know a
number, but it could be as high as 20%.
Sam
[] http://www.dur.ac.uk/~d405ua <[ Web pagE ]> *NEW* Sysex Manager ! []
[] For Software Forge program information and downloads [] Including []
[] NETRIS 1.1 best Tetris game <[ For Win 3.1 ]> Sysex Manager 1.0S []
I believe you're correct. Instead of wrapping into the beginning of the
segment, you go into the next one(which is usually filled with uncleared
memory and that's why garbage is displayed). Can't you make a special
case though? Like detect if a Tseng is there, and use a different
method?
My S3 8c05 doesn't, and neither do a lot of modern SVGA cards(I'm pretty
sure Tseng ones don't). I learnt this the hard way when I was writing my
isometric scrolling engine. Basically, it's easy to live without it
anyway. Just use three "windows" onto the VGA card's memory, and don't
use the one that wraps around. There was an article written about this
method on rec.games.programmers a while back -- x2ftp might have it
archived if you're lucky.
J.
--
---------------------------------------------------------------------------
James Whitwell http://blitzen.canberra.edu.au/~whit/
wh...@blitzen.canberra.edu.au --- The Home of Blue ---
I am planning on writing a Final Fantasy (excellent SNES game)
type game on the PC. The lucky SNES programmers get their hardware
tile scrolling, but I am out of luck with the PC.
I am using modeX at 320x240 for square pixels, since it would
look much better and be cool to rotate the tiles in all 4 directions for
reuse. My scroller will require 8-direction scrolling (at least 4, but 8
would be much cooler) in this video mode. I don't really need a split
screen, but I could make use of it.
Unfortunately, I didn't understand your use of 3 buffers. How do
you update them with new data, how do you keep them from ending up
off of video memory, etc.
I can't expect any code from you, but I would REALLY appreciate
it since I am interested in getting my game into reality!
> I am planning on writing a Final Fantasy (excellent SNES game)
> type game on the PC. The lucky SNES programmers get their hardware
> tile scrolling, but I am out of luck with the PC.
>
> Unfortunately, I didn't understand your use of 3 buffers. How do
> you update them with new data, how do you keep them from ending up
> off of video memory, etc.
Sorry, I know I'm not Arjan Brussee, and not half the coder probably, but
I do know where an example of the kind of scrolling that Jazz uses is.
Try something called fstscrol.zip or fstscrl2.zip maybe on x2ftp.oulu.fi.
It's by a guy named Frank Orbits and comes with code and a detailed
explanation. (You do need to know something about the VGA card to
understand).
Good luck!
Joshua C. Shepard
wing...@cyberspace.com
> If you still don't think that fast scrolling is possible with all vga
> cards/with a split screen, check out Jazz Jackrabbit...
I finaly got hold of the shareware Jazz Jackrabbit. The scrolling is VERY
smooth BUT the sprites glitch EVERY time the pointers are swapped. This
means every time you scoll down by one screen the graphics flash!
Now I personaly find this annoys the hell out of me. Maybe it's just
because I'm a perfectionist, I dont know.
Using the wrap-around feature of the video memory you dont have this problem.
Just georgously smooth glitch-free scrolling.
It's amazing realy, the wrap-around feature of the VGA memory was the only
good thing I found about the PC video cards. Now I find it's not even
standard on all cards, this is the reason I hate PC's.... Unfortunately loads
of people own them....
--Jim
Just a bit of history first: I first used this scrolling method
about 3 or 4 years ago on the ST. After this I emulated the
hardware scrolling on the Amstrad CPC which used memory wrapping.
This turned out to be nearly twice as fast as the buffer scrolling
method.
Anyway, this is basicly how it works. I haven't tested it yet but
I'm pretty sure it will work.
-- 8< ------------------------------------------------------------
Memory layout:
|-------------|
| SCORE PANEL |
|-------------| <- pointer 1
| BUFFER 1 |
| |
| |
|-------------| <- pointer 2
| BUFFER 2 |
| |
| |
|-------------| <- pointer 3
| BUFFER 3 |
| |
| |
|-------------|
Use buffers 1 and 2 for the logical and display screens
Do normal hadrware scrolling and update all 3 buffers identicaly
When buffer 2 splits over the bottom of video mem swap its pointer for
buffer 3 which will now be at the beginning of buffer memory
That's it! But the problem occurs when you swap the pointer from
buffer 2 to buffer 3, the graphics flash.
I guess it's not possible to fix but I haven't looked into it at all
yet... Anyone got any thoughts on this subject?
Cheers,
--Jim
> In article: <Pine.SUN.3.91.950521211004.14240A-100000@case> Joshua C Shepard
>
> > If you still don't think that fast scrolling is possible with all vga
> > cards/with a split screen, check out Jazz Jackrabbit...
>
> I finaly got hold of the shareware Jazz Jackrabbit. The scrolling is VERY
> smooth BUT the sprites glitch EVERY time the pointers are swapped. This
> means every time you scoll down by one screen the graphics flash!
> Now I personaly find this annoys the hell out of me. Maybe it's just
> because I'm a perfectionist, I dont know.
> Using the wrap-around feature of the video memory you dont have this problem.
> Just georgously smooth glitch-free scrolling.
> --Jim
Well Arjan, if you're out there, what do ou say? What about Jazz 2?
Any hope for a VGA hardware scroller?
Joshua C. Shepard
wing...@cyberspace.com
Damn what is WITH you people?!!! You can complain all you want about a feature
not being standard but it isn't gonna get you anywhere. It would be real nice
if the PC speaker had a DAC, but I guess we'll have to work around that won't
we? Just because video memory doesn't wrap around on all cards doesn't mean
that there's no way to do fast scrolling without sprite glitches. Use your
friggin head, it's not that tough to come up with an algorithm that works
around the wrapping thing....and which can give you some extra benefits while
you're at it (erasing sprites via VRAM-to-VRAM copy, status bar, etc).
It just gets really annoying to see people constantly complaining about this
thing as if it automatically cripples all scrollers. Programmers have worked
around the limits of their machines since the beginning, but geez not with
that attitude.
> > If you still don't think that fast scrolling is possible with all vga
> > cards/with a split screen, check out Jazz Jackrabbit...
>
> I finaly got hold of the shareware Jazz Jackrabbit. The scrolling is VERY
> smooth BUT the sprites glitch EVERY time the pointers are swapped. This
> means every time you scoll down by one screen the graphics flash!
How come I never noticed this? Are you sure it's not just your setup? I
only played it on a Tseng ISA card with 486-33, so that's pretty slow,
but I didn't notice any glitches.
In article: <Pine.SOL.3.91-941213.95...@altair.dur.ac.uk> Sam
<Samuel....@durham.ac.uk> writes:
>
> On 27 May 1995, Jim Boulton wrote:
>
> How come I never noticed this? Are you sure it's not just your setup? I
> only played it on a Tseng ISA card with 486-33, so that's pretty slow,
> but I didn't notice any glitches.
Yeah? It could be my machine then... It's a crap 486sx-25. It SHOULD be
quick enough though, there is no sign of slow down in the scrolling, it's
just makes the sprites flash when pointer flipping...
Oh yeah, my vid card is a Cirrus Logic VLB card with 2MB ram...
--Jim
Ah, OK. It seems it's only my setup which flashes... Just out of interest has
anyone else ever seen this 'sprite flashing' in Jazz on their setup?
As for ditching hardware scrolling, the reason to use hardware scrolling is it
takes less processor time than any other scroll method and so it will allow
more sprites on the screen etc... and hopefully make for a better game!
--Jim
Yup, Jazz Jackrabit works fine for me. Best full screen scrolling I've seen
(except maybe Zool2).
Anyways, heres another suggestion: How about ditching hardware scrolling
altogether if it's so unreliable? I figure you can target for DX2-66's with
VLB video cards these days. Doom funs 30fps on my setup and that has to do a
*lot* more work per frame than a parallax sprite blitting thingy, even if it
had to update the whole screen every frame.
Just a thought mind, no need to flame :-)
Richard.
>Anyways, heres another suggestion: How about ditching hardware scrolling
>altogether if it's so unreliable? I figure you can target for DX-66 with
>VLB video cards these days. Doom funs 30fps on my setup and that has to
I don't think it would be a good idea to do the DX2-66 target, because
even though all of the new computers being sold now are at least that,
you would be cutting out a huge portion of computer users. I don't even
know anyone with a pentium.
Nick
>Ah, OK. It seems it's only my setup which flashes... Just out of interest has
>anyone else ever seen this 'sprite flashing' in Jazz on their setup?
maybe you have a wierd card which has some page flipping problems. This
sometimes happens. You could try to run Jazz with the /VGA switch, which
uses another game mode.
>As for ditching hardware scrolling, the reason to use hardware scrolling is
>it takes less processor time than any other scroll method and so it will
>allow more sprites on the screen etc... and hopefully make for a better
>game!
well, sometimes. with offscreen complete rebuilding your whole screen can
animate without speed decs, which is a pretty cool effect ;-) mem->vid blits
are pretty fast on todays computers anyway, and I'll do some benchmarking at
the start of the program to figure out the fastest routines for that
specific compu.
-arjan
I've just finished the main parts of a parallax/sprite library to interface to C
which can update at around 70fps on dx33 with around 30 16x16 sprites (with built
in colision checks if on screen) as long as there's not too much 'show through' of
the background map. This is with a window of 288x172 and uses complete redrawing+blit
(real mode) I was going to use a mode-x meathod version, but this meathod IMO makes
animation of any/all of the blocks very easy with no extra penalties in speed. Also,
you need not worry about erasing the sprites before redrawing them ;)
I really liked JJR BTW, this is what gave me the impetus to have a go at this!
--
FyRE < Fy...@tiktok.demon.co.uk >
>I've just finished the main parts of a parallax/sprite library to interface to C
>which can update at around 70fps on dx33 with around 30 16x16 sprites (with built
yep, that's cool. It depends on the vid subsys though.
>the background map. This is with a window of 288x172 and uses complete redrawing+blit
>(real mode) I was going to use a mode-x meathod version, but this meathod IMO makes
I'm doing HiRes windows stuff now, will be pretty cool. Pent owners want
stuff that uses their speed.
>animation of any/all of the blocks very easy with no extra penalties in speed. Also,
>you need not worry about erasing the sprites before redrawing them ;)
having totally animated levels is awesome, you can get a really organic
feel. Consoles don't get close, because they're not rebuilding the screen
each time.
>I really liked JJR BTW, this is what gave me the impetus to have a go at this!
thanks, hope you like the next one way better ;-)
-arjan