Jump to content

Meta:ToDo: Difference between revisions

From Mii Technical Wiki
No edit summary
No edit summary
Line 2: Line 2:


* Structures/Data Formats
* Structures/Data Formats
** Character Data
** Character Data
*** Wii/DS (RFLCharData, separate section for little endian)
*** Wii/DS (RFLCharData, separate section for little endian)
*** 3DS/Wii U (Ver3StoreData/FFL/CFL/AFL)
*** 3DS/Wii U (Ver3StoreData/FFL/CFL/AFL)
*** Switch (nn::mii::CharInfo)
*** Switch (nn::mii::CharInfo)
*** Switch (Internal DB, nn::mii::CoreData/StoreData)
*** Switch (Internal DB, nn::mii::CoreData/StoreData)
*** CFL/FFL WrappedStoreData (QR Encryption)
*** CFL/FFL WrappedStoreData (QR Encryption)
*** Switch amiibo (nn::mii::NfpStoreData, nn::mii::detail::NfpStoreDataExtention)
*** Switch amiibo (nn::mii::NfpStoreData, nn::mii::detail::NfpStoreDataExtention)
*** Studio API/Editor Web
*** Studio API/Editor Web
*** NintendoSDK Default Mii (nn::mii::detail::DefaultMiiTableElement)
*** NintendoSDK Default Mii (nn::mii::detail::DefaultMiiTableElement)
*** CharInfo for RFL, CFL, FFL
*** CharInfo for RFL, CFL, FFL
** CRC-16 Checksum
** CRC-16 Checksum
*** TODO: CRC-16/CCITT/XMODEM, use in char data formats, databases, example calc functions
*** TODO: CRC-16/CCITT/XMODEM, use in char data formats, databases, example calc functions
** Resource Archive
** Resource Archive
*** Wii: RFL_Res.dat (no struct)
*** Wii: RFL_Res.dat (no struct)
*** DS: NFL_Res.dat (similar to above but little-endian?)
*** DS: NFL_Res.dat (similar to above but little-endian?)
*** 3DS: CFL_Res.dat (no struct, similar but little-endian)
*** 3DS: CFL_Res.dat (no struct, similar but little-endian)
**** all three above contain RFLiArchive(CFLiArchive) structure
**** all three above contain RFLiArchive(CFLiArchive) structure
*** Wii U/Miitomo: FFLRes(High/Middle).dat, AFLResHigh(_2_3).dat
*** Wii U/Miitomo: FFLRes(High/Middle).dat, AFLResHigh(_2_3).dat
**** FFLiResourceHeader but miitomo has a different texture header
**** 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)
*** 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
*** '''Each page''': Specify vertex (/shape/mesh), texture formats
*** Outline for each page
*** Outline for each page
**** Summary of the format
**** Summary of the format
**** Description of structure
**** Description of structure
**** Where is it used
**** Where is it used
**** What makes it unique
**** What makes it unique
** Database
** Database
*** Wii, RFL_DB.dat, RFLiDatabase / official, (hidden?????)
*** Wii, RFL_DB.dat, RFLiDatabase / official, (hidden?????)
*** Wii, RNCD/RFLiCtrlBuf and where it is in eeprom
*** Wii, RNCD/RFLiCtrlBuf and where it is in eeprom
*** 3DS, CFL_DB.dat, CFLiCharDatabase (DWARF) / official, (hidden? same as above?)
*** 3DS, CFL_DB.dat, CFLiCharDatabase (DWARF) / official, (hidden? same as above?)
*** Wii U, FFL_ODB.dat, FFL_HDB.dat, FFLiDatabaseFileOfficial, FFLiDatabaseFileHidden
*** Wii U, FFL_ODB.dat, FFL_HDB.dat, FFLiDatabaseFileOfficial, FFLiDatabaseFileHidden
**** (NOT FCL_DB.dat for clothing or stadio.sav for studio save)
**** (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)
*** 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
**** 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??, )
*** (what do we say for: mii studio web, miitomo??, )
* Mii Character Data
* Mii Character Data
** CharInfo
** CharInfo
** Core/Char Data
** 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
*** 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
** StoreData
** Create ID/Mii ID
** Create ID/Mii ID
*** Wii/DS
*** Wii/DS
*** 3DS/Wii U
*** 3DS/Wii U
*** Switch
*** Switch
** Special Properties
** 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
*** 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
*** 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)
*** 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
*** AuthorId: also "UserID" in func names, it's from transferable id on 3ds/wiiu
*** BirthMonth, BirthDay: detail verification of this
*** BirthMonth, BirthDay: detail verification of this
** Special Miis/"Gold Pants"
** Special Miis/"Gold Pants"
*** TODO: what they are, create id flag, restrict localOnly, create id platform
*** TODO: what they are, create id flag, restrict localOnly, create id platform
** Data Verification
** Data Verification
** Random Data
** Random Data
* Color Tables
* Color Tables
** Wii/DS (RFL Colors/Ver3 Indices)
** Wii/DS (RFL Colors/Ver3 Indices)
** 3DS/Wii U (Ver3 Colors)
** 3DS/Wii U (Ver3 Colors)
** Switch (Common Colors)
** Switch (Common Colors)
** Gamma Mode (sRGB or Linear)
** Gamma Mode (sRGB or Linear)
* Rendering
* Rendering
** Shape Parts
** Shape Parts
** Textures
** Textures
*** Texture Modulate/Color Mix
*** Texture Modulate/Color Mix
*** Faceline Texture
*** Faceline Texture
*** Mask Texture
*** Mask Texture
*** Shape Textures
*** Shape Textures
** Shape Transform/Positioning (also mention model scale, PartsTransform)
** Shape Transform/Positioning (also mention model scale, PartsTransform)
** Facial Expressions
** Facial Expressions
** Shaders
** Shaders
*** Wii/DS/3DS Do Not Use Shaders
*** Wii/DS/3DS Do Not Use Shaders
*** Wii TEV
*** Wii TEV
*** (TODO: find tev settings for icon, "drawLikeNigaoeChannel", see env.dat in dvdroot for RVLFaceLib samples)
*** (TODO: find tev settings for icon, "drawLikeNigaoeChannel", see env.dat in dvdroot for RVLFaceLib samples)
*** SampleShader.bcsdr (3DS) todo only in Tomodachi Life
*** SampleShader.bcsdr (3DS) todo only in Tomodachi Life
*** FFLDefaultShader.gsh (Wii U)
*** FFLDefaultShader.gsh (Wii U)
*** LUT.vsh/fsh (Miitomo)
*** LUT.vsh/fsh (Miitomo)
*** SampleShader.bnsh (Switch)
*** SampleShader.bnsh (Switch)
*** '''Outline'''
*** '''Outline'''
****  Description, lighting effect, previews?
****  Description, lighting effect, previews?
**** Uniforms/attributes and descriptions
**** Uniforms/attributes and descriptions
** Hair Variants/Using Headwear
** Hair Variants/Using Headwear
** Body Scaling
** Body Scaling
* Database
* Database
** Official/Table/Front Database
** Official/Table/Front Database
** Hidden/Back Database (TODO: CFLiRecentDBFile as well?)
** Hidden/Back Database (TODO: CFLiRecentDBFile as well?)
** Default Database, Random Database (not real dbs)
** Default Database, Random Database (not real dbs)
** TODO: where does wii remote database (search RFLiCtrlBuf in decomp) fit into this?
** TODO: where does wii remote database (search RFLiCtrlBuf in decomp) fit into this?
* Face Library
* Face Library
** Wii: RFL/RVLFaceLib
** Wii: RFL/RVLFaceLib
** 3DS: CFL (CTR/Centrair Face Library)
** 3DS: CFL (CTR/Centrair Face Library)
** Wii U: FFL (Cafe Face Library) / Miitomo AFL (Arch Face Library)
** Wii U: FFL (Cafe Face Library) / Miitomo AFL (Arch Face Library)
** Switch: nn::mii (NX/NintendoSDK Face Library)
** Switch: nn::mii (NX/NintendoSDK Face Library)
** Unity: un.mii(?????)
** Unity: un.mii(?????)
** '''Concepts'''
** '''Concepts'''
*** CharInfo + Character Data
*** CharInfo + Character Data
*** CharModel -> Scale, Coordinate
*** CharModel -> Scale, Coordinate
*** Icon (RFL, CFL, FFL, nn::mii), FFLIconWithBody/nn::mii::IconBody, nn::mii::VariableIconBody
*** Icon (RFL, CFL, FFL, nn::mii), FFLIconWithBody/nn::mii::IconBody, nn::mii::VariableIconBody
*** WiFiInformation (RFL) / NetPacket (CFL, FFL)
*** WiFiInformation (RFL) / NetPacket (CFL, FFL)
*** Expression Flag
*** Expression Flag
*** FFLShaderCallback, FFLExpand
*** FFLShaderCallback, FFLExpand
*** Special Mii Key (FFL, AFL, nn::mii)?????
*** Special Mii Key (FFL, AFL, nn::mii)?????
* Reverse Engineering Resources
* 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: 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
* TODO categorize these
** Wii U Mii Maker/Mii Studio Internals: ffl_application, FFLUtility, debugutility, Viewer, miiviewer, MiiCapture (HUGE TODO)
** 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
** TODO: CFLUtility? havent gotten it to work on my 3ds, probably mii maker as well
*** Title: Miitomo
*** 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,
** 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)
*** Title: Tomodachi Life/Tomodachi Collection: New Life (TODO)
** (Face Library?) Mii Icon Servers? - NNAS, Nintendo Account 1.0.0, NA 2.0.0/studio
** (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
*** 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?
**** 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 1.0.0 - same as above but params from npf
*** Nintendo Account 2.0.0, studio.mii.nintendo com web API
*** 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)
**** 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
**** mii studio api: data format + obfs, params... probs more
* How do I...
* How do I...
** Decode and encode Mii data?
** Decode and encode Mii data?
** Verify Mii data?
** Verify Mii data?
** Render Mii data to an icon?
** Render Mii data to an icon?
* Questions/Troubleshooting(?)  
* Questions/Troubleshooting(?)  
** What kind of Mii data do I have?
** What kind of Mii data do I have?
** Why isn't my Mii data valid on a console?
** Why isn't my Mii data valid on a console?
* Recommendations from Arian
* Recommendations from Arian
** Use Accurate Structures
** Use Accurate Structures
** Cite Sources
** Cite Sources
** Don't Guess, Use Decomps
** Don't Guess, Use Decomps
** Converting Resource Shapes/Textures
** Converting Resource Shapes/Textures
** Do NOT Invent Custom Formats for Miis
** Do NOT Invent Custom Formats for Miis
*** just append at the end of an existing format
*** 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
*** ffsd is most universal, nn mii coredata can be used if a compact format is needed + use magic signature to be detectable
** Good References
** Good References
*** TODO: stuff like decomps, MiiPort
*** TODO: stuff like decomps, MiiPort
** Suboptimal References
** Suboptimal References
*** TODO: mii-js, mii2studio.py, kaitais?
*** TODO: mii-js, mii2studio.py, kaitais?


Line 273: Line 140:


* MediaWiki?
* MediaWiki?
** i quite like this so far -j0
** i quite like this so far -j0
* GitHub WIki?
* GitHub WIki?
* DokuWiki?
* DokuWiki?

Revision as of 00:15, 24 September 2025

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/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?