Scrolling on the Amiga
uridiumauthor.blogspot.com
uridiumauthor.blogspot.com
Some years back, I found his journal online from when he developed Paradroid. I felt like being in heaven finding that treasure.
If I recall correctly, I read somewhere that he completely withdrew from the games development scene and now works for some non-game related IT company in the UK, but my memory on that is vague.
http://www.zzap64.co.uk/zzap3/para_birth01.html
He also wrote a diary for his Morpheus game:
Both remind me a bit of Jordan Mechner's "The Making of Prince of Persia".
I recall being highly stressed by the game at one point. I had control of a low level droid and had no choice but to take on a very high level droid. I had to very carefully time when to trigger the few circuits I have to gain control and just managed it with seconds remaining on the clock. What a rush that was! :-)
It basically had arcade machine class video hardware. It came later to market, but creamed the Amiga completely in specs, and they ended up shipping 25 different models of them, up to really high clock rates.
Unfortunately only really sold in Japan (though due to population size of Japan, it actually sold a _lot_ of units and a lot of games were ported to it).
It's really too bad it never really made it to Europe and North America
(Atari Falcon: https://en.wikipedia.org/wiki/Atari_Falcon - it's quite a lot better than the original ST, but still doesn't have sprites or multiple playfields)
I believe I used the "Can we start the screen memory on any address in video RAM?" mechanism from the article.
There was definitely some sort of boundary limitation: IIRC I couldn't get horizontal smooth scrolling to work, but I'm fairly sure I got vertical scrolling working.
If anybody has an archive of the disks from T&D software they can double check my assertion...
http://www.colorcomputerarchive.com/coco/Documents/Magazines... gives scans of the cassettes. I guess (but haven’t fully checked) “T&D Software.zip” in http://www.colorcomputerarchive.com/coco/Disks/Magazines/ gives a 12 megabyte download of their contents.
Smooth scrolling could be achieved in character mode by making the borders wider, hiding 2 columns or 1 row, depending on the direction. The visible area could then be adjusted on a pixel-by-pixel basis, revealing the hidden content gradually.
Multi-way scrolling was common for BBC Micro games, as the hardware directly supported the barrel-type scrolling described in the article, though only on a full-screen basis. Uridium programmed the CRTC in a particular way, however, allowing the screen's base address to be set halfway down the screen, giving a stationary area at the top and a fixed area at the bottom.
I think the only other game of the period that did anything like this was Firetrack (https://www.youtube.com/watch?v=8bxdd2_qrpg), which used it to get smooth vertical scrolling.
The technique is easy to do (http://www.cpcwiki.eu/forum/programming/rupture/), but you do have to know the trick! It's know a well-known thing, and there's a couple of modern BBC Micro games that use it.
If you like this kind of look into old school games coding techniques, you'll probably like GameHut:
- Can we start the screen memory on any address in video RAM? No, limited boundaries. - Can we restart the screen display from another address during the display? No
What ? It could definitely be set to any memory address (with same 16-bit boundary as the Amiga)
The ST's screen address did have to be on a 256 byte boundary. With 160 bytes per scanline you could scroll 8 scanline vertically by changing the screen address.
People did work out a methods of scrolling the screen with finer control. Sync scrolling [1] used overscan techniques.
ST screens had a border around the image, not filling the whole screen. Methods were developed to the bottom, right, left and top borders [2].
By combining left and right border removal different offsets could be generated to position the screen on any 16bit/pixel boundary [3].
[1] http://www.atari-forum.com/viewtopic.php?f=1&t=4357&sid=8a77...
[2] http://aldabase.com/atari-st-fullscreen-demos-history/
[3] https://blog.troed.se/2015/12/23/overscan-and-sync-scrolling...
The STe fixed both of these problems, and had variable wid5h rows and the pixel offset thing too. That meant a setup that was roughly equivalent to a 4-bit Amiga screen, though with interleaved bitplanes (which is not necessarily a bad thing).
Interesting the different approaches. Commodore shipped the Amiga 1000 at too expensive a price point, and so Tramiel (who had rushed the ST to market just before the Amiga) got in with a rock bottom priced machine that initially looked like it would kill the Amiga (which was his intention.) But Commodore followed up with the cost reduced Amiga 500 which ended up winning against Atari Corp in the home gaming market (though IMHO the ST and offshoots were still far better productivity machines than the Amiga and did well in that market in Germany).
Going back to some of those ST games I loved, they have really crappy frame rates and high latencies.
"Amiga Do we have enough CPU time to rebuild everything on the screen every frame? Just about."
That seems dubious, given he says the Atari ST is "not really". Both had the same processor and the ST had a higher clock rate. The Amiga could only out-do the ST in graphics performance because of sprites and scrolling, but manually rebuilding the whole framebuffer on every refresh was not possible on _either_ machine. The Amiga could "cheat" by using dedicated hardware for specialized tasks. But could not really rebuild a whole frame each time either.
So for example, on the various 3d wireframe games that came out for those platforms (i.e. Starglider, etc.), the ST had a slight edge due to its slightly higher clock rate. In fact anywhere where it's just polygonal drawing, the ST had a very slight edge.
[1] http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_gui...
[2] http://amigadev.elowar.com/read/ADCD_2.1/Hardware_Manual_gui...