Hi, recently I went into this thread, searching on Google:
http://www.cpcwiki.eu/forum/games/mario-on-the-cpc-demo/msg110541I'm the author of the demo and I developed it about 1 year ago in few days, I didn't know that it could focus all this interest :-) As you understood by the interview on Retromaniac, I'm a software engineer (so really busy) and after the company where I work has been acquired by Amazon.com I didn't have time to continue the project (you know, new job -> new responabilities). After a long period of turbulence, I found some stability and I decided to continue the porting of SMB in my spare time, when it's possible.
As you said, the most interesting part of this demo is the hardware scrolling, that I implemented with the trick of CRTC registers. During my development process, I found (without surprise, to be honest) that CPC 464 is really slow to draw the whole scene with a software scroll, also without drawing the blank parts. I implemented it in Z80 assembly with a result of 7-8 fps, that could be good for a cpc old-style videogame but not Super Mario Bros. The only thing that I can do to reproduce an horizontal scroll similar to the NES one is to draw only a column on the right corner of the screen, and make the magic shifting the screen with the CRTC register, using double buffering to achieve 4 pixels accuracy. The result is what you see on the youtube video.
Talking about graphics, there is a reason why I didn't use Mode 0. Also if this resolution provides more colors and 2 pixels per byte (intead of 4), I didn't want to alter the aspect of the original game or enlarge the scale of the characters like you saw on the Giana Sisters porting (that was mostly despised for this reason), I desired to maintain the same resolution and graphics aspect, also if it means less colors (is this case, only 4). I remember how good was Super Mario Land for Gameboy, and I decided to readapt the graphics to use only 3 colors in gray scale. The background color can have a polychromatic tone to characterize the level (as we can see on famous movies like Sin City, this is very beautiful to watch). I'm happy with the result because it's exactly what I wanted to achieve, I'm not interested in procuding old-cheap looking bad graphics for the sake of similarity. "Scaling the graphics" is different than "stretching the resolution".
Somebody said that this demo is only 1% of the game, but I disagree, at least in terms of producing a playable demo. The map is consistent and meant to be played, I have algorithms to draw the characters, to read the keyboard and I ported 90% of the SMB graphics. I have already scaled the super mario physics using fixed point precision and I can use double buffering to draw characters also when the scene is stationary. The only thing I need is to draw a jumping tile on the screen drawing the animated player instead, and most of the level is playable. But if you mean that one level is only a few percentage of the game, you are right. The worst problem with CPC 464 is the memory and most of them is wasted now by instructions, graphics, maps and internal tables. When I released that interview on retromaniac I was sure that (in some way), I could put all the levels using some magic compression algorithm, but now I can say that it's not possible. Maybe I can crunch a couple of levels with zrle, but i don't guarantee anything. If I can make the first playable world, it will be a miracle :-) And what about the music? Too much limitations, trust me, I program display drivers for living and this work is even more difficult! :-) For now let's produce a playable demo (a matter of weeks, I hope), then we'll see in the future.
Thanks for the attention, regards.