Show HN: ポケットモンスターエメラルドをRaspberry Pi Pico 2 に移植しました

2026/08/07 6:49

Show HN: ポケットモンスターエメラルドをRaspberry Pi Pico 2 に移植しました

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

報告される最も大きな成果は、252 MHz で動作し、1 秒間に 60 フレームの画率を実現することで、Pokémon Emerald が WeAct Studio Core2350B マイクロコントローラー (RP2350B) にてネイティブに正常に動作することに成功した点である。本システムは、オンボードフラッシュストレージから直接フルゲームプレイ、電源サイクルを超えた持続的なセーブデータの保存、ハイクオリティな HD 対応 HDMI 出力を提供し、従来のエミュレーションオーバーヘッドを排除している。本プロジェクトでは、元のアーム v4T コードを現代的な Cortex-M33 コアに書き直し、コア 1 上でソフトウェア的にゲームボーイアドバンスのビデオハードウェアを実装し、コア 0 でゲームロジックを担当させることでこの成果を実現した。また、既存のオープンソースエコシステムを活用し、pokeemerald-wasm のハードウェア抽象化層と参照ラスタライザーを用いてバイト単位正確な PPU 検証を確保している。

しかし、ハードウェアおよび実装上の制約により、高度な機能は未完了の状態である。オンライン取引、対戦、ミステリーギフト、リンクケーブルサポート、RFU は利用できない。これは、Emerald が要求する特定の RTC ビットバンギング機能が不足している(カートリッジ GPIO の読み取り値がゼロ)ためである。音響システムは m4a エンジンを使って音楽を再生するが、DPCM および逆再生楽器については無音のスタブが含まれており、フレームレート連動型のミキシングにより 60 fps 未満でアンダーランが発生する可能性もある。さらに、シネマティックなイントロは最適化された高速パスの欠如によりメインループよりも若干遅く実行される。ビルドプロセスには、標準形式からアセットを生成し、ソースコードを単一のイメージにコンパイルして 16 MB の QSPI フラッシュから実行し、読み込み用の

.uf2
ファイルを作成することを含んでいる。このマイルストーンにより、複雑なゲームボーイアドバンスタイトルが極めて低コストのマイクロコントローラー上で効率的に実行できることが証明され、レトロゲーミング愛好家向けに新たな予算フレンドリーなプラットフォームを提供するとともに、コアとなる作業は MIT ライセンスの下で公開される(上流のアセットおよび ROM は除く)。

本文

Pokémon Emerald の RISC-V マイクロコントローラ搭載基板でのネイティブ実行プロジェクト

WeAct Studio Core2350B 上で、Pokémon Emerald をエミュレータなしにネイティブに動作させたプロジェクトの詳細です。 フルゲームの再生、60fpsの実行、HDMI出力、実在するボタン操作、電源切断時のセーブデータ保持を達成しました。

技術的特徴とアーキテクチャ

  • エミュレータ不使用:
    prett
    によるデコンパイルコードを ARMv4T から Cortex-M33 へ再コンパイルし、GBA の動画ハードウェアを第 2 コアでソフトウェア実装。
  • 対象ボード: WeAct Studio Core2350B(RP2350B、16MB QSPI フラッシュ)。
    • コード・グラフィック・マップ・音楽を含む全イメージはフラッシュからインプレックス実行(11.7 MB)。

ハードウェア構成とコア役割分担

  • CPU: RP2350B @ 252 MHz
  • 出力解像度: 240×160 RGB565 (PPU) → HSTX シリアルライザー経由で DVI/HDMI 640×480p60 (2 倍アップスケーリング)。
  • コア 0 (ゲームロジック):
    • 処理速度: 〜0.3 ms/フレーム。
    • GP0–GP9 ポートを通じてボタン入力制御
  • コア 1 (PPU レンダリング):
    • 処理速度: 〜12 ms/フレーム。
    • DMA コントロールブロックリングを使用。

現在の動作状況と機能

✅ 稼働している機能

  • フルプレイ可能: 起動から終了まで全てのフローが動作。
    • イントロ、新規ゲーム開始、ワールド移動、バトル、セーブ機能が正常。
  • 映像 (PPU): モード 0–4、アフィン変換、スプライト、ウィンドウ、ブレンド機能全対応。参照データに対してバイト単位の正確性を確認済み。
  • フレームレート: ロックされた 60fps(ティアフリー)。スキャンアウトビームに同期した垂直同期(vsync)対応。
  • 入力操作: GPIO ポート 10 を使用したボタン入力に対応。
  • セーブ機能: QSPI フラッシュへの永続的保存を実現。再起動や再フラッシュ後もデータ保持可能。

⚠️ 制限事項と未実装機能

  • 音響:
    • 音楽再生は実装済みだが、一部の楽器クラスは音声出力なし(スチュブ)。
    • m4a エンジン移植済みだが、DPCM(圧縮音声)およびリバース再生楽器は動作しない。
    • ミキシングはフレームレートに依存しており、60fps 未満のシーンではアンダーランする可能性がある。
  • リンクケーブル / RFU (Random Function Unit): 未実装。取引、バトル、ミステリーギフトのダウンロードコード経路は動作せず(M33 アーキテクチャ上の仕様制限のため)。
  • RTC (リアルタイムクロック): カートリッジ時計機能は非活性。「時計は停止しています」と表示されます。ベリーの成長や時間帯依存イベントに響きます。
  • OBJ ウィンドウイントロ映画: 20–25 ms/フレームで動作し、60fps より低速な唯一のシーン。
  • 音響ハードウェア: オプション接続だが、未整備の状態です(I²S DAC 接続なしでも無音での動作は可能)。

ビルド手順

詳細は

docs/BUILD.md
を参照ください。ルートディレクトリからの簡易コマンドライン操作は以下の通りです。

# 1. ツールとアセットの準備
make tools && make modern

# 2. サウンドアセットの生成(一度のみ実行):wav->bin、mid->s (song)
rp2350/gen_sound_assets.sh

# 3. ゲームソースコードのコンパイル
rp2350/build_objs.sh

# 4. ビルド(環境変数 PICO_SDK_PATH が必要)
cmake -B rp2350/hw/build -S rp2350/hw -G Ninja
ninja -C rp2350/hw/build emerald

# 5. ファイルの書き出し
picotool load -f rp2350/hw/build/emerald.uf2

デバッグ用テストターゲット

rp2350/hw/CMakeLists.txt
は、統合前の各サブシステムの検証のために以下のスタンドアローンターゲットもビルドします。これらは新しいボードのデバッグに有用です。

  • hstx_test
    : カラーバー出力
  • psram_test
  • i2s_test
    : 440 Hz 正弦波生成
  • display_test
  • ppu_display_test
  • emerald_hwtest

動作原理と設計思想

開発ログや測定値の詳細は

docs/PORTING.md
を参照してください。

アーキテクチャの継承と適応

  • WASM ポートとの互換性:
    tripplyons/pokeemerald-wasm
    において既に WASM 依存関係を囲んでいたコードを、
    #if WASM || RP2350
    により再利用し、ハードウェア依存からの脱却を完了。
  • メモリマップ: GBA メモリマップはそのまま維持(DISPCNT, VRAM, OAM, パレット RAM を元アドレスへ書き込み)。
    • ライブ RAM: RP2350 の 520 KB 中約 378 KB を使用。
    • ROM: QSPI フラッシュ上の XIP (Execute In Place)。ベースアドレス
      0x08000000
      0x10000000
      にマッピング。

PPU と描画最適化

  • PPU: 第 1 コア上で動作するソフトウェアレンダライザー(WASM ホスト側のコード移植)。
    • 初期性能: 909 ms/フレーム → 現在:〜12 ms/フレーム(約 75 倍高速化)。
    • 最適化手法: フレーム毎のパレット LUT 更新、スキャンラインごとのウィンドウマスク、8 ピクセルタイルスパン処理、増分アフィンステップ化。
  • 描画パイプライン: CPU はスキャンアウト(画面描画)時に不要。
    • DMA コントロールブロックリングが HSTX シリアルライザーにフルな 525 ラインのフレームを供給するため、CPU は中断処理のみを担当。
    • これにより、フラッシュ書き込み時のミリ秒単位の停止(ストール)でも画面描画は継続し、HDMI ドロップアウトを回避。

リポジトリ構成

pokeemerald-wasm
のフォークであり、アップストリームからの継承がほぼ全てです。

パス内容
rp2350/
ポート部分:PPU ドライバー、HSTX ディスプレイ、BIOS コール、m4a エンジン、ビルドスクリプト。
rp2350/hw/
Pico SDK プロジェクト(ゲームメイン、リンカースクリプト、フラッシュセーブ、I²S、テストターゲット)。
docs/
ハードウェア構成、ビルド手順、ポートに関するドキュメント。
src/
,
data/
,
graphics/
,
sound/
アップストリームの pokeemerald ゲームソースとアセット。
web/
,
tools/wasm_*
WASM ビルド(PPU の参照実装として保持;参照用)。

PPU の検証ハネス

WASM ビルドは意図的に維持されています。

  • 検証方法:
    rp2350/ppu_validate.sh
    を実行すると、ブラウザ内での JavaScript レンダライザ出力と C ライブラリ (
    rp2350/ppu.c
    ) のレンダリング結果をピクセル単位で比較・差分表示します。
  • 役割: これにより PPU がバイト単位の正確性を保つことが保証され、各最適化パスでのバグ検出に寄与しました。

ライセンスとクレジット

ライセンス情報

  • rp2350/
    ディレクトリ: オリジナル開発分。MIT ライセンス (
    rp2350/LICENSE
    ) で公開。
  • 他のディレクトリ:
    pre
    のデコンパイルコード使用分。独自のライセンスを伴わない。ROM は含まれません(コミット済みソースからビルド)。
    • 注記: ポケモン関連名称は任天堂、Creatures Inc.、GAME FREAK Inc. の商標です。

クレジット

  • pret/pokeemerald: デコンパイル作業の実施者。
  • tripplyons/pokeemerald-wasm: WebAssembly ポートおよび参照レンダライザーの提供。

同じ日のほかのニュース

一覧に戻る →

2026/08/07 5:23

AMD が推論性能向上のためにモデルをシリコンに刻むことでタラアスを取得

## Japanese Translation: AMD がトロントに本社を置くスタートアップであるタラス(Taalas)を買収したことは、AI ハードウェアの景観において大きな転換点を意味し、従来の「メモリ内計算」アーキテクチャを通じて NVIDIA の支配的地位に挑戦することを目的としています。標準的な高帯域幅メモリとは異なり、タラスのチップはマスキング ROM ファブリックを使用して静的な重み値をシリコン上に直接刻み込み、動的な KV キャッシュのために SRAM 呼出ファブリックを使用するモデル専用集積回路(MSIC)として動作します。このアプローチにより、AMD は既存の Instinct GPU アーキテクチャ内で、GPU がプロンプト処理を担いながらタラスのチップがトークン生成を担当するという disaggregated な形でこれらの専門的なアクセラレーターを展開できます。初期のベンチマークでは、HC1 チップは Meta の Llama 3.1 を処理する速度において、現在の NVIDIA GPU よりも 48 倍、Cerebras のアクセラレーターよりも 8.5 倍高速であることが示されています。さらに、重み値をシリコン上に刻むことにより、この技術は従来の方法に比べてトレーニングコストを 100 分の 1 に削減すると推定されます。しかし、この効率性には代償があります:顧客はモデルロックインに直面しており、これらのチップを導入するには、大規模なモデル更新に対して単なる LoRA アダプターではなく、コストのかかる「再スピン」(金属層の変更)を必要とします。規制上の承認が必須であるにもかかわらず、本取引は第 4 四半期に完了する見込みであり、夏には 200 億パラメータ向けに設計された次世代 HC2 チップの登場へと道を開きます。OpenAI、Anthropic、Meta など主要な AI プレイヤーは既に Instinct の顧客であり、AMD はこれらの柔軟で高性能なソリューションを通じて業界のワークロードを再構築する位置づけにあります。

2026/08/06 0:33

NSFインウイェー太陽望遠鏡が隠された太陽過程の重大な発見をもたらす

## Japanese Translation: 2026 年 8 月 5 日、NSF NSO、NSF NCAR HAO、および MPS に所属する研究機関を含む国際チームは、「Nature」誌に重大なブレークスルーを掲載し、太陽表面におけるケルビン=ヘルムホルツ不安定性(KHI)の初の実験的確認を発表した。NSF デイヴィッド・K・イノーイ太陽望遠鏡—which はその 4 メートルの主鏡によって匹敵する解像力を提供した—を使用して観測者は、渦距離が 50–65 km の渦状の極細な旋回パターンを捉えた。このパターンは 416 nm の波長において、モルアイに見られるような構造を示していた。これらの観測は磁気要素の変形された境界線と縞構造を明らかにし、物理ベースのシミュレーション(MURaM コード)および解析理論と完全に一致した。この発見は、KHI が磁場線をねじり、プラズマの混合を駆動し効率的な拡散を行う自然なエンジンとして機能することを確認している。この機構は、太陽の 11 年周期の磁気サイクルの説明、ならびに磁気エネルギーがどのように蓄積し日食爆発を燃料とするかを詳述することで「コロナ加熱ミステリー」の解決に不可欠である。将来の自動解析ではエネルギー転送量および宇宙天気への影響を定量化し、地球基盤技術を混乱させる爆発的な太陽嵐に対する予測を大幅に向上させるだろう。 ## Text to translate: "On August 5, 2026, an international team including researchers from NSF NSO, NSF NCAR HAO, and MPS announced a major breakthrough in *Nature*: the first experimental confirmation of Kelvin-Helmholtz Instability (KHI) on the Sun's surface. Using the NSF Daniel K. Inouye Solar Telescope—which delivered unmatched resolving power via its four-meter mirror—observers captured ultra-fine swirling patterns resembling whirlpools with vortex distances of 50–65 km at a wavelength of 416 nm. These observations, which revealed deformed boundaries of magnetic elements and striped structures, matched perfectly with physics-based simulations (MURaM code) and analytical theory. The discovery confirms that KHI acts as a natural engine, twisting magnetic field lines to drive plasma mixing and efficient diffusion. This mechanism is vital for explaining the Sun's 11-year magnetic cycle and resolving the 'coronal heating mystery' by detailing how magnetic energy accumulates and fuels solar flares. Future automated analysis will quantify energy transfer and impacts on space weather, significantly improving predictions for explosive solar storms that disrupt Earth-based technology."

2026/08/06 20:24

マリオがパレートの法則と出会う

## Japanese Translation: 最適な「マリオカート」のドライバーを見つけるには、単一の指標に依存するのではなく、スピードと加速度の両方の統計量をバランスさせる必要があります。少なくとも他のいずれかの候補よりも両カテゴリで劣るドライバーは「支配されている」とみなされ、破棄できます。例えば、カオパはキャットピーチ(同じ加速度で低速)やトードレット(低速)に支配されており、トードレット自体もより高い加速を持つ別の選択肢に支配されます。他のどのオプションにも支配されないドライバーの集合が**パレト前線**(または境界)を形成し、不適切な選択肢を除外するための客観的なフィルターを提供します。しかし、この前線上にあるすべてのドライバーが同等に望ましいわけではありません。プレイヤーは、バランスの取れた両方の統計量を維持するために、境界その端にあるものを避ける傾向があります。結局のところ、パレト効率は選択肢を絞り込むのに役立ちますが、最終的な選択を決定づけるものではありません。最適なドライバーは、あなたの特定のプレイスタイル、個人のスキルセット、スピードと加速度のどちらを重視するかによって異なります。このフレームワークは、競技プレイヤーが非効率なビルドを素早く排除しつつ、独自の嗜好に対する柔軟性を維持するよう支援します。

Show HN: ポケットモンスターエメラルドをRaspberry Pi Pico 2 に移植しました | そっか~ニュース