From 432bb59502c3bd5dac4cdf8752cae46dec0b2c38 Mon Sep 17 00:00:00 2001 From: averne Date: Tue, 5 Feb 2019 23:43:43 +0100 Subject: [PATCH] Move char switch/case to main.c, remove duplicate goto, other misc changes --- nfc/source/amiibo_char.h | 567 -------------------------------------- nfc/source/main.c | 571 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 565 insertions(+), 573 deletions(-) delete mode 100644 nfc/source/amiibo_char.h diff --git a/nfc/source/amiibo_char.h b/nfc/source/amiibo_char.h deleted file mode 100644 index c966718..0000000 --- a/nfc/source/amiibo_char.h +++ /dev/null @@ -1,567 +0,0 @@ -#ifndef _AMIIBO_CHAR_H -#define _AMIIBO_CHAR_H - -#include - -static char *get_amiibo_char(const NfpuModelInfo model_info) { - u16 char_id = model_info.amiibo_id[0] << 8 | model_info.amiibo_id[1]; // Reverse byte order for convenience - switch (char_id) { - case 0x0000: return "Mario"; - case 0x0001: return "Luigi"; - case 0x0002: return "Peach"; - case 0x0003: return "Yoshi"; - case 0x0004: return "Rosalina"; - case 0x0005: return "Bowser"; - case 0x0006: return "Bowser Jr."; - case 0x0007: return "Wario"; - case 0x0008: return "Donkey Kong"; - case 0x0009: return "Diddy Kong"; - case 0x000a: return "Toad"; - case 0x0013: return "Daisy"; - case 0x0014: return "Waluigi"; - case 0x0015: return "Goomba"; - case 0x0017: return "Boo"; - case 0x0023: return "Koopa Troopa"; - case 0x0080: return "Poochy"; - case 0x0100: return "Link"; - case 0x0101: return "Zelda"; - case 0x0102: return "Ganon"; - case 0x0103: return "Midna"; - case 0x0105: return "Daruk"; - case 0x0106: return "Urbosa"; - case 0x0107: return "Mipha"; - case 0x0108: return "Revali"; - case 0x0140: return "Guardian"; - case 0x0141: return "Bokoblin"; - case 0x0180: return "Villager"; - case 0x0181: return "Isabelle"; - case 0x0182: return "K.K. Slider"; - case 0x0183: return "Tom Nook"; - case 0x0184: return "Timmy & Tommy"; - case 0x0185: return "Timmy"; - case 0x0186: return "Tommy"; - case 0x0187: return "Sable"; - case 0x0188: return "Mabel"; - case 0x0189: return "Labelle"; - case 0x018a: return "Reese"; - case 0x018b: return "Cyrus"; - case 0x018c: return "Digby"; - case 0x018d: return "Rover"; - case 0x018e: return "Mr. Resetti"; - case 0x018f: return "Don Resetti"; - case 0x0190: return "Brewster"; - case 0x0191: return "Harriet"; - case 0x0192: return "Blathers"; - case 0x0193: return "Celeste"; - case 0x0194: return "Kicks"; - case 0x0195: return "Porter"; - case 0x0196: return "Kapp'n"; - case 0x0197: return "Leilani"; - case 0x0198: return "Lelia"; - case 0x0199: return "Grams"; - case 0x019a: return "Chip"; - case 0x019b: return "Nat"; - case 0x019c: return "Phineas"; - case 0x019d: return "Copper"; - case 0x019e: return "Booker"; - case 0x019f: return "Pete"; - case 0x01a0: return "Pelly"; - case 0x01a1: return "Phyllis"; - case 0x01a2: return "Gulliver"; - case 0x01a3: return "Joan"; - case 0x01a4: return "Pascal"; - case 0x01a5: return "Katarina"; - case 0x01a6: return "Sahara"; - case 0x01a7: return "Wendell"; - case 0x01a8: return "Redd"; - case 0x01a9: return "Gracie"; - case 0x01aa: return "Lyle"; - case 0x01ab: return "Pave"; - case 0x01ac: return "Zipper"; - case 0x01ad: return "Jack"; - case 0x01ae: return "Franklin"; - case 0x01af: return "Jingle"; - case 0x01b0: return "Tortimer"; - case 0x01b1: return "Dr. Shrunk"; - case 0x01b3: return "Blanca"; - case 0x01b4: return "Leif"; - case 0x01b5: return "Luna"; - case 0x01b6: return "Katie"; - case 0x01c1: return "Lottie"; - case 0x0200: return "Cyrano"; - case 0x0201: return "Antonio"; - case 0x0202: return "Pango"; - case 0x0203: return "Anabelle"; - case 0x0206: return "Snooty"; - case 0x0208: return "Annalisa"; - case 0x0209: return "Olaf"; - case 0x0214: return "Teddy"; - case 0x0215: return "Pinky"; - case 0x0216: return "Curt"; - case 0x0217: return "Chow"; - case 0x0219: return "Nate"; - case 0x021a: return "Groucho"; - case 0x021b: return "Tutu"; - case 0x021c: return "Ursala"; - case 0x021d: return "Grizzly"; - case 0x021e: return "Puala"; - case 0x021f: return "Ike"; - case 0x0220: return "Charlise"; - case 0x0221: return "Beardo"; - case 0x0222: return "Klaus"; - case 0x022d: return "Jay"; - case 0x022e: return "Robin"; - case 0x022f: return "Anchovy"; - case 0x0230: return "Twiggy"; - case 0x0231: return "Jitters"; - case 0x0232: return "Piper"; - case 0x0233: return "Admiral"; - case 0x0235: return "Midge"; - case 0x0238: return "Jacob"; - case 0x023c: return "Lucha"; - case 0x023d: return "Jacques"; - case 0x023e: return "Peck"; - case 0x023f: return "Sparro"; - case 0x024a: return "Angus"; - case 0x024b: return "Rodeo"; - case 0x024d: return "Stu"; - case 0x024f: return "T-Bone"; - case 0x0251: return "Coach"; - case 0x0252: return "Vic"; - case 0x025d: return "Bob"; - case 0x025e: return "Mitzi"; - case 0x025f: return "Rosie"; - case 0x0260: return "Olivia"; - case 0x0261: return "Kiki"; - case 0x0262: return "Tangy"; - case 0x0263: return "Punchy"; - case 0x0264: return "Purrl"; - case 0x0265: return "Moe"; - case 0x0266: return "Kabuki"; - case 0x0267: return "Kid Cat"; - case 0x0268: return "Monique"; - case 0x0269: return "Tabby"; - case 0x026a: return "Stinky"; - case 0x026b: return "Kitty"; - case 0x026c: return "Tom"; - case 0x026d: return "Merry"; - case 0x026e: return "Felicity"; - case 0x026f: return "Lolly"; - case 0x0270: return "Ankha"; - case 0x0271: return "Rudy"; - case 0x0272: return "Katt"; - case 0x027d: return "Bluebear"; - case 0x027e: return "Maple"; - case 0x027f: return "Poncho"; - case 0x0280: return "Pudge"; - case 0x0281: return "Kody"; - case 0x0282: return "Stitches"; - case 0x0283: return "Vladimir"; - case 0x0284: return "Murphy"; - case 0x0286: return "Olive"; - case 0x0287: return "Cheri"; - case 0x028a: return "June"; - case 0x028b: return "Pekoe"; - case 0x028c: return "Chester"; - case 0x028d: return "Barold"; - case 0x028e: return "Tammy"; - case 0x028f: return "Marty"; - case 0x0299: return "Goose"; - case 0x029a: return "Benedict"; - case 0x029b: return "Egbert"; - case 0x029e: return "Ava"; - case 0x02a2: return "Becky"; - case 0x02a3: return "Plucky"; - case 0x02a4: return "Knox"; - case 0x02a5: return "Broffina"; - case 0x02a6: return "Ken"; - case 0x02b1: return "Patty"; - case 0x02b2: return "Tipper"; - case 0x02b7: return "Norma"; - case 0x02b8: return "Naomi"; - case 0x02c3: return "Alfonso"; - case 0x02c4: return "Alli"; - case 0x02c5: return "Boots"; - case 0x02c7: return "Del"; - case 0x02c9: return "Sly"; - case 0x02ca: return "Gayle"; - case 0x02cb: return "Drago"; - case 0x02d6: return "Fauna"; - case 0x02d7: return "Bam"; - case 0x02d8: return "Zell"; - case 0x02d9: return "Bruce"; - case 0x02da: return "Deidre"; - case 0x02db: return "Lopez"; - case 0x02dc: return "Fuchsia"; - case 0x02dd: return "Beau"; - case 0x02de: return "Diana"; - case 0x02df: return "Erik"; - case 0x02e0: return "Chelsea"; - case 0x02ea: return "Goldie"; - case 0x02eb: return "Butch"; - case 0x02ec: return "Lucky"; - case 0x02ed: return "Biskit"; - case 0x02ee: return "Bones"; - case 0x02ef: return "Portia"; - case 0x02f0: return "Walker"; - case 0x02f1: return "Daisy"; - case 0x02f2: return "Cookie"; - case 0x02f3: return "Maddie"; - case 0x02f4: return "Bea"; - case 0x02f8: return "Mac"; - case 0x02f9: return "Marcel"; - case 0x02fa: return "Benjamin"; - case 0x02fb: return "Cherry"; - case 0x02fc: return "Shep"; - case 0x0307: return "Bill"; - case 0x0308: return "Joey"; - case 0x0309: return "Pate"; - case 0x030a: return "Maelle"; - case 0x030b: return "Deena"; - case 0x030c: return "Pompom"; - case 0x030d: return "Mallary"; - case 0x030e: return "Freckles"; - case 0x030f: return "Derwin"; - case 0x0310: return "Drake"; - case 0x0311: return "Scoot"; - case 0x0312: return "Weber"; - case 0x0313: return "Miranda"; - case 0x0314: return "Ketchup"; - case 0x0316: return "Gloria"; - case 0x0317: return "Molly"; - case 0x0318: return "Quillson"; - case 0x0323: return "Opal"; - case 0x0324: return "Dizzy"; - case 0x0325: return "Big Top"; - case 0x0326: return "Eloise"; - case 0x0327: return "Margie"; - case 0x0328: return "Paolo"; - case 0x0329: return "Axel"; - case 0x032a: return "Ellie"; - case 0x032c: return "Tucker"; - case 0x032d: return "Tia"; - case 0x032e: return "Chai"; - case 0x0338: return "Lily"; - case 0x0339: return "Ribbot"; - case 0x033a: return "Frobert"; - case 0x033b: return "Camofrog"; - case 0x033c: return "Drift"; - case 0x033d: return "Wart Jr."; - case 0x033e: return "Puddies"; - case 0x033f: return "Jeremiah"; - case 0x0341: return "Tad"; - case 0x0342: return "Cousteau"; - case 0x0343: return "Huck"; - case 0x0344: return "Prince"; - case 0x0345: return "Jambette"; - case 0x0347: return "Raddle"; - case 0x0348: return "Gigi"; - case 0x0349: return "Croque"; - case 0x034a: return "Diva"; - case 0x034b: return "Henry"; - case 0x0356: return "Chevre"; - case 0x0357: return "Nan"; - case 0x0358: return "Billy"; - case 0x035a: return "Gruff"; - case 0x035c: return "Velma"; - case 0x035d: return "Kidd"; - case 0x035e: return "Pashmina"; - case 0x0369: return "Cesar"; - case 0x036a: return "Peewee"; - case 0x036b: return "Boone"; - case 0x036d: return "Louie"; - case 0x036e: return "Maddie"; - case 0x0370: return "Violet"; - case 0x0371: return "Al"; - case 0x0372: return "Rocket"; - case 0x0373: return "Hans"; - case 0x0374: return "Rilla"; - case 0x037e: return "Hamlet"; - case 0x037f: return "Apple"; - case 0x0380: return "Graham"; - case 0x0381: return "Rodney"; - case 0x0382: return "Soleil"; - case 0x0383: return "Clay"; - case 0x0384: return "Flurry"; - case 0x0385: return "Hamphrey"; - case 0x0390: return "Rocco"; - case 0x0392: return "Bubbles"; - case 0x0393: return "Bertha"; - case 0x0394: return "Biff"; - case 0x0395: return "Bitty"; - case 0x0398: return "Harry"; - case 0x0399: return "Hippeux"; - case 0x03a4: return "Buck"; - case 0x03a5: return "Victoria"; - case 0x03a6: return "Savannah"; - case 0x03a7: return "Elmer"; - case 0x03a8: return "Rosco"; - case 0x03a9: return "Winnie"; - case 0x03aa: return "Ed"; - case 0x03ab: return "Cleo"; - case 0x03ac: return "Peaches"; - case 0x03ad: return "Annalise"; - case 0x03ae: return "Clyde"; - case 0x03af: return "Colton"; - case 0x03b0: return "Papi"; - case 0x03b1: return "Julian"; - case 0x03bc: return "Yuka"; - case 0x03bd: return "Alice"; - case 0x03be: return "Melba"; - case 0x03bf: return "Sydney"; - case 0x03c0: return "Gonzo"; - case 0x03c1: return "Ozzie"; - case 0x03c4: return "Canberra"; - case 0x03c5: return "Lyman"; - case 0x03c6: return "Eugene"; - case 0x03d1: return "Kitt"; - case 0x03d2: return "Mathilda"; - case 0x03d3: return "Carrie"; - case 0x03d6: return "Astrid"; - case 0x03d7: return "Sylvia"; - case 0x03d9: return "Walt"; - case 0x03da: return "Rodney"; - case 0x03db: return "Marcie"; - case 0x03e6: return "Bud"; - case 0x03e7: return "Elvis"; - case 0x03e8: return "Rex"; - case 0x03ea: return "Leopold"; - case 0x03ec: return "Mott"; - case 0x03ed: return "Rory"; - case 0x03ee: return "Lionel"; - case 0x03fa: return "Nana"; - case 0x03fb: return "Simon"; - case 0x03fc: return "Tammi"; - case 0x03fd: return "Monty"; - case 0x03fe: return "Elise"; - case 0x03ff: return "Flip"; - case 0x0400: return "Shari"; - case 0x0401: return "Deli"; - case 0x040c: return "Dora"; - case 0x040d: return "Limberg"; - case 0x040e: return "Bella"; - case 0x040f: return "Bree"; - case 0x0410: return "Samson"; - case 0x0411: return "Rod"; - case 0x0414: return "Candi"; - case 0x0415: return "Rizzo"; - case 0x0416: return "Anicotti"; - case 0x0418: return "Broccolo"; - case 0x041a: return "Moose"; - case 0x041b: return "Bettina"; - case 0x041c: return "Greta"; - case 0x041d: return "Penelope"; - case 0x041e: return "Chadder"; - case 0x0429: return "Octavian"; - case 0x042a: return "Marina"; - case 0x042b: return "Zucker"; - case 0x0436: return "Queenie"; - case 0x0437: return "Gladys"; - case 0x0438: return "Sandy"; - case 0x0439: return "Sprocket"; - case 0x043b: return "Julia"; - case 0x043c: return "Cranston"; - case 0x043d: return "Phil"; - case 0x043e: return "Blanche"; - case 0x043f: return "Flora"; - case 0x0440: return "Phoebe"; - case 0x044b: return "Apollo"; - case 0x044c: return "Amelia"; - case 0x044d: return "Pierce"; - case 0x044e: return "Buzz"; - case 0x0450: return "Avery"; - case 0x0451: return "Frank"; - case 0x0452: return "Sterling"; - case 0x0453: return "Keaton"; - case 0x0454: return "Celia"; - case 0x045f: return "Aurora"; - case 0x0460: return "Roald"; - case 0x0461: return "Cube"; - case 0x0462: return "Hopper"; - case 0x0463: return "Friga"; - case 0x0464: return "Gwen"; - case 0x0465: return "Puck"; - case 0x0468: return "Wade"; - case 0x0469: return "Boomer"; - case 0x046a: return "Iggly"; - case 0x046b: return "Tex"; - case 0x046c: return "Flo"; - case 0x046d: return "Sprinkle"; - case 0x0478: return "Curly"; - case 0x0479: return "Truffles"; - case 0x047a: return "Rasher"; - case 0x047b: return "Hugh"; - case 0x047c: return "Lucy"; - case 0x047d: return "Spork/Crackle"; - case 0x0480: return "Cobb"; - case 0x0481: return "Boris"; - case 0x0482: return "Maggie"; - case 0x0483: return "Peggy"; - case 0x0485: return "Gala"; - case 0x0486: return "Chops"; - case 0x0487: return "Kevin"; - case 0x0488: return "Pancetti"; - case 0x0489: return "Agnes"; - case 0x0494: return "Bunnie"; - case 0x0495: return "Dotty"; - case 0x0496: return "Coco"; - case 0x0497: return "Snake"; - case 0x0498: return "Gaston"; - case 0x0499: return "Gabi"; - case 0x049a: return "Pippy"; - case 0x049b: return "Tiffany"; - case 0x049c: return "Genji"; - case 0x049d: return "Ruby"; - case 0x049e: return "Doc"; - case 0x049f: return "Claude"; - case 0x04a0: return "Francine"; - case 0x04a1: return "Chrissy"; - case 0x04a2: return "Hopkins"; - case 0x04a3: return "OHare"; - case 0x04a4: return "Carmen"; - case 0x04a5: return "Bonbon"; - case 0x04a6: return "Cole"; - case 0x04a7: return "Mira"; - case 0x04a8: return "Toby"; - case 0x04b2: return "Tank"; - case 0x04b3: return "Rhonda"; - case 0x04b4: return "Spike"; - case 0x04b6: return "Hornsby"; - case 0x04b9: return "Merengue"; - case 0x04ba: return "Renée"; - case 0x04c5: return "Vesta"; - case 0x04c6: return "Baabara"; - case 0x04c7: return "Eunice"; - case 0x04c8: return "Stella"; - case 0x04c9: return "Cashmere"; - case 0x04cc: return "Willow"; - case 0x04cd: return "Curlos"; - case 0x04ce: return "Wendy"; - case 0x04cf: return "Timbra"; - case 0x04d0: return "Frita"; - case 0x04d1: return "Muffy"; - case 0x04d2: return "Pietro"; - case 0x04d3: return "Étoile"; - case 0x04dd: return "Peanut"; - case 0x04de: return "Blaire"; - case 0x04df: return "Filbert"; - case 0x04e0: return "Pecan"; - case 0x04e1: return "Nibbles"; - case 0x04e2: return "Agent S"; - case 0x04e3: return "Caroline"; - case 0x04e4: return "Sally"; - case 0x04e5: return "Static"; - case 0x04e6: return "Mint"; - case 0x04e7: return "Ricky"; - case 0x04e8: return "Cally"; - case 0x04ea: return "Tasha"; - case 0x04eb: return "Sylvana"; - case 0x04ec: return "Poppy"; - case 0x04ed: return "Sheldon"; - case 0x04ee: return "Marshal"; - case 0x04ef: return "Hazel"; - case 0x04fa: return "Rolf"; - case 0x04fb: return "Rowan"; - case 0x04fc: return "Tybalt"; - case 0x04fd: return "Bangle"; - case 0x04fe: return "Leonardo"; - case 0x04ff: return "Claudia"; - case 0x0500: return "Bianca"; - case 0x050b: return "Chief"; - case 0x050c: return "Lobo"; - case 0x050d: return "Wolfgang"; - case 0x050e: return "Whitney"; - case 0x050f: return "Dobie"; - case 0x0510: return "Freya"; - case 0x0511: return "Fang"; - case 0x0513: return "Vivian"; - case 0x0514: return "Skye"; - case 0x0515: return "Kyle"; - case 0x0580: return "Fox"; - case 0x0581: return "Falco"; - case 0x0584: return "Wolf"; - case 0x05c0: return "Samus"; - case 0x05c1: return "Metroid"; - case 0x05c2: return "Ridley"; - case 0x0600: return "Captain Falcon"; - case 0x0640: return "Olimar"; - case 0x0642: return "Pikmin"; - case 0x06c0: return "Little Mac"; - case 0x0700: return "Wii Fit Trainer"; - case 0x0740: return "Pit"; - case 0x0741: return "Dark Pit"; - case 0x0742: return "Palutena"; - case 0x0780: return "Mr. G&W"; - case 0x0781: return "R.O.B."; - case 0x0782: return "Duck Hunt"; - case 0x07c0: return "Mii"; - case 0x0800: return "Inkling"; - case 0x0801: return "Callie"; - case 0x0802: return "Marie"; - case 0x0803: return "Pearl"; - case 0x0804: return "Marina"; - case 0x0805: return "Octoling"; - case 0x09c0: return "Mario"; - case 0x09c1: return "Luigi"; - case 0x09c2: return "Peach"; - case 0x09c3: return "Daisy"; - case 0x09c4: return "Yoshi"; - case 0x09c5: return "Wario"; - case 0x09c6: return "Waluigi"; - case 0x09c7: return "Donkey Kong"; - case 0x09c8: return "Diddy Kong"; - case 0x09c9: return "Bowser"; - case 0x09ca: return "Bowser Jr."; - case 0x09cb: return "Boo"; - case 0x09cc: return "Baby Mario"; - case 0x09cd: return "Baby Luigi"; - case 0x09ce: return "Birdo"; - case 0x09cf: return "Rosalina"; - case 0x09d0: return "Metal Mario"; - case 0x09d1: return "Pink Gold Peach"; - case 0x1906: return "Charizard"; - case 0x1919: return "Pikachu"; - case 0x1927: return "Jigglypuff"; - case 0x1996: return "Mewtwo"; - case 0x1ac0: return "Lucario"; - case 0x1b92: return "Greninja"; - case 0x1d00: return "Shadow Mewtwo"; - case 0x1d01: return "Detective Pikachu"; - case 0x1f00: return "Kirby"; - case 0x1f01: return "Meta Knight"; - case 0x1f02: return "King Dedede"; - case 0x1f03: return "Waddle Dee"; - case 0x1f40: return "Qbby"; - case 0x2100: return "Marth"; - case 0x2101: return "Ike"; - case 0x2102: return "Lucina"; - case 0x2103: return "Robin"; - case 0x2104: return "Roy"; - case 0x2105: return "Corrin"; - case 0x2106: return "Alm"; - case 0x2107: return "Celica"; - case 0x2108: return "Chrom"; - case 0x2109: return "Tiki"; - case 0x2240: return "Shulk"; - case 0x2280: return "Ness"; - case 0x2281: return "Lucas"; - case 0x22c0: return "Chibi-Robo"; - case 0x3200: return "Sonic"; - case 0x3240: return "Bayonetta"; - case 0x3340: return "PAC-MAN"; - case 0x3380: return "Solaire of Astora"; - case 0x3480: return "Mega Man"; - case 0x34c0: return "Ryu"; - case 0x3500: return "One-Eyed Rathalos"; - case 0x3501: return "Nabiru"; - case 0x3502: return "Rathian"; - case 0x3503: return "Barioth"; - case 0x3504: return "Qurupeco"; - case 0x35c0: return "Shovel Knight"; - case 0x3600: return "Cloud Strife"; - case 0x3740: return "Mario Cereal"; - default: return "Unknown"; - } -} - -#endif // _AMIIBO_CHAR_H diff --git a/nfc/source/main.c b/nfc/source/main.c index 11cec80..c8e0221 100644 --- a/nfc/source/main.c +++ b/nfc/source/main.c @@ -6,10 +6,11 @@ // Include the main libnx system header, for Switch development #include -#include "amiibo_char.h" // See also libnx nfc.h. +static char *get_amiibo_char(const NfpuModelInfo model_info); + #define PRINT_UPD(fmt, ...) ({ \ printf(fmt, ## __VA_ARGS__); \ consoleUpdate(NULL); \ @@ -18,7 +19,7 @@ // Indefinitely wait for an event to be signaled // Break when + is pressed, or if the application should quit (in this case, return value will be non-zero) Result eventWaitLoop(Event *event) { - Result rc = 0; + Result rc = 1; while (appletMainLoop()) { rc = eventWait(event, 0); hidScanInput(); @@ -68,9 +69,6 @@ int main(int argc, char* argv[]) } } - if (R_FAILED(rc)) - goto fail_0; - // Get the handle of the first controller with NFC capabilities. HidControllerID controller = 0; if (R_SUCCEEDED(rc)) { @@ -123,7 +121,7 @@ int main(int argc, char* argv[]) // If an error happened during detection/reading, print it. if (R_FAILED(rc)) - PRINT_UPD("Error: 0x%x (%04d-%04d).\n", rc, (R_MODULE(rc) | 2000), (R_VALUE(rc) >> 9)); + PRINT_UPD("Error: 0x%x.\n", rc); // Unmount the tag. nfpuUnmount(controller); @@ -150,3 +148,564 @@ fail_0: consoleExit(NULL); return 0; } + +static char *get_amiibo_char(const NfpuModelInfo model_info) { + u16 char_id = model_info.amiibo_id[0] << 8 | model_info.amiibo_id[1]; // Reverse byte order for convenience + switch (char_id) { + case 0x0000: return "Mario"; + case 0x0001: return "Luigi"; + case 0x0002: return "Peach"; + case 0x0003: return "Yoshi"; + case 0x0004: return "Rosalina"; + case 0x0005: return "Bowser"; + case 0x0006: return "Bowser Jr."; + case 0x0007: return "Wario"; + case 0x0008: return "Donkey Kong"; + case 0x0009: return "Diddy Kong"; + case 0x000a: return "Toad"; + case 0x0013: return "Daisy"; + case 0x0014: return "Waluigi"; + case 0x0015: return "Goomba"; + case 0x0017: return "Boo"; + case 0x0023: return "Koopa Troopa"; + case 0x0080: return "Poochy"; + case 0x0100: return "Link"; + case 0x0101: return "Zelda"; + case 0x0102: return "Ganon"; + case 0x0103: return "Midna"; + case 0x0105: return "Daruk"; + case 0x0106: return "Urbosa"; + case 0x0107: return "Mipha"; + case 0x0108: return "Revali"; + case 0x0140: return "Guardian"; + case 0x0141: return "Bokoblin"; + case 0x0180: return "Villager"; + case 0x0181: return "Isabelle"; + case 0x0182: return "K.K. Slider"; + case 0x0183: return "Tom Nook"; + case 0x0184: return "Timmy & Tommy"; + case 0x0185: return "Timmy"; + case 0x0186: return "Tommy"; + case 0x0187: return "Sable"; + case 0x0188: return "Mabel"; + case 0x0189: return "Labelle"; + case 0x018a: return "Reese"; + case 0x018b: return "Cyrus"; + case 0x018c: return "Digby"; + case 0x018d: return "Rover"; + case 0x018e: return "Mr. Resetti"; + case 0x018f: return "Don Resetti"; + case 0x0190: return "Brewster"; + case 0x0191: return "Harriet"; + case 0x0192: return "Blathers"; + case 0x0193: return "Celeste"; + case 0x0194: return "Kicks"; + case 0x0195: return "Porter"; + case 0x0196: return "Kapp'n"; + case 0x0197: return "Leilani"; + case 0x0198: return "Lelia"; + case 0x0199: return "Grams"; + case 0x019a: return "Chip"; + case 0x019b: return "Nat"; + case 0x019c: return "Phineas"; + case 0x019d: return "Copper"; + case 0x019e: return "Booker"; + case 0x019f: return "Pete"; + case 0x01a0: return "Pelly"; + case 0x01a1: return "Phyllis"; + case 0x01a2: return "Gulliver"; + case 0x01a3: return "Joan"; + case 0x01a4: return "Pascal"; + case 0x01a5: return "Katarina"; + case 0x01a6: return "Sahara"; + case 0x01a7: return "Wendell"; + case 0x01a8: return "Redd"; + case 0x01a9: return "Gracie"; + case 0x01aa: return "Lyle"; + case 0x01ab: return "Pave"; + case 0x01ac: return "Zipper"; + case 0x01ad: return "Jack"; + case 0x01ae: return "Franklin"; + case 0x01af: return "Jingle"; + case 0x01b0: return "Tortimer"; + case 0x01b1: return "Dr. Shrunk"; + case 0x01b3: return "Blanca"; + case 0x01b4: return "Leif"; + case 0x01b5: return "Luna"; + case 0x01b6: return "Katie"; + case 0x01c1: return "Lottie"; + case 0x0200: return "Cyrano"; + case 0x0201: return "Antonio"; + case 0x0202: return "Pango"; + case 0x0203: return "Anabelle"; + case 0x0206: return "Snooty"; + case 0x0208: return "Annalisa"; + case 0x0209: return "Olaf"; + case 0x0214: return "Teddy"; + case 0x0215: return "Pinky"; + case 0x0216: return "Curt"; + case 0x0217: return "Chow"; + case 0x0219: return "Nate"; + case 0x021a: return "Groucho"; + case 0x021b: return "Tutu"; + case 0x021c: return "Ursala"; + case 0x021d: return "Grizzly"; + case 0x021e: return "Puala"; + case 0x021f: return "Ike"; + case 0x0220: return "Charlise"; + case 0x0221: return "Beardo"; + case 0x0222: return "Klaus"; + case 0x022d: return "Jay"; + case 0x022e: return "Robin"; + case 0x022f: return "Anchovy"; + case 0x0230: return "Twiggy"; + case 0x0231: return "Jitters"; + case 0x0232: return "Piper"; + case 0x0233: return "Admiral"; + case 0x0235: return "Midge"; + case 0x0238: return "Jacob"; + case 0x023c: return "Lucha"; + case 0x023d: return "Jacques"; + case 0x023e: return "Peck"; + case 0x023f: return "Sparro"; + case 0x024a: return "Angus"; + case 0x024b: return "Rodeo"; + case 0x024d: return "Stu"; + case 0x024f: return "T-Bone"; + case 0x0251: return "Coach"; + case 0x0252: return "Vic"; + case 0x025d: return "Bob"; + case 0x025e: return "Mitzi"; + case 0x025f: return "Rosie"; + case 0x0260: return "Olivia"; + case 0x0261: return "Kiki"; + case 0x0262: return "Tangy"; + case 0x0263: return "Punchy"; + case 0x0264: return "Purrl"; + case 0x0265: return "Moe"; + case 0x0266: return "Kabuki"; + case 0x0267: return "Kid Cat"; + case 0x0268: return "Monique"; + case 0x0269: return "Tabby"; + case 0x026a: return "Stinky"; + case 0x026b: return "Kitty"; + case 0x026c: return "Tom"; + case 0x026d: return "Merry"; + case 0x026e: return "Felicity"; + case 0x026f: return "Lolly"; + case 0x0270: return "Ankha"; + case 0x0271: return "Rudy"; + case 0x0272: return "Katt"; + case 0x027d: return "Bluebear"; + case 0x027e: return "Maple"; + case 0x027f: return "Poncho"; + case 0x0280: return "Pudge"; + case 0x0281: return "Kody"; + case 0x0282: return "Stitches"; + case 0x0283: return "Vladimir"; + case 0x0284: return "Murphy"; + case 0x0286: return "Olive"; + case 0x0287: return "Cheri"; + case 0x028a: return "June"; + case 0x028b: return "Pekoe"; + case 0x028c: return "Chester"; + case 0x028d: return "Barold"; + case 0x028e: return "Tammy"; + case 0x028f: return "Marty"; + case 0x0299: return "Goose"; + case 0x029a: return "Benedict"; + case 0x029b: return "Egbert"; + case 0x029e: return "Ava"; + case 0x02a2: return "Becky"; + case 0x02a3: return "Plucky"; + case 0x02a4: return "Knox"; + case 0x02a5: return "Broffina"; + case 0x02a6: return "Ken"; + case 0x02b1: return "Patty"; + case 0x02b2: return "Tipper"; + case 0x02b7: return "Norma"; + case 0x02b8: return "Naomi"; + case 0x02c3: return "Alfonso"; + case 0x02c4: return "Alli"; + case 0x02c5: return "Boots"; + case 0x02c7: return "Del"; + case 0x02c9: return "Sly"; + case 0x02ca: return "Gayle"; + case 0x02cb: return "Drago"; + case 0x02d6: return "Fauna"; + case 0x02d7: return "Bam"; + case 0x02d8: return "Zell"; + case 0x02d9: return "Bruce"; + case 0x02da: return "Deidre"; + case 0x02db: return "Lopez"; + case 0x02dc: return "Fuchsia"; + case 0x02dd: return "Beau"; + case 0x02de: return "Diana"; + case 0x02df: return "Erik"; + case 0x02e0: return "Chelsea"; + case 0x02ea: return "Goldie"; + case 0x02eb: return "Butch"; + case 0x02ec: return "Lucky"; + case 0x02ed: return "Biskit"; + case 0x02ee: return "Bones"; + case 0x02ef: return "Portia"; + case 0x02f0: return "Walker"; + case 0x02f1: return "Daisy"; + case 0x02f2: return "Cookie"; + case 0x02f3: return "Maddie"; + case 0x02f4: return "Bea"; + case 0x02f8: return "Mac"; + case 0x02f9: return "Marcel"; + case 0x02fa: return "Benjamin"; + case 0x02fb: return "Cherry"; + case 0x02fc: return "Shep"; + case 0x0307: return "Bill"; + case 0x0308: return "Joey"; + case 0x0309: return "Pate"; + case 0x030a: return "Maelle"; + case 0x030b: return "Deena"; + case 0x030c: return "Pompom"; + case 0x030d: return "Mallary"; + case 0x030e: return "Freckles"; + case 0x030f: return "Derwin"; + case 0x0310: return "Drake"; + case 0x0311: return "Scoot"; + case 0x0312: return "Weber"; + case 0x0313: return "Miranda"; + case 0x0314: return "Ketchup"; + case 0x0316: return "Gloria"; + case 0x0317: return "Molly"; + case 0x0318: return "Quillson"; + case 0x0323: return "Opal"; + case 0x0324: return "Dizzy"; + case 0x0325: return "Big Top"; + case 0x0326: return "Eloise"; + case 0x0327: return "Margie"; + case 0x0328: return "Paolo"; + case 0x0329: return "Axel"; + case 0x032a: return "Ellie"; + case 0x032c: return "Tucker"; + case 0x032d: return "Tia"; + case 0x032e: return "Chai"; + case 0x0338: return "Lily"; + case 0x0339: return "Ribbot"; + case 0x033a: return "Frobert"; + case 0x033b: return "Camofrog"; + case 0x033c: return "Drift"; + case 0x033d: return "Wart Jr."; + case 0x033e: return "Puddies"; + case 0x033f: return "Jeremiah"; + case 0x0341: return "Tad"; + case 0x0342: return "Cousteau"; + case 0x0343: return "Huck"; + case 0x0344: return "Prince"; + case 0x0345: return "Jambette"; + case 0x0347: return "Raddle"; + case 0x0348: return "Gigi"; + case 0x0349: return "Croque"; + case 0x034a: return "Diva"; + case 0x034b: return "Henry"; + case 0x0356: return "Chevre"; + case 0x0357: return "Nan"; + case 0x0358: return "Billy"; + case 0x035a: return "Gruff"; + case 0x035c: return "Velma"; + case 0x035d: return "Kidd"; + case 0x035e: return "Pashmina"; + case 0x0369: return "Cesar"; + case 0x036a: return "Peewee"; + case 0x036b: return "Boone"; + case 0x036d: return "Louie"; + case 0x036e: return "Maddie"; + case 0x0370: return "Violet"; + case 0x0371: return "Al"; + case 0x0372: return "Rocket"; + case 0x0373: return "Hans"; + case 0x0374: return "Rilla"; + case 0x037e: return "Hamlet"; + case 0x037f: return "Apple"; + case 0x0380: return "Graham"; + case 0x0381: return "Rodney"; + case 0x0382: return "Soleil"; + case 0x0383: return "Clay"; + case 0x0384: return "Flurry"; + case 0x0385: return "Hamphrey"; + case 0x0390: return "Rocco"; + case 0x0392: return "Bubbles"; + case 0x0393: return "Bertha"; + case 0x0394: return "Biff"; + case 0x0395: return "Bitty"; + case 0x0398: return "Harry"; + case 0x0399: return "Hippeux"; + case 0x03a4: return "Buck"; + case 0x03a5: return "Victoria"; + case 0x03a6: return "Savannah"; + case 0x03a7: return "Elmer"; + case 0x03a8: return "Rosco"; + case 0x03a9: return "Winnie"; + case 0x03aa: return "Ed"; + case 0x03ab: return "Cleo"; + case 0x03ac: return "Peaches"; + case 0x03ad: return "Annalise"; + case 0x03ae: return "Clyde"; + case 0x03af: return "Colton"; + case 0x03b0: return "Papi"; + case 0x03b1: return "Julian"; + case 0x03bc: return "Yuka"; + case 0x03bd: return "Alice"; + case 0x03be: return "Melba"; + case 0x03bf: return "Sydney"; + case 0x03c0: return "Gonzo"; + case 0x03c1: return "Ozzie"; + case 0x03c4: return "Canberra"; + case 0x03c5: return "Lyman"; + case 0x03c6: return "Eugene"; + case 0x03d1: return "Kitt"; + case 0x03d2: return "Mathilda"; + case 0x03d3: return "Carrie"; + case 0x03d6: return "Astrid"; + case 0x03d7: return "Sylvia"; + case 0x03d9: return "Walt"; + case 0x03da: return "Rodney"; + case 0x03db: return "Marcie"; + case 0x03e6: return "Bud"; + case 0x03e7: return "Elvis"; + case 0x03e8: return "Rex"; + case 0x03ea: return "Leopold"; + case 0x03ec: return "Mott"; + case 0x03ed: return "Rory"; + case 0x03ee: return "Lionel"; + case 0x03fa: return "Nana"; + case 0x03fb: return "Simon"; + case 0x03fc: return "Tammi"; + case 0x03fd: return "Monty"; + case 0x03fe: return "Elise"; + case 0x03ff: return "Flip"; + case 0x0400: return "Shari"; + case 0x0401: return "Deli"; + case 0x040c: return "Dora"; + case 0x040d: return "Limberg"; + case 0x040e: return "Bella"; + case 0x040f: return "Bree"; + case 0x0410: return "Samson"; + case 0x0411: return "Rod"; + case 0x0414: return "Candi"; + case 0x0415: return "Rizzo"; + case 0x0416: return "Anicotti"; + case 0x0418: return "Broccolo"; + case 0x041a: return "Moose"; + case 0x041b: return "Bettina"; + case 0x041c: return "Greta"; + case 0x041d: return "Penelope"; + case 0x041e: return "Chadder"; + case 0x0429: return "Octavian"; + case 0x042a: return "Marina"; + case 0x042b: return "Zucker"; + case 0x0436: return "Queenie"; + case 0x0437: return "Gladys"; + case 0x0438: return "Sandy"; + case 0x0439: return "Sprocket"; + case 0x043b: return "Julia"; + case 0x043c: return "Cranston"; + case 0x043d: return "Phil"; + case 0x043e: return "Blanche"; + case 0x043f: return "Flora"; + case 0x0440: return "Phoebe"; + case 0x044b: return "Apollo"; + case 0x044c: return "Amelia"; + case 0x044d: return "Pierce"; + case 0x044e: return "Buzz"; + case 0x0450: return "Avery"; + case 0x0451: return "Frank"; + case 0x0452: return "Sterling"; + case 0x0453: return "Keaton"; + case 0x0454: return "Celia"; + case 0x045f: return "Aurora"; + case 0x0460: return "Roald"; + case 0x0461: return "Cube"; + case 0x0462: return "Hopper"; + case 0x0463: return "Friga"; + case 0x0464: return "Gwen"; + case 0x0465: return "Puck"; + case 0x0468: return "Wade"; + case 0x0469: return "Boomer"; + case 0x046a: return "Iggly"; + case 0x046b: return "Tex"; + case 0x046c: return "Flo"; + case 0x046d: return "Sprinkle"; + case 0x0478: return "Curly"; + case 0x0479: return "Truffles"; + case 0x047a: return "Rasher"; + case 0x047b: return "Hugh"; + case 0x047c: return "Lucy"; + case 0x047d: return "Spork/Crackle"; + case 0x0480: return "Cobb"; + case 0x0481: return "Boris"; + case 0x0482: return "Maggie"; + case 0x0483: return "Peggy"; + case 0x0485: return "Gala"; + case 0x0486: return "Chops"; + case 0x0487: return "Kevin"; + case 0x0488: return "Pancetti"; + case 0x0489: return "Agnes"; + case 0x0494: return "Bunnie"; + case 0x0495: return "Dotty"; + case 0x0496: return "Coco"; + case 0x0497: return "Snake"; + case 0x0498: return "Gaston"; + case 0x0499: return "Gabi"; + case 0x049a: return "Pippy"; + case 0x049b: return "Tiffany"; + case 0x049c: return "Genji"; + case 0x049d: return "Ruby"; + case 0x049e: return "Doc"; + case 0x049f: return "Claude"; + case 0x04a0: return "Francine"; + case 0x04a1: return "Chrissy"; + case 0x04a2: return "Hopkins"; + case 0x04a3: return "OHare"; + case 0x04a4: return "Carmen"; + case 0x04a5: return "Bonbon"; + case 0x04a6: return "Cole"; + case 0x04a7: return "Mira"; + case 0x04a8: return "Toby"; + case 0x04b2: return "Tank"; + case 0x04b3: return "Rhonda"; + case 0x04b4: return "Spike"; + case 0x04b6: return "Hornsby"; + case 0x04b9: return "Merengue"; + case 0x04ba: return "Renée"; + case 0x04c5: return "Vesta"; + case 0x04c6: return "Baabara"; + case 0x04c7: return "Eunice"; + case 0x04c8: return "Stella"; + case 0x04c9: return "Cashmere"; + case 0x04cc: return "Willow"; + case 0x04cd: return "Curlos"; + case 0x04ce: return "Wendy"; + case 0x04cf: return "Timbra"; + case 0x04d0: return "Frita"; + case 0x04d1: return "Muffy"; + case 0x04d2: return "Pietro"; + case 0x04d3: return "Étoile"; + case 0x04dd: return "Peanut"; + case 0x04de: return "Blaire"; + case 0x04df: return "Filbert"; + case 0x04e0: return "Pecan"; + case 0x04e1: return "Nibbles"; + case 0x04e2: return "Agent S"; + case 0x04e3: return "Caroline"; + case 0x04e4: return "Sally"; + case 0x04e5: return "Static"; + case 0x04e6: return "Mint"; + case 0x04e7: return "Ricky"; + case 0x04e8: return "Cally"; + case 0x04ea: return "Tasha"; + case 0x04eb: return "Sylvana"; + case 0x04ec: return "Poppy"; + case 0x04ed: return "Sheldon"; + case 0x04ee: return "Marshal"; + case 0x04ef: return "Hazel"; + case 0x04fa: return "Rolf"; + case 0x04fb: return "Rowan"; + case 0x04fc: return "Tybalt"; + case 0x04fd: return "Bangle"; + case 0x04fe: return "Leonardo"; + case 0x04ff: return "Claudia"; + case 0x0500: return "Bianca"; + case 0x050b: return "Chief"; + case 0x050c: return "Lobo"; + case 0x050d: return "Wolfgang"; + case 0x050e: return "Whitney"; + case 0x050f: return "Dobie"; + case 0x0510: return "Freya"; + case 0x0511: return "Fang"; + case 0x0513: return "Vivian"; + case 0x0514: return "Skye"; + case 0x0515: return "Kyle"; + case 0x0580: return "Fox"; + case 0x0581: return "Falco"; + case 0x0584: return "Wolf"; + case 0x05c0: return "Samus"; + case 0x05c1: return "Metroid"; + case 0x05c2: return "Ridley"; + case 0x0600: return "Captain Falcon"; + case 0x0640: return "Olimar"; + case 0x0642: return "Pikmin"; + case 0x06c0: return "Little Mac"; + case 0x0700: return "Wii Fit Trainer"; + case 0x0740: return "Pit"; + case 0x0741: return "Dark Pit"; + case 0x0742: return "Palutena"; + case 0x0780: return "Mr. G&W"; + case 0x0781: return "R.O.B."; + case 0x0782: return "Duck Hunt"; + case 0x07c0: return "Mii"; + case 0x0800: return "Inkling"; + case 0x0801: return "Callie"; + case 0x0802: return "Marie"; + case 0x0803: return "Pearl"; + case 0x0804: return "Marina"; + case 0x0805: return "Octoling"; + case 0x09c0: return "Mario"; + case 0x09c1: return "Luigi"; + case 0x09c2: return "Peach"; + case 0x09c3: return "Daisy"; + case 0x09c4: return "Yoshi"; + case 0x09c5: return "Wario"; + case 0x09c6: return "Waluigi"; + case 0x09c7: return "Donkey Kong"; + case 0x09c8: return "Diddy Kong"; + case 0x09c9: return "Bowser"; + case 0x09ca: return "Bowser Jr."; + case 0x09cb: return "Boo"; + case 0x09cc: return "Baby Mario"; + case 0x09cd: return "Baby Luigi"; + case 0x09ce: return "Birdo"; + case 0x09cf: return "Rosalina"; + case 0x09d0: return "Metal Mario"; + case 0x09d1: return "Pink Gold Peach"; + case 0x1906: return "Charizard"; + case 0x1919: return "Pikachu"; + case 0x1927: return "Jigglypuff"; + case 0x1996: return "Mewtwo"; + case 0x1ac0: return "Lucario"; + case 0x1b92: return "Greninja"; + case 0x1d00: return "Shadow Mewtwo"; + case 0x1d01: return "Detective Pikachu"; + case 0x1f00: return "Kirby"; + case 0x1f01: return "Meta Knight"; + case 0x1f02: return "King Dedede"; + case 0x1f03: return "Waddle Dee"; + case 0x1f40: return "Qbby"; + case 0x2100: return "Marth"; + case 0x2101: return "Ike"; + case 0x2102: return "Lucina"; + case 0x2103: return "Robin"; + case 0x2104: return "Roy"; + case 0x2105: return "Corrin"; + case 0x2106: return "Alm"; + case 0x2107: return "Celica"; + case 0x2108: return "Chrom"; + case 0x2109: return "Tiki"; + case 0x2240: return "Shulk"; + case 0x2280: return "Ness"; + case 0x2281: return "Lucas"; + case 0x22c0: return "Chibi-Robo"; + case 0x3200: return "Sonic"; + case 0x3240: return "Bayonetta"; + case 0x3340: return "PAC-MAN"; + case 0x3380: return "Solaire of Astora"; + case 0x3480: return "Mega Man"; + case 0x34c0: return "Ryu"; + case 0x3500: return "One-Eyed Rathalos"; + case 0x3501: return "Nabiru"; + case 0x3502: return "Rathian"; + case 0x3503: return "Barioth"; + case 0x3504: return "Qurupeco"; + case 0x35c0: return "Shovel Knight"; + case 0x3600: return "Cloud Strife"; + case 0x3740: return "Mario Cereal"; + default: return "Unknown"; + } +}