mieki256's diary



2006/05/23(火) [n年前の日記]

#1 [prog] マップエディタの保存ファイルからレイヤー名と使用画像ファイル名を取得

BGチップを並べるのに _Platinum を使わせてもらってるのだけど。 .csv ファイルを書き出せて助かるものの、各レイヤーに利用してる画像ファイル名は取得できず。かといって手作業で画像ファイル名を並べてたらミスをする。俺はミスをしない! とはいえない。たぶんしないと思う。しないんじゃないかな。しそうな気もするんだ。たぶんしちゃうと思う。絶対しちゃうのかもしれない。

ということで、.ppj (Platinum の保存ファイル。バイナリ)を読んで、そのへん出力する Perlスクリプトを作成。
#!/usr/bin/perl
#
# Platinum の保存ファイル、 .ppj の中から、
# レイヤーに使われている画像ファイル名を取得・出力する。
#
# usage: perl getlayerimg.pl PPJ_FILE

use strict;

my $line = "";
open( IN,$ARGV[0]) || die "Can't open $ARGV[0] : $!";
binmode IN;
while( read(IN,$_,1)) {
    if ( unpack("C",$_) < 32 ) {
        $line .= '_';
    } else {
        $line .= chr unpack("C", $_);
    }
}
close IN ;

my @layername = ();
my @imgname = ();
while (1) {
    my $f = index($line, 'LAY_LSTR');
    last if  $f < 0;
    substr($line, 0, $f+12) = "";
    
    my $nl = index($line,'PSTR');
    die "Can't search PSTR : $!" if $nl < 0 ;
    my $layer = substr($line, 0, $nl);
    $layer =~ s/_+$//;
    push(@layername, $layer);
    
    substr($line, 0, $nl+8) = "";
    my $ni = index($line,'LINV');
    die "Can't search LINV : $!" if $ni < 0 ;
    my $img = substr($line, 0, $ni);
    $img =~ s/_+$//;
    $img =~ s/\.(|bmp|png|jpg|gif)$//;
    $img = uc $img;
    push(@imgname, $img);

    substr($line, 0, $ni+4) = "";
}

print "\tstatic final byte[] IMGLAYER_TBL = {\n";

my $i = 0;
foreach my $img (@imgname) {
    print "\t\tIMG_" , $img , ",\t// " , $layername[$i] . "\n";
    $i++;
}

print "\t};\n";

exit 0;

下のような感じで出力される。
        static final byte[] IMGLAYER_TBL = {
                IMG_TESTIMG01,  // レイヤー0
                IMG_TESTIMG02,  // レイヤー1
        };
レイヤー名や使用画像ファイル名は、1バイト文字であることが前提。2バイト文字を使っても動くかどうかは検証してない。上の例では偶然出力できてるけど。

バイナリファイルを読み出す方法がわからなくてハマった。あちこち検索して判ってきたような。$str = <STDIN>; を使っちゃダメで、read()、sysread() あたりを使うのだとか。$str = <STDIN>; は、行を意識した読み込みをしてしまうらしい。

.ppj 内のレイヤー名・ファイル名の後ろに 0x00 がつくときとつかないときがあって謎。…あ。もしかして。 _パディング なのか。

#2 [iappli] BG関係の処理を書き換え中

今までの管理の仕方では容量増が確実になってしまった。悩む。

ふと。BG配置データ(複数レイヤー)を一つのファイルにまとめて、ステージによってon/offすることにすれば、容量が減るかもしれないと思いついた。その方向でデータを作ったら、2/3になった。あとはプログラム側がどのくらい増えるか、だな…。とりあえずそんな感じで修正中。

一番間違いなく対応できるのは、スクラッチパッド上にデータを逃がすことなんだけど。それだと、変更を加えたときに、ネットから読んでしまうので、ますます動作チェックだけでお金がかかってしまう。<なんか情けない話。…まあ、容量が減れば、ダウンロード時に払う金額も少なくなるから、ユーザにとってもメリットがあるだろうし…。

Javaで2進数をソースに記述する方法はないのであらうか。検索しても該当情報にヒットしない。このへんは入門関係のページで触れられてそうな気もしたのだが…。そういや C を使ってたときも、そのへん困った記憶が。もっとも、直接ビット列を書くより、文字列に定義して記述したほうが判りやすいか。てな感じで、言語を設計する上で思想があったりするのかもしれないなと。ビット列を直接記述するのではなく、「人に優しいソースにするのです。迷える仔羊よ」という言語の神様からのメッセージなのかもしれん。…ホントに?

#3 [web][jiji] どうして盗用するんだろう

たまたまTVをつけてたら、杉村ナントカ議員がblogで盗用したとかなんとかの話が流れてた。

盗用する人達の思考ってのがよくわからない。人によく見られたいとか、評価して欲しいという欲求が人一倍強いのかな。でも、本人の中にそれだけの評価を得られる何かは存在しておらず。空っぽなのに、評価だけはされたい。飢餓感が強い。のか。たぶん。しらんけど。

空っぽなことを自らさらけ出すことで評価が得られる場面もあるように思えるし、人からの借り物という事実をどのような形で提示するかで評価に繋がる場面もあるように思える。が。そういう種類の勇気もなく、テクニックもないということだろうか。いや、内容的には前者を狙ってた感もあるのだけど。…まあ、とにかく、空虚な感じがする話だなと思った。

つーか、自民党に提出したという案とやらも、盗用だったりするのだろうか。つまり彼は、コピペ世代の象徴的存在であり、典型的な行動を取ってみせる人物、なのか。…まあ、キャラ立てには使えるかもしれんからアレか。

それより気になったのは、当人がマスコミに「削除しましたから」と言ってたあたり。「blogに書いたものは、削除すれば済むのだ」って考えが、個人的には…うーん。まあ、嫌いなだけなんですが。所詮好き嫌いでしかない。よね。たぶん。しらんけど。

実体験だったのか。 :

当人のblogに目を通したら、そういうことが書いてあった。…さてはて。どこまで本当の話なのやら。

たしかに、今まで読んだ本なり、映画なりに影響されるなんてのはありえること、ではあるのだけれど。そういうときこそ、まとめる際にちょっと工夫が必要で。…やっぱり空虚な感じがする話だなと思った。

でも、話題作りかもしれんのか。まあ、色々考えてしまう話ではあるし。ネタを提供することに関しては、なかなかな人物。なのかもしれん。たぶん。しらんけど。

この記事へのツッコミ

Re: どうして盗用するんだろう by けいと    2006/05/24 19:21
私も良く分かりませんが、
他人のものを読んで「これはいい!」って思った瞬間
こんな文を「自分も書きたい」って思っちゃってるだけなんじゃないかな、と。
「これはいい!」って思った瞬間 by mieki256    2006/05/28 10:49
> 他人のものを読んで「これはいい!」って思った瞬間

は、それを「紹介する」という行為に繋がるかなーと思うんですが、
そうはならずに「自分が書いた」となるのが不思議なんですな…。

野球少年が松井やイチローの活躍する姿を見て、
そうなりたいと思っていても、
「ボクが松井です!」「ボクはイチローです!」
「昨日大リーグでホームランを打ったのはボクです!」
「ヒット打ったのはボクです!」
とは言わんわけで。…不思議だ。

以上、1 日分です。

過去ログ表示

Prev - 2006/05 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project