Amiga style scrolling for Lucas adventures

General chat related to ScummVM, adventure gaming, and so on.

Moderator: ScummVM Team

ancalimonungol
Posts: 21
Joined: Mon Feb 23, 2009 2:59 am

Post by ancalimonungol » Tue Dec 15, 2009 1:45 pm

LogicDeLuxe wrote:Eventhough, the Amiga hardware was more versatile, this kind of hardware accelerated soft-scrolling can be done with VGA graphics too (scrolling top part, fixed bottom part). Oddly enough, they didn't. Most VGA side-scrolling games were pretty smooth.
They didn't do it probably because these kind of operations needed a fast CPU like the 486 while it worked perfectly with a 7mhz 68k; Probably due to Amiga custom chips taking care of everything else. It's probably due to these custom chips why Amiga games (even some of the later conversions which looked bad and dated) felt and played better.

Buddha
ScummVM Developer
Posts: 53
Joined: Mon Apr 16, 2007 4:18 pm
Location: Turku, Finland
Contact:

Post by Buddha » Tue Dec 15, 2009 5:30 pm

ancalimonungol wrote:
LogicDeLuxe wrote:Eventhough, the Amiga hardware was more versatile, this kind of hardware accelerated soft-scrolling can be done with VGA graphics too (scrolling top part, fixed bottom part). Oddly enough, they didn't.
They didn't do it probably because these kind of operations needed a fast CPU like the 486 while it worked perfectly with a 7mhz 68k;
Untrue. Scrolling in an unchained (e.g. http://en.wikipedia.org/wiki/Mode_X) VGA video mode didn't require almost anything from the CPU, it was simply setting some VGA registers to scroll the screen.
Timing the whole thing with the vertical retrace and still being able to play music and do everything else was possibly more of a problem as VGA didn't have a vertical retrace interrupt (It can be worked around though with some countdown timer stuff like the DOS module player Midas did it but it's not very straightforward or easy).

Either the synchronization problems or the fact that coding for an unchained video mode was more undocumented and a bit harder than for the normal 320x200x256 chained video mode are my guesses why they didn't use it...

fingolfin
Retired
Posts: 1466
Joined: Wed Sep 21, 2005 4:12 pm

Post by fingolfin » Tue Dec 15, 2009 6:06 pm

Scrolling the whole screen was easy back in the old days, aye. But they had to scroll only parts of the screen, while another part (the verb area) stayed fixed. That's not possibly by only changing a few VGA registers -- or is it? It's been so long...

Anyway, the games also were ported to a wider variety of systems. Maybe they tried to adjust for the greatest common divisor, and thus left out smooth scrolling. Although then one has to wonder why they did it on the Amiga version, as people here claim. Odd.

Buddha
ScummVM Developer
Posts: 53
Joined: Mon Apr 16, 2007 4:18 pm
Location: Turku, Finland
Contact:

Post by Buddha » Tue Dec 15, 2009 6:42 pm

fingolfin wrote:Scrolling the whole screen was easy back in the old days, aye. But they had to scroll only parts of the screen, while another part (the verb area) stayed fixed. That's not possibly by only changing a few VGA registers -- or is it? It's been so long...
Split screen with vertical scrolling works, I know that for sure, but split screen with horizontal scrolling... I'm not sure, I remember that when I tried it (quite some years ago) I couldn't get the lower part of the screen to not jerk around horizontally by a few pixels as the top part scrolled. So maybe it does work but I couldn't get it to work back then... don't know for sure.

Buddha
ScummVM Developer
Posts: 53
Joined: Mon Apr 16, 2007 4:18 pm
Location: Turku, Finland
Contact:

Post by Buddha » Tue Dec 15, 2009 7:08 pm

Buddha wrote:
fingolfin wrote:Scrolling the whole screen was easy back in the old days, aye. But they had to scroll only parts of the screen, while another part (the verb area) stayed fixed. That's not possibly by only changing a few VGA registers -- or is it? It's been so long...
Split screen with vertical scrolling works, I know that for sure, but split screen with horizontal scrolling... I'm not sure
Actually at least according to Michael Abrash this should work (i.e. having a top part of the screen scrolling horizontally and/or vertically and the bottom part staying completely still): See "Split Screen and Panning" in http://www.phatcode.net/res/224/files/h ... 30-04.html

Yay :) Information after so many years. And nothing to do with it :-P

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Tue Dec 15, 2009 7:12 pm

ancalimonungol wrote:They didn't do it probably because these kind of operations needed a fast CPU like the 486 while it worked perfectly with a 7mhz 68k
Actually, it doesn't work perfectly with a 7 mHz 68k (MI2 runs smooth with 14 mHz, but slow and still a bit jerky at 7 mHz)

Softcrolling can be done on a 80286 with an ISA-VGA card the same quality the Amiga can, and with almost no CPU time. The only limitation is that the scrolling part must be at the top, and the fixed part at the bottom on the screen. The Amiga is more versatile in regards of screen devision, but this doesn't matter for SCUMM games.
Buddha wrote:Timing the whole thing with the vertical retrace and still being able to play music and do everything else was possibly more of a problem as VGA didn't have a vertical retrace interrupt
Actually, VGA does have a vertical blank interrupt. For some odd reason, graphic card manufacturers decided not to connect it to the PC architecture. What a shame!

In case of SCUMM, using double buffer and just wait for the vertical blank (while wasting some CPU time) would be no great deal, since those games had rather low framerates anyway. This won't necessarily interfere with music playing, as that could be done with a timer interrupt, which can be increased to something more usable than the rather low default rate.

zorbid
Posts: 66
Joined: Sun Nov 27, 2005 6:41 pm

Post by zorbid » Tue Dec 15, 2009 7:22 pm

This YouTube playlist has samples of the Maniac, Zak and MI1 Amiga versions. The scrolling seems similar to the PC versions, although it could be codec-related.

I actually remeber the Amiga versions of these games to be smoother than the ones I played on my PC, but it was a 8088 @ 8MHz, which probably explains the difference.

This James Pond video exhibits smooth scrossling, for comparison.

User avatar
Kaminari
Posts: 274
Joined: Mon Oct 24, 2005 2:25 am
Location: Paris, France
Contact:

Post by Kaminari » Tue Dec 15, 2009 9:49 pm

I'm too lazy to take the A500 out of its box, but honestly I don't remember Monkey 1 being smooth on the Miggy. I'm pretty sure it was 8-pixel limited as the PC version. I will boot it up when I get the opportunity.

On the other hand, I checked my Sega CD copy and the scrolling is definitely smooth.

zorbid
Posts: 66
Joined: Sun Nov 27, 2005 6:41 pm

Post by zorbid » Tue Dec 15, 2009 10:05 pm

What about the Windows versions based on Aaron Giles code? Were V5 and V6 games ported to Windows?

From Kaminari's report, I guess smooth scrolling could be safely implemented from MI1 onward...

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Wed Dec 16, 2009 12:10 am

Kaminari wrote:I'm pretty sure it was 8-pixel limited as the PC version. I will boot it up when I get the opportunity.
No need to. It is. Actually, only the SCUMM V5 titles have softscrolling on the Amiga.

fingolfin
Retired
Posts: 1466
Joined: Wed Sep 21, 2005 4:12 pm

Post by fingolfin » Wed Dec 16, 2009 1:08 am

I am still baffled as to how they did it. The engine is very much centered around the idea of scrolling in 8 pixels steps in many places. They must have used some kind of clever trick, I think.

Zorbid, maybe it is "safely" possible, but so far, nobody seems to have been able / willing to figure out how, so whether it's "safe" or not is a rather moot point :)

User avatar
peres
ScummVM Developer
Posts: 22
Joined: Tue Nov 21, 2006 7:57 am

Post by peres » Wed Dec 16, 2009 4:18 am

fingolfin wrote:I am still baffled as to how they did it. The engine is very much centered around the idea of scrolling in 8 pixels steps in many places.
Is the Amiga engine really capable of scrolling single pixels, or does it smoothly scroll on 8 pixels steps?

The former would require (heavy?) engine modification, but the latter sounds like something you can do programming the graphics hardware.

User avatar
LogicDeLuxe
Posts: 393
Joined: Thu Nov 10, 2005 9:54 pm

Post by LogicDeLuxe » Wed Dec 16, 2009 9:52 am

fingolfin wrote:I am still baffled as to how they did it. The engine is very much centered around the idea of scrolling in 8 pixels steps in many places. They must have used some kind of clever trick, I think.
Apparently, the Amiga uses a hardware sprite for the mouse cursor, which for one completely eliminate any interfering with the scrolling. Also, the game opens 2 screens (similar to what could have been done with VGA), one for the scrolling graphics, and one for the verbs, inventory etc.. You can see the division because, there is one line between them where the mouse cursor is invisible. The dividing line can be shifted, which is necessary, since there are some scenes with full screen graphics (for example the FOA interactive intro).
And of course, the game logic still works at 8 pixel steps. The scrolling never stops inbetween them.
And there is no vertical softscrolling for some reason.

ancalimonungol
Posts: 21
Joined: Mon Feb 23, 2009 2:59 am

Post by ancalimonungol » Sat Oct 05, 2013 9:26 pm

http://www.creatorscast.com/video/4e426569f9

Since youtube always makes the videos 30fps, I uploaded to a proper site allowing higher frame rates. Here is the 50fps video showing how scrolling looks like on an Amiga. As you can see, it's not smooth as in "silky smooth". But it's pretty close.

Should I make a request for scrolling like this for Lucas adventures? Or do you think it's too much work?

ancalimonungol
Posts: 21
Joined: Mon Feb 23, 2009 2:59 am

Post by ancalimonungol » Fri Feb 17, 2017 12:01 am

I still would love to see Amiga style scrolling in ScummVM.

Here is how it looks like on my real Amiga. Started the game on NTSC 60hz screenmode so that I can capture it at 60hz using my Note4 phone. It's great that now Youtube supports 50hz and 60hz (too bad my phone only records at 60hz and not 50hz)

https://www.youtube.com/watch?v=kZl96ukIC6s


And below is how it scrolls on PC and ScummVM: (starts at 10:08)
https://youtu.be/LZZXJ3zCRDQ?t=10m8s

Post Reply