A4HighSpeed - A4 for Windows 高速化

アートディンク社のゲーム『A列車で行こう4 for WINDOWS』(以下、A4と記述)を高速動作させるフリーウェアです。

WindowsXP対応版では動作未確認です。私の環境では未確認ですが、WindowsXP対応版でも動作したとの報告を受けています。

以下がダウンロードリンクになっています。その他、詳しくは中のreadme.txtを参照して下さい。

A4は、いかにCPUが高速であろうとも、一定以上のゲーム進行速度が出ないようになっています。それをムリヤリ、高速で時間が進むようにします。

A4HSに関する諸連絡は熊恭太郎雑記のA4HighSpeed関連記事のコメント欄か、熊恭太郎(kuma@noelnet.org)にお願いします。

一年の所要時間を計測

どれだけ速くなったか、ストップウォッチで一年の所要時間を計測してみました。

条件は、すべてのオプションをオフにして、表示エリアを最小にして、サテライトを過疎地に合わせる。他の窓は開かない。人口約16万、車両数は30台フル稼働、新幹線とリニアが存在。バスはなし(手元のデータではバスを使用していないので)。

  • 通常の最速 … 約51分
  • 最高速で高速化 … 4分17秒

十二倍以上の開きがあります。ということは、私のマシンでは、従来のひと月の時間で一年が経過することになります。

これ以上速くなるか

理論上はまだまだ速くなりますが、対応が大変なのでこのあたりまでの予定。

現在は、A4HS自身が10ミリ秒のタイマ割り込みで動作しており、ゲーム内一時間あたり最低でも10ミリ秒は無駄な時間が存在します。

A4HSの高速化原理は、A4のリミッターを解除したわけではなく、A4に対してリアル時間の進み具合を「騙して」いるだけです。十ミリ秒も経っていないのに、百ミリ秒が経過したかのように見せかけることで、A4は騙されて時間が進んだと思い、処理を先に進めてくれるというわけです。リミッターを外すには常駐プログラムを作るよりも、実行モジュールの改造をした方が良いと思います。

(あるいは、専門的な話になりますが、APIのSetTimer()の呼び出しをフックして、SetTimer()が呼び出されたら即WM_TIMERを投げるようにすれば効率よく、かつ丁寧に高速化できます。現状は、やみくもに大量のWM_TIMERを送りつけているだけですので、よく異常動作しないものだと感心しています)

類似ソフトについて

ざっと確認したところでは類似ソフトは見あたりませんでしたが、より高機能もしくは安定した類似ソフトウェアをご存じの方は教えて下さいませ。

A4HSのv1.00の制作時間は二時間ほどです。A4は知名度が高く、かつて高速動作が求められることで有名なゲームであったにも関わらず、これまでこの手のソフトが存在しなかったことが不思議でなりません……。