SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
エミュレータの
コードを読んでわかる
セガサターン
大神 祐真
(@yohgami)
2021-08-11 大神 祐真 (@yohgami)
自己紹介
大神祐真
@yohgami
[仕事]
グループウェア
メーカーの
インフラエンジニア
[趣味]
自作OS
レトロPC/ゲーム
自作アーケード基板
2021-08-11 大神 祐真 (@yohgami)
宣伝
共に、電子版は無料公開中!
物理版は各種ショップ様へ委託中!
興味があれば、
http://yuma.ohgami.jp へどうぞ!
2021-08-11 大神 祐真 (@yohgami)
今日のお話
セガサターン
エミュレータ
「Yabause」の
コードを読んで
どんなハード
だったのかを知る
https://techbookfest.org/product/5711801452855296?productVariantID
=5652438159720448
2021-08-11 大神 祐真 (@yohgami)
今日のお話
本書の
「4.3 VDP1の実装について」
から
ネタを2つ紹介します
https://techbookfest.org/product/5711801452855296?productVariantID
=5652438159720448
2021-08-11 大神 祐真 (@yohgami)
VDP1とポリゴンについて
●
VDP(Video Display Processor)というビデオ描
画用ICが搭載されている
– VDP1とVDP2の2つ搭載
●
VDP1に併設のRAMにコマンドを並べると
それに従って描画が行われる
●
コマンドにはスプライト描画やポリゴン描画
などがある
2021-08-11 大神 祐真 (@yohgami)
VDP1とポリゴンについて
コマンドのパラメータから、ポリゴンについて
以下がわかる
●
セガサターンのポリゴンは4頂点
●
ハードが認識するのは2次元座標
– 3次元の座標系変換や3次元→2次元の座標変換は
ソフト側で実施する必要あり
2021-08-11 大神 祐真 (@yohgami)
VDP1とポリゴンについて
3次元の座標系変換や3次元→2次元の座標変換は
ソフト側で実施する必要あり
●
セガサターンはメインCPUを2つ搭載しているが、
このような高負荷な処理は、実質、CPU1つ専有
●
3Dのゲームを作ろうとすると、
ゲーム表現には残るCPU1つということに
→ 2DならCPU2つをゲーム表現に使える
●
また、2D表現についてはVDPのサポートがいくつかある
2021-08-11 大神 祐真 (@yohgami)
VDP1とポリゴンについて
こういった所からも、
「3D表現の能力はあるが、
 2Dの方が得意なゲームハード」
であることが伺える
2021-08-11 大神 祐真 (@yohgami)
ヴァンパイアハンターの
特殊な振る舞いへの対処
エミュレータのソースコードに
「ヴァンパイアハンターはほとんどのフレームで
 クリッピング設定をしない」
と書かれていて、そのための処理がある
2021-08-11 大神 祐真 (@yohgami)
ヴァンパイアハンターの
特殊な振る舞いへの対処
ヴァンパイアハンター:
●
カプコンの格ゲー
●
元はアーケードでセガサターン版はその移植
クリッピング設定:
●
VDP1のコマンドの一種で、描画範囲を設定する
●
VDP1コマンドなので、これもVDP1のRAMに置く
2021-08-11 大神 祐真 (@yohgami)
ヴァンパイアハンターの
特殊な振る舞いへの対処
●
本来は毎フレーム設定するクリッピングを
ヴァンパイアハンターは行わないとのこと
●
よくアニメーションするゲームなので
RAMに画像を多く置くための削減だと思われる
– 当時、移植した開発会社が
やらなくても良い条件を見つけたということ
2021-08-11 大神 祐真 (@yohgami)
ヴァンパイアハンターの
特殊な振る舞いへの対処
●
セガサターンが出た1994年の32ビットの時代
でも、アーケード移植は大変だった事が伺える
●
こういった特殊な振る舞いをするゲームは
エミュレータとしてはつらいところだが
2021-08-11 大神 祐真 (@yohgami)
まとめ
エミュレータのコードを読むのは楽しい!
2021-08-11 大神 祐真 (@yohgami)
ありがとうございました!

Más contenido relacionado

La actualidad más candente

Summercamp2020 group3
Summercamp2020 group3Summercamp2020 group3
Summercamp2020 group3
openrtm
 
Summercamp2020 group2
Summercamp2020 group2Summercamp2020 group2
Summercamp2020 group2
openrtm
 
LT-作ったもの・作りたいもの
LT-作ったもの・作りたいものLT-作ったもの・作りたいもの
LT-作ったもの・作りたいもの
Ku ma
 

La actualidad más candente (20)

VR開発ならUnreal Engine その理由とメリット@VRCカンファレンス2015
VR開発ならUnreal Engine その理由とメリット@VRCカンファレンス2015VR開発ならUnreal Engine その理由とメリット@VRCカンファレンス2015
VR開発ならUnreal Engine その理由とメリット@VRCカンファレンス2015
 
Cocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードCocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコード
 
Summercamp2020 group3
Summercamp2020 group3Summercamp2020 group3
Summercamp2020 group3
 
0529ue4meetup-ragdoll-hangon
0529ue4meetup-ragdoll-hangon0529ue4meetup-ragdoll-hangon
0529ue4meetup-ragdoll-hangon
 
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
 
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
20160221-UnityAassetTouchAndTry-in-FukuokaUnity20160221-UnityAassetTouchAndTry-in-FukuokaUnity
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
 
Summer camp2018 group1
Summer camp2018 group1Summer camp2018 group1
Summer camp2018 group1
 
テキストアドベンチャーゲームのアーキテクチャと工程
テキストアドベンチャーゲームのアーキテクチャと工程テキストアドベンチャーゲームのアーキテクチャと工程
テキストアドベンチャーゲームのアーキテクチャと工程
 
elixirを使ったゲームサーバ
elixirを使ったゲームサーバelixirを使ったゲームサーバ
elixirを使ったゲームサーバ
 
Summer camp2019 group2
Summer camp2019 group2Summer camp2019 group2
Summer camp2019 group2
 
UEFIで始めるLinux From Scratch
UEFIで始めるLinux From ScratchUEFIで始めるLinux From Scratch
UEFIで始めるLinux From Scratch
 
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
 
ぷちコンゲームジャム進捗報告
ぷちコンゲームジャム進捗報告ぷちコンゲームジャム進捗報告
ぷちコンゲームジャム進捗報告
 
ゲーミングプラットホームのLutris
ゲーミングプラットホームのLutrisゲーミングプラットホームのLutris
ゲーミングプラットホームのLutris
 
Summer camp2018 group2
Summer camp2018 group2Summer camp2018 group2
Summer camp2018 group2
 
チームラボMake部 Maker Faire Tokyo 2012出展物一覧
チームラボMake部 Maker Faire Tokyo 2012出展物一覧チームラボMake部 Maker Faire Tokyo 2012出展物一覧
チームラボMake部 Maker Faire Tokyo 2012出展物一覧
 
Summercamp2020 group2
Summercamp2020 group2Summercamp2020 group2
Summercamp2020 group2
 
LT-作ったもの・作りたいもの
LT-作ったもの・作りたいものLT-作ったもの・作りたいもの
LT-作ったもの・作りたいもの
 
まわーるどが1週するまでのお話
まわーるどが1週するまでのお話まわーるどが1週するまでのお話
まわーるどが1週するまでのお話
 
Music engineadx
Music engineadxMusic engineadx
Music engineadx
 

Más de Yuma Ohgami

Más de Yuma Ohgami (20)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Daisy OSでデイジーワールド!
Daisy OSでデイジーワールド!Daisy OSでデイジーワールド!
Daisy OSでデイジーワールド!
 
バイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールドバイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールド
 
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
 
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
 
60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介
 
来週の展示内容紹介
来週の展示内容紹介来週の展示内容紹介
来週の展示内容紹介
 
DaisyOS(仮)のご紹介
DaisyOS(仮)のご紹介DaisyOS(仮)のご紹介
DaisyOS(仮)のご紹介
 
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
 
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
 
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
 
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
 
バイナリ生成環境『daisy-tools』のご紹介
バイナリ生成環境『daisy-tools』のご紹介バイナリ生成環境『daisy-tools』のご紹介
バイナリ生成環境『daisy-tools』のご紹介
 
セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介
 
ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方
 
/dev/kvmを直接叩いて自作VM
/dev/kvmを直接叩いて自作VM/dev/kvmを直接叩いて自作VM
/dev/kvmを直接叩いて自作VM
 
x86_64向け自作OSの紹介
x86_64向け自作OSの紹介x86_64向け自作OSの紹介
x86_64向け自作OSの紹介
 
CybozuのOSS(WalB)へコミットしてみた/使ってみた
CybozuのOSS(WalB)へコミットしてみた/使ってみたCybozuのOSS(WalB)へコミットしてみた/使ってみた
CybozuのOSS(WalB)へコミットしてみた/使ってみた
 
GPD WINでStretchを動かす
GPD WINでStretchを動かすGPD WINでStretchを動かす
GPD WINでStretchを動かす
 
UEFI向け自作OSの紹介
UEFI向け自作OSの紹介UEFI向け自作OSの紹介
UEFI向け自作OSの紹介
 

エミュレータのコードを読んでわかるセガサターン