Author Topic: Dummies guide to Amstrads scrolling abilities....  (Read 5718 times)

0 Members and 1 Guest are viewing this topic.

Offline Puresox

  • 6128 Plus
  • ******
  • Posts: 1.290
  • Country: 00
  • Liked: 248
  • Likes Given: 678
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #25 on: 21:14, 10 December 16 »
Looks like I've got plenty of info to read through on scrolling , appreciated
I haven't digested all of the thread as yet , but will be going through it, If it has been mentioned already ignore this request.


Could a list of games be made which demonstrate each different Scroll technique? Or would that be an impossible task.?
For Example Roland in Space has - This type scrolling
What was TLL's scrolling ? Such an early game with a great scroll!
« Last Edit: 21:24, 10 December 16 by Puresox »

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.336
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 2275
  • Likes Given: 3478
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #26 on: 22:14, 10 December 16 »
For a more technical discussion on scrolling:

http://www.cpctech.org.uk/hwscroll.txt

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline AMSDOS

  • Supporter
  • 6128 Plus
  • *
  • Posts: 3.916
  • Country: au
    • index.php?action=treasury
    • Programs for Turbo Pascal 3
  • Liked: 1124
  • Likes Given: 1901
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #27 on: 22:18, 10 December 16 »
I guess people refer as "hardware scroll" when the hardware provides some sort of assistance; then CRTC tricks or changing the video memory address could get into this category; but I don't think was designed as a away to do scroll, I see them like the tricks you can do in the speccy to get more colours in a 8x8 char; that doesn't mean the platform supports more colours.

Because of that I agree with the idea that the CPC range (not the CPC+) don't have that hardware assistance, and hence "no hardware scroll".

I don't see this a big deal to be honest. You can make games that show more colours that in any other 8-bit home system, and that has value; even if that means you're limited when trying to implement scroll. Use the strengths and get the best you can from the weaknesses.


This was what I was wondering about earlier, performing a trick using the hardware to make the screen move Vs. some routines for the programmer to use. But then I was asking about the Firmware SCR HW ROLL as being defined as a Hardware Scroll which has been setup for a programmer to use.
* Using the old Amstrad Languages :D   * with the Firmware :P
* I also like to problem solve code in BASIC :)   * And type-in Type-Ins! :D

Home Computing Weekly Programs
Popular Computing Weekly Programs
Your Computer Programs
Updated Other Program Links on Profile Page (Update April 16/15 phew!)
Programs for Turbo Pascal 3

Offline arnoldemu

  • Supporter
  • 6128 Plus
  • *
  • Posts: 5.336
  • Country: gb
    • Unofficial Amstrad WWW Resource
  • Liked: 2275
  • Likes Given: 3478
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #28 on: 23:12, 10 December 16 »
@reidrac: I understand your point.

The designers of the 6845 wrote in the documentation:

"Scrolling of the display is accomplished by changing R12 and R13 to the memory address associated with the first character of the desired line of text to be displayed first. Entire pages of text may be scrolled or changed as well via R12 or R13".

The 6845 seems to be designed for character based displays. It generates addresses and additional hardware uses that to generate pixels and output them. They mention scrolling, but I don't think their intention was for games and probably more for vertical scrolling or for moving through pages of text. The 6845 couldn't really have additional scrolling assistance because that is for the additional hardware to perform.

In SOFT158 Amstrad wrote:

"The  screen  offset  sets  which  byte  in  the  screen  memory  is  to  be  displayed  first. Changing  the  screen  offset will move the contents of the screen in one go. This is used for rolling the screen."
Amstrad don't seem to mention horizontal scrolling and they refer to it as "rolling" and to me this means vertical movement. So in this case yes I don't think they designed it for scrolling. If they had then they would have used a different chip or added assistance like they did with the Plus.

Take the PCW, this has "roller" ram. It has a table of screen addresses and it's designed for vertical scrolling and for text. The hardware is designed so that you can do smooth vertical scrolling. To do horizontal scrolling is much harder and it's clear they didn't design it for horizontal scrolling.

So my opinion is that the CPC wasn't designed for scrolling whereas the c64 was.



My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Offline Axelay

  • 6128 Plus
  • ******
  • Posts: 585
  • Country: au
  • Liked: 383
  • Likes Given: 87
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #29 on: 13:43, 11 December 16 »
@reidrac: I understand your point.


So my opinion is that the CPC wasn't designed for scrolling whereas the c64 was.



I've yet to see anyone make a case for how the intent of the designers or the limitations in the functionality is even relevant.


If you are scrolling the screen by changing registers on the CRTC - the display hardware - you are hardware scrolling.  That's all it means.  It describes what you are doing.  It isn't software scrolling.

Offline RichTW

  • CPC464
  • **
  • Posts: 26
  • Country: es
  • Liked: 15
  • Likes Given: 13
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #30 on: 22:28, 12 December 16 »
Yes, of course displacing the screen by writing CRTC regs R12/R13 is hardware scrolling.  The 6845 datasheet says:
Quote
Hardware scrolling by character, line or page may be accomplished by modifying the contents of this [Start Address] register
It may not be pixel-by-pixel (although with the R5 trick and rupture, you can get pixel-by-pixel vertical scrolling), but it clearly isn't block copying screen data in software, as is required by other platforms (e.g. Spectrum, Oric).


As was mentioned upthread, while the C64 may have pixel-by-pixel scrolling within the range of a character, it actually requires a software scroll to move the screen beyond character granularity.


Coming from my background on the BBC Micro which also has a 6845, there were plenty of games which exploited its scrolling capabilities to the hilt, such as Repton.  I think, as ever, certain types of games suit certain types of hardware better than others.  A slow horizontal scroller doesn't work well on a 6845 based machine, but then a racing game may not work well on character-mapped platforms such as the C64!

Offline Puresox

  • 6128 Plus
  • ******
  • Posts: 1.290
  • Country: 00
  • Liked: 248
  • Likes Given: 678
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #31 on: 01:25, 14 December 16 »

No. Although from a gaming perspective, it's mostly true.


The ordinary CPC models are arranged so that there screen display fits within one of four 16K blocks of main memory. How far into that memory block it starts can be configured in Mode 1 sized character chunks (with the screen "wrapping" around inside the block). Adjusting this value will therefore cause the screen to scroll in Mode 1 sized amounts in any direction - adding one causes the screen to shift to the left, subtracting one to the right, adding 40 scrolls up etc. This is why BASIC, for example, is always responsive in scrolling program listings - it's letting the hardware do all the work and not actually shifting any data around at all.


It works very well for text screens but less so for games. For one thing it's usually too big a movement for playable games since you either have to shift the screen around so quickly nobody has chance to react or you only scroll every few frames at which point everything seems to jerk about anyway and the benefits of "hardware scrolling" are lost. There is also that "wrapping" issue, which makes screen addressing on a shifted screen display more complicated than usual, potentially complicating things like sprite routines and there isn't much benefit to scrolling smoothly if the entire game is slowed down by more complicated sprite logic.


That said, there are certain hardware tricks that can be used to improve the resolution of the scroll beyond what it is supposed to be able to do, Mission Genocide being a fine example of how well it can work when done right. The downside of such tricks is that they're more complicated to program and aren't necessarily universally compatible. Some don't entirely work on different CRTCs (or need subtly different values programmed), some don't always work on TVs through a modulator etc.



The Plus range augment the scrolling capabilities via a new (and confusingly named) Soft Scroll Control Register in the ASIC. This allows you to shift the screen up to 16 Mode 2 pixels horizontally and 7 Mode 2 pixels vertically and thus is more reminiscent of the hardware scrolling in machines like the C64, allowing shifting the display by up to a Mode 1 character in either direction. By combining the two methods you actually go one better than the C64 and can pixel scroll the display in any direction without ever having to actually move anything around in memory at all. Hardware sprites are a major boon in this instance because they aren't affected by the screen addressing changes making the whole thing just a lot nicer and removing much of the display complexity around wrapping.
The complete thread has given me some great perspective into how Scrolling works, I admit I don't fully grasp it ,but it definitely is useful and pretty well described, I know for sure I have picked up a lot more understanding of the machine since finding the CPCWiki.


The paragraph highlighted above talks about how certain scrolling may have issues depending on different monitors or CRCT's. I'm surprised that this would be an issue , interested how it would affect. Is it just a case of some TV's may produce an ugly scroll ? Or is it something other than that .?


Offline andycadley

  • Supporter
  • 6128 Plus
  • *
  • Posts: 913
  • Liked: 445
  • Likes Given: 73
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #32 on: 09:24, 14 December 16 »

The paragraph highlighted above talks about how certain scrolling may have issues depending on different monitors or CRCT's. I'm surprised that this would be an issue , interested how it would affect. Is it just a case of some TV's may produce an ugly scroll ? Or is it something other than that .?
Well, bear in mind that this is well into the "demo coder" approach to doing things, so the problems tend to arise because you're operating well outside the specified behaviour and relying quite heavily on quirks that happen when the hardware is in a technically invalid state. A common example is playing with the length of a HSYNC pulse and knowing that this will cause an Amstrad monitor to slightly shift the physical position of the screen in the display (thus allowing a finer adjustment than normally possible). It's a great trick, but other displays may not cope with it in quite the same way, resulting in anything from jerky scrolling to the display completely losing sync and giving that "rolling" effect like an old broken CRT. The problem tends to be more pronounced on modern LCD displays, which don't work in the same way as CRTs and thus are less likely to respond in the "analogue" ways these kinds of trick depend upon.

Offline Puresox

  • 6128 Plus
  • ******
  • Posts: 1.290
  • Country: 00
  • Liked: 248
  • Likes Given: 678
Re: Dummies guide to Amstrads scrolling abilities....
« Reply #33 on: 17:27, 16 December 16 »
Ahhh right ,I think I follow what you are saying .thanks