Kuribo64
Views: 19,851,007 Home | Forums | Uploader | Wiki | Object databases | IRC
Rules/FAQ | Memberlist | Calendar | Stats | Online users | Last posts | Search
03-28-24 02:40 PM
Guest:

0 users reading amiibo | 1 bot

Main - WiiU game hacking and emulation - amiibo Hide post layouts | New reply


HEYimHeroic
Posted on 09-15-18 06:33 PM (rev. 4 of 03-12-19 12:38 AM) Link | #95933
didn't know where to put this, so i thought this would be a good place.

so, this thread will basically be a documentation of amiibo stuff. specifically, bytes 84-91 of amiibo .bin files (or 54-5B in hex. whenever i refer to byte 84, i mean 54 in hex. byte 90, 5A in hex, and so on)

so, to start off, it seems like the wii u, switch, and 3ds all refer to these bytes on a digit-by-digit basis.
[thumbnail]
this example is of the Mario amiibo from the Super Smash Bros. 4 series lineup.

the first three digits (as with most of the rest of them in this example) are 000, signifying the game series the character is from. in this case, that series is Super Mario.

the next digit is 0, meaning this amiibo is the main character of the game series. the game series is Super Mario (000) meaning the character must be Mario himself.

the next two bytes (86 and 87) are both 00. this seems to be an unknown set of bytes as almost every amiibo have these set as 00. keyword: almost. the Super Mario Cereal amiibo (otherwise known as the "Delicious amiibo") has byte 87 set to 01. what does this mean? i have no clue. it likely does nothing, and is simply a "this amiibo came from a cereal box" number.
another exception to these two bytes is the Skylanders amiibo lineup. all Skylanders amiibo (Bowser, Dark Bowser, Donkey Kong, and Dark Donkey Kong) have byte 86 set to FF. this is likely set to FF to show that these amiibo are Skylanders and for another company/set of games entirely.

EDIT: it appears that some Splatoon series amiibo have byte 86 set to 02. again, this is still unknown, but likely another "this is from x series" value.

moving onto bytes 88 and 89 (the second row in this picture), these two signify what type of "character" this amiibo is. the character previously established was Mario, because the series is from Super Mario, so these two bytes tell the system what varient of Mario is this. these bytes in this example are 0000, to show the "default", or normal, character.

byte 90 tells the system what amiibo lineup this amiibo comes from. byte 90 is 00 in this example, showing the Super Smash Bros. 4 amiibo lineup.

and finally, last and certainly least, byte 91. from what i've seen, byte 91 is always 02. even with special amiibo like the Super Mario Cereal amiibo, it is always 02. this does mean that the Super Smash Bros. 4 Mario amiibo is the very first amiibo to be made, despite all box and promotional art showing the Mario Party 10 Mario amiibo.

we should entirely ignore bytes 86, 87, and 91, as i will in the rest of this post.

that example was pretty bland with a lot of zeros, so let me show you another example:
[thumbnail]
this amiibo is the 8-bit Mario - Modern Colors amiibo from the Super Mario Bros. 30th Anniversary lineup.

the first four digits are all 0. the first three showing the game is Super Mario and the fourth showing the character is the protagonist, aka Mario.

however, things start to change on bytes 88 and 89. these two are 0238. earlier, i mentioned this was the variant of the character. 0238 for Mario tells the game that this amiibo is 8-bit Mario - Modern Colors.

byte 90 is now 06. earlier, i mentioned this was the amiibo lineup number, so the Super Mario Bros. 30th Anniversary amiibo lineup has a byte 90 of 06.

one more example, this time from a different game:
[thumbnail]
this is the Waddle Dee amiibo from the Kirby lineup.

the first three digits starting in byte 84 is 1F0, signifying the Kirby games.

the fourth digit is 3, to show that Waddle Dee is the fourth most important character in the Kirby games. Link from the Legend of Zelda is also 0 since he is the protagonist, Luigi and Princess Zelda are both 1 since they're the 2nd most important in their respective games, and so on.

bytes 88 and 89 are 0257. i mentioned earlier that these are to make a variation of the character. so why is Waddle Dee 0257? i have no idea. it could be that this number was used incorrectly by HAL (or whoever made the Kirby amiibo) as Kirby himself has this number set to 0254, King Dedede to 0255, and Meta Knight to 0256. (and yes, their character values are set to 0, 1, and 2 respectively as well) however, we can't know for sure.

and finally, byte 90 is set to 0C, the Kirby series lineup of amiibo.

phew. that's a lot, but it's all done and documented. this is likely how people spoofed amiibo before they were released, by simply changing the bytes to match what was in a game's files. you can use this documentation for that garbage, OR you can do something way cooler and make your very own amiibo. try modding a simple game such as Super Mario Maker to support this brand new amiibo you made with giving the player a costume. something like that would be way more impressive than piracy c; so use at your own digression.

LeftyGreenMario
Posted on 09-17-18 04:44 AM Link | #95942
I'm no coding expert but lmao if I can 3D print something, paint it good (which I can't, have no experience in painting figures), and then turn it into a pseudo amiibo.

HEYimHeroic
Posted on 10-02-18 04:30 PM Link | #96086
you can also do something like print out fronts and backs to card-shaped papers with designs of the character, then stick the new amiibo NFC chip between them, glue them, and then mod a game (like mario maker) to work with that amiibo.

____________________
yeah

HEYimHeroic
Posted on 11-19-18 08:18 PM (rev. 4 of 03-12-19 12:44 AM) Link | #96429
okay, so this is an addition to the topic of "amiibo", not necessarily Wii U stuff. this post will be talking about Super Mario Odyssey, which is obviously not on the Wii U but instead the Switch, however considering the information in the original post still applies and this thread is more about amiibo, i figured it'd be fine to post this here.

if you want to follow along at home yourself, grab your dump of Super Mario Odyssey and extract /romfs/LocalizedData/USen/MessageData/SystemMessage.szs, then open AmiiboName.msbt with really any editor since we will only be reading from this file and not actually editing anything. (recommendation: MSBT Editor Reloaded) if you have a region other than USen (USA english) then that works just as well, as long as you can read the language.

OKAY, with all that out of the way, let's get started:
[thumbnail]
this is the Super Smash Bros. series Mario amiibo. remember him? well, take a look at the first string name in AmiiboName.msbt. "id_0x000000".

this is pretty simple: you can ignore the "id_0x" part as that's completely irrelevant always. the six 0's is what we're focusing on.

a basic explanation: the six numbers after id_0x are bytes 84, 85, and 86 of the amiibo .bin file (or bytes 54, 55, and 56 in HEX). so, since Mario is from the Super Mario game series, the first three digits are 000, and since Mario is the protagonist, the fourth digit is 0, and then the last two (which is apparently the "form"? not sure) are also 00. so, we have 000-0-00, which is exactly what the string name is: id_0x"000-0-00".

let's try this with an amiibo that isn't all 0's:
[thumbnail]
this is the Waddle Dee amiibo from the Kirby lineup.

now, take a look at string id_0x1f0300. let's dissect this:
"1f0". we know that if these six numbers really match up like how i said previously, then every Kirby game series amiibo should have byte 84 and the first half of byte 85 be "1F 0". take a look at the image above, and of course, it is. then, the next number should be 3, since Waddle Dee is the 4th most important character in the Kirby series. again, the image proves this. (and then byte 86 as 00 again)

so, to recap: game series: 1F 0, character: 3, byte 86: 00. that's what shown in the image, and the string id_0x1f0300 shows exactly this. the amiibo name attached to this string is "Waddle Dee", so we know it matches.

now, here's something a bit trickier:
[thumbnail]
this is the Bowser (Wedding) amiibo from the Super Mario Party(?) lineup.

ah, yes, this amiibo is very special: we've learned that Super Mario Odyssey identifies these amiibo by bytes 84, 85, and 86. however, there is a completely different entry with Bowser and Bowser (Wedding) (along with Mario and Mario (Wedding) and Peach and Peach (Wedding)). while this would be fine, notice this: i don't have an image of Bowser's bytes, but trust me when i say the only thing differentiating Bowser from Bowser (Wedding) is bytes 88 and 89.

so... how does Mario Odyssey know that Bowser and Bowser (Wedding) are different when the only three bytes they check are exactly the same?

well, if you really were following along at home, then you would notice that there are "two" id_0x000500 strings. the difference is, one is named id_0x000500 and the other is named id_0x000500_883. id_0x000500 is Bowser and id_0x000500_883 is Bowser (Wedding). (Mario (Wedding) is id_0x000000_881 and Peach (Wedding) is id_0x000200_882)

so, what is 883? well, let's look at Bowser (Wedding)'s 88 and 89 bytes. they are 03 73. what does that have to do with 883?

well... if we convert 0373 from HEX to DEC, we get... you guessed it: 883!

so, Bowser's string name is id_0x000500, while Bowser (Wedding)'s string name is id_0x000500_883.

when the string name has _ZZZ at the end, the ZZZ is really just bytes 88 and 89 converted to decimal. fascinating, huh? yes, this DOES mean that when we get a proper text editor for Super Mario Odyssey, we now can simply add new strings to SystemMessage.szs > AmiiboName.msbt and have any amiibo we want to have a custom name!

(fun fact: while you're in this file, there are three "unknown" strings at the bottom; this is what Uncle Amiibo calls amiibo that he doesn't recognize! these amiibo include basically every new amiibo that came out after Odyssey did, along with some others)


Main - WiiU game hacking and emulation - amiibo Hide post layouts | New reply

Page rendered in 0.043 seconds. (2048KB of memory used)
MySQL - queries: 28, rows: 204/204, time: 0.013 seconds.
[powered by Acmlm] Acmlmboard 2.064 (2018-07-20)
© 2005-2008 Acmlm, Xkeeper, blackhole89 et al.