Post by Mairtrus on Jun 30, 2010 9:31:56 GMT -5
After read the title, maybe some ones thought "WTF means a so strange title?", but I'm sure all the games lovers recognized inmediatly the first 3 letters as from Super Mario Bros, the classic of the classics. Well, that is exactly what is this, a complete port of the Super Mario Bros game from NES to our lovely Genesis.
Of course, some people can say: "oh, sure, this is awsome , well done on copying a game that is ported to at least ALL the consoles in existence", but the amazing of this port in particular is the fact that I used an automatic conversor to "translate" from the 6502 asm (NES processor) into the M68K asm. In fact, despite the HUGE optimisation I did only to fit the game in less that 64kb (I was thinking to create a LAKABAJO version... maybe in the future, when I build mine ), at least the 75% of the code is still untouched after the translation.
Of course, I nedeed to create from scrath the I/O function, which emulates "on the fly" the NES I/O function, since ALL THE ORIGINAL DATA IS STILL HERE. Also, if you check the memory usage, only $800 bytes are used (000-7FF, like in the original NES!!).
2 or 3 things:
- Before load it, disable the "AutoFix Checksum" in your emulator.
- The C button is for select between 1 or 2 player in the main menu. However, don't play in 2 players mode in Fusion. For Whatever reason, it takes the A and B buttons, on the second joypad, as the same button (strange, isn't it?)
- 2 small cheats: push A+Start on the 1st joypad (this set the flag who allows you to choose the start level at the beginning), or/and push Down+B on the 2nd joypad (this set the game in 40H mode, like during the development!!), then reset the game.
But stop reading, download, and enjoy it.
Of course, I could not do it without some help. Credits to:
doppelganger: If this guy had never disassembled the original game and complete comented it, I never had the stupid idea of port it. Maximun credits are for him.
walker7: The whole game would not possible without his help. He helped me to correctly translate some 6502 instruction I never understood. Thank you a LOT.
Tiido Primagi: Some help, betatesting, and try it on real HW (didn't work, but thanks anyway )
Devster: For help me A LOT of time ago (like 1 and a half year ago, the first time this project started), and for BasiEgaXors, the main reason I started with the genesis programming, and because I used it to simulate an enviroment to recreate all the NES sounds, since is nearly to the impossible emulate them on the fly.
Pascal: Without his "MD developper studio", I would never discovered what exactly hanged the code in early development stages.
My friends crash_19, areBalo, il panino, fraskito & lucho: for betatesting it, and for support me through this entire project.
HardWareMan, Stef, mic_, Gigasoft, Charles MacDonald & Chilly Willy: For some tips when I was trying to fit the code in 64KB without loosing execution speed.
Tom Maneiro, ScroGer, jlf65, TheMVRules, Shiru, theelf, abokys, JDTAY, socram8888, Syniphas, and a lot of other people I'm forgetting: For keeping the community alive and for be so awesome persons.
Feedback, bugs, critizes, everything will be good received.
EDIT at 11/07/2010 01:06
Version 1.4.1 released!! Click HERE for download it.
Changes since the last version:
- The pallete was replaced by a one more accurated. INFINITE thanks to localh for that.
- Some minor bugs around the whole code where fixed. Credits to Chilly Willy for some of them.
- The PPU emulation code was rearranged, so now (plus some minor things in some parts of the code) it SHOULD works on real hardware whitout graphical glitched and other shit. HUGE thanks to tascoDLX for ALL that.
- A small error in the musics was fixed (the D4 and D#4 notes was using the D4 frequency). Thanks to Bibin who reminds me to fix this.
- According to Sik (he said it first...), now in main screen the number of players is selected with the Up/Down buttons. Now the A and C buttons does the same function. Plus, the joypads are initilized properly, so now the joypad 2 works in Fusion (an I guess in real hardware too)
- The checksum routine now is gone (as you hear, space pirates), since it took less time hack it than it tooks to me create it.
- The new cheats are(always before the tittle screen): press "A" for enable the world selection cheat; press "Up" for set the screen in Interlace mode (as localh requested).
EDIT at 11/07/2010 19:28
Last minute modification. Just a few fixes that should have been present in the last release. Click here
Enjoy it!!
Of course, some people can say: "oh, sure, this is awsome , well done on copying a game that is ported to at least ALL the consoles in existence", but the amazing of this port in particular is the fact that I used an automatic conversor to "translate" from the 6502 asm (NES processor) into the M68K asm. In fact, despite the HUGE optimisation I did only to fit the game in less that 64kb (I was thinking to create a LAKABAJO version... maybe in the future, when I build mine ), at least the 75% of the code is still untouched after the translation.
Of course, I nedeed to create from scrath the I/O function, which emulates "on the fly" the NES I/O function, since ALL THE ORIGINAL DATA IS STILL HERE. Also, if you check the memory usage, only $800 bytes are used (000-7FF, like in the original NES!!).
2 or 3 things:
- Before load it, disable the "AutoFix Checksum" in your emulator.
- The C button is for select between 1 or 2 player in the main menu. However, don't play in 2 players mode in Fusion. For Whatever reason, it takes the A and B buttons, on the second joypad, as the same button (strange, isn't it?)
- 2 small cheats: push A+Start on the 1st joypad (this set the flag who allows you to choose the start level at the beginning), or/and push Down+B on the 2nd joypad (this set the game in 40H mode, like during the development!!), then reset the game.
But stop reading, download, and enjoy it.
Of course, I could not do it without some help. Credits to:
doppelganger: If this guy had never disassembled the original game and complete comented it, I never had the stupid idea of port it. Maximun credits are for him.
walker7: The whole game would not possible without his help. He helped me to correctly translate some 6502 instruction I never understood. Thank you a LOT.
Tiido Primagi: Some help, betatesting, and try it on real HW (didn't work, but thanks anyway )
Devster: For help me A LOT of time ago (like 1 and a half year ago, the first time this project started), and for BasiEgaXors, the main reason I started with the genesis programming, and because I used it to simulate an enviroment to recreate all the NES sounds, since is nearly to the impossible emulate them on the fly.
Pascal: Without his "MD developper studio", I would never discovered what exactly hanged the code in early development stages.
My friends crash_19, areBalo, il panino, fraskito & lucho: for betatesting it, and for support me through this entire project.
HardWareMan, Stef, mic_, Gigasoft, Charles MacDonald & Chilly Willy: For some tips when I was trying to fit the code in 64KB without loosing execution speed.
Tom Maneiro, ScroGer, jlf65, TheMVRules, Shiru, theelf, abokys, JDTAY, socram8888, Syniphas, and a lot of other people I'm forgetting: For keeping the community alive and for be so awesome persons.
Feedback, bugs, critizes, everything will be good received.
EDIT at 11/07/2010 01:06
Version 1.4.1 released!! Click HERE for download it.
Changes since the last version:
- The pallete was replaced by a one more accurated. INFINITE thanks to localh for that.
- Some minor bugs around the whole code where fixed. Credits to Chilly Willy for some of them.
- The PPU emulation code was rearranged, so now (plus some minor things in some parts of the code) it SHOULD works on real hardware whitout graphical glitched and other shit. HUGE thanks to tascoDLX for ALL that.
- A small error in the musics was fixed (the D4 and D#4 notes was using the D4 frequency). Thanks to Bibin who reminds me to fix this.
- According to Sik (he said it first...), now in main screen the number of players is selected with the Up/Down buttons. Now the A and C buttons does the same function. Plus, the joypads are initilized properly, so now the joypad 2 works in Fusion (an I guess in real hardware too)
- The checksum routine now is gone (as you hear, space pirates), since it took less time hack it than it tooks to me create it.
- The new cheats are(always before the tittle screen): press "A" for enable the world selection cheat; press "Up" for set the screen in Interlace mode (as localh requested).
EDIT at 11/07/2010 19:28
Last minute modification. Just a few fixes that should have been present in the last release. Click here
Enjoy it!!