2009年2月4日水曜日

自作ジャンクソフト(3)DirectInput Wrapper for Xbox360 Controller

DirectInput Wrapper for Xbox360 Controller

Xbox360コントローラの公式ドライバで発生する、不都合を回避するラッパーです。
以下の不都合を回避します。
・十字キーがPOV
・トリガーの同時押しが出来ない。

注意点
・まだ開発が十分ではないため、対応しないソフトもあると思います。
・今のところ振動はしません。

変更履歴
    2012/11/11
        開発環境をVisual Studio 2012に変更
        ソースコード整理
        wine-1.4.1ベースにしようとしたが挫折
    2012/11/15
        キーボードとマウスを使えるようにした
    2012/11/18
        wine-1.4.1ベースにした
        64bitに対応

2009/12/15 リンク先変更
http://sites.google.com/site/eleproxxx/DI_Wrapper.zip?attredirects=0&d=1

2008年11月13日木曜日

Zwei!!をXbox360コントローラで遊んでみた

今更ながら、Zwei!!をXbox360コントローラで遊んでみた。
まず予備知識として
・Zwei!!は2001年発売。
・Xbox360コントローラは2005年発売。

気付いたのは、Zwei!!の移動がアナログに対応していたということ。
2001年当時は、ジョイパッドにアナログスティックがついているものはあまりなかったと思う。
もちろん全くなかったわけではないが、一般に普及しているといえるほどではなかった。
それだけを考えると、よくそんなものに対応したなと感心するのだが、オチがあった。

それは、遊び値の設定である。
Xbox360コントローラ自体が持っている遊びの量に対して、ゲームが設定している遊びが少なく、
ニュートラル状態でもゆっくり移動してしまうのである。
このせいで、特にピピロを操作する場合に、立ち止まって任意の方向に魔法を出すということが非常に難しかった。
立ち止まったつもりでもゆっくり移動したり、反対方向を向いたりしてしまうのである。

恐らく、マウス操作の場合の移動処理で、アナログ値を引き渡す関数を使っていて、
そのルーチンをジョイパッドにも使い回しているのだろう。
きっとそれによってたまたまアナログ対応になったのだと思う。

余談だが、遊ぶ途中でパッチを入れた際、説明以外の気付いた範囲で以下の変化があった。
・迷宮で本、翼が使えなくなった
・変なところでセーブする場合がある
・たいたんがミルクを落とすようになった
・まだドアに挟まる場合がある

2008年9月8日月曜日

某ゲームであった画質設定

以前遊んだあるゲームで、FrameRateの設定がx1~x4まであるゲームがあった。
マニュアルに説明が書いていなかったために、試しにそれぞれを設定してみたところ、

1だと標準の速度
2だと速度1/2
3だと速度1/3
4だと速度1/4

という現象が起こったことがあった。

ソフトはそれよりも更に数年前に発売されたもので、マシンスペックは明らかに推奨を上回っていたのにFrameRateを上げると半分以下の速度しか出ないというのはありえないので、調べてみたら、DirectDrawに以下のような機能が存在することを知った。
おそらくそれだったのだろう。
FrameRateってモニタのFrameRateってことか。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Flip関数には
DDFLIP_INTERVAL2
DDFLIP_INTERVAL3
DDFLIP_INTERVAL4

という定数を引数として渡すことが出来る。

これらは、Vsyncを2~4回待ってから描画をするという意味を持つ。

2008年7月10日木曜日

フルスクリーンでゲームをやるとフリーズ

ある日突然、フルスクリーンでゲームをやると数秒後にフリーズするようになった。
ゲームを問わず再現するので、グラフィックボードでも故障したかなと思ったのだが、
数日前に電源を一度外した事を思い出し、その時にどこか接触不良でも起こしたかなと思って、
グラフィックボードを挿し直したらどうやら直ったっぽい。

マシンの買い替えも少し考えたが、早まらなくて良かった。
こういう症状もあるんだな。

2008年5月29日木曜日

Visual Studio 2005から2008 に移行しようとしたら問題発生

iTunesを使ってCD情報をcdplayer.iniに出力するソフト
のプロジェクトを2008に変換して、コンパイルし実行したら、
cdplayer.iniを出力する段階でなぜかERROR_ACCESS_DENIEDが発生するようになった。

ソースはまったく手を入れていないし、バックアップされたプロジェクトファイルで2005でコンパイルするとエラーにならない。

ためしに、2008の「リンカ」-「マニフェストファイル」-「UACの実行レベル」でasInvokerをhighestAvailableに変更すると、
一応動くのだがフォルダがリダイレクトされないで、c:\windows\に出力してしまう。

最終的に、
「リンカ」-「マニフェストファイル」-「ユーザー アカウント制御 (UAC) を有効にする」を「いいえ」
にしたら2005と同じ動作になった。

2008年4月1日火曜日

.NET Compact Framework 2.0でサウンドプレーヤーを作ろうとしたが

ストリームサウンドを扱うクラスが無いらしく、C言語を使うしかないという結論に達した。

2008年3月23日日曜日

iTunesで曲を買ったらM4Aだった

コカコーラを買ったらiTunesで曲をもらえるというキャンペーンをやっていたので、
これを利用してiTunesのアカウントを取得して曲を購入してみた。
購入したのは2006年リリースの150円の曲で、購入したファイルを見てみると
拡張子がM4Aで、DRMはかかっていない様子。
iTunes以外のプレーヤーでも再生できるし、他のPCにコピーしても再生できました。
これは普通にありえることなのだろうか?

15:00追記:購入した曲は150円でもiTunes Plus配信のものでした。だから普通です。