Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ニンテンドウ64
Search
murachue
October 28, 2018
Programming
6
8.3k
ニンテンドウ64
OSC東京2018秋で日本NetBSDユーザーグループさまの枠をお借りして発表したやつです。
murachue
October 28, 2018
Tweet
Share
Other Decks in Programming
See All in Programming
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
710
STYLE
koic
0
100
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
340
React Native New Architecture 移行実践報告
taminif
1
140
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
1
210
NUMA環境とコンテナランタイム ― youki における Linux Memory Policy 実装
n4mlz
1
200
Integrating WordPress and Symfony
alexandresalome
0
130
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
190
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
10
11k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
110
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Fireside Chat
paigeccino
41
3.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Context Engineering - Making Every Token Count
addyosmani
9
480
How GitHub (no longer) Works
holman
316
140k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
It's Worth the Effort
3n
187
29k
Designing for humans not robots
tammielis
254
26k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Code Reviewing Like a Champion
maltzj
527
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
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®移植しような!