ストリートファイター Ⅱ: ザ・ワールドウォリアー(2021)

2026/01/04 23:30

ストリートファイター Ⅱ: ザ・ワールドウォリアー(2021)

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

要約

Japanese Translation:

「World Warrier」というタイプミスは、スプライト作業が完了した数か月後にStreet Fighter IIのサブタイトルロゴで初めて現れました。CPS‑1ハードウェアはグラフィックスROMタイルを変更できないため、リード・グラフィックデザイナーのAkiman は実行時に修正しなければなりませんでした。

サブタイトルは16回の描画コールで構成されており、使用しているタイルは0xC8–0xCFと0xD8–0xDFです。Akiman は「ier」という語尾を形成していた3つの問題のあるタイル(0xDD–0xDF)を削除し、代わりに0xCDと0xCEを使ってざっくりと「or」を作成しました。最後のタイルの『W』の右足が「l」のように見えており、「i」ではありませんでした。

この「l」を「i」に変えるため、Akiman はGuile のスプライトからタイル 0x96 を使用しました。このタイルは左下隅に1ピクセルだけが存在します。Guile のパレットのインデックス14(濃い緑)を選択しつつ、サブタイトルの青色パレット(同じインデックス14は濃い青)で描画することで、そのタイルはほぼ透明になり、1ピクセルだけが残ります。3 つの描画コマンドでこの「鉛筆」タイルを『l』に重ね、上部を切り取って点を付けることで「i」を形成しました。

修正されたサブタイトルは、その後のリリースで適切な「IOR」タイルを含めて固定され、続くサブタイトル変更(「Champion Edition」「Hyper‑fighting」)により元のタイプミスが目立たなくなりました。このケースは、ハードウェア制限をクリエイティブに回避する方法―パレット操作と実行時描画を利用して ROM を書き換えずにグラフィック問題を修正できること―を示しています。

本文

2021年12月23日 – ストリートファイター II:ザ・ワールド・ウォリアー

この記事は ストリートファイター IICPS‑1 に関するシリーズの一部です。
読む前に、以前の記事を必ず読んでください。


失笑必至のタイプミス

私のお気に入りの逸話のひとつが、ストリートファイター II のリードグラフィックデザイナー・アキマンによる、出荷直前に発覚した問題です。

「締め切りまで残り3日、恐ろしいことを発見しました。
サブタイトルの「World Warrior」を誤って「World Warrier」と綴ってしまいました。」
— アキマン(SF2 リードグラフィックデザイナー)
(Shmuplation 翻訳)


問題を再現してみる。痛い!

問題の本質を理解するには、アーケードハードウェアがどう動作しているかを掘り下げる必要があります。
CPS‑1 はスーパートライドローイングマシンです。多数のタイルを描画できますが、それらを変更することはできません。
タイルは GFX ROM からそのまま取り出され、スクリーンへ送られます(ただし水平または垂直に反転させることは可能です)。

  • GFX ROM と 68000 の命令ROM は別々に焼かれています。
  • アキマンは「GFX ROM が焼かれていたが、まだ命令を変更できた」と述べています。

「この話も安全に語れるようになりましたが、本当に発見したのはすべてスプライト作業が終わってから数か月後でした。
ロゴは既に完成していたので、ここで文字を変えることはできませんでした。
『おそらく「o」の形に強制できるだろう』と考え、いろんなスプライトを重ねて試しました。結局、見た目が「o」になりました。ホッ!」
— アキマン


詳細に迫る

アキマンの解決策は興味深いですが、どうやって「e」を「o」に変えたか詳細を知りたいです。

  • シート抽出ツールでテキストを見つけました。ロゴとタイプミスはシート
    0x7B00
    にあります。
  • ロゴは 16 回の描画呼び出しで、タイル
    0xC8
    0xCF
    0xD8
    0xDF
    を使用して描かれます。

アキマンは実務的に問題を解決しました:

  1. 「World」の中に「or」があり、誤った「ier」を置き換えられると気付きました。
  2. 最後の 3 タイル (
    0xDD
    ,
    0xDE
    ,
    0xDF
    ) を削除し、代わりに
    0xCD
    0xCE
    を挿入しました。

これでロゴは「The World Warrlor」になりましたが、借用した「W」の右脚が「i」ではなく「l」に見えるようになってしまいました。


グアイの助け

パズルの最後の部分はグアイのふくらみから得られます。
タイル

0x96
をよく見ると、左下隅に1ピクセルだけが表示されています。

  • グアイパレット – インデックス 14 は暗い緑。
  • ロゴパレット – インデックス 14 は暗い青。

タイル

0x96
をロゴパレットで使用すると、68000 が「ペンシルタイル」コマンドを発行できます。これは任意の場所に1ピクセルを描画できるもので、実質的には線を作成します。
アキマンはこのペンシルタイルを使って、問題の「l」の上部を削り取り、上に点を付けて「i」に変えました。

「『Warrior』の i がずっと奇妙に見えていた理由が分かったでしょう?」
— アキマン


エピローグ

タイプミスは後続版の Street Fighter II で修正され、サブタイトル「World Warrior」のタイルセットには正しい「IOR」が入ります。
皮肉なことに、これらのタイルは使われませんでした。というのも、サブタイトルが「World Warrior」から「Champion Edition」、さらに「Hyper‑fighting」に変更されたためです。

同じ日のほかのニュース

一覧に戻る →

2026/01/05 6:01

北ダコタ州法は、石炭業界の弁護士の名前に由来する偽の「クリティカルミネラル」を一覧化しています。

## Japanese Translation: **改善された要約** 記事には「State(州)」「Zip Code(郵便番号)」「Country(国)」の3つのセクション見出しのみが含まれています。これらの見出しの下に追加のテキスト、説明、または例はありません。

2026/01/05 5:17

**Show HN: AWS用ターミナル UI**

## Japanese Translation: > **概要:** > tawsはRustで書かれた軽量なターミナルUIで、k9sに触発されており、ユーザーがAWSリソースを迅速かつ効率的に管理できるようにします。リアルタイム更新、Vim風ナビゲーション(`k/j/↑/↓`, `g/G`)、リソース操作(例:EC2の開始/停止/終了は`s/S/T`)、JSON/YAMLビュー、フィルタリング、ファジー補完、およびコロン(`:`)で呼び出すリソースピッカーをサポートします。 > このツールは30個の主要AWSサービス(典型的な使用率の95%以上)にわたって動作し、マルチプロファイル/マルチリージョンナビゲーション(`p`, `R`)が可能です。Homebrew(`brew install huseyinbabal/tap/taws`)でインストールできるほか、macOS、Linux、Windows向けに事前構築済みバイナリをダウンロードして使用できます。macOS/Linux用のクイックインストールスクリプトも提供されています。 > AWS認証情報は`aws configure`、環境変数、またはIAMロールで供給でき、必要最低限の権限はDescribe*とList*です。本プロジェクトはMITライセンスで配布されており、新しいサービスを追加する前にディスカッションが奨励されています。将来のリリースではサービス対応範囲の拡大を目指し、IAM権限ギャップ、ページネーション制限、グローバルサービスデフォルトなど既知の問題にも対処します。 この改訂された概要は主要なポイントすべてを網羅しており、元の内容に忠実で、読者にとって明確かつ簡潔な概要を提供します。

2026/01/05 4:48

**Claude Code On‑the‑Go** (クレオード・コード・オンザゴー)

## Japanese Translation: **(修正版)** > 著者は、iPhone 上で 6 つの Claude Code エージェントを実行する、コスト管理済みかつモバイルフレンドリーなワークフローを構築します。 > > * **Vultr VM**(Silicon Valley の `vhf‑8c‑32gb`)を 2 本のスクリプト(`vm-start`、`vm-stop`)で起動・停止し、iOS ショートカットから呼び出します。VM は稼働時に約 **$0.29 / hr(約 $7/日)** の費用がかかります。 > > * 接続は **Tailscale のプライベートネットワーク** を介し、**Termius + mosh** で行い、Wi‑Fi / モバイル通信の切り替えや電話機のスリープ時でも継続する頑健な SSH セッションを実現します(SSH エージェントは転送されないため、GitHub 認証は tmux 内の通常キーで行います)。 > > * ログイン時にシェルが自動的に **tmux** にアタッチします(`if [[ -z "$TMUX" ]]; then tmux attach -t main || tmux new -s main fi`)、再接続時も状態を保持します。 > > * 各 Claude エージェントは、別々の Git 作業ツリー・ブランチに紐付けられた独自の tmux ウィンドウで実行されます。ポート番号は `django_port = 8001 + (hash_val % 99)` により決定的に割り当てられ、`hash_val = sum(ord(c) for c in branch_name)` です。 > > * `~/.claude/settings.json` の **PreToolUse フック** はタスク完了時に Poke にプッシュ通知を送信します。質問は `jq` で抽出し、メッセージを構築して `curl` で送信します。 > > * 全体のセットアップは、セキュリティ上隔離された消耗性 VM を使用し、潜在的な無制限利用を日次コストキャップ(約 $7)に限定しています。 > > * 開発者は電話で 10–20 分程度の Claude タスクを開始し、その間他の作業を行いながら通知が来るまで待つことができます。 この修正版要約は、すべての主要ポイントを完全に反映し、推論を避け、曖昧な表現を排除して情報を明確に提示しています。