はじめに
Togetterで以下の記事を読んだ。
ゲームボーイを起動すると降りてくるNintendoロゴ、実は商標を利用したコピーガードのトラップだった。
togetter.com
この記事について指摘してみたい。
ゲームボーイを起動するとNintendoのロゴが降りてくるが、カートリッジを差し込まなかったり、カートリッジの差し込みが甘いとロゴが化けてしまい、ゲームが立ち上がらないケースがある。
カートリッジの差し込み状態で化けることから、ロゴのデータはカートリッジ側に入っていると推察できるが、実のところロゴのデータは本体側も持っている。
仕組みとしては、起動時にカートリッジ側にあるNintendoのロゴデータを読みこんで、それを画面に表示する。ロゴが表示されたあとに、もういちどカートリッジ側にあるNintendoのログを読み込んで、本体側で持っているNintendoのロゴデータと比較して、Nintendoのロゴではなかった場合は起動が阻止される…というものになっている(この説明は正確ではない、後述)。
なぜ、このような起動シークエンスがあるのか。
これは商標権を盾にしたトラップとして有効なのか?
この起動シークエンスは、海賊版のカートリッジを製造販売している業者に対して、商標権を主張するためのトラップであるという見方が定説である。しかし、ロゴデータは暗号化されておらず、違法コピー自体を防ぐものではないため、これをコピーガードと呼ぶことはできない。
同じような起動シークエンスは、ファミコンやスーパーファミコンにはないが、ゲームボーイやゲームボーイカラー、ゲームボーイアドバンスといった携帯機では標準装備されている。
ゲームの起動時に強制的にNintendoのロゴが表示されるから、任天堂のライセンスを受けていないソフトウェアが開発された場合に商標権侵害で訴訟を起こすことを可能にした、というわけだ。
現在、いろいろなメーカーが起動シークエンスのない「FC互換機(ファミコンの表記を避けた表現)」向けにあえて新作ゲームを商業ベースで発売する動きがあるが、起動シークエンスのある「GB互換機」「GBA互換機」向けに新作ゲームが供給されないのは、こういった事情があるからかもしれない。
しかし、実際にこの起動シークエンスを盾にして任天堂が海賊版業者を訴えたという事例は、国内外問わず見つけることはできなかった(知っている方おりましたらコメントください)。
起動シークエンスの問題はアメリカの裁判で争点になった
同じような起動シークエンスは、セガのメガドライブにも存在して、起動時にSEGAのロゴが表示されるというものだが、こちらについてはセガが実際に訴訟を起こしていた。アメリカで起こった裁判で、ソフトウェアのリバースエンジニアリングと著作権侵害をめぐる問題において影響力のある「Sega v. Accolade」事件で争点になっている。
en.wikipedia.org
結論から書くと「ゲームを起動させるためにやむを得ずロゴを表示せざるを得ない場合は、フェアユースの範疇である(大意)」といった判例が出ている。したがって、アメリカにおいては、任天堂が講じたトラップは無意味なものとみなされている。
Wikipediaに書かれている裁判の内容を要約してみると、日本でもゲームボーイなどで発売された『石道』というゲームのパブリッシャーであるアコレード社は、メガドライブ向けに発売するにあたってセガとライセンス契約を結んではいた。しかし、セガ側は独占パブリッシャーになることを要求して他のゲーム機でリリースすることを妨げたり、ライセンス料が高騰するなどの理由で、他のメーカーから出ていたメガドライブのソフトをリバースエンジニアリングすることによって開発を行ったが、これが違反だとしてセガに訴えられている。
en.wikipedia.org
(セガのゲームソフトのリバースエンジニアリングによる)著作権法違反と、無許諾の非公式開発に対して、セガはメガドライブに搭載した起動シークエンスを含む「商標セキュリティシステム(TMSS:Trademark Security System)」を盾に訴訟を起こした。訴訟を起こされたアコレード社は、ゲームの電源投入時にセガの商標が強制的に表示されることで、ゲームの出所が偽られたとして反訴を起こした。
連邦地裁ではセガの主張が全面的に認められたが、アコレード社は上訴。起動シークエンスの存在は「競合他社の製品に虚偽の表示をすること」であり「ゲーム機用のソフトウェアの競争を制限するために商標を利用した」とみなされ、セガ側の思惑とは真逆の結果となった。
その後、セガとアコレード社は和解。アコレード社は正式にライセンスを締結することとなった。
ただし、この判決は1976年の時点での著作権法を基にしているため、ソフトウェアの著作権や著作権保護機能の理解が進んだ現在とは単純比較できないと筆者は思う。
とはいえ、判例がある以上、海賊版業者は別として個人による非公式開発が取り締まられるということは(アメリカにおいては)起こっていない。
(ここまで書いて気付いたが、PS3のjailbreak事件や、現在任天堂が行っているニンテンドースイッチのエミュレータ規制も加味するととても複雑な話になりそう…)
ゲームボーイの起動シークエンスの仕組みと回避方法
ここまで書いたところで、実際のゲームボーイの起動シークエンスの仕組みを記してみたい。
基本的な流れとしては、
(1)カートリッジからNintendoのロゴデータを読み込む
(2)読み込んだロゴデータを起動シークエンスに使用して画面に表示する
(3)もう一度カートリッジからNintendoのロゴデータを読み込む
(4)読み込んだロゴデータとゲームボーイ本体側にあるロゴデータを比較して、違っていれば起動を阻止する
(5)ゲームが起動する
という具合である。
1つめの手法としては(1)で表示用のカスタムロゴデータを、(3)で本物のロゴデータを読み込ませることができれば、Nintendoのロゴを表示させずにゲームを起動させるものがある(TOCTTOU脆弱性)。これを実現するにはソフトウェアだけではどうにもできず、専用のカスタムハードウェアが必要である。また、本体側のブートROMのバージョンによっては読み取りのタイミングや順序が異なるため、完全な方法とも言えない。カスタムマッパーを使用する実装もあれば、(ロゴデータを通過する)アドレスラインの一部を保持するコンデンサを使用して、変更されたロゴを含むROMの別領域にリードをリダイレクトする実装もあるようである。
dhole.github.io
www.youtube.com
2つめの手法としては、ゲームボーイカラー(とゲームボーイアドバンスのゲームボーイカラーモード)限定の方法になるが、(4)におけるロゴデータの比較が、なぜかロゴデータの前半(ロゴの上半分)しか行われていない。したがって、上半分は正しいが下半分は正しくないロゴは、ゲームボーイカラーのブート時の起動チェックをバイパスできることになる。こちらの手法は、主にアジア方面で開発された海賊版や非公式タイトルで見られるようだ。
結局、どうすればいいのやら
Pan Docsに記載されている方法として、Nintendoのロゴが降りてきたあとに、以下のようなメッセージを追加で表示すれば問題ないだろうとのこと。とのことで実装して実機で表示させてみた。
アメリカでは有効だろうが、日本において有効かどうかは不明。単にNintendoロゴの表示を受け継いで表示しているだけなのでハックも不要。
参考文献
ディスクシステムの著作権表記の不備を改めてゲームボーイの著作権表記が生まれた旨の記載がある。
www.wizforest.com
ゲームボーイにカスタムロゴを表示させるデモ
dhole.github.io