Skip to content

アセット・パレット規約

スプライト・BG タイル制作の確定ルール。アート修正を AI エージェント(Codex 等)に委譲するときは、本ページの制約をプロンプトに毎回明記すること。

制作方式(確定)

自動画像変換は禁止

画像 → CHR の自動変換は減色ノイズで一度失敗済み。**「帯パレット先行設計 → ピクセルマップ手打ち → Python ジェネレータで CHR 化」**が正のワークフロー。

tools/gen_ai_sprite.py     # ピクセルマップ(手打ち)→ ai_sprite_data.inc + .chr
tools/gen_ai_stage_bg.py   # ステージ背景タイル生成(issue #23)
  • 生成物は src/*.inc として engine.s に取り込み、リセット時に CHR-RAM へ転送
  • CHR ラウンドトリップ検証(エンコードのピクセル一致確認)をテストで担保

CHR-RAM レイアウト(8KB)

CHR アドレス内容サイズ
$0000〜フォント: tile 0 = 空白, 1〜26 = A〜Z, 27〜36 = 0〜9, 37 = :, 38 = -39 タイル
$0270〜ステージ BG タイル(tile 39〜、issue #23 で追加中)実装中
$1000〜アイのダンススプライト v4(26 フレーム分)208 タイル = 3,328 バイト

アイのスプライト(v4・承認済み)

項目内容
サイズ16×32 メタスプライト(8×8 × 8 枚)
フレーム数26(idle + 各振り 4 コマ + ホールド等)
アニメ4 コマ × 5 フレーム = 20 フレーム固定・接地固定(ジャンプのみ pose_dy
アセットassets/sprites/ai-dance-sprite-nes-v4.chr

帯パレット(スプライト・確定値)

キャラの縦 32px を 3 帯に分け、行ごとに使用色を固定する。

帯(行)色(NES パレット値)用途
行 0〜15$00, $36, $2C頭部・上半身
行 16〜23$00, $30, $36腰まわり
行 24〜31$36, $30, $2C脚部
  • スプライトパレットは gen_ai_sprite.py v4 が生成($3F10〜)
  • お手本ガールはパレット差し替え(制服色違い)+ 水平フリップでアイの CHR を共用

スプライトパレット 4 本目は予約済み

$3F1C〜観客・判定文字用に予約。キャラ用に使わないこと。

BG パレット

パレット用途
0UI テキスト(フォント)
1電脳ステージ背景
2ステージ床
3観客

(issue #23 の実装で確定。属性テーブルは 16×16px = 2 タイル単位でしか塗り分けられない点に注意)

スプライト同時使用数の設計制約

アイ 8 枚 + お手本 8 枚 + 判定文字最大 7 枚 + アイコン ≒ 28 枚。

  • NES は 1 スキャンラインに 8 スプライトまで — 横並びに注意
  • 判定文字はアイの頭上のみに表示、振りアイコンは BG 化を検討(仕様書 §9)

必要アセット一覧(仕様書 §8 より)

アセットサイズ状況
アイ(主人公)26 フレーム16×32✅ v4 承認済み
お手本ガールアイと共用✅(パレット差し替え)
ステージ背景(床・スポットライト・電脳グリッド)BG タイル🚧 issue #23
観客(シルエット 2 種 + Donack カメオ)8×16 BG × 2🚧 issue #23
振りアイコン 6 種・♥8×8📋 未着手
判定文字 PERFECT / GOOD / MISSスプライト📋 未着手(現状はフォント表示)