|
Post by TheMVRules on Jul 2, 2010 13:49:05 GMT -5
Metroid would also give you a bit of a challenge, since it uses mappers. But you could find a way to simulate it (by running the code from RAM maybe) or just omit it, which also would be faster.
|
|
sasuke
PooP MonkeeH
Ninja Cat
Posts: 8
|
Post by sasuke on Jul 2, 2010 16:31:41 GMT -5
Slide? What are you talking about? If you press and hold down while running as big Mario, your supposed to be able to crouch and slide through tight spaces, like that area after the star in World 1-2.
|
|
oompa loompa
I AM THE GOVERNATOR
"Git 'Er Dun!"
Posts: 1,301
|
Post by oompa loompa on Jul 2, 2010 16:38:52 GMT -5
Yes, don't worry, the offer will still be around for you I played this game yesterday on Gens. Yea, this is a HUGE accomplishment , this is godlike
|
|
|
Post by Tom Maneiro on Jul 2, 2010 17:10:39 GMT -5
Slide? What are you talking about? If you press and hold down while running as big Mario, your supposed to be able to crouch and slide through tight spaces, like that area after the star in World 1-2. Bugzilla reports: WORKSFORME (Fusion 3.63x on Linux) Maybe you aren't running fast enough? You NEED to be running with some speed, otherwise it won't work
|
|
|
Post by LocalH on Jul 3, 2010 0:15:46 GMT -5
Holy shit dude, you did what I have wanted to do for a couple of years now but never had the time to. Instead of automatic code conversion, on-the-fly tile conversion, and PPU emulation, I was going to hand-convert the code, pre-convert the tiles, and rewrite the graphics code to be wholly Genesis-native. I was also going to special-case world 36 (via forcing the proper data values into the registers when world = 36), I hope you consider doing that in future versions. Would you like any assistance in generating a fairly suitable (and reasonably accurate) NES palette for the Genesis? If you post the data from your MD source showing how you handle the palette data (do you have values for all the NES colors, or only the ones actually used by the game?), then I'll be more than happy to take the time to get fairly accurate 24bpp RGB values, which I can then quantize to 9bpp. Also, I'd love to see the explanation for the bug that causes Cheep-Cheeps to vertically oscillate a bit. And the other one on 2-3/7-3 where occasionally non-coin tiles will have a flashing coin palette (not consistent, sometimes there are no tiles, I've seen up to three so far). There is one thing that I would consider to be a fairly big bug - sometimes on 5-4/6-4/7-4/8-4 there are apparently too many objects on the screen for the Genesis, and sprites disappear. You don't happen to have any sprites at X position 0 or 1, do you? If so, you might be inadvertently masking later sprites in the link list. It's especially noticeable in 5-4 and 6-4 near the power-up block (the firebar sometimes shrinks). Also when Bowser tosses out a ton of hammers. Anyway, this is already a bad ass port as it is now, it can only get better from here. I've recorded a full playthrough (42:44, not my best), and have already uploaded segment 1, you can watch it here. Hope you like the annotations, I tried not to overdo them.
|
|
riff
PooP MonkeeH
Posts: 1
|
Post by riff on Jul 3, 2010 2:13:29 GMT -5
Created an account just to post this and say congrats. It seems to run really smooth on my PSP, better than the NES one does. Like butter.
I just wanted to say a couple things.
Sliding is odd, it wasn't sliding for a while, but then it seems to have decided to start working after a few tries.
Also, I hope you can make separate versions when you do the palette "fixes". My first memory of Mario is on a crappy TV, so the dark washed out colors seem really "right" to me.
Keep up the good work, this is really interesting and pretty marvelous technically!
|
|
|
Post by exdeath on Jul 3, 2010 13:42:08 GMT -5
Woot , this is just Amazing !! Really !!! Very nice Works for all working on this project !
hope you works on it for fixing the bug which block the game in Real Hardware.
did you plain to make another Nes translations in a future ? did the convertor works for additionnal Nes mapper like the SN-ROM ( Mapper1) who have just a PRG (256k) and no CHR Rom ?
and
Very Good Works
|
|
|
Post by ScroGer on Jul 4, 2010 1:03:48 GMT -5
Usually I'm not interested in ports.. But you ported frecking Mario to the genny and thats an epic win! This must have been a lot of hard work. WOW
Nicely done Mairtrus!
|
|
|
Post by TheMVRules on Jul 4, 2010 9:50:31 GMT -5
Let's see what Nintendon't and their lawyers has to say about this.
*sorry*
|
|
|
Post by Tom Maneiro on Jul 4, 2010 13:14:44 GMT -5
Let's see what Nintendon't and their lawyers has to say about this. *sorry* As long as nobody posts this to Slashdot, we're safe (unlike what happened with a recent Lemmings port, which $ON¥ shot down because they're €VIL). Again: SEGA DOES WHAT NINTENDON'T
|
|
|
Post by exdeath on Jul 4, 2010 13:37:13 GMT -5
does the autor works in a new version ?
|
|
|
Post by Mairtrus on Jul 4, 2010 18:00:51 GMT -5
TheMVRules: I'm not really sure if the mappers are used for get more data or more core, because if is for more data, is really simple to simulate a mapper usage: create an offset adder, which will "bankswitch" between the differents datas Last night, I was reading the Metroid disassembly and all the code is really well structured, making east to quickly figure how should be recreated. exdeath: sorry, but I have no plans to make another conversions, that's why I will release all the tools I created for this project, and the code for the I/O functions, so people with more time can create more ports. About the mappers support, they are a sort of I/O functions, that's why I think it should not (in theory) simulate them. The translator is usefull for translate all the other code. But, I repeat, I have no idea if mappers were used to handle more code or more data... riff: don't worry, each future version I will release (until I change the graphics) will be in 2 palletes versions. LocalH: I'm not sure about why the minus world locks the game. I inever could did the trick to jump across the wall, so I can not compare the values loaded in the original value with the ones in my port... About the coin tiles in 2-3/7-3, I knew this since the release. Seems to be a problem with the bridge handler, but it's strange, since the bridges are objects like pipes, and both are handled and drawed by the same routines. I think that, and some other bugs (like the Cheep-Cheeps oscillating) are by the same reason: since the 6502 uses A LOT the stack to save temporary values (it has only 3 registers), I tried to save space and get more speed by avoiding those stack accesses saving some values in d3-d7, but those registers are used as auxiliars registers in some instructions that need them, so maybe that is what are hanging some parts of the code. Since I'm emulating the PPU, is IMPOSSIBLE to reach the sprite limit in the MD, but maybe the NES sprite list comes to the bounds. I don't know, I need to check it. But sometimes, the fireballs (the ones that Mario shots, or the ones from the firebars), tends to randomly dissapear... About the pallete... it was the first thing I convert before starting with the code (lot of time ago, the first time this project started, in january 2009!!), so yes, I need help. Here is the original NES NTSC pal: And here is the mine (image taked with KMod): which has the followings values: $0666, $0820, $0802, $0A02, $0604, $0404, $0206, $0026 $0020, $0042, $0040, $0240, $0420, $0000, $0000, $0222 $0CAA, $0C40, $0E42, $0C44, $0A28, $0608, $042A, $0048 $0044, $0064, $0080, $0282, $0860, $0222, $0000, $0000 $0ECC, $0EA4, $0E86, $0E88, $0E6C, $0C6E, $0A8E, $048C $00AA, $04CA, $04A6, $06A4, $0CA4, $0422, $0000, $0000 $0ECC, $0ECA, $0EAA, $0EAC, $0E8E, $0EAE, $0ECE, $0CCE $0ACE, $0AEC, $0CEA, $0CCA, $0EC8, $0CCC, $0000, $0000 P.S.: I'm not worried about Nintendo, they must be occupied combating the piracy around the Wii P.S.S: Tom, don't worry. I have plans to create a multilanguage page. I'm learning PHP for that purpose...
|
|
|
Post by Tom Maneiro on Jul 4, 2010 18:18:19 GMT -5
TheMVRules: I'm not really sure if the mappers are used for get more data or more core, because if is for more data, is really simple to simulate a mapper usage: create an offset adder, which will "bankswitch" between the differents datas Last night, I was reading the Metroid disassembly and all the code is really well structured, making east to quickly figure how should be recreated. exdeath: sorry, but I have no plans to make another conversions, that's why I will release all the tools I created for this project, and the code for the I/O functions, so people with more time can create more ports. About the mappers support, they are a sort of I/O functions, that's why I think it should not (in theory) simulate them. The translator is usefull for translate all the other code. But, I repeat, I have no idea if mappers were used to handle more code or more data... It will depend on the actual mapper. NES uses two kinds of memory (PRG for code and CHR for data). You can have PRG-ROM, PRG-RAM, CHR-ROM and even CHR-RAM... all in the same cart Look at this page: wiki.nesdev.com/w/index.php/CHR-ROM_vs_CHR-RAMSome mappers also provide additional hardware, like extra audio channels (Konami VRCx series come to my mind), but you should not worry too much about these unless you want to port a game that uses that extra gear. You will need to take note of each mapper (from Nintendo MMCx series to Mickey Mouse Logic(tm) used on bootleg multicarts), see how it works, and emulate/convert them to native 68K code. Fortunately, most (if not all) mappers are properly documented. But mapper porting could be very different for each game, even if you have games that (ab)use the same mapper. Lots of fun, indeed
|
|
plee
PooP MonkeeH
Posts: 1
|
Post by plee on Jul 4, 2010 20:08:22 GMT -5
Can someone explain why this will not work on a real Genesis? On my dev. board, it gets stuck in a loop at $208 because $2ae cmp.w $18e,d7 $2b2 bne $208 But if I jump around that... it crashes right after setting the VDP value with $e1ca move.w #$8f02,4(a6) $e1d0 move.l #$40000000,4(a6) <--- Hope this helps... Paul
|
|
|
Post by LocalH on Jul 4, 2010 20:21:44 GMT -5
Mairtrus, Just in case you read this before I decide to hack out your checksum code so that I can test out my RGB values and see if any need tweaking, would you be so kind as to PM me the necessary hex patch? I already found where you've got the palette. Edit: Never mind, I already got it. I have a palette here that looks pretty good, two actually - one for the YUV palette used by the home console, and one for the RGB palette that the Playchoice-10 unit used (and the same palette that the sharp RGB screenshots in Nintendo Power used). YUV palette: RGB palette: YUV palette (with Blargg's NTSC filter): RGB palette (with Blargg's NTSC filter): If you like these colors, Mairtrus, I'll be happy to format the palette values in whatever format you need it in, just let me know.
|
|