SlideShare une entreprise Scribd logo
1  sur  12
80年代ゲーム機の技術を
FPGAに実装してみた
@mgwsuzuki
2018/6/30 @mgwsuzuki 1
Arty Z7に昔のゲーム機の技術を実装した
• Arty Z7
• Arm Cortex-A9を内蔵したFPGAを搭載
• Linuxが動作し、HDMI出力ができる
• 秋月電子で購入可能(2万円台)
2018/6/30 @mgwsuzuki 2
FPGA
• デジタル回路をプログラミングできるLSI
• verilogやVHDLといったハードウェア記述言語(HDL)で設計
• スピードや回路規模を無視すればCPUやGPUを作ることも可能
• Arty Z7搭載のFPGAはXilinx社から無償の開発ツールをダウンロードして
開発できる
2018/6/30 @mgwsuzuki 3
スプライト
• 80年代ゲーム機(ex:スーパーファミコン)で使われた画像表示技術
• ドット絵のキャラクタを自由に動かす
• ハードウェアが頑張りソフトウェアの負荷が小さい
位置:x0, y0
キャラ: id0
位置:x2, y2
キャラ: id2
スプライトごとに位置とキャラクタ指
定したら後はハードウェアが自動的
に画像を作ってくれる
2018/6/30 @mgwsuzuki 4
1024個のスプライトとBG画面の同時表示
2018/6/30 @mgwsuzuki 5
実装した回路のスペック
本回路 スーパーファミコン X68000
解像度 800x600 256x224(?) 256x256~1024x768(16色)
スプライト表示可能色数 32768 32768から16色x8パレット 65536から16色x16パレット
最大スプライト数 1024 128 128
最大横表示スプライト数 256 32 32
スプライトサイズ 16x16 8x8,16x16,32x32,64x64 16x16
BG画面 4枚 最大4枚 2枚(+ビットマップ画面)
2018/6/30 @mgwsuzuki 6
ラインバッファ方式による画像生成
• 画面の横方向1ラインごとに表示画像をレンダリングするイメージ
• KByte単位のメモリ量で画面生成可能
• FPGAは内蔵メモリ容量がすくない!!
2018/6/30 @mgwsuzuki 7
mrubyの組み込み
• Arty Z7に搭載のFPGAにはArm Cortex-A9が入っている
• FullのLinuxが動作する
• mrubyでプログラムできたら面白いのでは?
• 昔のコンピュータのBASICみたいにインタプリタ的にも動作させたい
2018/6/30 @mgwsuzuki 8
Joyconを使えるようにする
• ゲーム機はUIとして入力装置が重要
• Nintendo SwithのJoyconはBluetoothでLinuxと接続可能
• /dev/hidrawXを叩けばJoyconの機能ををフルに使える
• Joyconのリバースエンジニアリング情報
• https://github.com/dekuNukem/Nintendo_Switch_Reverse_Engineering
2018/6/30 @mgwsuzuki 9
Joyconの実機動作
2018/6/30 @mgwsuzuki 10
ゲームっぽいものを作ってみた
2018/6/30 @mgwsuzuki 11
• キャラクタの動き制御はすべてmruby
• 320個のスプライトが60fpsで動作
mrubyつながりでokinawa.rbの紹介
• 沖縄のRuby/Railsコミュニティ
• 毎月那覇市と沖縄市でMeetup開催
• ユルい集まりなのでフラっとお越しください
• 今回LTしたハードウェアもいじれます
• http://ruby.okinawa
• https://okinawarb.doorkeeper.jp/
• okinawarbで検索
2018/6/30 @mgwsuzuki 12

Contenu connexe

Tendances

RISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチRISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチYutaka Yasuda
 
Domain Specific Architecture は今どこまで来ていて、これからどこに向かうか
Domain Specific Architecture は今どこまで来ていて、これからどこに向かうかDomain Specific Architecture は今どこまで来ていて、これからどこに向かうか
Domain Specific Architecture は今どこまで来ていて、これからどこに向かうかYutaka Yasuda
 
ACRiウェビナー:アジェンダ
ACRiウェビナー:アジェンダACRiウェビナー:アジェンダ
ACRiウェビナー:アジェンダ直久 住川
 
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメRHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメTaira Hajime
 
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!NISHIMOTO Keisuke
 

Tendances (6)

RISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチRISC-V の現況と Esperanto Technologies のアプローチ
RISC-V の現況と Esperanto Technologies のアプローチ
 
AI Carの要約
AI Carの要約AI Carの要約
AI Carの要約
 
Domain Specific Architecture は今どこまで来ていて、これからどこに向かうか
Domain Specific Architecture は今どこまで来ていて、これからどこに向かうかDomain Specific Architecture は今どこまで来ていて、これからどこに向かうか
Domain Specific Architecture は今どこまで来ていて、これからどこに向かうか
 
ACRiウェビナー:アジェンダ
ACRiウェビナー:アジェンダACRiウェビナー:アジェンダ
ACRiウェビナー:アジェンダ
 
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメRHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
RHTN2018: エンジニアは何故、技術書を書くのか? 執筆のススメ
 
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
第2回IoT勉強会 in 岡山 | 2部 IoTデバイスを触ってみよう!
 

Similaire à 80年代ゲーム機の技術をFPGAに実装してみた

FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料marsee101
 
統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介
統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介
統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介Jun Ando
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
Using asimdhp (fp16) on Jetson Xavier CPU
Using asimdhp (fp16) on Jetson Xavier CPUUsing asimdhp (fp16) on Jetson Xavier CPU
Using asimdhp (fp16) on Jetson Xavier CPUtomoaki0705
 
ACRi panel_discussion_xilinx_hayashida_rev1.0
ACRi panel_discussion_xilinx_hayashida_rev1.0ACRi panel_discussion_xilinx_hayashida_rev1.0
ACRi panel_discussion_xilinx_hayashida_rev1.0直久 住川
 
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいMicrosemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいTakayasu Shibata
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向Shinya Takamaeda-Y
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境KiyotomoHiroyasu
 
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ智啓 出川
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄Yukio Saito
 
FPGAでCortex-M1を味見する
FPGAでCortex-M1を味見するFPGAでCortex-M1を味見する
FPGAでCortex-M1を味見するMori Labo.
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会Hitoshi Sato
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようShinya Takamaeda-Y
 
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例智啓 出川
 
FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12Jun Ando
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回Ryuichi Ueda
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かすKenta IDA
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングHideo Terada
 

Similaire à 80年代ゲーム機の技術をFPGAに実装してみた (20)

FPGAスタートアップ資料
FPGAスタートアップ資料FPGAスタートアップ資料
FPGAスタートアップ資料
 
統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介
統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介
統合ソフトウェアプラットフォームVitisとFPGA無償利用環境「ACRiルーム」のご紹介
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
Using asimdhp (fp16) on Jetson Xavier CPU
Using asimdhp (fp16) on Jetson Xavier CPUUsing asimdhp (fp16) on Jetson Xavier CPU
Using asimdhp (fp16) on Jetson Xavier CPU
 
ACRi panel_discussion_xilinx_hayashida_rev1.0
ACRi panel_discussion_xilinx_hayashida_rev1.0ACRi panel_discussion_xilinx_hayashida_rev1.0
ACRi panel_discussion_xilinx_hayashida_rev1.0
 
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそいMicrosemi FPGA はいいぞ,FPGAの紹介とおさそい
Microsemi FPGA はいいぞ,FPGAの紹介とおさそい
 
FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向FPGA・リコンフィギャラブルシステム研究の最新動向
FPGA・リコンフィギャラブルシステム研究の最新動向
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
NetBSD/Zynq
NetBSD/ZynqNetBSD/Zynq
NetBSD/Zynq
 
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
2015年度GPGPU実践基礎工学 第9回 GPUのアーキテクチャ
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
FPGAでCortex-M1を味見する
FPGAでCortex-M1を味見するFPGAでCortex-M1を味見する
FPGAでCortex-M1を味見する
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
なにわTech20161215
なにわTech20161215 なにわTech20161215
なにわTech20161215
 
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
 
FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12FPGAでベンチマークしたときに苦労した話@fpgax#12
FPGAでベンチマークしたときに苦労した話@fpgax#12
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
M5StackをRustで動かす
M5StackをRustで動かすM5StackをRustで動かす
M5StackをRustで動かす
 
FPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティングFPGA, AI, エッジコンピューティング
FPGA, AI, エッジコンピューティング
 

Plus de mgwsuzuki

レーザーカッターを使おう
レーザーカッターを使おうレーザーカッターを使おう
レーザーカッターを使おうmgwsuzuki
 
3Dプリンタを使おう - 20131110
3Dプリンタを使おう - 201311103Dプリンタを使おう - 20131110
3Dプリンタを使おう - 20131110mgwsuzuki
 
最近一年間で作ったもの
最近一年間で作ったもの最近一年間で作ったもの
最近一年間で作ったものmgwsuzuki
 
カッティングプロッタの使い方
カッティングプロッタの使い方カッティングプロッタの使い方
カッティングプロッタの使い方mgwsuzuki
 
3 dプリンタの使い方
3 dプリンタの使い方3 dプリンタの使い方
3 dプリンタの使い方mgwsuzuki
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Herokumgwsuzuki
 

Plus de mgwsuzuki (7)

レーザーカッターを使おう
レーザーカッターを使おうレーザーカッターを使おう
レーザーカッターを使おう
 
3Dプリンタを使おう - 20131110
3Dプリンタを使おう - 201311103Dプリンタを使おう - 20131110
3Dプリンタを使おう - 20131110
 
最近一年間で作ったもの
最近一年間で作ったもの最近一年間で作ったもの
最近一年間で作ったもの
 
カッティングプロッタの使い方
カッティングプロッタの使い方カッティングプロッタの使い方
カッティングプロッタの使い方
 
3 dプリンタの使い方
3 dプリンタの使い方3 dプリンタの使い方
3 dプリンタの使い方
 
PIC RoR Heroku
PIC RoR HerokuPIC RoR Heroku
PIC RoR Heroku
 
IR remocon
IR remoconIR remocon
IR remocon
 

80年代ゲーム機の技術をFPGAに実装してみた