Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ニンテンドウ64
Search
murachue
October 28, 2018
Programming
8.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ニンテンドウ64
OSC東京2018秋で日本NetBSDユーザーグループさまの枠をお借りして発表したやつです。
murachue
October 28, 2018
Other Decks in Programming
See All in Programming
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
490
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
0
190
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
230
Agentic UI
manfredsteyer
PRO
0
220
dRuby over BLE
makicamel
2
410
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
200
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
0
380
関数型プログラミングのメリットって何だろう?
wanko_it
0
130
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.2k
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
1
190
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Become a Pro
speakerdeck
PRO
31
6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Visualization
eitanlees
152
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Claude Code のすすめ
schroneko
67
230k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Leo the Paperboy
mayatellez
8
1.9k
The SEO Collaboration Effect
kristinabergwall1
1
500
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Transcript
ニンテンドウ64 Murachue OSC 2018 fall
だれ? • Murachue (むらちゅえ) • @murachue • github.com/murachue • もうすぐ
むしょく • てんしょく かつどう ちゅう
まずはお詫びから
昨日はJNUGさまブースを Linuxで上書きしてすみませんでした https://twitter.com/ Yukky37x/status/ 1056080136666148865 ディスプレイ貸して いただいて ありがとうございます…!!
が
このLT JNUGさま枠 なんだよなぁ…
あらかじめお詫び申し上げます Tux, © Larry Ewing and The GIMP 話しません→ ←話します
NetBSD®
というわけで • オチがほぼバレてるので、さっくり説明すると • Linuxをニンテンドウ64に移植しました • っていう話 こういうこと→ Tux, ©
Larry Ewing and The GIMP
ニンテンドウ64 • 1996/6/23発売 • CPU: MIPS VR4300 (93.75MHz, 64bit) •
GPU: RCP (62.5MHz, 64bit) – 最大解像度 640x480x16 • Memory: 4MiB (CPU観点) – 拡張パックで+4MiB (CPU観点) • Audio: ~48KHz? 2ch 16bit PCM – ADPCMではない! (ウィキペは嘘) • ROM: 最大508MiBくらい – 常識的に64MiBほど • ニンテンドー64 ではない
なんで64? https://www.linux-mips.org/wiki/Nintendo_64
なんで64? vaporware: 影も形もないソフト《理念だけで実現されていない製品》 (研究社 英和コンピューター用語辞典)
LinuxをN64に対応させる VR4300 RCP RDRAM Cart Video I/F Audio I/F Controller
I/F Cart I/F I2C SD USB ROM(RAM) RTC etc…
LinuxをN64に対応させる VR4300 RCP RDRAM Cart Video I/F Audio I/F Controller
I/F Cart I/F I2C SD USB ROM(RAM) RTC etc… FrameBuffer ALSA evdev I2c host DS1337 (ママ MIPS3(ママ sdmmc host tty (serial-ish) blockdev mfd
できた~ Tux, © Larry Ewing and The GIMP
userlandもつくりましょー Buildroot Busybox Linux(改) Tux, © Larry Ewing and The
GIMP ISO9660 image + α
なんで9660!? • N64のROMイメージは 先頭4KiB(-64bytes)の 変更がむずかしい • パーティションテーブル が置けない、普通の filesystemも無理 •
ISO9660なら先頭16KiB 空いてるじゃん! • 簡易ブートローダも詰 め込めて安心 ヘッダ領域 (64by) N64ブートコード Linux簡易ローダー ISO9660の中身 4KiB 16KiB N64エントリポイント
入力どうしようか • USBでtty生やしてるけど、単体で動いたほう がやっぱり面白いよね • 入力デバイス……コントローラあるじゃん!
自作joy2key的なやつ • 3Dスティック→8方向 • B, A, C下 → 3 *
8 → 24 • アルファベット=26通り • 大文字も入れたい • ついでに記号もほしい • R, Zトリガを修飾とする • →2^2 * 3 * 8 = 96通り!!
こんな感じで a b c d e f g h i
j k l m n o p q r s t u v w x y z - . (sp) / ^H , B A C下 R+B Y Z > < | ^M R+Z+B A B C D E F G H Z+B …
たとえば • 右下+A → l (エル) • 右+C下 → s
• 左+R+Z+B → ^M • ⇒ ls コマンドが実行できる!!! • 2日ほどで慣れます (typoしないとは言っていない) i j k l m n o p q r s t u v w x A C下 Y Z > < | ^M R+Z+B
そんなん覚えられん! • そんなあなたに8bit直接入力モード! • (msb) Z R C右 C上 C下
C左 A B (lsb) • を同時押ししながらSTART • たとえば B+A+START -> 3 = ^C • SIGINTを投げられる!! • たぶん人間には早すぎる R Z
DEMO
現況と将来 • 最近ALSAドライバができてaplayやmpg123が 動いて楽しい • ogg123は重すぎてブツブツ、tremor(整数 vorbisデコーダ)使ったらギリギリCPU足りない • あとでGitHubに公開したい (履歴…)
• Linux 4.4.1はちょい古いので4.18とか動かし たい • たまにSEGV/ILL/BUSするのが謎だけど、 なんとかしたい
あとNetBSD®移植しような!