制作日記

こういうの作った方が、逃げにくいじゃない

講談社漫画単行本のビニール包装の開け方

最近ってほどではないけど、あの開けにくいとか言われてる全包装の奴
慣れると下手な包装より楽なんじゃないかと気づいた

あれは裏表紙側に縦方向の切り取り線が入っているから
ポケットティッシュみたいに親指2本で左右に引っ張って開けるんやで

ただ、真ん中付近でやるとビニールが伸びて開けにくい
せやから、真ん中で引っ張るより、切り取り線の端の方
つまり、上下どっちかで左右に引っ張ったほうが良い

おすすめは下
切り取り線は、上は表表紙ギリギリ、下は熱溶着されてるとこまで伸びてるから
下のほうが切り取り線の端が近いし、溶着のおかげでビニールが伸びにくい

もうちょっと切り取り線を切れやすくすれば、漫画単行本の包装としては最高
他社も見習うべき

なんか調べようと思った

generanaiを2体対戦させつつ、EIPレジスタダンプを100msec毎に100回実施したら
このあたりが良く引っかかった
00457098  |> 8A16           |/MOV DL,BYTE PTR DS:[ESI]
0045709A |. 84D2 ||TEST DL,DL
0045709C |. 74 16 ||JE SHORT winmugen.004570B4
0045709E |. 8B6C24 5C ||MOV EBP,DWORD PTR SS:[ESP+5C]
004570A2 |. 81E2 FF000000 ||AND EDX,0FF
004570A8 |. 66:8B5455 5C ||MOV DX,WORD PTR SS:[EBP+EDX*2+5C]
004570AD |. 8B6C24 14 ||MOV EBP,DWORD PTR SS:[ESP+14]
004570B1 |. 66:8910 ||MOV WORD PTR DS:[EAX],DX
004570B4 |> 8B5424 30 ||MOV EDX,DWORD PTR SS:[ESP+30]
004570B8 |. 83C0 02 ||ADD EAX,2
004570BB |. 03CA ||ADD ECX,EDX
004570BD |. 8BD1 ||MOV EDX,ECX
004570BF |. 81E1 FFFF0000 ||AND ECX,0FFFF
004570C5 |. C1EA 10 ||SHR EDX,10
004570C8 |. 2BF2 ||SUB ESI,EDX
004570CA |. 4F ||DEC EDI
004570CB |.^75 CB |\JNZ SHORT winmugen.00457098



perfというか重い箇所を調べてみようと思って、ついでにmemRead作り直そうしてた
で、ipレジスタのモニターだけサクッと作ってやってみた

https://github.com/drab-l/memRead
Makefileは完全自分用、ビルドしたければlinuxにmingw64入れてどうぞ

ipダンプする以外の機能ないけど、使い方は
memRead [-p プロセスID | -c 実行ファイル名(部分一致)]
で実行、メインスレッドに対して100msecごとにipレジスタをダンプ
実行ファイル名指定時は検索して最初に見つかったやつ

次は指定箇所の処理時間計測やろうかなと思ったけど、どういう方式にすべきか

RISCとか固定長命令のアーキテクチャなら指定箇所を逆アセンブラして計測開始終了箇所時に自前のコードに飛ぶようにしてってので良いかもだけど
可変長命令のx86でそれは面倒くせー、もうBP張る方法で良いかな
という状態で、GW終わってから絶賛放置中

allegro

mugenで使ってるallegroのライブラリalleg40.dllはmugen-hiに同梱されてるの使ってるけど
試しにallegro公式サイトからソース持ってきて自前でビルドしてみた
ビルド環境はcygwin+mingw(i686-w64-mingw32)
古すぎてビルド通すのも一苦労
特に何か効果があったわけではないけど、patch公開しとく

allegro_patch.ico

手順
$ wget http://download.gna.org/allegro/allegro/4.0.3/allegro-4.0.3.tar.gz
$ wget http://blog-imgs-104.fc2.com/d/r/a/drabs/allegro_patch.ico
$ rm -rf allegro-4.0.3 && tar xf allegro-4.0.3.tar.gz
$ cd allegro-4.0.3
$ ./fix.sh mingw32
$ patch -p0 < ../allegro_patch.ico
$ make
makeはdemo.exeのビルドでこけるけど、この時点でalleg40.dllはビルド終わってるから問題なし

以下、ビルド通るまでの紆余曲折
サイト:http://liballeg.org/
Older vbersionから4.0.3持ってくる
4.0.0でもいいけどpatch当たらない
はじめは4.0.0でビルド通してpatch作って、その後4.0.3用にpatch作り直したから
4.0.3と同じように修正すればビルドは通る

適当なとこに解凍して
allegro-4.0.x\docs\build\mingw32.txt
の Setting up Cygwin to build Allegro
に従って設定していく

dx70_mgw.zip持ってくるのは飛ばした、VC入れてるし無視
入れようと思ったけど止めた、誰か頑張れ
http://download.gna.org/allegro/files/dx70_mgw.zip

makefileでtoolchainをgccとか直で叩いてるから、適当にmingwに書き換え
あとは、ビルドオプションとか諸々をその場しのぎで修正
ソースも一部こけるから修正
それでもこけるとこを、色々試しつつ無難かつお手軽な方法で修正

で、とりあえずビルド通ってmugen起動するとget_dx_verないって怒られる
munge-hiに同梱されてるalleg40.dllはget_dx_verをエクスポートしてるっぽい?
というわけで、lib/mingw32/allegro.defにget_dx_ver追加してmugenとリンクできるようにエクスポートしてやる
これでリンクは成功するけど、次はDXのversionで怒られて起動できない
面倒だから固定値で0x800を返すように変更

長さ修飾子

man page読んでたら目に入ったんやけど
printfの長さ修飾子、あれhでshortやけど%nにも有効なんやな
msdnでは%nに有効とは書いてないけど試してみたら使えた
%nなんて普通の開発で使わんし、これは知らんかった

つーわけで、%hnで書き込みサイズを2byteに制限できるやん
コードなしでも親変更3byte分までは安全に軽量化できるやん
C99ならhhも使えたんやけどな
MSはVCをC99準拠させるつもりないから仕方ないね

見た感じ1byte書き込みは無理、2 or 4 byteのみ
00496C98  |. EB 35          |JMP SHORT winmugen.00496CCF
00496C9A |> 8D45 10 |LEA EAX,DWORD PTR SS:[EBP+10] ; Case 6E ('n') of switch 004969C5
00496C9D |. 50 |PUSH EAX
00496C9E |. E8 1B030000 |CALL winmugen.00496FBE
00496CA3 |. F645 FC 20 |TEST BYTE PTR SS:[EBP-4],20
00496CA7 |. 59 |POP ECX
00496CA8 |. 74 09 |JE SHORT winmugen.00496CB3
00496CAA |. 66:8B4D EC |MOV CX,WORD PTR SS:[EBP-14]
00496CAE |. 66:8908 |MOV WORD PTR DS:[EAX],CX
00496CB1 |. EB 05 |JMP SHORT winmugen.00496CB8
00496CB3 |> 8B4D EC |MOV ECX,DWORD PTR SS:[EBP-14]
00496CB6 |. 8908 |MOV DWORD PTR DS:[EAX],ECX
00496CB8 |> C745 D8 010000>|MOV DWORD PTR SS:[EBP-28],1
00496CBF |. E9 23020000 |JMP winmugen.00496EE7

ゼルダ

先週からずっとやっててようやくクリア、面白かったわ
50時間ぐらいかかったのかな?

チュートリアルが1時間かからないぐらい
そこからメインストーリー進め始めるまでの道草で30時間ぐらい
道草食いつつ本編進めてクリアまで20時間ぐらい

こんだけゲームに熱中したのなんて久しぶりだわ
プロフィール

Author:drab
霊夢改変キャラ
「12 3 ! {V} [_]」
公開中
L霊夢でもl_reimuでも好きなように読んでください

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク