Meta:ToDo
Appearance
if mii internals was github wiki (arian notes)
- 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) https://youtu.\be/f7cl7u0V15M?t=431
- 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??, )
- Character Data
- 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
- Wii/DS/3DS Do Not Use Shaders
- 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 built from mii maker code 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
- NNAS renderer - input (only crc and smth else validated), xml output, png and tga, wii u local renders
- How do I...
- Decode and encode Mii data?
- Verify Mii data?
- Render Mii data to an icon?
- Questions/Troubleshooting(?)
- 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?
- i quite like this so far -j0
- GitHub WIki?
- DokuWiki?