ZeroPaige this is the retro scene nickname of the guy who spent 7 years of his life, to get the source code of the NES game Super Mario Bros to run on any NTSC/PAL C64!
from the manual:
This is a Commodore 64 port of the 1985 game SUPER MARIO BROS. for the Famicom and Nintendo Entertainment System. It contains the original version that was released in Japan and United States, as well as the European version. It also detects and supports a handful of turbo functionalities, and has 2 SID support.
The disk-image contains 2 programs:
SUPER M. BROS.64 – the game (everything in one file)
SMB.64 DOCS – this manual
A cartridge-file is also provided. It only contains the game and can be used with a C64GS.
VSP (VARIABLE SCREEN POSITIONING)
This port relies on the VSP-technique for scrolling. If you experience crashes while playing the game, this is most likely the issue. You may find out if your computer is prone to crashing by running VSP Lab.
If this is the case, there are a number of things to try (some options cheaper than others):
– Try another C64.
– Use an emulator instead.
– Use a C64 Reloaded motherboard – they are designed to be VSP-safe.
– Use a Turbo Chameleon – because of how it works, VSP glitches will not alter the Chameleons memory, thus preventing the game from crashing. This port will also benefit from its turbo functionality.
Before the game starts, an option menu will let you:
– select a version of the game.
– disable turbo (if detected).
– configure a second SID-chip.
– see the background (based on Shigeru Miyamotos artwork that was used for the Japanese and European release).
The option menu is (just like this manual) controlled using a joystick (or gamepad) in either control port.
The details of these options will now be described.
VERSIONS AND TIMING
The original game was released in two versions:
– Japanese/US-release – the original for NTSC, 60 Hz video systems.
– European-release – adjusted for PAL, 50 Hz video systems.
This port will try to run the game at the intended speed (as well as having the sound in the correct pitch); this means you can play either version on any type of C64. It also means that the Japanese/US-release will not play 20% slower on a PAL-system. Likewise, the European-release will not play 20% faster on an NTSC-system.
The program will automatically detect your hardware (including any turbo functionality). Based on this, it will suggest the best version for you.
The reasoning behind the suggested version is as follows:
– If you play on a stock C64 (PAL, Drean or any NTSC) without any turbo functionality, the European-release will give you the least slowdowns, since the original game-engine is tuned for a 50 Hz refresh-rate which uses less CPU-cycles per second than the original Japanese/US-release.
– If turbo functionality is detected, the version aimed for your video-system will give you the smoothest scrolling. This means: Japanese/US-release on any NTSC C64, European-release on PAL and Drean C64.
You can override the suggested version, if you wish.
COMPATIBILITY AND TURBO
VSP issues aside, this port should be able to run on all regional C64 models. PAL, NTSC (new and old) and Drean (PAL-N) are all supported.
Since the NES-processor is clocked (roughly 70%) faster than a stock C64 there can be slowdowns during gameplay. A pixel indicates this on the time-watch graphics in the status bar.
This port will try to detect and use any kind of turbo functionality, such as:
– Commodore 128 (2 MHz in the border)
– C64 DTV
– Schnedler Systems Turbo Master CPU (untested)
– Swisscomp Turbo Processor (untested)
– Rossmoeller Flash 8 (untested)
– CMD SuperCPU Accelerator (untested)
– Icomp Turbo Chameleon 64
You can disable the detected turbo functionality if you experience problems with it enabled (or wish to see how the game performs without it).
2 SID SUPPORT
– This port emulates 4 channels of the NES APU (audio processing unit): 2 pulse channels, 1 triangle channel and 1 noise channel. The SID-chip has 3 voices, so this is handled by sharing 1 SID-voice for the triangle and noise channel.
– If a second SID-chip is configured, the program will instead dedicate 2 APU-channels to each SID-chip.
– In the option menu you are able to configure and test your SID-setup. You can use the following addresses for the second SID-chip: $D420, $D500, $DE00 and $DF00.
– In the test you should be able to hear 2 tones being played simultaneously for 2 seconds. The first tone has a lower pitch and fades out. The second tone has a higher pitch and fades in.
– If a second SID-chip has been configured, the higher pitched tone should be playing on that SID, otherwise they will both be playing on the first SID.
The game is controlled using joystick (or gamepad) in either control port and supports 2 button joysticks (using POT X, like the C64GS joystick).
The joystick used to start a game will control Mario. If a 2 player game is selected, the other joystick will control Luigi.
You can press F1 or F3 to toggle between the 4 modes for control port 1 or 2 respectively. A message on the screen will display what mode you have selected. These modes are:
Mode 1 – Up > Jump (Default)
Mode 2 – Up > Jump, buttons swapped
Mode 3 – Standard
Mode 4 – Standard, buttons swapped
The mapping scheme is by default setup for 1 button joysticks, where pushing up will trigger jumping (and swimming).
On the C64, this is the most common way to control your character in platform games. Examples: Bubble Bobble, The Great Giana Sisters, Mayhem in Monsterland, Turrican, Wonder Boy.
If you have a joystick which supports 2 individual buttons, the second button will also trigger jumping (and swimming) in mode 1 and 3.
Depending on the physical layout of your joystick, you can change the control scheme to swap the action of the buttons (mode 2 and 4) so that they correspond physically with a NES-controller.
Reference of a NES-controller:
– The A-button (placed to the right) is jump (and swim)
– The B-button (placed to the left) is throw fireballs (and accelerate)
For 2 button joysticks it is also possible to use mode 3 and 4 which disables the UP > Jump-mapping. Do not use these modes on 1 button joysticks as you will not be able to either jump or throw fireballs.
<- – Exit to title-screen (during a game)
RUN/STOP – Pause game
F1 – Toggle joystick mode for control port 1
F3 – Toggle joystick mode for control port 2
F5 – Decrease SID volume (on some 6581 SID-chips the audio can sound distorted on the highest volume)
F7 – Increase SID volume “
The original post on the LEMON64 Forums includes download URLs for the CRT and D64 image to download.
Since 1 of the download links is already shut down and another one under review, several scene people offer mirror hosts for the game:
There is also a cart label and box available: