After hours of poring over memory addresses in the original SMB and SMB2j, I've pretty much figured out exactly how all aspects of player physics work in both games (except the wind in SMB2j, that still seems pretty much random). You can see a complete guide to it (770kB, 800x6,000px PNG) here. I'd like to see a few things implemented better in SMBC; mainly stopping/skidding and air physics, and I wanted to see exactly how they worked in the original games before saying anything. If anyone has any questions (other than how hex works), fire away. I'll probably come up with a similar guide to enemy physics at some point in the future. EDIT: Check it out, here's a guide to SMB3 physics as well, for the lulz! (300kB, 600x3800px) EDIT: And here, a supplemental SMA4 Luigi physics guide!
This is awesome; you are the best. I don't know much about flash games, but hopefully having all of the relevant values spelled out like this will make it easy to implement. Incidentally, if it's not too much trouble . . . after you do enemy physics, could you do a guide for SMB3 Mario physics? And, if possible, SMA4 Luigi physics?
Potentially; Super Mario Bros. 3 and onward didn't use subpixels and such as much, and there's a lot more randomness involved, from what I've heard. I don't think SMA4 Luigi actually controls any differently outside of the e-Reader levels, despite the "floating" noise suggesting otherwise.
I have noticed that in SMB, when you jump and pick up an item in mid air, your vertical velocity is suddenly cut down even if you just started the jump. I don't think this happens in SMBC but honestly the way SMB handles that is confusing and has killed me plenty of times. I don't usually play SMB or Mario in Crossover because of how hard he is to control.
Well, if changing something to be more SMB-faithful would hinder playability, I think we can leave it out. Apart from that though, we ought to be as accurate as possible.
I did forget to mention that; if you collect a powerup in midair, it no longer lets you hold down A to reduce the gravity, effectively cutting off vertical momentum. That is honestly something I could live without in SMBC, though.
Incidentally, I do have pretty much all of SMB3's physics figured out as well, Theoman. Turns out it's a bit more straightforward than SMB, and easier to explain as well. I'll probably post it within the next couple of days, once I get it nice and organized.
This is a very nice guide. I love how detailed it is. I don't really care bout SMBA4 since I only want to see the nes games physics. I would like to see just SMB Mario, SMB2J Luigi and SMB3 Mario.
SMA4 is just the GBA version of SMB3. It should have the same physics for Mario. I'm interested to see how Luigi's physics are different.
Since SMA4's not going to have the same memory addresses (I should think), I'm not going to bother with that, sorry. The only change that was made to Mario's physics from SMB3 to SMA4 that I can definitely notice in playing is that running on the ground resets Raccoon/Tanooki Mario's flight timer. That'll make more sense once I finish the SMB3 guide, but any people that have played both versions will probably know what I mean.
Yeah, it was fun to keep landing in a run and taking off again right away . . . Anyway, I guess for Luigi we could just take all the differences between his SMB2J values and Mario's, and then apply them to Mario's SMB3 values, or something like that.
Not sure if his ground speeds are actually any different than Mario's, to be honest. At any rate, I've finished the guide, you can see it here (300kB, 600x3800px). I used smaller fonts and such this time, and I think it looks a bit better. Again, if you have any questions, shout 'em out (again, other than how hexadecimal works). One thing that's for sure is that SMB3 uses a ton more frame counters/timers than the original SMB did; there's a host of others that I didn't mention as they're not really related to Mario's physics directly. At any rate, here's hoping for a playable SMB3-style Mario at some point in the future!
I made a topic just for that very suggestion. http://www.explodingrabbit.com/forum/threads/mario-smb3-discussion.14571/
Well, turns out the SMA4 memory values for X and Y speed were stupidly easy to find, so I probably will add Luigi's physics to that guide. One thing that I can confirm is that without the proper e-Switch or playing in e-Reader mode, Luigi's physics are identical to Mario's (despite all that midair kicking and such suggesting otherwise). I'll update the guide pretty soon.
Well, if we can get the values for e-Switched Luigi, they should be used for SMB3 Luigi in SMBC. What I'd really like is to have a Luigi that plays like an SMB3-ified version of SMBC's current Luigi in some way, and I'd prefer if it came from an official version of SMB3.
Well, I don't know what to think of these findings, but apparently Luigi's jump height is actually lower than Mario's in most cases, despite his having lower gravity. I verified the heights I got for both characters, and it seems to hold up (Luigi just barely gets on top of blocks 6 blocks high with a sprinting jump, and even then, he clips the edge by a couple of pixels, whereas Mario can easily clear them.) Here's the link; it's a much smaller image, so I don't feel the need to warn about size. EDIT: Also to make something clear concerning the original SMB3 guide; the "Flying Distances" mentioned at the bottom are only for up until Mario's flight timer runs out. In reality, he would be able to cover over three additional screens horizontally while descending if he held "B" and left/right and mashed "A" the whole way.