うごメモ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ファイルの内容みてみたいと言う人がいれば、
どこかにアップロードするかもしれません。