ドット絵

リネージュ2のアイテム32x32 のドット絵あり http://lineage2.free.fr/ スクリプト書いてwget で全部ぶっこぬいた。
ウィザードリィ・エンパイア、1と3の攻略本だけ末弥純のモンスター絵目当てで持ってたけど2もアマゾンで買う。
水泳のかえりに中古エンパイア2発見するもゴーグル新丁して金たりなかったんで買えず。今度買ってデータ解読して絵をぶっこぬくぞ。だいたいLZ圧縮なんでヘッダのパターン見つければOK。
追記:圧縮なし1画像1ファイルでした、エンパイア2。5分で全部gif に変換。拍子抜け
追記:昔PS版123 の解読したときの日記を引用しときます。

1998/09/13
WIZARDRY
リルサガ画像フォーマット解析をやる。ランレングスエンコードと当たりをつけてたらやはりそうだった。パターン 1byte データ n bytes の繰り返しで、パターンのMSBからLSBへと見ていって 1ならデータ、0なら前のデータの繰り返し、で解凍できる。たとえば 0xcc,0x10,0x00,0x09,0x00 ならパターン部は 11001100なので、データ、データ、繰り返し、繰り返し、データ、データ、繰り返し、繰り返しで結局 10,00,00,00,09,00,00,00 となる。あとは変換したファイルをフリーの timコンバータにかけるだけ。
1998/09/21
WIZARDRY
とおもったけどうまくいかない。まだ仕掛けがあるようだ。PS*.mtmがモンスターと思われる。
1998/09/24
WIZARDRY
リルサガからTIMを吸い出しに成功。圧縮のレベルが0、1、2とあった。圧縮後サイズ(3 bytes) ,圧縮レベル(1byte), レベル!=0のとき圧縮前サイズ(4 bytes)というヘッダーのあとに圧縮後サイズbytesのデータが続く。レベル0のときは無変換、1の時は上記の方法で解凍。2のときはうーんことばで説明むづかしい。たとえばこんなコードで変換できますよん。これで俺のデスクトップに村正が、ワードナが甦る。
でもレベル3ってのが分かんないなー。title.mtm と st[123].mtm に含まれてて、レベル2で解凍できるけど、画像でない。そういえば3天使の絵と、123のタイトルバックの絵はまだ見えない。まあexceedのほうが解像度上だろうからいいんだけど。

1998/10/01
WIZARDRY
リルサガ圧縮レベル3の解凍に成功。うーん勘がよけりゃ一瞬でわかる話だったのに。16bitの絵なので2byteごとの繰り返しがおおい。そのため偶数番地と奇数番地をべつに見るとランレングスが長くなる。解凍はレベル2で128byteずつ解凍してから 0,64,1,65,2,66...63,127番目と並べ変える。ただしファイルのさいごのブロックは並べ変えない。ヘッダのファイルサイズの部分が正しくないが width*height*2+12に直せば yu_riで変換できた。 timloadではだめだった。三天使の絵はexceedのほうが2割ほど大きかった。これで全mtmファイルをしゃぶりつくした。今にして思えばmulti-tim の略なのかな。あとはmsg.dbsからテキストを抜き出すことかな?0xaaの頻度が全般に多いことから一対一置換と思われる。

1998/10/05
WIZARDRY
うーん簡単だった。xor AA したら字が見えてきた。ただ圧縮フォーマットの解読と2バイト文字のコード変換に時間がかかってしまった。簡単にいうと前に出てきた単語は何バイト前か、と長さ何バイトか、という情報を3バイトで表現している。こんど変換コードここに置いときます。おもしろいのは「ドライブ%sにデュープリケートディスクを入れて下さい」とか「かんじろむをもたないしすてむではただしくひょうじされないかのうせいがあります」とか入ってること。なんかデータしゃぶりつくしたらアイテムコレクションとかやるきがなくなってきた。いまは#3で2Fを探検中。レベル8で mahalitoが4回ってのが主な火力なのでまだ深入りできない。