em-dosboxと新年のギフト50個

いくつかのものは長年にわたって良くなります。 たとえば、DOS時代に開発された古典的なゲームは魅力的です。 それらのそれぞれは、大きな愛で作られた作品です。 残念ながら、DOSプラットフォームは過去のものであり、素晴らしい製品がそこに残されています。 それらを現代の世界に戻すために-これは本当の贈り物ではありませんか?





どうやって? とても簡単です! もちろん、興味のある読者はemscriptenプロジェクトを覚えています。そのおかげで、C ++コードをJavaScriptに変換してブラウザーで動作させることができます。 彼の助けにより、DOOM、Dune 2、TTD、X-COMなどのゲームがブラウザに適合しました。 ただし、このパスは長くて困難です。 1つのプロジェクトには最大6か月かかります。 そして、あなたが一度にすべてを望むなら? 他の方法はありますか?



em-dosbox



別の方法があります-DosBoxを使用します。 実際、DOSプラットフォーム全体(正確にはMS-DOSエミュレーター)を移植できるのに、各プロジェクトを個別に移植するのはなぜですか。 この独創的なアイデアはem-dosboxプロジェクトBoris Gjeneroによって具体化されました 。 これは、emscriptenを使用して作成されたJavaScriptのDosBoxポートです。



そこで、「ほぼすべての」DOSプログラムをブラウザに転送する方法を説明します。



成分





動作中、ブラウザはdosbox.jsとデータパケットをプログラム(通常はソースプログラムのディレクトリがパックされたバイナリファイル)でロードします。 dosbox.jsスクリプトは、JavaScriptに移植されたDosBoxにすぎません;実行されると、DOSプラットフォームで実行されているプログラムでDOSプラットフォームをエミュレートします。



dosbox.jsのコンパイル



すべてがシンプルです。 em-dosboxリポジトリのクローンを作成し、autotoolsとmakeを使用してコンパイルします

git clone https://github.com/dreamlayers/em-dosbox.git cd em-dosbox ./configure make
      
      





成功すると、 dosbox.htmldosbox.jssrcフォルダーに表示されます



em-dosboxのパフォーマンスの改善
src / Makefile.amの dosbox_LDFLAGS--memory-init-file 0オプションを追加します。 このオプションは、読み込みを高速化するために使用されるメモリファイルの生成を無効にします。 この場合、このファイルのサイズは約30メガバイトになりますが、これはブラウザーには適用されません。

 dosbox_LDFLAGS = -s TOTAL_MEMORY=67108864 --pre-js pre.js --memory-init-file 0
      
      





src / dosbox.cppファイルで、置き換えることをお勧めします

 emscripten_set_main_loop(em_main_loop, 100, 1);
      
      



 emscripten_set_main_loop(em_main_loop, 0, 1);
      
      





この編集により、生産性が大幅に向上します。 ただし、ターゲットプログラムは十分にスマートであり、コンピューターのパフォーマンスに関係なく同じ速度で実行できる必要があることを考慮する必要があります。そうしないと、プログラムの動作が速すぎます。



エミュレータを高速化するには、 src / gui / sdlmain.cppファイルmain関数に次の行を追加します

 #ifdef EMSCRIPTEN EM_ASM("SDL.defaults.copyOnLock = false; SDL.defaults.discardOnLock = true; SDL.defaults.opaqueFrontBuffer = false;"); #endif
      
      











プログラムのパッケージ化



em-dosboxには、プログラムを含むディレクトリをバイナリファイルにパックできるスクリプトが付属しており、dosbox.jsと組み合わせて使用​​できます。 たとえば、Dune 2ゲームのバッチファイルを取得するには、次のようにします。

 #python src/packager.py < > <  > < > python src/packager.py dune2 ~/dune2 dune2.exe
      
      





成功すると、 dune2.htmlおよびdune2.dataファイルが作成されます。 HTMLファイルは、 dosbox.htmlテンプレートを使用して作成されます( srcフォルダーにあります)。



dosbox設定を変更する
デフォルトでは、dosboxは標準構成で起動されます。 変更するには、プログラムフォルダにdosbox.confファイルを作成するだけです。 そして、ビルドスクリプトを次のように変更します。

 #86  f.write("Module['arguments'] = [ '-conf', './dosbox.conf', './" + EXECUTABLE + "' ];\n</script>\n")
      
      







打ち上げ



したがって、3つのファイルがあります。





それらをサーバーに配置することにより、ブラウザーでプログラムを実行できます。



明けましておめでとうございます。

50の新年の贈り物。



適応ゲームのリスト
次のゲームは、em-dosboxを使用するブラウザーに適合しています。

  • 虐待
  • 路地猫
  • 別の世界
  • アーケードバレーボール
  • アルカノイド
  • バトルチェス
  • 武道館:マーシャルスピリット
  • CDマン
  • コロラド
  • お化け屋敷の危険なデイブ
  • デストラック
  • 掘り
  • ディズニーのダックテイルズ:ゴールドクエスト
  • 運命
  • ドゥーム2
  • デューン2
  • ダイナブラスター
  • ミミズジム2
  • ファイア&フォーゲットII
  • ゴブリン1-3
  • 黄金のx
  • 異端者:ヘビライダーの影
  • 信じられないほどのマシン
  • IndyCar Racing
  • クリプトンエッグ
  • ランボルギーニ:アメリカンチャレンジ
  • ロードランナー
  • 失われたバイキング
  • 金属変異体
  • マイクロマシン
  • 地雷爆撃機
  • モータルコンバット
  • パックマン
  • 先史時代
  • 先史時代2
  • プリンスオブペルシャ
  • 焦土:すべてのゲームの母
  • シムシティ
  • スタント
  • サプレックス
  • 試乗
  • テトリス
  • タワートプラー
  • ティリアン2000
  • うん!
  • Warcraft:オークと人間
  • 怒りの翼
  • 冬のスーパースポーツ92
  • ウルフェンシュタイン3D
  • Xonix





All Articles