$30 off During Our Annual Pro Sale. View Details »

ニンテンドウ64

murachue
October 28, 2018

 ニンテンドウ64

OSC東京2018秋で日本NetBSDユーザーグループさまの枠をお借りして発表したやつです。

murachue

October 28, 2018
Tweet

Other Decks in Programming

Transcript

  1. ニンテンドウ64
    Murachue
    OSC 2018 fall

    View Slide

  2. だれ?
    • Murachue (むらちゅえ)
    • @murachue
    • github.com/murachue
    • もうすぐ むしょく
    • てんしょく かつどう ちゅう

    View Slide

  3. まずはお詫びから

    View Slide

  4. 昨日はJNUGさまブースを
    Linuxで上書きしてすみませんでした
    https://twitter.com/
    Yukky37x/status/
    1056080136666148865
    ディスプレイ貸して
    いただいて
    ありがとうございます…!!

    View Slide


  5. View Slide

  6. このLT
    JNUGさま枠
    なんだよなぁ…

    View Slide

  7. あらかじめお詫び申し上げます
    Tux, © Larry Ewing and The GIMP
    話しません→ ←話します
    NetBSD®

    View Slide

  8. というわけで
    • オチがほぼバレてるので、さっくり説明すると
    • Linuxをニンテンドウ64に移植しました
    • っていう話
    こういうこと→
    Tux, © Larry Ewing and The GIMP

    View Slide

  9. ニンテンドウ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 ではない

    View Slide

  10. なんで64?
    https://www.linux-mips.org/wiki/Nintendo_64

    View Slide

  11. なんで64?
    vaporware: 影も形もないソフト《理念だけで実現されていない製品》
    (研究社 英和コンピューター用語辞典)

    View Slide

  12. 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…

    View Slide

  13. 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

    View Slide

  14. できた~
    Tux, © Larry Ewing and The GIMP

    View Slide

  15. userlandもつくりましょー
    Buildroot Busybox Linux(改)
    Tux, © Larry Ewing and The GIMP
    ISO9660 image + α

    View Slide

  16. なんで9660!?
    • N64のROMイメージは
    先頭4KiB(-64bytes)の
    変更がむずかしい
    • パーティションテーブル
    が置けない、普通の
    filesystemも無理
    • ISO9660なら先頭16KiB
    空いてるじゃん!
    • 簡易ブートローダも詰
    め込めて安心
    ヘッダ領域 (64by)
    N64ブートコード
    Linux簡易ローダー
    ISO9660の中身
    4KiB
    16KiB
    N64エントリポイント

    View Slide

  17. 入力どうしようか
    • USBでtty生やしてるけど、単体で動いたほう
    がやっぱり面白いよね
    • 入力デバイス……コントローラあるじゃん!

    View Slide

  18. 自作joy2key的なやつ
    • 3Dスティック→8方向
    • B, A, C下 → 3 * 8 → 24
    • アルファベット=26通り
    • 大文字も入れたい
    • ついでに記号もほしい
    • R, Zトリガを修飾とする
    • →2^2 * 3 * 8 = 96通り!!

    View Slide

  19. こんな感じで
    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

    View Slide

  20. たとえば
    • 右下+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

    View Slide

  21. そんなん覚えられん!
    • そんなあなたに8bit直接入力モード!
    • (msb) Z R C右 C上 C下 C左 A B (lsb)
    • を同時押ししながらSTART
    • たとえば B+A+START -> 3 = ^C
    • SIGINTを投げられる!!
    • たぶん人間には早すぎる
    R
    Z

    View Slide

  22. DEMO

    View Slide

  23. 現況と将来
    • 最近ALSAドライバができてaplayやmpg123が
    動いて楽しい
    • ogg123は重すぎてブツブツ、tremor(整数
    vorbisデコーダ)使ったらギリギリCPU足りない
    • あとでGitHubに公開したい (履歴…)
    • Linux 4.4.1はちょい古いので4.18とか動かし
    たい
    • たまにSEGV/ILL/BUSするのが謎だけど、
    なんとかしたい

    View Slide

  24. あとNetBSD®移植しような!

    View Slide