SlideShare a Scribd company logo
1 of 13
Download to read offline
エミュレータの
コードを読んでわかる
「セガサターン」
大神 祐真
(@yohgami)
2021-06-26 大神 祐真 (@yohgami)
自己紹介
大神祐真
@yohgami
[仕事]
グループウェア
メーカーの
インフラエンジニア
[趣味]
自作OS
レトロPC/ゲーム
自作アーケード基板
セガサターン
1994年発売 セガ据え置き型
初のポリゴン
描画
同世代
PlayStation
NINTENDO64
44,800円
2021-06-26 大神 祐真 (@yohgami)
今日のお話
セガサターンエミュレータ
「Yabause」のコードを読んで
どんなハードだったのかを知る
2021-06-26 大神 祐真 (@yohgami)
コードを読んでみましょう!
2021-06-26 大神 祐真 (@yohgami)
補足:走査線による
1画面(フレーム)の描画
表示画面領域
H(水平)
ブランク期間
走査線:
1ラインを描画する
V(垂直)
ブランク期間
2021-06-26 大神 祐真 (@yohgami)
補足:走査線による
1画面(フレーム)の描画
表示画面領域
H(水平)
ブランク期間
走査線:
1ラインを描画する
V(垂直)
ブランク期間
1画面(フレーム)の描画は
Vブランク期間を抜けた
瞬間から始まる
2021-06-26 大神 祐真 (@yohgami)
エミュレータのコードを読むのは楽しい!
2021-06-26 大神 祐真 (@yohgami)
技術書典11で本出します!
【技術書典11】
・オンライン:7/10 – 7/25
・トライアル:7/11
サークル「へにゃぺんて」で出展!
(オンラインのみ)
← 新刊鋭意執筆中!
  B5、100ページ超えで
  CPU・コントローラ入力
 ・画面描画・サウンドなどの
  作りをコードから見ていきます!
2021-06-26 大神 祐真 (@yohgami)
ご清聴ありがとうございました!
スペック
セガサターン PlayStation NINTENDO64
‘94/11/22 ‘94/12/03 ‘96/06/23
発売
価格 44,800円 39,800円 25,000円
CPU
SH-2(32bit)
x 2
28.6MHz
3D
表現
ポリゴン対応
3D表現も
できる
3D特化
秒間150万
ポリゴン
R3000A
(32bit)
33.8MHz
R4300i
(64bit)
93.7MHz
後発ながらの
高い
3D表現能力
2021-06-26 大神 祐真 (@yohgami)
描画周りのアーキテクチャ
SH-2
SH-2 SCU
VDP1 VDP2
ビデオ
出力
TV
前景
(スプライト、
ポリゴンなど)
背景
VDP1
VRAM
VRAM
VRAM上の
コマンドに
従って
スプライトやポリゴン
を描画
ポリゴン描画コマンド
15 0
コマンド名や
その他属性情報等
ビット
0x00
〜
0x04
0x06
0x08
0x0A
0x0C
〜
0x1A
0x1C
カラー
予約
4つの頂点を
それぞれ2次元座標で設定
グーローシェーディング設定

More Related Content

What's hot

Oculus Game Jam in Japan #3
Oculus Game Jam in Japan #3Oculus Game Jam in Japan #3
Oculus Game Jam in Japan #3Shinya Hayakawa
 
Summercamp2020 group3
Summercamp2020 group3Summercamp2020 group3
Summercamp2020 group3openrtm
 
0529ue4meetup-ragdoll-hangon
0529ue4meetup-ragdoll-hangon0529ue4meetup-ragdoll-hangon
0529ue4meetup-ragdoll-hangoncota2n
 
UEFIベアメタルプログラミング
UEFIベアメタルプログラミングUEFIベアメタルプログラミング
UEFIベアメタルプログラミングYuma Ohgami
 
Summer camp2018 group1
Summer camp2018 group1Summer camp2018 group1
Summer camp2018 group1openrtm
 
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)nico_indiesgame
 
テキストアドベンチャーゲームのアーキテクチャと工程
テキストアドベンチャーゲームのアーキテクチャと工程テキストアドベンチャーゲームのアーキテクチャと工程
テキストアドベンチャーゲームのアーキテクチャと工程tuna cook
 
Summer camp2019 group2
Summer camp2019 group2Summer camp2019 group2
Summer camp2019 group2openrtm
 
Cocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードCocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードSatoshi Oomori
 
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
20160221-UnityAassetTouchAndTry-in-FukuokaUnity20160221-UnityAassetTouchAndTry-in-FukuokaUnity
20160221-UnityAassetTouchAndTry-in-FukuokaUnityTakashi Jona
 
Summer camp2018 group2
Summer camp2018 group2Summer camp2018 group2
Summer camp2018 group2openrtm
 
Summercamp2020 group2
Summercamp2020 group2Summercamp2020 group2
Summercamp2020 group2openrtm
 
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料hima_zinn
 
VTuberハッカソン大阪大会 (2018.09.01-02)
VTuberハッカソン大阪大会 (2018.09.01-02)VTuberハッカソン大阪大会 (2018.09.01-02)
VTuberハッカソン大阪大会 (2018.09.01-02)Nakaya Makoto
 
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライドかわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライドtuna cook
 
ぷちコンゲームジャム進捗報告
ぷちコンゲームジャム進捗報告ぷちコンゲームジャム進捗報告
ぷちコンゲームジャム進捗報告Yuuki Ogino
 
elixirを使ったゲームサーバ
elixirを使ったゲームサーバelixirを使ったゲームサーバ
elixirを使ったゲームサーバHidetaka Kojo
 
LT-作ったもの・作りたいもの
LT-作ったもの・作りたいものLT-作ったもの・作りたいもの
LT-作ったもの・作りたいものKu ma
 

What's hot (20)

Oculus Game Jam in Japan #3
Oculus Game Jam in Japan #3Oculus Game Jam in Japan #3
Oculus Game Jam in Japan #3
 
Summercamp2020 group3
Summercamp2020 group3Summercamp2020 group3
Summercamp2020 group3
 
0529ue4meetup-ragdoll-hangon
0529ue4meetup-ragdoll-hangon0529ue4meetup-ragdoll-hangon
0529ue4meetup-ragdoll-hangon
 
Bloodstainedで世界のバッカーの期待に応えたUE4事例紹介
Bloodstainedで世界のバッカーの期待に応えたUE4事例紹介Bloodstainedで世界のバッカーの期待に応えたUE4事例紹介
Bloodstainedで世界のバッカーの期待に応えたUE4事例紹介
 
UEFIベアメタルプログラミング
UEFIベアメタルプログラミングUEFIベアメタルプログラミング
UEFIベアメタルプログラミング
 
Summer camp2018 group1
Summer camp2018 group1Summer camp2018 group1
Summer camp2018 group1
 
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
第二回自作ゲームフェス勉強会(第1部・中村光一さん講演&質疑応答)
 
テキストアドベンチャーゲームのアーキテクチャと工程
テキストアドベンチャーゲームのアーキテクチャと工程テキストアドベンチャーゲームのアーキテクチャと工程
テキストアドベンチャーゲームのアーキテクチャと工程
 
Summer camp2019 group2
Summer camp2019 group2Summer camp2019 group2
Summer camp2019 group2
 
チームラボMake部 Maker Faire Tokyo 2012出展物一覧
チームラボMake部 Maker Faire Tokyo 2012出展物一覧チームラボMake部 Maker Faire Tokyo 2012出展物一覧
チームラボMake部 Maker Faire Tokyo 2012出展物一覧
 
Cocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコードCocoa勉強会20140621 macとiosで共通のコード
Cocoa勉強会20140621 macとiosで共通のコード
 
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
20160221-UnityAassetTouchAndTry-in-FukuokaUnity20160221-UnityAassetTouchAndTry-in-FukuokaUnity
20160221-UnityAassetTouchAndTry-in-FukuokaUnity
 
Summer camp2018 group2
Summer camp2018 group2Summer camp2018 group2
Summer camp2018 group2
 
Summercamp2020 group2
Summercamp2020 group2Summercamp2020 group2
Summercamp2020 group2
 
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
Global Game Jam 2019 バンタンゲームアカデミー大阪会場 Bチーム 最終発表資料
 
VTuberハッカソン大阪大会 (2018.09.01-02)
VTuberハッカソン大阪大会 (2018.09.01-02)VTuberハッカソン大阪大会 (2018.09.01-02)
VTuberハッカソン大阪大会 (2018.09.01-02)
 
かわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライドかわずと!第19回放送『吉里吉里講座』スライド
かわずと!第19回放送『吉里吉里講座』スライド
 
ぷちコンゲームジャム進捗報告
ぷちコンゲームジャム進捗報告ぷちコンゲームジャム進捗報告
ぷちコンゲームジャム進捗報告
 
elixirを使ったゲームサーバ
elixirを使ったゲームサーバelixirを使ったゲームサーバ
elixirを使ったゲームサーバ
 
LT-作ったもの・作りたいもの
LT-作ったもの・作りたいものLT-作ったもの・作りたいもの
LT-作ったもの・作りたいもの
 

More from Yuma Ohgami

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

More from 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で始めるLinux From Scratch
UEFIで始めるLinux From ScratchUEFIで始めるLinux From Scratch
UEFIで始めるLinux From Scratch
 

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