Meta:ToDo
if mii internals was github wiki
◦ Structures/Data Formats
◦ Character Data
◦ Wii/DS (RFLCharData, separate section for little endian)
◦ 3DS/Wii U (Ver3StoreData/FFL/CFL/AFL)
◦ Switch (nn::mii::CharInfo)
◦ Switch (Internal DB, nn::mii::CoreData/StoreData)
◦ CFL/FFL WrappedStoreData (QR Encryption)
◦ Switch amiibo (nn::mii::NfpStoreData, nn::mii::detail::NfpStoreDataExtention)
◦ Studio API/Editor Web
◦ NintendoSDK Default Mii (nn::mii::detail::DefaultMiiTableElement)
◦ CharInfo for RFL, CFL, FFL
◦ CRC-16 Checksum
◦ TODO: CRC-16/CCITT/XMODEM, use in char data formats, databases, example calc functions
◦ Resource Archive
◦ Wii: RFL_Res.dat (no struct)
◦ DS: NFL_Res.dat (similar to above but little-endian?)
◦ 3DS: CFL_Res.dat (no struct, similar but little-endian)
◦ all three above contain RFLiArchive(CFLiArchive) structure
◦ Wii U/Miitomo: FFLRes(High/Middle).dat, AFLResHigh(_2_3).dat
◦ FFLiResourceHeader but miitomo has a different texture header
◦ Switch: Shape(Mid/High).dat (nn::mii::detail::ResourceShapeHeader), Texture Resource (nn::mii::detail::ResourceTextureHeader, fname varies)
◦ Each page: Specify vertex (/shape/mesh), texture formats
◦ Outline for each page
◦ Summary of the format
◦ Description of structure
◦ Where is it used
◦ What makes it unique
◦ Database
◦ Wii, RFL_DB.dat, RFLiDatabase / official, (hidden?????)
◦ Wii, RNCD/RFLiCtrlBuf and where it is in eeprom
◦ 3DS, CFL_DB.dat, CFLiCharDatabase (DWARF) / official, (hidden? same as above?)
◦ Wii U, FFL_ODB.dat, FFL_HDB.dat, FFLiDatabaseFileOfficial, FFLiDatabaseFileHidden
◦ (NOT FCL_DB.dat for clothing or stadio.sav for studio save)
◦ Switch, nn::mii::detail::DatabaseFile (NFDB), nn::mii::detail::ImportFile (NFIF) - as for filename, mii_DatabaseFileManager.cpp has "mii:/MiiDatabase.dat", but NFIF is maybe for dev units only? (see settings)
◦ no hidden database here (but theres mii_PrivateDatabase.cpp). NFIF is signed with a hmac key, its not in windows version
◦ (what do we say for: mii studio web, miitomo??, )
◦ Mii Character Data
◦ CharInfo
◦ Core/Char Data
◦ remember core isnt pointless, nn::mii::CoreData for miitomo and NFIF, then CFL/FFL/RFL core data (called CharDataHidden in rfl) is FOR HIDDEN DB
◦ StoreData
◦ Create ID/Mii ID
◦ Wii/DS
◦ 3DS/Wii U
◦ Switch
◦ Special Properties
◦ MiiVersion, BirthPlatform: detail 3ds qr code anomaly, wiiu mpf face anomaly, how birth platform is set, ffl ds platform bug, future values from ctr sdk
◦ NgWord, FontRegion: effects on each platform; see getadditionalinfo funcs, nnmii name funcs and character set tables
◦ LocalOnly, RegionMove, Favorite: why is favorite a thing again? (get from RFL alpha spec)
◦ AuthorId: also "UserID" in func names, it's from transferable id on 3ds/wiiu
◦ BirthMonth, BirthDay: detail verification of this
◦ Special Miis/"Gold Pants"
◦ TODO: what they are, create id flag, restrict localOnly, create id platform
◦ Data Verification
◦ Random Data
◦ Color Tables
◦ Wii/DS (RFL Colors/Ver3 Indices)
◦ 3DS/Wii U (Ver3 Colors)
◦ Switch (Common Colors)
◦ Gamma Mode (sRGB or Linear)
◦ Rendering
◦ Shape Parts
◦ Textures
◦ Texture Modulate/Color Mix
◦ Faceline Texture
◦ Mask Texture
◦ Shape Textures
◦ Shape Transform/Positioning (also mention model scale, PartsTransform)
◦ Facial Expressions
◦ Shaders
◦ Wii/DS/3DS Do Not Use Shaders
◦ Wii TEV
◦ (TODO: find tev settings for icon, "drawLikeNigaoeChannel", see env.dat in dvdroot for RVLFaceLib samples)
◦ SampleShader.bcsdr (3DS) todo only in Tomodachi Life
◦ FFLDefaultShader.gsh (Wii U)
◦ LUT.vsh/fsh (Miitomo)
◦ SampleShader.bnsh (Switch)
◦ Outline
◦ Description, lighting effect, previews?
◦ Uniforms/attributes and descriptions
◦ Hair Variants/Using Headwear
◦ Body Scaling
◦ Database
◦ Official/Table/Front Database
◦ Hidden/Back Database (TODO: CFLiRecentDBFile as well?)
◦ Default Database, Random Database (not real dbs)
◦ TODO: where does wii remote database (search RFLiCtrlBuf in decomp) fit into this?
◦ Face Library
◦ Wii: RFL/RVLFaceLib
◦ 3DS: CFL (CTR/Centrair Face Library)
◦ Wii U: FFL (Cafe Face Library) / Miitomo AFL (Arch Face Library)
◦ Switch: nn::mii (NX/NintendoSDK Face Library)
◦ Unity: un.mii(?????)
◦ Concepts
◦ CharInfo + Character Data
◦ CharModel -> Scale, Coordinate
◦ Icon (RFL, CFL, FFL, nn::mii), FFLIconWithBody/nn::mii::IconBody, nn::mii::VariableIconBody
◦ WiFiInformation (RFL) / NetPacket (CFL, FFL)
◦ Expression Flag
◦ FFLShaderCallback, FFLExpand
◦ Special Mii Key (FFL, AFL, nn::mii)?????
◦ Reverse Engineering Resources
◦ TODO: this is where to link binaries with FFL symbols (MiiPlugin.rpl), libcocos2dcpp.s o, where to get nn::mii internals that's not from the NintendoSDK lol, maybe 3ds horizon os leak
◦ TODO categorize these
◦ Wii U Mii Maker/Mii Studio Internals: ffl_application, FFLUtility, debugutility, Viewer, miiviewer, MiiCapture (HUGE TODO)
◦ TODO: CFLUtility? havent gotten it to work on my 3ds, probably mii maker as well
◦ Title: Miitomo
◦ TODO: AFL/nn::mii and shaders, mii_data structure, headwear type enum, powervr pod format, api xor obfuscation, mii json structure + qr codes, limited info we know about nuance voice,
◦ Title: Tomodachi Life/Tomodachi Collection: New Life (TODO)
◦ (Face Library?) Mii Icon Servers? - NNAS, Nintendo Account 1.0.0, NA 2.0.0/studio
◦ NNAS renderer - input (only crc and smth else validated), xml output, png and tga, wii u local renders
◦ theory of how this works. FFL has SwapEndian methods probably for x86. is this cafe sdk (32-bit g3d) on windows?
◦ Nintendo Account 1.0.0 - same as above but params from npf
◦ Nintendo Account 2.0.0, studio.mii.nintendo com web API
◦ na 2.0.0 has miitomo shader+culling, used to show miitomo clothing, mii studio nnid bear suit (find my screenshot)
◦ mii studio api: data format + obfs, params... probs more
◦ How do I...
◦ Decode and encode Mii data?
◦ Verify Mii data?
◦ Render Mii data to an icon?
◦ Questions (?)
◦ What kind of Mii data do I have?
◦ Why isn't my Mii data valid on a console?
◦ Recommendations from Arian
◦ Use Accurate Structures
◦ Cite Sources
◦ Don't Guess, Use Decomps
◦ Converting Resource Shapes/Textures
◦ Do NOT Invent Custom Formats for Miis
◦ just append at the end of an existing format
◦ ffsd is most universal, nn mii coredata can be used if a compact format is needed + use magic signature to be detectable
◦ Good References
◦ TODO: stuff like decomps, MiiPort
◦ Suboptimal References
◦ TODO: mii-js, mii2studio.py, kaitais?
where should the wiki be
◦ MediaWiki?
◦ GitHub WIki?
◦ DokuWiki?