Pages: 1
Posted on 08-29-15, 11:43 pm (rev. 3 by ImageBot on 11-21-16, 03:16 am)


Karma: 218
Posts: 20/22
Since: 10-18-12
If you have played NSMBDS for years, or just a couple of minutes in Mario vs. Luigi's Pipe stage, you have at least once got mad at this annoying "feature" that keeps stealing your momentum:


I don't know what to call it other than "edge grab", as this "feature" plays a cool animation of Mario or Luigi climbing over a tile edge, if you are lucky, which you kinda always are when precision jumping. Now, the animation is not that bad, but Mario/Luigi comes to a complete stop in the process!

If you have played SMB3 or New Super Mario Bros. Wii, you'll never get stopped by a tile during precision jumping. So let's get rid of this thing and enjoy NSMBDS, cause it almost feels like a precision platform game!

I can only remove this by using DeSmuME emulator's cheats (menu: Tools->Cheats->List):
Add a new cheat by pressing "internal" button, and input...

Address: 103754
Value: -509607936
Select size: 4 bytes.

Oh the AR code becomes: 02103754 E1A00000. Maybe you can put this code in Action Replay?

So this disabled the turing on of the bit flag 0x1000 which tells Mario/Luigi to animate and stop his velocity.

The code is located in the large virtual member subroutine 21031B4 for Player Collision:
loc_210373C: LDR R1, [R9,#0x64] @ Load current Y pos LDR R0, [R9,#0x74] @ Load previous Y pos CMP R1, R0 @ Jump if new <= old BLE loc_210375C ANDS R0, R7, #0x200 @ And if not slope/edge tile! LDREQ R0, [R9,#0x788] ORREQ R0, R0, #0x1000 @ THEN DO the Tile edge bug!!! STREQ R0, [R9,#0x788] loc_210375C:


In C++ this code would look like this:
// If not running upwards a slope, but moved upwards from previous frame, // set the flag to cause edge grab (which is done later at the time of landing from a jump) if ((this->vecPos.y > this->vecPreviousPos.y) && (CollisionResultFlags & TILE_FLOOR_SLOPE) == 0) { this->OtherFlags |= 0x1000; // Edge grab }


I have not seen any other errors from removing this flag, and I hope there won't be any!

You should play through the whole game and feel how much better it plays. Sadly, it is still kinda messad up compared to SMB3 and NSMBWii, and there is no quick fixes. But this one is a huge step in the right direction

/Poweline
Posted on 08-30-15, 07:27 am (rev. 1 by  KingYoshi on 08-30-15, 07:28 am)
Hammer Brother


Karma: 3494
Posts: 524/1066
Since: 11-29-11
I've never noticed this actually. But I can imagine that 'edge grab' is annoying, so I think this is a nice ASM Hack (although I haven't used it yet).
Posted on 08-30-15, 07:50 am


Karma: 19277
Posts: 195/1090
Since: 04-02-13
I don't think you can call this a bug fix, considering it's very obviously a deliberate mechanic.
Posted on 08-30-15, 04:25 pm (rev. 1 by Powerline on 08-30-15, 04:27 pm)


Karma: 218
Posts: 21/22
Since: 10-18-12
Yea, it is not a bug... But long before I knew that, and while searching for a fix, I thought it was a bug because no other major 2D Mario games had this annoying "feature", and it seemed random when it happened. Anyway, the topic name "Bug fix" stays because it is a fix of an annoying random thing (good description of a bug), and I want as many people to know about it. Any other topic description, like "Feature fix" wouldn't really get attention from people in the same way.

Having this clear, there are still other "issues" that could potentially be fixed, like Mario/Luigi auto-turning in the direction of a jump while landing (fixed in NSMBWii), and slope force values being opposite from NSMBWii, making Mario/Luigi walk slower downhill and faster uphill, when that clearly feels and looks wrong.
Posted on 08-30-15, 04:40 pm
Administrator

Karma: 5294
Posts: 1653/2699
Since: 01-17-13
It's still confusing, and actually I don't see anything else than 'feature riddance' that would fit (it sucks as thread title though).
Posted on 08-30-15, 06:36 pm
Birdo


Karma: 2612
Posts: 1443/2070
Since: 06-26-11
Its not confusing as soon as you read the thread though. Nice work Powerline!
Posted on 09-01-15, 02:56 pm
☭ coffee and cream


Karma: 10332
Posts: 1771/2763
Since: 06-26-11
Nice


For more efficiency, NOP out all three instructions in the ldreq/orreq/streq group. But eh, I'm nitpicking
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 09-17-15, 05:35 pm


Karma: 218
Posts: 22/22
Since: 10-18-12
I have been playing Mario Vs Luigi against my wife for hours every day with both NDS flashcarts having the Action Replay code 02103754 E1A00000 set. It has never desynced once! It is a much better gameplay experience
Posted on 09-18-15, 09:09 am (rev. 1 by  Hiccup on 07-24-16, 09:48 am)
Birdo


Karma: 2612
Posts: 1448/2070
Since: 06-26-11
(nvm)
Pages: 1