Language…
15 users online: 0doto, BeanJammin, crocodileman94, DimeR, fanfan21, neidoodle, NewPointless, OEO6, PixelFhacks, Saela, ShoopDaWhoop, will___, X11Gbyte, xMANGRAVYx, zAce08xZ - Guests: 339 - Bots: 122
Users: 70,241 (2,561 active)
Latest user: Rimniceanum

Mario & Friends Character Switching

SMW Patches → Mario & Friends Character Switching

Submission Details

Name: Mario & Friends Character Switching
Author: CircleFriendo
Added:
Tool: Asar
Requires Free Space: Yes
Bug Fix: No
Featured: No
Description: This patch allows the player to switch between multiple characters using the L/R buttons. Each character has their own sprite, physics, and abilities.

Includes Mario, Luigi, Peach, Daisy, Wario, and Waluigi.

Mario has standard controls. Luigi has floaty jumps and a ground pound. Daisy has shorter jumps with a flutter jump. Peach is slow but accelerates fast and floats. Wario is heavy and can dash. Waluigi has short floaty jumps and a boost jump.

Featured in Mario & Friends: The Ghost's Gallery, a HackJam entry by sio_kedelic, HamOfJustice and CircleFriendo.
Tags: abilities boost dynamic jump lorom physics player pose sa-1 yoshi
Comments: 27 (jump to comments)
Download 118.57 KiB | 886 downloads

Screenshots

Comments (27)

zAce08xZ Link
Originally posted by CircleFriendo
Did you apply the UberASM?

You need to at least put defaultcharacter.asm in gamemode 05 to load mario's graphics and physics before the intro plays.
yes it's still giving these strange graphics here's the code I used
Code
gamemode:
05  defaultcharacter.asm
13  preloadname.asm
14  noswitchmode.asm
1B  defaultphysics.asm
zAce08xZ Link
Do I have to apply gm14 before inserting the patch? I currently, followed the readme tutorial and this appeared on my ROM:


I am using SA-1 Pack v1.40, also decided to try without sa1, but this error still persists.
CircleFriendo Author Link
Did you apply the UberASM?

You need to at least put defaultcharacter.asm in gamemode 05 to load mario's graphics and physics before the intro plays.
Rapha2k Link
Is there a channel where we can watch a tutorial to learn how to insert the patch?
newsuperhackboys Link
Originally posted by CircleFriendo
Yeah, you'd just need to edit float.asm and flutterjump.asm in UberASM/library


I know about that. I know where the moves are located. I just don't know where the code for using the A button is located. Even if I knew where that is, it was hard for me to determine what code relates to a certain button. I did search in the memory map but it wasn't that helpful.
newsuperhackboys Link
Is it possible to make Peach and Daisy float by holding B instead of A?
CircleFriendo Author Link
Yeah, you'd just need to edit float.asm and flutterjump.asm in UberASM/library
dtx gamer Link
i want a full process video please
JulesTheDemon Link
Could you put together a guide for how to actually patch this? I can't make heads nor tails of it, and I'm pretty sure a lot of others can't either.
CircleFriendo Author Link
I tried to include a guide for installing in the README, but I understand it's still pretty complicated. The basic gist is:
1. There are two patches in the patches folder that need to be applied to your rom using Asar.
2. All the UberASM files need to be copied into your UberASM folder. Copy the characterlist directory into your main UberASM folder, and then all the files in the gamemode, level, and library folders get copied into the same folders in your UberASM.
3. Assign the UberASM files in your list.txt. The default configuration would look like this:
Code
gamemode:
05  defaultcharacter.asm
0E  overworldswitch.asm
13  preloadname.asm
14  switchmode.asm
1B  defaultphysics.asm
JulesTheDemon Link
I've been trying for a few weeks and.... no luck. It keeps either telling me I need to expand the ROM first (did that) and when it gets past That it tells me there's too many .ASM files. >_<
The ultimate Julio Link
can I make everyone have only Mario's abilities?
CircleFriendo Author Link
If you want to switch the character graphics without altering the physics or abilities, you can use the playergraphics patch by itself:
Patch playergraphics.asm but not physics.asm.
Copy the characterlist directory into you UberASM folder.
Add names.asm and switch.asm to your UberASM library folder.
Use the following UberASM in gamemode:
05 defaultcharacter.asm
0E overworldswitch.asm
13 preloadname.asm
14 switchmode.asm
You will need to edit defaultcharacter.asm and switchmode.asm to remove everything that references the physics and abilities, and leave only the switching code and names code.
 MarioFanGamer Link
Moderated with:
  • Lunar Magic v3.33
  • SA-1 Pack v1.40
  • Asar v1.81
  • UberASM Tool v1.6
  • BSNES v115
Removed sa1 tag, added sa-1 and yoshi tags.

This may be one of the best different player patches since you can easily change the player's physics to your need even if it's only a clone of Mario.
Do note that you must have one of the gamemode codes installed for GM14 as it handles the phyisics and the like so if you don't want to change the PC however you want, you must use noswitchmode.asm. Relatedly, peach-wario.asm is incompatible with switchmode.asm as the latter messes with the former.

However, I did notice a couple issues which I ultimately let them pass by the complexity of the patch (especially since I reported the author but didn't log in to SMWC again):
  • The first one (and biggest one) is the unoptimised NMI code. As of right now, it takes 86 cycles to execute but it's done using a branch chain as well as storing some data redundantly (a side effect is that it always takes 10 cycles per player) and properly optimising it (though it requires some indexing trickery) allows you to lower it down to 77 cycles (if you include the fire flower palette, it's 126 vs. 86 cycles). Ultimately, this is a loss of 0.2 scanlines which isn't that much but this should be fixed for the next update.
  • Relatedly, the UberASM code also uses a branch chain but by since the main loop code is less sensible to wasted cycles, it's much less of an issue here (still fix it, please).
  • The dynamic 8x8 tile always loads from GFX32 which is why Peach's cape is miscoloured on one tile during cape flight.
LeoBRTTorres Link
I can't patch the SMW rom, I tried everything. Can somebody help me?
Blizzard Buffalo Link
Interesting concept, I would add Toad and Toadette if it were compatible with 32x32

And also an alternative switching system that only lets the player switch in the overworld
CircleFriendo Author Link
Originally posted by Brutapode89
Great! Will be it possible with 32x32 characters?

That would require a major rewrite unfortunately.
Brutapode89 Link
Great! Will be it possible with 32x32 characters?
Rykon-V73 Link
I guess something like this was used in OBD's hack. An SA-1 version is needed, too.
CircleFriendo Author Link
Originally posted by ZachJamesGames
One thing I am still trying to figure out is how you could go about "unlocking" these characters instead of having everyone available from the start.


The best way to make characters unlockable is to go into library/switch.asm and replace the switch routine with a custom routine which checks FreeRAM to see which characters have been unlocked. It can get kinda complicated and the implementation depends on how you're doing character unlocks, which is why it wasn't included by default.
ZachJamesGames Link
Been playing with this a little bit and it's really fun and so amazing to be able to switch between characters and have different movesets. It's almost like a unique "Power Up" patch with all the different moves available :D

One thing I am still trying to figure out is how you could go about "unlocking" these characters instead of having everyone available from the start.

If this patch was made compatible with the 8x8 Tiles DMA-er that would be incredible. I am still trying to teach myself ASM so I cannot do this myself, but maybe one day... :)
sio-kedelic Link
This asm is so fun to design around and the character switching feels so natural. Can't wait to see other people design with this!
CircleFriendo Author Link
Originally posted by ZachJamesGames
Is it possible to turn off certain powers on characters? Like disabling Luigi's ground pound? Additionally, could Luigi's ground pound be added to Mario or another character?


yeah you can add or remove powers by editing the UberASM
ZachJamesGames Link
Is it possible to turn off certain powers on characters? Like disabling Luigi's ground pound? Additionally, could Luigi's ground pound be added to Mario or another character?

Thanks! This looks so awesome! A long overdue patchh :D
CircleFriendo Author Link
Originally posted by simon.caio
Wow, nice! Does this also change the characters on the overworld?

yes it does
simon.caio Link
Wow, nice! Does this also change the characters on the overworld?
FedoraFriday Link
Sonic Heroes, but SMW
I'd like to see a kaizo hack with this concept.