A good example of game with efficient scroll engine is Stormlord
. It's better engine than Ghosts'n'Goblins or Cobra as it allows much more variety of graphics.
I made a post about it on old WOS but i may repeat it here.
So the scroll is by 2 pixels and framerate is 25 fps. you have 16x16 pixel tiles, each in 4 versions, shifted by 0,2,4 and 6 pixels.
The trick is assuming that some tiles may touch only selected another tiles so you have for example
- brick wall touching another brick wall
- edge of brick wall touching empty space
- left part of mushroom touching middle part of mushroom and so on
In shifted tiles we have a part of original tile and a part of neigbour tile. You don't have to combine them by OR, XOR or whatever. You just copy it directly from memory to screen.
A bonus to such approach is that you don't have to draw empty tiles. While everything moves "edge tiles" (edges of walls and other objects) which include some empty space effectively clear everything behind them. Maybe one day I'll make a screen about it as it may be hard to imagine from verbal description but it works (if there is enough empty space as scrolling totally filled screen would be too much for 25 fps).
On the other hand we have Ghosts'n'Goblins
. I'm probably in minority but I consider it to be a bad port
It''s smooth but that's all. It's very simplistic, with few tiles, ugly graphics, tiny sprites, few levels compared to arcade and crazy difficulty.
I respect the author (Keith Burkill) of course. He wrote Commando as well which is simply splendid without discussion.
As for the Ghosts'n'Goblins engine, I inspected the game code a bit once and would say there isn't any
Really. For me engine is something reusable that you can use for another game. Here everything is hardcoded, data mixed with code all the time. There aren't any tiles or maybe there are tiles of different width and height. There is different code to scroll graves, different to scroll ground, different to scroll trees, platforms and so on. Totally crazy code that devil himself wouldn't understand.