Super Mario Bros for Amstrad CPC 464

2 minutes, 44 seconds Read

This is an attempt to port the famous Super Mario Bros for NES to Amstrad CPC 464. It has been programmed by me in C89 and Z80 assembly. The current status of the project is blocked but not abandoned. I started this project in 2015 but I never had time to continue it because of my current job and thousand of other projects. Recently, I found the time to cleanup and release the .dsk that you see in the latest youtube video:

If you click the "Download" button, you can get the .dsk with the first playable demo of SMB for Amstrad CPC 464. You can run it with any Amstrad CPC emulator, like WinApe. Do not expect a playble game, this is just a demo but you can still control the player with the same physics of the original title for NES. Enjoy!


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 Bros. 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.

New features:

- 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.

Similar Posts

Leave a Reply