[Coco] hardware scrolling

Steve Bjork 6809er at srbsoftware.com
Sun Dec 1 03:18:35 EST 2013


Simon,

Sorry for the delay on replying to your message, but life has kept me 
away from the list for over a month.

As I stated in my last post on this subject, I was changing the graphics 
mode.  At no time did I say anything about copying memory around for 
scrolling.

In the 1982 Canyon Climber game, the first round used changing of screen 
modes to shake the screen up/down to simulate an explosion. Please skip 
forward to about 55 second point on this video to view the screen shake...
http://www.youtube.com/watch?v=FXxwlXp5Lns

Bit of history: While James Garon was give game credit, the code was my 
creation.  Back in those days, Datasoft would only credit one person on 
a game. James did a bit of stuff here and there on CoCo titles but never 
got credit.  So, I let him take the Title Credit on Canyon Climber so he 
would get his name on a title screen.  Not till Sands of Egypt,  did 
everyone that worked on a game got title screen credit.

In 1984, I work on a little game called Desert Rider that scrolled the 
screen up/down with a bit more control.  This scrolling effect was to 
make the screen scroll down while your motor bike was jumping.  It also 
scrolled the screen down to change the screen to wipe away the game 
credit text.

Here is little video of Desert Rider...
http://www.youtube.com/watch?v=GlVFfWNgC_M

Both games only used some quick lines of code to change for the timing 
and changing the SAM registers.  The Desert Rider had better control of 
the screen scroll since it used the V-blank interrupt to trigger the 
start of the screen size change and counted H-blank interrupt for how 
long before switching back to the standard graphics mode.  This system 
took very little CPU cycles and allowed for a game to play while using 
this technique.  Your demo back in October only scrolled the screen 
without any CPU cycles left for real work like in a game or OS-9.  It 
been over a month since I look at the list and hopefully you worked on 
the code a bit since when.

The down side to this type of  scrolling that you are trying to reinvent 
is the changing size of the graphics display on the screen.  If you will 
note in the Desert Rider video, the title "Desert Rider" stretch in size 
as the screen scrolls down.  This is not a problem for Desert Rider 
since during game play the only part of the screen that stretch is the 
blue sky.  But any graphics at the top of the screen will grow in size 
as you scroll the screen.

Now, on the subject of horizontal scrolling.  This system of changing 
the pointer to what byte will be read at the start of a scan line does 
change the source of the graphics data.  But that's not the change what 
bits of the byte to start with. The VDG must use the same one or two 
bits of a byte to create the first dot.  (It can not "scroll" them.)  
So, you must scroll on 4 or 8 dot boundary based on the color mode being 
4 or 2 colors.  If in TEXT mode, the scroll would be by character 
(8-dots) and not by one dot at a time.

Sorry, but scrolling on every fourth or eighth dot is not hardware 
scrolling.

The other problem for horizontal scrolling is the CPU overhead.  Since 
every scan lines will need the CPU to change the SAM registers before 
the start of the scan line, this will take about 30% to 60% away from 
doing real work.  (That's the overhead of the h-blank interrupt on the 
CoCo 1/2.)

We old time CoCo programmers spend many a days, weeks and even months 
working on the CoCo back in the early 80's unlocking the secrets hidden 
within.  After all, it was our jobs! I'm not saying that we found 
everything the CoCo had hidden inside.  But, we did understand how the 
hardware works and how to trick it into things it was never designed to do.

I not saying that we found trick the CoCo could do.  But, a lot of what 
we found has been lost over the years.

The other problem, some of the tricks we found were not allowed to be 
used in software we sold to Tandy,  Why?  Tandy wanted make sure the old 
software worked on new versions of the CoCo.  As you know, some software 
that uses semi-graphics don't work on the CoCo 3 because that 
semi-graphics mode was not supported.  Think Plug & Power controller 
software for one.

By the way, using your "DMA" mode was a real No-No and Tandy would not 
buy software using it.

I say to you, keep playing with the CoCo and finding new ways to do 
stuff.  But, be careful saying "You are teaching the CoCo new tricks."  
It may be new to you, but others may of been teaching those tricks 30 
years ago.

Steve


On 10/26/2013 11:05 AM, Simon Jonassen wrote:
> Hey Steve...
>
> I beg to differ....
>
> The only thing i'm doing is shifting from 16 to 32 byte mode with 42 byte
> dma mode enabled on a per line basis....
> Then varying the raster split lines.... THERE IS NO SOFTWARE COPYING OF
> SCREEN RAM AT ALL !!!
>
> So if i'm not copying the bytes in software, then the hardware must be doing
> it for me !
>
> I would call that HARDWARE scrolling....
>
> The vdg/sam counters are being confused to give various effects....
>
> /Simon :-)
>   
>
> -----Oprindelig meddelelse-----
> Fra: coco-bounces at maltedmedia.com [mailto:coco-bounces at maltedmedia.com] På
> vegne af Steve Bjork
> Sendt: 26. oktober 2013 19:31
> Til: CoCoList for Color Computer Enthusiasts
> Emne: Re: [Coco] hardware scrolling
>
> I agree Nick, I've seen stuff like this while working on code that crashed.
>
> Not very useful with all that screen trash and the fact you spend all of the
> cpu time "scrolling" the screen.
>
> Now, I did make the screen shake in my Canyon Climber and scrolling in
> Desert Rider games for Tandy.  (Switching between 3K and 6K screen
> sizes.)  Even though the screen did scroll down, I would hardly call any of
> this stuff hardware scrolling by any means.
>
> In the years before the CoCo 3, we did a lot of "tricks" on the VDG/SAM to
> come up with new display modes.  Most of those tricks did not carry over to
> the CoCo3, so they been lost to the ages. It's a little like indoor pluming.
> The Roman Empire had it over 2,000 year ago and was lost of 100's of years
> because of the dark ages.
>
> As you know nick, the CoCo 3 can do true hardware scrolling. Marty's
> Nightmare and other CoCo 3 games are good examples.
>
> Steve
>
>
> On 10/25/2013 10:53 PM, Nick Marentes wrote:
>> This is not a new feature. It's been known. I just don't think that
>> anyone used it.
>>
>> Does anyone know of a CoCo 1/2 game that actually used the ability to
>> set start of video for vertical or horizontal scrolling? I think
>> everyone just used software which allowed for 1 byte movement. As it
>> stands, it jumps in increments of several bytes (6?).
>>
>> Also, same problem as the CoCo3 GIME... it moves the whole screen.
>>
>> Simon, your next challenge is split screen scrolling which I think the
>> VDG would be able to do by syncing on the horizontal scanlines and
>> changing the $FF22 at set points.
>
>
>




More information about the Coco mailing list