透過やループ、ソフトにしてみる

音楽はムリポなので、あきらめた。

ということで、透過とループ指定の確認。
0x06A4の位置から4byte続く、詳細不明の場所に両方格納されている。
もっといえば、0x06A6。
それにつめて入れられている。

以下の表は、0x06A6の対応表。1が、一番下のビットをさす

bit 名前 説明
1 透過 編集時の「透かす」が有効な場合、1。これは何の意味があるのだろうか・・・
2 ループ指定 あり => 1 , なし => 2
3 不明 不明
4 不明 不明
5 下紙非表示 1で非表示
6 上紙非表示 1で非表示
7 不明 不明
8 不明 不明

こうなります。0x06A4とかが何に使われているかは知りません。

これを実装すればたいていOKです。

カプセル化

作ったのをカプセル化します。
基本的に、隠蔽は軽めにして、内部へのアクセスを許容するような感じにしました。
本当はもっと隠蔽すべきなんでしょうが・・・

都合上、シーク可能なストリームを渡す必要があるので、ネットワークストリームなどを直に指定することはできません。一度メモリストリームなどに落としましょう。

基本的に、読み込みはまとめて行います。
かなり長いファイルでも数秒かかりますが、大丈夫です。
ただし、上級者向けにyield returnをつかった、IEnumerable型での列挙もできます。これで、youtubeのようにストリーミングっぽく変換再生も可能。それでも、時間がかかるため別スレッドで先読みをしないといけないので、めんどくさい。

ココでポイント。
GetImageに渡す、MemoPageクラスのインスタンス色指定を変更できます。
さらに、透過色を指定すると、特別処理として、そのレイヤー描画をスキップします。
すなわち、「DLメモがパソコンで超簡単に見られます!!!」
これは、ベンリです。いちいち子作品まちや、DSiを取り出す必要もなくなるわけです。
さらに、解析を行うので、ロックしてあるメモの中身も取得できます。

現在は非公開です。もし、ほしい人がいれば公開します。(たぶん)

そして、自作ソフト開始。

数時間かけて、やっと再生機能を実装できました。
Timerを使った雑な実装です。
たぶん、100ページで1MBほど使うので、メモリに余裕が無いときは注意。GCがあるのでリークは防げると思いますが・・・

で、実際に再生したところ。気持ち悪い配色に変えてみましたwwwww

シークは自由なところにできます。色も適当な色に変えられます。
あ、画像はいつもどおりfamfamfam様からです。ありがとうございます。

他の各種ボタン、再生位置ボックス、情報、再生スピードなどは未実装です。
例外処理も一切していないので、例外は全部つつぬけますね。

こちらのソフトも公開はしていません。もう少しできて、気が向くかほしい人がいれば(たぶん)公開します。

ちょっと疲れたので、しばらくサボるかも・・・?



念のためいっておきますが、これを使ってうごメモのファイルを書き換えることはできません。仮に書き換えてもうごメモに持っていった地点でチェックサムによって強制消去されます。