When i was a little kid I remember that i really wanted to create a Super Mario Bros game for the amstrad cpc 464. Now that I am 33 and I work as a software engineer I asked myself: why don't you make your old dream come true? :) Finally I found the time to create a demo with the famous first Level 1-1 of Super Mario Bro:
The horizontal hardware scrolling needs a double buffer in order to get an accuracy of 4 pixels. The demo runs on original Amstrad CPC 464 speed emulated by Caprice. It is pretty fast and can loop horizontally with a limit of 512 tiles meanwhile the level 1-1 takes only 212 tiles. I readjusted the original smb graphics to fit a 256x192 Mode 1 with 4 colors. I really like the effect of the gray scale map mixed with the blue sky, like in the original NES game. This demo has been programmed with SDCC in C and Z80 assembly.
After one year of pause, I decided to continue this project. This is what I got after few weeks of work. It still has glitches but it's starting to look like the original title of the NES. Remember, CPC 464 with Z80 and only 64 KB of memory. It wasn't easy. The next step is to make some interaction with the map, get the mushroom, breaking some blocks and jump over the enemies.
- Fixed some glitches on the scrolling
- Better fixed point implementation for smoother player movements
- More robust management of the map and collisions
- Tall Mario!
Following the suggestions of cpcwiki forum (in particular thanks to NiNxPe user), I decided to draw some colors using ordered dithering, the final result is pretty decent and I decided to keep it. Moreover, the player movements now have 1 pixel accuracy, so it looks more similar to the original NES title. ps: Right now I've noticed that for mistake I selected 128 KB of memory on the emulator, but i can guarantee that everything is made to work also on CPC464 with 64 KB of memory.
Warning: I created this project only to improve my programming skills and not for commercial purpose. The original design, concept and graphics of Super Mario Bros are owned by Nintendo and not by me.