Suche senden
Hochladen
ゲームボーイ向けOSの作り方
•
0 gefällt mir
•
734 views
Y
Yuma Ohgami
Folgen
第23回 自作OSもくもく会オンライン https://osdev-jp.connpass.com/event/200085/ の発表資料です。
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 38
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
uchan_nos
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
Takahiro Inoue
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
uchan_nos
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
Study Group by SciencePark Corp.
任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編
Kawamura Yasuhisa
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
Empfohlen
OSを手作りするという趣味と仕事
OSを手作りするという趣味と仕事
uchan_nos
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
Takahiro Inoue
MikanOSと自作CPUをUSBで接続する
MikanOSと自作CPUをUSBで接続する
uchan_nos
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
RPGにおけるイベント駆動型の設計と実装
RPGにおけるイベント駆動型の設計と実装
Koji Morikawa
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
WPFの画面をWebブラウザのように拡大・縮小に追従させる方法(オートスクロールバー付き)
Study Group by SciencePark Corp.
任天堂の呪いとナラティブについてバンナム編
任天堂の呪いとナラティブについてバンナム編
Kawamura Yasuhisa
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
UniRx完全に理解した
UniRx完全に理解した
torisoup
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
Sato Shun
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
Yuta Matsumura
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
Fujikido
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
Osamu Ohkubo
تدريب القيادة والريادة
تدريب القيادة والريادة
Loay Qabajeh
'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional Review
Commons Professional
Weitere ähnliche Inhalte
Was ist angesagt?
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
torisoup
UniRx完全に理解した
UniRx完全に理解した
torisoup
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
DeNA
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
DeNA
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
増田 亨
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
Sugimoto Chizuru
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
モノビット エンジン
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
(^-^) togakushi
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
Katsutoshi Makino
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
30分で分かる!OSの作り方
30分で分かる!OSの作り方
uchan_nos
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
DeNA
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
Sato Shun
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
Yuta Matsumura
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
Fujikido
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
Osamu Ohkubo
Was ist angesagt?
(20)
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
UniRx完全に理解した
UniRx完全に理解した
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
ドメイン駆動設計をゲーム開発に活かす
ドメイン駆動設計をゲーム開発に活かす
文字コードに起因する脆弱性とその対策(増補版)
文字コードに起因する脆弱性とその対策(増補版)
ゲームの仕様書を書こうまとめ
ゲームの仕様書を書こうまとめ
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
tcpdumpとtcpreplayとtcprewriteと他。
tcpdumpとtcpreplayとtcprewriteと他。
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
プログラマが欲しい仕様書とは
プログラマが欲しい仕様書とは
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
30分で分かる!OSの作り方
30分で分かる!OSの作り方
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
分かったうえではじめるCI/CD
分かったうえではじめるCI/CD
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
ゲーム企画書の書き方? ~大久保磨編~ ver.1.4.0
Ähnlich wie ゲームボーイ向けOSの作り方
تدريب القيادة والريادة
تدريب القيادة والريادة
Loay Qabajeh
'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional Review
Commons Professional
ملحق ستارت - العدد رقم 29
ملحق ستارت - العدد رقم 29
Mohamed Abouelsoud
21. listeriosis
21. listeriosis
AssadullahSamadi
Hr 016 物理系進路圖1
Hr 016 物理系進路圖1
handbook
Livre dri
Livre dri
Jamaity
データモデリング入門2021
データモデリング入門2021
Koichi Inami
Phx19
Phx19
ContactStudya
Minits november
Minits november
Tahsidar Meenachil
9. botulism
9. botulism
AssadullahSamadi
Minits taaluk vikasanasamithi
Minits taaluk vikasanasamithi
Tahsidar Meenachil
Meenachil vivarangal- Office-Minutes Zero Land less project.
Meenachil vivarangal- Office-Minutes Zero Land less project.
Tahsildar Meenachil. Kottayam Kerala.
Tvs aug minits
Tvs aug minits
Tahsidar Meenachil
ente meenachil -Meenachi taluk Office-Taluk vikasana samaithi minutes
ente meenachil -Meenachi taluk Office-Taluk vikasana samaithi minutes
Tahsildar Meenachil. Kottayam Kerala.
ملحق ستارت - العدد رقم 35
ملحق ستارت - العدد رقم 35
Mohamed Abouelsoud
Minits (november)
Minits (november)
Tahsildar Meenachil. Kottayam Kerala.
虛擬股票選擇權辦法說明
虛擬股票選擇權辦法說明
kennychiu123
ملحق ستارت - العدد رقم 53
ملحق ستارت - العدد رقم 53
Mohamed Abouelsoud
20. hemorrhagic septicemia
20. hemorrhagic septicemia
AssadullahSamadi
القيادة والريادة
القيادة والريادة
Loay Qabajeh
Ähnlich wie ゲームボーイ向けOSの作り方
(20)
تدريب القيادة والريادة
تدريب القيادة والريادة
'Position Paper on 2012 Constitutional Review
'Position Paper on 2012 Constitutional Review
ملحق ستارت - العدد رقم 29
ملحق ستارت - العدد رقم 29
21. listeriosis
21. listeriosis
Hr 016 物理系進路圖1
Hr 016 物理系進路圖1
Livre dri
Livre dri
データモデリング入門2021
データモデリング入門2021
Phx19
Phx19
Minits november
Minits november
9. botulism
9. botulism
Minits taaluk vikasanasamithi
Minits taaluk vikasanasamithi
Meenachil vivarangal- Office-Minutes Zero Land less project.
Meenachil vivarangal- Office-Minutes Zero Land less project.
Tvs aug minits
Tvs aug minits
ente meenachil -Meenachi taluk Office-Taluk vikasana samaithi minutes
ente meenachil -Meenachi taluk Office-Taluk vikasana samaithi minutes
ملحق ستارت - العدد رقم 35
ملحق ستارت - العدد رقم 35
Minits (november)
Minits (november)
虛擬股票選擇權辦法說明
虛擬股票選擇權辦法說明
ملحق ستارت - العدد رقم 53
ملحق ستارت - العدد رقم 53
20. hemorrhagic septicemia
20. hemorrhagic septicemia
القيادة والريادة
القيادة والريادة
Mehr von Yuma Ohgami
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Daisy OSでデイジーワールド!
Daisy OSでデイジーワールド!
Yuma Ohgami
バイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールド
Yuma Ohgami
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
Yuma Ohgami
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
Yuma Ohgami
60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介
Yuma Ohgami
来週の展示内容紹介
来週の展示内容紹介
Yuma Ohgami
DaisyOS(仮)のご紹介
DaisyOS(仮)のご紹介
Yuma Ohgami
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
Yuma Ohgami
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
Yuma Ohgami
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
Yuma Ohgami
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
Yuma Ohgami
バイナリ生成環境『daisy-tools』のご紹介
バイナリ生成環境『daisy-tools』のご紹介
Yuma Ohgami
セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介
Yuma Ohgami
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
Yuma Ohgami
ハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
Yuma Ohgami
エミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターン
Yuma Ohgami
エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」
Yuma Ohgami
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
Yuma Ohgami
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
Yuma Ohgami
Mehr von Yuma Ohgami
(20)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Daisy OSでデイジーワールド!
Daisy OSでデイジーワールド!
バイナリ生物学でデイジーワールド
バイナリ生物学でデイジーワールド
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
OSC2023 Tokyo/Fall展示内容(予定)と技術書典15向け新刊(執筆中)のご紹介
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
去年「バイナリ生物学」で今年「PDP-7」だったのはなぜなのか?
60年代ゲームハードPDP-7のご紹介
60年代ゲームハードPDP-7のご紹介
来週の展示内容紹介
来週の展示内容紹介
DaisyOS(仮)のご紹介
DaisyOS(仮)のご紹介
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N9] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
セキュリティ・ネクストキャンプ2022 オンライン [N5] バイナリ生物学入門
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
『へにゃぺんて』のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
「へにゃぺんて」のこれまでを振り返るブログ記事の紹介
バイナリ生成環境『daisy-tools』のご紹介
バイナリ生成環境『daisy-tools』のご紹介
セガサターンで動く自作シンセサイザーの紹介
セガサターンで動く自作シンセサイザーの紹介
セガサターンマシン語プログラミングの紹介
セガサターンマシン語プログラミングの紹介
ハードの作りで振り返るセガサターン
ハードの作りで振り返るセガサターン
エミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかるセガサターン
エミュレータのコードを読んでわかる「セガサターン」
エミュレータのコードを読んでわかる「セガサターン」
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
シェルスクリプトでセガサターンマシン語ベアメタルプログラミング
メガドラ実機で自作のROMファイルを動かしてみた話
メガドラ実機で自作のROMファイルを動かしてみた話
ゲームボーイ向けOSの作り方
1.
ゲームボーイ向けOSの作り方 大神 祐真 (@yohgami) 2020-12-30
2.
自己紹介 大神祐真 @yohgami [仕事] グループウェア メーカーの インフラエンジニア [趣味] 自作OS レトロPC/ゲーム 自作アーケード基板
3.
今日のお話 せっかくの機会なので、 ● 「ゲームボーイ」というハードを 少し知っていただく ● このハードでOSを作るに当たり何をしたのか を少し知っていただく
4.
今日のお話 1. ゲームボーイとは →
ゲームボーイというハードを まず簡単に紹介 2. 自作OS「AMADO」の機能と実装 → 見えている機能と それに対する実装を紹介 3. 入出力の制約への対処 → ゲームボーイ(古いゲームハード) 特有の制約への対処を紹介
5.
今日のお話 1. ゲームボーイとは 2. 自作OS「AMADO」の機能と実装 3.
入出力の制約への対処
6.
「ゲームボーイ」とは 1989年に任天堂が発売した 携帯型ゲーム機 スペック ● CPU : シャープ製LR35902(8bit) (Z80カスタムCPU) ● RAM :8KB ● VRAM:8KB ● 解像度: 160
x 144 dot
7.
ゲームボーイの 本体とカートリッジの主な構成 ゲームボーイ本体 CPU LCDC VRAMRAM OAM, I/Oレジスタ, HRAM 等 カートリッジ ROM
RAM バックアップ 電池 ※ AMADOのカートリッジは 不揮発性メモリ搭載で 電池無し
8.
ゲームボーイのメモリマップ カートリッジ ROM (バンク0) カートリッジ ROM (バンク1 以降) 本体 VRAM カートリッジ RAM (バンクN) 本体RAM OAM, I/Oレジスタ, HRAM 等 0x0000 0x4000 (16KB) (16KB) 0x8000 (8KB) 0xA000 (8KB) 0xC000 (8KB) 0xE000 (8KB)
9.
ゲームボーイのメモリマップ カートリッジ ROM (バンク0) カートリッジ ROM (バンク1 以降) 本体 VRAM カートリッジ RAM (バンクN) 本体RAM OAM, I/Oレジスタ, HRAM 等 0x0000 0x4000 (16KB) (16KB) 0x8000 (8KB) 0xA000 (8KB) 0xC000 (8KB) 0xE000 (8KB) 0x0100 〜
0x014F (80バイト) カートリッジヘッダ 実行開始アドレス等 を書いておく
10.
ゲームボーイのメモリマップ カートリッジ ROM (バンク0) カートリッジ ROM (バンク1 以降) 本体 VRAM カートリッジ RAM (バンクN) 本体RAM OAM, I/Oレジスタ, HRAM 等 0x0000 0x4000 (16KB) (16KB) 0x8000 (8KB) 0xA000 (8KB) 0xC000 (8KB) 0xE000 (8KB) 0x2000 MBC (ROM用) 0x4000 MBC (主にRAM用)
11.
ゲームボーイのメモリマップ カートリッジ ROM (バンク1 以降) カートリッジ RAM (バンクN) 0x4000 (16KB) 0xA000 (8KB) バンク0〜N (各8KB) バンク1〜N (各16KB) ROMの バンク 選択 RAMの バンク 選択
12.
今日のお話 1. ゲームボーイとは 2. 自作OS「AMADO」の機能と実装 3.
入出力の制約への対処
13.
現状のAMADOが OSとして持っている機能 ● ファイルシステム ● 外部プログラム実行 ● API ● アプリ開発
14.
現状のAMADOが OSとして持っている機能 ● ファイルシステム ● 外部プログラム実行 ● API ● アプリ開発
15.
AMADOのメモリマップ カーネル ファイル システム 1 (RO) 本体 VRAM ファイル システム2 (RW) OAM, I/Oレジスタ, HRAM 等 0x0000 0x4000 (16KB) (16KB) 0x8000 (8KB) 0xA000 (8KB) 0xC000 (8KB) 0xE000 (8KB) カーネル変数 プログラム 実行領域
16.
ファイルシステムの バイナリフォーマット 例) 2つのファイルが存在する場合 2 ファイルシステム先頭 からのオフセット FF FF 予約ファイル数 0x0000 0x0003
ファイル名① txt ファイル タイプ 11 00 ファイル①への オフセット 0x000A ファイル名② img 80 00 0x0011 0x0080 ファイル サイズ ファイル①データ … ファイル サイズ ファイル②データ … ・・・
17.
現状のAMADOが OSとして持っている機能 ● ファイルシステム ● 外部プログラム実行 ● API ● アプリ開発
18.
実行ファイルをクリックすると、 カーネル ファイル システム 1 (RO) 本体 VRAM ファイル システム2 (RW) OAM, I/Oレジスタ, HRAM 等 0x0000 0x4000 (16KB) (16KB) 0x8000 (8KB) 0xA000 (8KB) 0xC000 0xE000 (8KB) カーネル変数 プログラム 実行領域 0xD000 例えば、 読み取り専用ファイルシステムの実行ファイルをクリックした場合 exe 1) 実行ファイルを 本体RAMのプログラム実行領域へ ロード
19.
実行ファイルをクリックすると、 カーネル ファイル システム 1 (RO) 本体 VRAM ファイル システム2 (RW) OAM, I/Oレジスタ, HRAM 等 0x0000 0x4000 (16KB) (16KB) 0x8000 (8KB) 0xA000 (8KB) 0xC000 0xE000 (8KB) カーネル変数 プログラム 実行領域 0xD000 例えば、 読み取り専用ファイルシステムの実行ファイルをクリックした場合 exe 2) call
0xD000 exe
20.
現状のAMADOが OSとして持っている機能 ● ファイルシステム ● 外部プログラム実行 ● API ● アプリ開発
21.
アプリが使える変数/関数 詳しくは、 同人誌『ゲームボーイOS「AMADO」で8ビットマシン語入門』参照
22.
アプリが使える関数/変数
23.
現状のAMADOが OSとして持っている機能 ● ファイルシステム ● 外部プログラム実行 ● API ● アプリ開発
24.
バイナリエディタで マシン語プログラミング 詳しくは こちらの同人誌で 解説しています! 技術書典10で頒布中! (“ゲームボーイ”で検索すると 出てきます)
25.
今日のお話 1. ゲームボーイとは 2. 自作OS「AMADO」の機能と実装 3.
入出力の制約への対処
26.
入出力について 現状、使用している入出力 入力:ボタン 出力:画面
27.
入出力について 現状、使用している入出力 入力:ボタン 出力:画面
28.
I/O:JOYPレジスタ アドレス 0xFF00 のレジスタ(1バイト) 同人誌『シェルスクリプトでゲームボーイプログラミング入門』参照
29.
入力に関して GBならではの対応が必要なのは、 キーボードが無い状況で、文字入力をどうするか? ←→:カーソル移動 ↑↓:値変更 としました
30.
入出力について 現状、使用している入出力 入力:ボタン 出力:画面
31.
LCDCについて LCDCの動作 ︙︙ ︙︙LCDCが VRAMアクセス中 CPUがVRAMアクセス可 (Hブランク) Vブランク 144144回回(*1)(*1) LCDCがVRAMへアクセスしている間、 CPUはVRAMの読み書き不可 ※ Vブランクから 次のVブランクまでの 1周期は16.6ms
32.
AMADOの周期動作 Vブランクに入ったら 発生する割り込み 実行ファイル実行中なら このタイミングで call 0xD000 される
33.
VRAM書込キュー アドレス デー タ アドレス デー タ アドレス デー タ アドレス デー タ VRAMへの書き込みを 遅延実行するための キューを用意した ただ、LCDCのアクセス中は CPUからは読み出しも不可なので VRAMの読み出しも要検討 (現状はVブランク期間で ほとんど終わるため問題にならない)
34.
まとめ 以上で説明した点が、 ゲームボーイで自作OSするなら気をつける部分 それ以外、特別異質なハードというわけでもなく むしろ小さくシンプルな分かりやすいハードです 興味があれば、自作OSのターゲットにしてみても 良いんじゃないかと思います
35.
宣伝 自作OS「AMADO」を、 12/30〜の「エアコミケ2」の 新刊として頒布/公開中です! (もし興味があれば) 詳細は作者ウェブサイト↓へ http://yuma.ohgami.jp/
36.
ご清聴ありがとうございました!
37.
今日のお話 1. 自作OS「AMADO」の機能と実装 →
ここで話す「OS」がどの程度のもの なのかのベースラインを合わせる → AMADOがOSとして持っている機能と それがどのように実装されているのかを 簡単に紹介 2. そんなOSをゲームボーイというハード上 で表現するにはどんなことをしなければなら ないのか → ゲームボーイというハードの制約につい て
38.
LCDCについて LCDCの動作 … ★ ★ x 144
Jetzt herunterladen