他人の空似

2013 年 6 月 23 日

DisableJoyL3

Filed under: software — 中の人 @ 12:24 AM

東方心綺楼ジョイパッドキー11(俗にいうL3ボタン)無効化ツール
DisableJoyL3.zip

東方心綺楼1.04(本ツールリリース時最新)のネット対戦でジョイパッドのキー11がEsc固定になってしまったため、誤爆して対戦を抜けてしまう可能性が出てきました。
そこで、そのキーを無効化し、間違えても入力が入らないようにしたのがこのツール。
機能はそれだけ、他はなーんにもない。

自分でもなぜ作ったのが謎すぎるぐらい需要がない微妙ツール。
まぁPS系コントローラー以外を使っており、キー11が押しやすい場所にある人は使ってみてもいいかもしれない。
でも無効にするだけなので、キーコンフィグでキー11に何かを割り当てても使えない。
ダメダメですね!

2013 年 4 月 21 日

コマンドプロンプト入力履歴保存ツールcmd_logger

Filed under: software — 中の人 @ 3:43 AM

コマンドプロンプト入力履歴保存ツールcmd_logger
cmd_logger.zip

心綺楼の解析が思うように進まないのでむしゃくしゃして作った。
友人のつぶやきから一晩ででっちあげ、その後最低限一般利用できそうな機能をあしらえただけの物。

ちなみに我が家の常用cmdさんは早速これに切り替わりました。
今のところ不便はしてないです。

IATの書き換え、サスペンド状態でexeを起動してdllをインジェクション、とそれなりのことはやっているが
内容はだいぶコンパクトなので、そういうことに興味ある人なら習作として使うこともできるかもしれない。

2009 年 10 月 16 日

djpeg.so

Filed under: software — 中の人 @ 4:32 AM

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第七弾
(出来立てホヤホヤじゃね?とか、外部と関係ありすぎじゃね?って突っ込みは禁止)

djpeg.so@ver0.10
Jpegを他の画像形式に変換するRubyの拡張ライブラリ。
色数変更やらグレイスケール化やら地味に色々あるけれど、それは単に他所様のライブラリを使っているから。
自分がやったのはRubyの拡張ライブラリ形式にする部分だけ。

ネット上で友人に「th123_aiのDLL化なぞして遊んでるw」って言ったらなぜかRubyの拡張ライブラリを作る流れになっていた、なにを言っているのか(ry
まぁ楽しかったからいいけどね!
ちなみに、作成理由はexerbなるRubyでGUIアプリを作れるライブラリ(環境?)を使うと標準のjpegライブラリが使えないから、ということらしい。

最初はdllで遊ぶのは息抜きのつもりだったのに気づいたら4時過ぎですってよ。
ハッハッハ、明日起きれるかしら……w

2009 年 10 月 10 日

DXLibGameSettingDialog

Filed under: software — 中の人 @ 8:08 PM

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第六弾
(これ随分と久しぶりだw)

DXLibGameSettingDialog
DXLibで作ったゲーム用設定ダイアログ
とある人向けに作ったので汎用性に欠けるが、見せられないほどじゃないので公開。
たぶん使用用途は大分狭いので、実際に使うよりかは参考にする程度が一番かもしれない。
WTLでダイアログ組んだり、ゲーム以外の分野でDXlib使う際に参考になる、かな?

ぶっちゃけ、開発よりReadme書いてソース見せられる形にして~って作業の方がしんどかったです。

2009 年 2 月 26 日

Borlandの罠

Filed under: software — 中の人 @ 4:26 AM

本日(というよりは昨日)13時間無駄にした時の話

まずはこのコードを見てもらいたい
#include <windows.h>
#include <stdio.h>
long WINAPI exep(EXCEPTION_POINTERS *pep){
return EXCEPTION_CONTINUE_EXECUTION;
}
int main(){
SetUnhandledExceptionFilter(exep);
printf(“mainn”);
RaiseException(0x00000000,0,0,NULL);
printf(“main2n”);
return 0;
}

これはC言語からWin32APIの機能を使って例外処理を行うサンプルで
SetUnhandledExceptionFilter関数にてexepを例外処理関数に設定し、exepでは何もせず即例外位置に復帰するだけのプログラム。

ここで問題なのが、上のコードを手元のbccコンパイラでコンパイルするとINVALID DISPOSION例外を吐いて動作しないこと。

最初は何かしら必須な処理を怠ったせいかと思いサンプルコードを大量に引っ張ってきたり、関連知識がありそうな友人に片っ端から相談したが一向に原因が掴めず
最小コードをこねくり回している最中に、間違えてVCコンパイラでコンパイルしたことから原因判明。
要するに「BCCコンパイラだからエラーしている」というもの。

理由:
BCCコンパイラがmain関数前にSEH連鎖の0番に設定する関数でエラーしている。
(SEH連鎖:例外処理関連で呼ばれる関数、数珠繋ぎにいくつも設定できる)

で、OS自体が用意してくれる関数を使っているうちは問題ないのでBCCさんの独自関数にはどいてもらうことにする。
具体的にはこんなコード
#ifdef __BORLANDC__
__asm{
push EAX
mov EAX,DWORD PTR FS:[0]
mov EAX,DWORD PTR DS:[EAX]
mov DWORD PTR FS:[0],EAX
pop EAX
}
#endif
SEH連鎖1番のアドレスを取ってきて0番に上書きするだけ
ただC言語上からアクセスする方法が自分の知る範囲では存在しないのでインラインアセンブラの力を借りてます。

無料版にインラインアセンブラやらを無理やり突っ込んだものを使っているので、普通のBCC環境とは微妙に違っているのが原因か?
もし有料の最新版でも発現するバグなら割と大事だがどうだろう。
コンパイラ自体がわざわざ自家製の関数を突っ込んでいるのだから何かしら意味があるのかもしれないが、VCでは不便していないのでこのまま行くことにする。

さて、これで例外報告機能も復旧できたし、今度こそth105_aiで0.80に向けた作業に……

2009 年 2 月 8 日

libmidi

Filed under: software — 中の人 @ 3:46 AM

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第四弾

libmidi
midiの発展系
簡易的にmidiファイルを作成するためのライブラリ、一応再生も出来る。
ガラクタ置き場の中では珍しく(唯一?)一般向けで参考資料以外の使い道があるソフトウェアでもある。

友人からmidiの出力用に簡単なライブラリを作ってくれと頼まれたときに作ったもの。
(渡して以来音沙汰が無いのだが、その後完成したのだろうか・・・?)
th105_aiの適当ドキュメントやAPI設計の原点は多分ここ。

プログラミングやmidiの知識経験ではなく、設計やデザインについて始めて意識した作品ということで
かなり思い出深かったりする。

2009 年 2 月 5 日

midi

Filed under: software — 中の人 @ 10:05 AM

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第三弾

midi
midiの読み書き再生を行うプログラム、使い道が特に無い習作。
Readmeにもあるとおり、midiの入出力に興味がある人へ向けた参考資料程度の価値しかありません。

midi再生には自分で全部やる方法とデバイスに全て任せる方法の二つ用意されていて
このプログラムは前者の方法で演奏されている。 理由は簡単で、デバイスに任せても楽しくないから。
ただし、この方法はCPUに依存するため処理落ちで音声が乱れる。
さらに、時間管理の実装が大分いい加減なためにデバイス式に比べかなり品質が劣る。

というわけで普通にmidi再生をする場合、この実装はあまり参考にしない方がいいかもしれない。
(それ以前に、単純再生ならいくらでも他に方法はあるだろうが)

どうでもいい話:
某動画サイトにてmidiの音階を視覚化した動画を見たのがきっかけになって作ったプログラムで
当時東方に強く触発されていた時でもあったので、最初はその音階を資格化から弾幕STGでも作ろうと思っていた。
が、GUIに手を出して完成させたことが無い自分がいきなりそんなもの作れるはずもなく……
結局midiの再生まで行った所で、サウンドフォントやmidiデバイスに興味が向いてなかったことにされましたとさ。

これのおかげで音楽に対する造詣が大分深まったと思う。
音楽はコンピュータ上においてどのように表現されているのか、という方面はかなり。

ところで、midiの仕様作った人はかなり頭おかしい(ほめ言葉)と思うんだが、どうだろう?

2009 年 2 月 4 日

th105_ai

Filed under: software,東方 — 中の人 @ 11:20 AM

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第二弾
といいつつ、今回はバリバリに外部と関係のあるソフトです。

th105_ai
東方緋想天という格闘ゲームでAIを作ることが出来るソフト。
スクリプトエンジンはLuaを使っていて、キー操作をエミュレートする形でAIを作成できる。
現在進行形で開発中のソフト、自作物の中で一番アクセス数の多いソフトでもある。

個人的に結構こだわりのあるソフトで、緋想天側にはキーイベントを送る以外一切影響を与えないように設計してある。

他にも、C言語レベルでマイクロスレッド(コルーチンかファイバーというべきかも?)が実装されていたり
C言語なのに例外処理を行っていたり、非アクティブな状態から指定ウィンドウをアクティブにしていたりと
色々度外視しすぎな無駄技術が詰め込まれている、まさにおもちゃ箱的存在。

2009 年 2 月 2 日

DllFuncList

Filed under: software — 中の人 @ 12:48 AM

いい加減zipだけ放っておくのはどうかと思うので
特に外部と関係ないものだけでも説明しておこう第一弾

DllFuncList
dllを指定するとアドレスと関数名を列挙してくれるだけ、いわゆる習作。
ソース付き(コメントなし)なので、dllから関数名を列挙する処理を組みたい人にとっては有用かもしれない。

「公開するつもりで書いたほうが勉強になる」という自分ルールによる公開なので公開自体に意味は無い。
むしろ同じ機能を持ったもっと良いアプリはいくらでも転がっているので、存在価値は自己満足。

Powered by WordPress