馬鹿な人日記

常にPCいじってる馬鹿な人の日記です。

うごメモ3D解析

今回はDSiの時と違ってWikiとかの情報源が無い。
よって、全くのゼロから始まる。

ところで、前回は.ppm一種類だけだが、今回は謎なフォーマットが三つある。

そもそもSDカード内でのファイル/フォルダ構成だが、
うごメモに関するデータが詰まっているフォルダの場所は、
"(SDカード ドライブ):\private\Nintendo 3DS\app\JKZJ"と言う場所。
JKZJがうごメモを表していると思われる。
任天堂うごくメモ帳3DのページのURLが、
www.nintendo.co.jp/3ds/eshop/jkzj/‎となっているから。
何をどうして「JKZJ」になったかは謎。

んでそのJKZJフォルダの下に、うごメモ3Dの「みる」で画面上に表示される各フォルダがある。
フォルダ名はうごメモ3Dで表示されるフォルダ名と同じ。そのまんま。
000フォルダが特別扱いで、うごメモ3Dで「ホームフォルダ」として表示される。
なんか「フォルダ」がゲシュタルト崩壊してきた。
「ディレクトリ」と書くことにしよう。

各ディレクトリの下に管理ファイル(!!.lst)、
そしてフォルダのアイコンファイル(!.ico)が一つずつと、
それぞれのメモファイル(.kwz)がある。
ちなみに000ディレクトリはホームフォルダなのでアイコンファイルが無い。

アイコンファイルはこれまたいやらしくて、
拡張子が「.ico」となっているくせに独自形式。なめてんのかコイツ。

で、本題の.kwzファイルのフォーマットは、今分かってるのはこんな感じ。

まず先頭8バイト。4B 46 48 14 CC 00 00 00で固定っぽい。
フォーマット識別子のマジックナンバーのようではあるが、いささか長すぎるし、
その上意味のある文字列になっていない。
先頭3バイトは"KFH"でASCII文字列として読みとれるので、多分マジックナンバー
後の5バイトはバージョンとか、何か別の意味の数値、と予測してみる。

次に最初の8バイトの次の4バイト。これは謎。

その後の2つの4バイトデータ、これは謎だが、なぜか2つとも同じ数値だ。

それの後の30バイトは、意味は分からんけど、
10バイトの同じデータが3つ並んでる。なぜに同じ物を3つも?

その次は簡単、作者名。Unicodeで22バイト(11文字分)。
作者名は10文字までしか設定できないから、多分最後の2バイトがヌル文字。
C言語では文字列の最後にヌル文字(0x0000)があって、「文字列の終わり」の目印になっている。
処理速度の高速化の為にヌル文字も埋めておいて、まとめてロードしてるんだと思う。

ただ、作者名っぽいのは3つ並んでて、
多分どれかが原作者名、どれかが作者名、どれかが親作者名。

そしてファイル名。ASCIIで28バイト。同じデータのそれが三つ並んでて、合計84バイト。
いや、原作、親作、自分自身かもしれない。
あ、前に紹介した3つの同じ10バイトのデータも、
原作・親作・自分自身の何かとかかも?ID的なデータかもしれない。
そういえば.kwzファイルのファイル名に触れてこなかたっが、
実によく分からん名前となっている。

例えばこんなん。
cjcccccwcccccccanltthfjfaaan.kwz
なんのこっちゃ。

その後8バイト位意味不明、でもこの中にループを表すフラグがありそうだった。

その次3バイト4B 54 4E(KTN)が固定っぽい。何らかのマジックナンバー
多分これ以降が本データで、意味不明意味不明意味不明。
最後の256バイトが明らかなチェックサム

こんな感じ。
3DS持ってないけど.kwzファイルの内容みてみたいと言う人がいれば、
どこかにアップロードするかもしれません。