SlideShare a Scribd company logo
em-dosbox
10/18 (水)
emscripten & WebAssembly night !! #5
自己紹介
• HN: さい
• Twitter: @sairoutine
• Web のフロント/サーバーサイド
• FaithJS っていうブラウザ向けファミコンエミュレータ作っ
てました
• 現在は Emscripten で PC-98 向けゲームのブラウザ移
植やってますが、うまくいってません。誰か助けて...
DOSBox
DOSBox
• https://www.dosbox.com/
• MS-DOSのエミュレータ
• CPUのエミュレートからやってくれる
• DOS向けの古いゲームを動かせる
• Win3.1 などのソフトも動かせる
em-dosbox
• https://github.com/dreamlayers/em-dosbox
• DOSBox をブラウザに移植したもの
• Emscripten を使って、DOSBox のコードを
JavaScript (asm.js) に変換
• 任意のDOS向けソフトをブラウザで動かせる
• WebAssembly 形式でも出力可
http://jp.techcrunch.com/2015/01/10/20150109internet-archive-brings-oregon-trail-
prince-of-persia-lemmings-and-2200-other-ms-dos-games-to-your-browser/
⇛ em-dosbox を利用して Web 移植してる
em-dosbox を使って
実際にブラウザで動かしてみる
emsdk のセットアップ
git clone git@github.com:juj/emsdk.git
cd emsdk-portable
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
em-dosbox の コンパイル
# em-dosbox のダウンロード
cd ../
git clone git@github.com:dreamlayers/em-dosbox.git
cd em-dosbox
# configure ファイルの生成
./autogen.sh
# emscripten 用 Makefile の生成
emconfigure ./configure --without-sdl2
# コンパイル
make
DOS向けアプリをパッケージング
# DOS 用実行ファイルを emscripten 向けにパッ
ケージング
./packager.py DataName AppDir BOOT_APP.EXE
# http-server を起動
python -m SimpleHTTPServer 8000
# ブラウザでアクセス
open http://localhost:8000/badapple.html
DEMO
まとめ
• Emscripten を使うと、既存のC/C++ アプリケー
ションをブラウザに移植できる
• エミュレータをブラウザに移植すると、古いOS
/CPUアーキテクチャ向けのアプリケーション
もブラウザに移植できる
• ブラウザで出来ることを増やせる Emscripten
は偉大
技術同人誌出します
・タイトル
Emscriptoon
・説明
Emscripten を浅く広く扱った本
・お値段
1冊 500円
・頒布
10/22 (日) アキバ・スクエアで
開催される技術書典 3 「い08」
にて頒布予定

More Related Content

What's hot

ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方Daisaku Mochizuki
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということNaruto TAKAHASHI
 
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってますYuusuke Takeuchi
 
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Kouji Hosoda
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
AimingStudy
 
通信対戦ゲームを作った話
通信対戦ゲームを作った話通信対戦ゲームを作った話
通信対戦ゲームを作った話
mipsparc
 
Cpi mega mix
Cpi mega mixCpi mega mix
Cpi mega mix
Ryuji Egashira
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
Sugoi Kanari
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
kinneko
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
Keisuke Utsumi
 
74thオンラインテキストブックマーク
74thオンラインテキストブックマーク74thオンラインテキストブックマーク
74thオンラインテキストブックマーク
74th
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
Shougo
 
Vagrant でお手軽開発環境
Vagrant でお手軽開発環境Vagrant でお手軽開発環境
Vagrant でお手軽開発環境
Hideki MACHIDA
 
2016年注目の.netテクノロジー
2016年注目の.netテクノロジー2016年注目の.netテクノロジー
2016年注目の.netテクノロジー
Makoto Nishimura
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作り
Hidemi Kawai
 
SurfaceTextureとシェーダを使って遊んでみる
SurfaceTextureとシェーダを使って遊んでみるSurfaceTextureとシェーダを使って遊んでみる
SurfaceTextureとシェーダを使って遊んでみる
Tatsuya Matsumoto
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
Kenichiro MATOHARA
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
Kenichi Takahashi
 

What's hot (20)

ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
 
Html5 でアプリを作るということ
Html5 でアプリを作るということHtml5 でアプリを作るということ
Html5 でアプリを作るということ
 
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
日曜プログラマーがHtml5とかで通信対戦ゲームを作ってます
 
Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例Unity×HTMLで作るiPhone オンラインゲーム開発事例
Unity×HTMLで作るiPhone オンラインゲーム開発事例
 
剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題剣と魔法のログレス(PC版)の自慢と課題
剣と魔法のログレス(PC版)の自慢と課題
 
通信対戦ゲームを作った話
通信対戦ゲームを作った話通信対戦ゲームを作った話
通信対戦ゲームを作った話
 
20130216
2013021620130216
20130216
 
Cpi mega mix
Cpi mega mixCpi mega mix
Cpi mega mix
 
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
 
apasec001-kawai
apasec001-kawaiapasec001-kawai
apasec001-kawai
 
ICSをビルドしてみた
ICSをビルドしてみたICSをビルドしてみた
ICSをビルドしてみた
 
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
CrystalFantasiaを支えきった技術と技術だけではどうにもならなかった話
 
74thオンラインテキストブックマーク
74thオンラインテキストブックマーク74thオンラインテキストブックマーク
74thオンラインテキストブックマーク
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
Vagrant でお手軽開発環境
Vagrant でお手軽開発環境Vagrant でお手軽開発環境
Vagrant でお手軽開発環境
 
2016年注目の.netテクノロジー
2016年注目の.netテクノロジー2016年注目の.netテクノロジー
2016年注目の.netテクノロジー
 
やってよかったOS作り
やってよかったOS作りやってよかったOS作り
やってよかったOS作り
 
SurfaceTextureとシェーダを使って遊んでみる
SurfaceTextureとシェーダを使って遊んでみるSurfaceTextureとシェーダを使って遊んでみる
SurfaceTextureとシェーダを使って遊んでみる
 
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
 

More from sairoutine

How to manage parameters for gacha games
How to manage parameters for gacha gamesHow to manage parameters for gacha games
How to manage parameters for gacha games
sairoutine
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
sairoutine
 
Dark side of the reflect
Dark side of the reflectDark side of the reflect
Dark side of the reflect
sairoutine
 
マジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリーマジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリー
sairoutine
 
flow による型のある世界入門
flow による型のある世界入門flow による型のある世界入門
flow による型のある世界入門
sairoutine
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
sairoutine
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
sairoutine
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
sairoutine
 
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をするSlack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
sairoutine
 

More from sairoutine (10)

How to manage parameters for gacha games
How to manage parameters for gacha gamesHow to manage parameters for gacha games
How to manage parameters for gacha games
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
Dark side of the reflect
Dark side of the reflectDark side of the reflect
Dark side of the reflect
 
マジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリーマジック・ザ・ギャザリングの背景世界とストーリー
マジック・ザ・ギャザリングの背景世界とストーリー
 
flow による型のある世界入門
flow による型のある世界入門flow による型のある世界入門
flow による型のある世界入門
 
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れるレガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
 
Mithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワークMithril - 軽量/高速なMVCフレームワーク
Mithril - 軽量/高速なMVCフレームワーク
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をするSlack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
Slack + Hubot でお前の一番好きな二次元嫁キャラと一緒に仕事をする
 

em-dosbox