狠狠撸

狠狠撸Share a Scribd company logo
エミュレータの
コードを読んでわかる
セガサターン
大神 祐真
(@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)
ありがとうございました!

More Related Content

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