These pages are written by only Japanese.

Welcom to My Diary.com
最新の日記タイトル一覧カテゴリ別タイトル一覧トップへ戻る〜

こんばんわ♪ 現在は3月28日(木)21時36分。 今日のニュースは何でしょう?


hns - 日記自動生成システム - Version 2.19.5 (色々 Fixed)

先月 2008年04月 来月
01 02 03 4 05
06 07 08 09 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Namazu for hns による簡易全文検索です。
詳細は 詳細指定/ヘルプをご参照下さい。
検索式:

2008年04月01日(火)

swfed CWS 対応

CWS (圧縮形式の SWF バイナリ) に対応しました。
% php swfdump.php chara.swf  | less
magic=CWS  version=6  file_length=2902016
frame_size=(0, 0)-(800, 545)
frame_rate=30.0  frame_count=1183
tag=SetBackgroundColor(9)  length=3
tag=JPEGTables(8)  length=574
tag=DefineBitsJPEG(6)  length=31897
        jpeg_id=1  jpeg_data_size=31895
tag=DefineShape(2)  length=55
	<略>

改造イメージ:

swf_object.c の input と output に以下の処理を追加
#include <zlib.h>
uncompress(new_buff, &origsize, old_buff, bs->data_len - SWF_HEADER_SIZE);
compress(new_buff, &compsize, old_buff, bs->data_len - SWF_HEADER_SIZE);

プログラム:

課題:

  • DefineBitsJPEG2,3 対応
  • メモリリークの洗い出し
  • php 5.2.x で試してみる

2008/10/10 追記:

Flash SWF 上の JPEG の扱いについて以下の Wiki にまとめました。

2009/03/03 追記:

zlib の使い方について以下の Wiki にまとめました。

2009/03/10 追記:

Flash SWF と swfed について以下の Wiki にまとめました。

悲しいときー

自分の作ったWebページが知らない人にブックマークされてて、 タグに「微妙」とか付いるのを見かけたときー
Flash Lite (携帯端末向け Flash) - Yoya Wiki pwiki.awm.jp:yoya 
 ウェブ   FLASH LITE Wiki なるみ 微妙  1 users 2008年02月05日 
 ActionScript  flash  FlashLite 
確かにカオスなので整理します。ごめんなさい。^^; バイナリいじりに夢中で、CS3 は触ってないんですよねー でも、そろそろ戻ろう。折角 Web Premium 買ってるんだし。

ゲームの進行方向の話(アムロは左に向かうがマリオは右に向かって進むのは何故か?)

自分の感覚が左右で対照じゃないのは、 山登りで右が崖の時に特に怖い事から実感してます。
あと、立体的にボタンを表示する時に、左上から照明を当てるような グラデーションをつけると自然になる事を考えると、左からというのは 結構必然なんじゃないか。と思ったり…
左ききの人がいたら、この辺の感覚の違いを聞いてみたいですねぇ…

2008年04月02日(水)

swfed DefineBitsJPEG3 対応

DefineBitsJPEG3 の分解まで成功しました。
あと、メモリの使い方が荒かったのでブラッシュアップ。(正常系でのメモリリークは全て潰しました)

実例:

% php swfdump.php chara.swf
magic=CWS  version=6  file_length=2902016
frame_size=(0, 0)-(800, 545)
frame_rate=30.0  frame_count=1183
tag=SetBackgroundColor(9)  length=3
tag=JPEGTables(8)  length=574
tag=DefineBitsJPEG(6)  length=31897
        jpeg_id=1  jpeg_data_size=31895
	<略>
tag=DefineBitsJPEG3(35)  length=9289
        jpeg_id=10  jpeg_data_size=6212  alpha_data_size=15792
ちなみに、tag 全体の length が 9289 なのに、 その一部分である alpha_data が 15792 でより大きいのは、 alpha_data 部はファイルには圧縮した形で格納されている為で、 伸張すると大抵は逆転します。
(基本的に、alpha_data はマスクなので圧縮がよく効く)

プログラム:

課題:

  • DefineBitsJPEG2 対応
  • DefineBitsJPEG3 対応 (分解は出来てるので、getAlphaData の実装のみ)
  • php 5.2.x で試してみる

2010/05/09 追記:

ミクシィ「一人勝ち」終わったのか 「グリー」モバイルで女性会員急増

最近の mixi KY *1 ぶりはヒドイですからねぇ…
*1: 朝日新聞珊瑚事件の KY でなく、空気読めないの方ね。念の為。 :-)

2008年04月03日(木)

swfed rect 処理整理

某所から DefineEditText も編集できるといいな。
…といった声が聞こえたので、調査開始。
何でもテキストツールで貼り付けたデータが、 このタグで SWF ファイルに埋め込まれるそうです。 ↑ ここに記述のあるフォーマット構造によると、 movie_header にも出てきた rect の構造が含まれていました。
という訳で、共通ルーチンとして swf_rect.[hc] に切り出しました。
typedef struct swf_rect_ {
    unsigned char align;
    int      x_min;
    int      x_max;
    int      y_min;
    int      y_max;
} swf_rect_t;

extern int swf_rect_parse(bitstream_t *bs, swf_rect_t *rect);
extern int swf_rect_build(bitstream_t *bs, swf_rect_t *rect);
extern int swf_rect_print(swf_rect_t *rect);
今日はとりあえず整理だけ…

プログラム:

追記 (2010/01/12):

検索でこられる方が増えてきたので、まとめページを作りました。

動画共有サイトの違法動画って

誰がどうチェックしているの? 地道に目視チェックなのね。大変そう…

2009/04/22 追記:


2008年04月05日(土)

swfed DefineEditText 対応

rect 処理修正:

テキストツールで貼り付けた矩形の情報を表示すると 以下のような頓珍漢な値が表示されていました。(min が max より大きい…)
tag=DefineEditText(37)  length=42
        edit_id=2
        rect=(393, 393)-(37, 146) (f_size=13)
        text=1 wwrap=0 multi=0 pass=0 ro=1 col=
これで、自分がフォーマットを勘違いしているのかと悩んだのですが、 この値を埋めるフィールドが可変な上に負の値も扱える事に気づいて、 bitstream は unsigned 前提で作ってるので、 2の補数処理をどこかに入れないとダメな事に気づきました。
↓処理はこんな感じで。関数名が思いつかなったのでダサいの許して… ○rz
int two_negative(int num, int size) {
    int msb = 1 << (size - 1);
    int mask = msb - 1;
    if (num & msb) {
        return - ((num^mask) & mask) - 1;
    }
    return num;
}
結果。
tag=DefineEditText(37)  length=47
        edit_id=2
        rect=(-8, -2)-(101, 36) (f_size=12)
それっぽい値になりました。(基準点がいまいち分からないけど…)

DefineEditText の string:

文字列の抽出の仕方が分かりました。
静止テキストの時は インスタンス変数が *1 変数名 が指定できない =variable_name が空で、 その時は、'\0'の 1 byte のみ展開されます。
SWF フォーマットの string は null terminate のバイト列という定義なので、 少し考えれば当たり前なんですけど。
tag=DefineEditText(37)  length=47
        edit_id=2
        rect=(-8, -2)-(101, 36) (f_size=12)
        text=1 wwrap=0 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
        layout=1 no_sel=1 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=
fobaa   initial_text=thisistest
よし…

プログラム:

インスタンス名:

DefineEditText にはインスタンス名を埋めるフィールド(variable_name)が含まれますが、これを埋められるのは「ダイナミックテキスト」と「テキスト入力」2パターン。どちらも Lite1.1 ではインスタンス名が埋められません。
Lite1.1 で使える「静止テキスト」では、インスタンス名を指定できないので入れ替えをする場合は swf をダンプして edit_id を調べて…
という面倒な手順を踏む事になりそうです。

4月9日加筆:

インスタンス名に関して大幅に間違えていたので、
4月7日の日記 で修正しました。
ごめんなさい。ごめんなさい。ごめんなさい。(⊃д⊂)

2010/01/12 加筆:

文字列を思いっきり勘違いしてました。パスカル文字列のように 初めの1byteが文字列長(0~255)で、その後ろに文字列長分のテキストが続きます。
そして、先の 0 は null terminate でなく 0 個の文字列を意味します。

*1: 4月9日修正

“飛び出すテレビ”が家庭に 4月発売

夢のある話ですが、
ヒュンダイITジャパン製
(´д`)…

賢い人が犯しがちな「やりすぎ」というミス

機能や性能よりもハードルの低さがこのビジネスの決め手だったわけだ。
賢くなくても犯しがちだと思うので、自分も気をつけよう。

2008年04月06日(日)

Flash SWF フォーマット

フォーマットが何となく分かってきたので、少し理解をまとめました。 ついでに、JPEG データの扱いについて。 ふと思ったのですが、JPEGTables は SWF ファイルの中に一つしか持てず、 DefineBitJPEG2,3 は、その一つの JPEGTables を見ているようですが、 複数の画像で圧縮テーブルを共通に持つ事って出来るのでしょうか…
そもそも圧縮テーブルが何か分かっていない自分に絶望した。(´Д`;)

swfed DefineBitsJPEG3 対応(2)

DefineBitsJPEG3 と DefineEditText の build 処理を実装。(動作確認はしていませんが…)

プログラム:

課題:

  • DefineEditText の文字列入れ替えの処理を作る
  • DefineBitsJPEG2,3 の JPEG データ構造に対応する

「キーボードクラッシャー」 Gangster/Slikk さんのこと

演技があまりに真に迫り過ぎていたため、クラスメートからまで
素で狂っていると思われ、いじめられてしまったり、また、
ありがちな「ゲームの危険性を考える」うんぬんのメディアから
不当な扱いを受け、本人はMAD作りが嫌になってしまったようだ。
迫真の演技すぎるのは気になっていたけど、 やはり大丈夫じゃなかったのね…

携帯電話について

少しブックマークを整理。

2008年04月07日(月)

swfed DefineEditText 対応 (2)

文字列処理が怪しかったので修正しました。 今度の dump は(rect 以外は多分)完璧。
あと、勘違いしていた事があって、インスタンス名と別に変数名を 指定するボックスがあって、その変数名で ActionScript から アクセス(参照したり代入したり)出来る事を確認しました。
でもって、Lite1.1 で静的テキストしか使えないなんて、 適当な事いってごめんなさい。インスタンス名無しなら普通に、 ダイナミックテキストも入力テキストも publish 出来ました。(;ω;)

以下に dump した結果をつけます。

静的テキスト:

tag=DefineEditText(37)  length=37
        edit_id=2
        rect=(-10, -2)-(134, 18) (f_size=13)
        text=1 wwrap=0 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
        layout=1 no_sel=1 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=
        initial_text=abcde

ダイナミックテキスト:

tag=DefineEditText(37)  length=39
        edit_id=3
        rect=(-2, -2)-(116, 16) (f_size=13)
        text=1 wwrap=1 multi=1 pass=0 ro=1 col=1 maxlen=0 font=1
        layout=1 no_sel=0 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=var1
        initial_text=opqr

入力テキスト:

tag=DefineEditText(37)  length=37
        edit_id=4
        rect=(-2, -2)-(86, 16) (f_size=12)
        text=1 wwrap=1 multi=1 pass=0 ro=0 col=1 maxlen=0 font=1
        layout=1 no_sel=0 border=0
        font_id=1 font_height=14
        red=0x00  green=0x00  blue=0xff  alpha=0xff
        align=2 (left,right)_margine=(0,0) indent=0 leading=40
        variable_name=var2
        initial_text=xyz

プログラム:

PC-8801mkIISR(我が青春)のゲームミュージック&静止画集

おっさんホイホイktkr

78ちゃんねるまとめサイト:今年も懲りすぎな円谷公式エイプリルフール

今更な話しですけど円谷すごいゎ…

Pukiwiki でページ内遷移

サンプル
- [[DefineBitsJPEG2>#tag21]] のデータに
これで、ページ内の #tag21 に遷移できました。

2008年04月08日(火)

awm.jp ドメイン更新料支払い

カードによるお支払いありがとうございます。下記ご請求に対し、
\6,300 の支払いを受け付けましたので、ご連絡いたします。
<略>
                           株式会社ヒューメイア
1年間でこれは高いわ。(⊃д⊂)

2008年04月09日(水)

Flash SWF 上の JPEG の扱い

ming jpeg patch 公開サイトが(一時的か恒久的か分かりませんが) アクセスできなくなっています。
Please come back in the begining of Dec to this page.
It is curently not available. 
google で jpeg.c.diff をキーワードにして、この日記に来る方が 増えてきたので、お役に立てればと cache (?) URL を以下のページに 張って置きました。 あと、ついでに色々と理解が深まってきたので説明文も更新してます。

北京五輪の聖火リレー妨害をネタにしたゲームが登場

ちょw やっぱり作ってる人いたww

PHP extension 配列の返り値

素晴らしすぎるサイトを発見。

実験コード:

PHP_METHOD(swfed, getTagList) {
    int i;
    zval *data;
    array_init(return_value);
    for(i=0; i<2; i++) {
        ALLOC_INIT_ZVAL(data);
        array_init(data);
        add_index_long(data, 2*i, 2*i+10);
        add_index_zval(return_value, i, data);
    }
}

実験結果:

array(2) {
  [0]=>
  array(1) {
    [0]=>
    int(10)
  }
  [1]=>
  array(1) {
    [2]=>
    int(12)
  }
}
あっさり成功…

これで、8 日分だよ〜。

タイトル一覧
カテゴリ分類
Database
JXTA
Java
XML
awm
bookmark
keyword
memo
news
research
Powered by hns-2.19.5, HyperNikkiSystem Project