|
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 ![:(](//storage.proboards.com/forum/images/smiley/sad.png) , 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 ![;)](//storage.proboards.com/forum/images/smiley/wink.png) ), 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 ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) ) 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 hereEnjoy it!!
|
|
|
Post by Tom Maneiro on Jun 30, 2010 13:31:12 GMT -5
Now you made Yuji Naka dreams come true ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) ME DOWNLOADING NOW! UPDATE: Got it, i'm testing it now. The levels look and feel exactly like the real thing, and the sound is... weird ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) But i love it - the "underground" level music now has some metal tone that i like it. Well done. Now, where is that bastard princess? The original ROM was only 40KB, so certainly this sounds like a nice proggy for LAKABAJO owners ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) Hope that you can do it (and hope that i can buy that pesky GameGenie somewhere in the future, if i don't get that Everdrive cart first ![:D](//storage.proboards.com/forum/images/smiley/grin.png) ) UPDATE 2: How the hell i should use the Level Select cheat? I press A+START, then soft-reset, but nothing....
|
|
sasuke
PooP MonkeeH
Ninja Cat
Posts: 8
|
Post by sasuke on Jun 30, 2010 13:50:26 GMT -5
Excellent job! You even gave it sound.
I think the only noticeable bug I found was that Mario can't slide, which I assume has to do with the way the joystick code handles diagonals. Other than that, it plays well.
As for the 6502 asm "translator", does it translate the source code or the binary? Either way, it seems like a cool idea.
Edit: @tom Maniero: The A+Start cheat isn't level select, it continues at the beginning of the world you were in at the last Game Over. The original NES version had this cheat.
|
|
|
Post by TheMVRules on Jun 30, 2010 13:56:38 GMT -5
That was cool! Please give us the convertor! We need Metroid! However, the YM2612 is better at making square waves. I attached a square wave for TFM Music Maker, but sounds more like a TI PSG than the 2A03 squarewave generators. Change MULT of operator 1 to simulate pulse width. A triangle can be made perfect with YM2612. But, I repeat, that was very cool. sasuke: Since there exist disassemblies of this game, I'll bet on source code. Attachments:![](//storage.proboards.com/269665/thumbnailer/.jpg)
|
|
|
Post by Tom Maneiro on Jun 30, 2010 14:13:43 GMT -5
Now it would be nice to have a converter to rip all those hacked levels/tiles from those Mario hacks (should be easy, as 99% of the hacks out there modify data at fixed locations), and generate Genesis ROMs ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) Now, please give the codez and documents so we can do some neat hacks...
|
|
|
Post by jlf65 on Jun 30, 2010 15:26:55 GMT -5
Wow! Great job on that. Like the others, I'm also interested in the converter... lots of 6502 games out there that could be converted. ![:)](//storage.proboards.com/forum/images/smiley/smiley.png)
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Jun 30, 2010 17:32:37 GMT -5
Wow, I just saw this now and had to post right away ![:P](//storage.proboards.com/forum/images/smiley/tongue.png) I haven't tested it, but from the looks of everyone else's experiences, good job ![:D](//storage.proboards.com/forum/images/smiley/grin.png) . A converter isn't a small accomplishment, it's a HUGE accomplishment. The epic-ness of this project matches up with the 32x stuff we were working on before ![:D](//storage.proboards.com/forum/images/smiley/grin.png)
|
|
|
Post by tomaitheous on Jun 30, 2010 21:11:51 GMT -5
Good job Mairtrus, handling the PPU and APU stuff on the fly ![;)](//storage.proboards.com/forum/images/smiley/wink.png)
|
|
|
Post by jeff20 on Jul 1, 2010 2:08:46 GMT -5
fuggin awesome. This is huge. I joined the site because this is HUGE!
Do you think you can make more? After seeing Paul Lee's Berzerk for the Genesis, I've been dying to see Donkey Kong or Popeye. Both have good NES cart versions. Maybe even Mappy or Zelda!
|
|
|
Post by theelf on Jul 1, 2010 5:14:21 GMT -5
Hey mairtrus!! GREAT!! incredible port, this is the project you tell me months ago?i think yes... jaja, incredible Now I understand why you was missing this time...!!!! I think is a great idea make a web page, if you want i can make one for you, if you don´t have Thanxs a lot for your effort and share it with us ... Gracias che, en serio, lo malo, que esto me obliga a mejorar todos mis proyectos!! jajajajaj despues de esto, es patetico lo que programo...jejeje PD: I i found a small bug in the second level.... ![](http://s3.subirimagenes.com:81/imagen/4744615mario.gif)
|
|
|
Post by theelf on Jul 1, 2010 9:36:42 GMT -5
mm.. sorry if my idea is absurd, but there is a way to compile for MegaCD?
jeje, i like to burn, and play in the megacd... like a original game!
|
|
|
Post by jeff20 on Jul 1, 2010 10:36:03 GMT -5
Can someone explain why this will not work on a real Genesis?
|
|
|
Post by Mairtrus on Jul 1, 2010 20:08:52 GMT -5
Wow, I never expected so much feedback for this!! In the the Sega-16 forums, the thread reach the 5 pages... Thank you for all your comments, guy. I'm really proud of my "product" and, hopefully, in a near future I will add some features like: - Rewrite all the VDP access sections (write tiles, the sprites list, etc) to make it more "Genesised". The necesity of emulate the PPU access are a royal pain in the ass! - Rewrite the maths section. Since this is based in a 8-bit cpu, exists a super intensive abuse of the Carry/eXtended flags, and that really bothers me... - Implement a fully usage of the 5FM+DAC+2PSG+NOISE to make the music sounds better. - Change the graphics (the actuals are the originals 2BPP graphics). - Fix the pallette. The current seems to be inaccurate for the fanboys. - Implement a 2 players co-op mode. - And more! And now, answering to yuor questions: The levels look and feel exactly like the real thing, and the sound is... weird ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) But i love it - the "underground" level music now has some metal tone that i like it That's because, as I say before, all the original data was used for the game: the tiles arrangement, the sprites positions, gravity forces, etc. Strange you said the underground music, because I tryied to give that sound to the Castle music. The original ROM was only 40KB, so certainly this sounds like a nice proggy for LAKABAJO owners ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) Hope that you can do it (and hope that i can buy that pesky GameGenie somewhere in the future, if i don't get that Everdrive cart first ![:D](//storage.proboards.com/forum/images/smiley/grin.png) ) Yeah, my dream is play it on my real genesis, but still cannot find the flip-flop I'm missing... How the hell i should use the Level Select cheat? I press A+START, then soft-reset, but nothing.... Actually, you need to keep them pressed until the main screen apears, since the cheat is tested on the begginning, but is ocurrs so fast that is impossible to reset the game THEN press the buttons... I think the only noticeable bug I found was that Mario can't slide, which I assume has to do with the way the joystick code handles diagonals. Other than that, it plays well. Slide? ![???](//storage.proboards.com/forum/images/smiley/huh.png) What are you talking about? Please give us the convertor! We need Metroid! Haha, at the middle of the project, I start thinking on Metroid as a good game to be converted. Maybe someone will make it reallity some day... However, the YM2612 is better at making square waves. I attached a square wave for TFM Music Maker, but sounds more like a TI PSG than the 2A03 squarewave generators. Change MULT of operator 1 to simulate pulse width. A triangle can be made perfect with YM2612. The sound was the last thing I programmed, and initially I attempted to do all in the PSG, but the 2A03 is by far more complex than the SN76489, so I keeped it for the sfx and started to create the music in the YM2612, but as I could not create "perfect" square or triangle waves, I put some instruments stoled from the amazing instruments gallery from TFM. As for the 6502 asm "translator", does it translate the source code or the binary? Either way, it seems like a cool idea. sasuke: Since there exist disassemblies of this game, I'll bet on source code. This. Wow! Great job on that. Like the others, I'm also interested in the converter... lots of 6502 games out there that could be converted. ![:)](//storage.proboards.com/forum/images/smiley/smiley.png) I need to touch it a bit, since I made it for this specific disassembly, it doesn't recongize (yet) not dimensioned variables (EQUs and those...), but sure I will release it. However, all you need to know that doesn't give a "ready to be compiled" source code, since the imposibility to translate "as is" 2 or 3 instructions which need to translated by the hand, but is a short job, and in less than a week, you can have a fully playable game. Good job Mairtrus, handling the PPU and APU stuff on the fly ![;)](//storage.proboards.com/forum/images/smiley/wink.png) Onyl the PPU is emulated on the fly. For the APU, I create an enviropment in BEX (just ot made it fast) to simulate the APU conditions. The sound engine was write from scrath, but the new music data was done using the original music data. Do you think you can make more? After seeing Paul Lee's Berzerk for the Genesis, I've been dying to see Donkey Kong or Popeye. Both have good NES cart versions. Maybe even Mappy or Zelda! Sure more games can be done, but I have no time to make them, that's the reason I will release the tools used for made this one (once I tweak it a bit, as I said before). About the games you mentioned, didn't Zelda or Mappy use a mapper or something? Because that's something I never readed how are managed in the NES. Hey mairtrus!! GREAT!! incredible port, this is the project you tell me months ago?i think yes... jaja, incredible Now I understand why you was missing this time...!!!! Yeah, that was... Actually, I spend more time fixing the idiots error I mistake during my attempt to fit all in 64KB or less (3 months for this one, and only 1 week translating the "untranslatable" instructions) I think is a great idea make a web page, if you want i can make one for you, if you don´t have One of the projects in what I will spend my time in this winter holydays(summer for you, north hemisphere people), is a creation of a web page. I hope Devster's offer be still available when I finish... Gracias che, en serio, lo malo, que esto me obliga a mejorar todos mis proyectos!! jajajajaj despues de esto, es patetico lo que programo...jejeje Seee, pero esto es ensamblador puro, ahi esta la gran diferencia, y tengo planeado algo todavia más grande ![8-)](//storage.proboards.com/forum/images/smiley/cool.png) PD: I i found a small bug in the second level.... Isn't that bug present in the original game too? I swear I see in YouTube lot of time ago a bugs compilation where this happens mm.. sorry if my idea is absurd, but there is a way to compile for MegaCD? jeje, i like to burn, and play in the megacd... like a original game! I want to do this too, but I doesn't fully understand the SegaCD docs who explains the structure of a SegaCD ISO. There are some compiling projects on the RetroDev, but I didn't tried them yet. Maybe tomorrow... Can someone explain why this will not work on a real Genesis? I'm not 100% sure, but seems to be a problem with the VDP initialization routine (writes illegal data)
|
|
|
Post by theelf on Jul 2, 2010 2:16:24 GMT -5
Hey, thanxs for the reply maitrus, about the feedback, for me play mario in the megadrive is great!! i really like... But i like to much to enjoy your work, because every people have different projects in their mind, but not everyone can make real I learn a lot watching the work of others, so i thank you!! About the bug, you are right, is present in the original Famicom game!! sorry, my apology.... jajjaAbout the slide problem, i don´t find this problem, mario slide the same in the famicom game... thanxs, MegaCD have the plus of waste 640mb ..jajja, 64kb in a CD... I think maybe you need to add some splash screen, like "ported by..." because are a lot of thief in the net....
|
|
|
Post by Tom Maneiro on Jul 2, 2010 3:06:22 GMT -5
As for the mapper thingy: Almost all NES games uses mapper chips (or weird chipsets) for bankswitching, SRAM, extra RAM, or even copy protection for bootlegs ![:P](//storage.proboards.com/forum/images/smiley/tongue.png) And there are more than 100 mappers (although most are simple TTL logic puzzles, or hacked Nintendo mappers), so you need to take that in account when doing your magical "conversion". Have fun, since the documentation for most of those mappers are scattered everywhere in the Internets, and some mappers are plain evil (thankfully, most of those evil mappers are multigame pirates, so you don't have to worry about these ![:P](//storage.proboards.com/forum/images/smiley/tongue.png) ). Anyway, every game will need some recoding work to make it work. Only overly simple games like Mario use plain ROMs, because they fit in the extremely limited NES memory space (32KB of PRG, 8KB of CHR, or something like that) - this is "Mapper 0", AKA NROM. And if you ever open a development website for your projects, don't forget one thing: documentacion en español ![:D](//storage.proboards.com/forum/images/smiley/grin.png) FUN PROJECT: Why not run the game in the Z80? ![:D](//storage.proboards.com/forum/images/smiley/grin.png) EDIT: The thread at Sega-16 is really funny. Mario the fascist? I thinked that he was socialist or something ![:D](//storage.proboards.com/forum/images/smiley/grin.png) Also, Fusion VDP emulation has another litte flaw, that allows the ROM to work there, but it dies on Real Hardware(tm) and other more-accurate emulators.
|
|