メモリ
概要
Playdate は「低スペックを楽しむ」というコンセプトのもと、マイコン(MCU)ベースの構成となっており、現代のスマートフォンや他のゲーム機とは大きく異なるメモリ構造を持っています。
そしてメモリ設計としては「超高速だが極小の内部 SRAM」、「低速だが実用的な 16 MB RAM」、そして「極めてフットプリントの小さい VRAM(12 KB)」のバランスで成り立っています。
1. メモリ(RAM)の構成
Playdate には、速度や用途の異なる2種類の RAM が存在します。
- A. 16MB 外部 RAM (PSRAM)
- メインの作業用メモリです。
- 容量: 16 MB
- 物理的な実体: 低電力擬似 SRAM(PSRAM)
- 16 MB という容量は、このクラスのマイコン(Cortex-M7)としては非常に大容量ですが、CPU の外部に配置されているため、アクセス速度は CPU のクロック速度に比べて低速です。
- 注意点として、大量のテクスチャやオーディオデータを読み込むことができますが、頻繁にランダムアクセスを行う処理ではボトルネックになりやすいため、後述の L1 キャッシュや内部 SRAM を活用した最適化が重要になります。
- B. 約320KB 内部 SRAM
- CPU(STM32F746)のチップ内部に統合されている超高速なメモリですが、容量は "約320KB" です。
- 特徴として、CPU と同等の速度で動作します。スタック領域や、極めて高速な処理が求められる計算用データに使用されます。
2. ストレージ(Flash メモリ)
ゲーム本体やセーブデータを保存するための不揮発性メモリです。
- 容量
- 4 GB
- 規格
- eMMC
- 用途
- 速度
- RAM に比べるとはるかに低速です。ゲーム実行時には、必要なデータ(画像、音声、Lua スクリプトなど)を Flash から 16 MB の RAM へロードして使用します。
3. ディスプレイとビデオメモリ(VRAM)
Playdate はモノクロ 1 ビット(白か黒か)のディスプレイを採用しているため、描画に必要なメモリ量が非常に少なくて済むのが特徴です。
- 解像度
- 400 × 240 ピクセル
- フレームバッファ
- 約 12 KB(400 × 240 bit ÷ 8)
- この「12,000 バイト」という非常に小さなバッファを書き換えることで画面を更新します。
- 一般的なフルカラー(32bit)のゲーム機と比べると、描画に関するメモリ負荷が極めて低いため、168 MHz の CPU でも高速な描画が可能です。
4. 開発におけるメモリ管理のポイント
Playdate SDK を使用して開発する際、使用する言語によってメモリの扱いが変わります。
- Lua での開発
- 自動管理: メモリの確保と解放はガベージコレクション(GC)によって自動で行われます
- 制約: 16 MB という制限があるため、大きな画像を大量に保持すると、GC が頻繁に走りパフォーマンスが低下することがあります
- C言語での開発
- 手動管理: malloc や free を使って開発者が直接管理します
- 最適化: 16 MB の PSRAM はキャッシュ(L1 Cache)を介してアクセスされます
- データの局所性(データをメモリ上に並べて配置する等)を意識することで、キャッシュミスを減らし、低速な PSRAM の影響を最小限に抑えることができます
関連ページ
最終更新:2026年04月29日 07:26