ROMハッキングとは、 ROMイメージまたはROMファイルを改変して、その中に含まれる内容を変更するプロセスであり、通常はビデオゲームのグラフィック、セリフ、レベル、ゲームプレイ、その他の要素を変更するために行われます。
ROMハッキングは、重要な古いゲームを改良したり、創造的な表現の場として、あるいは古いゲームのエンジンを使って新しい(非公式の)ゲームを作ったりするために使われます。ROMハックは一般的に、16進エディタ(非テキストデータを編集するためのプログラム)や、タイルエディタなどのさまざまな特殊ツール、レベルやアイテムなどを編集するためのゲーム固有のツールを使って行われますが、アセンブラ、コンパイラ、デバッガなどのより高度なツールが使われることもあります。完成したROMは、通常、エミュレータやゲーム機でプレイできるようにインターネット上で配布されます。[ 1 ]
ファン翻訳(ROMハッキングコミュニティでは「翻訳ハッキング」として知られている)はROMハッキングの一種です。検閲対策ハックは、ゲームを元の状態に戻します(これは、輸入された古いゲームでよく見られます。ビデオゲームのパブリッシャーのコンテンツポリシー(特に任天堂のもの)は、日本やヨーロッパよりも米国の方がはるかに厳格だったためです)。ランダマイザーハックは、ゲーム内のエンティティの配置をシャッフルするように設計されています。[ 2 ]また、ゲームのコードには存在するがゲーム内で使用されていない機能を再実装するハックもあります。
ほとんどのハッキンググループは、ハックやスクリーンショットをホストするためのウェブスペース(グループメンバーによるハックのみをホストする場合もあれば、ほぼすべてのハックをホストする場合もある)、メッセージボードを提供しており、多くの場合IRCチャンネルも備えています。また、いくつかのハッキンググループや個人は、ROMハッキングについてもっと学びたい人向けにガイドを作成しており、例えば1990年代半ばから後半にかけて書かれたNES用のRom Hacking Bible [ 3 ]や、最初から最後まで物事を追加または変更する方法を学びたい初心者や熟練したハッカー向けに設計されたガイドなどがあります。
インターネット上にはROMハッキングの世界に特化したサイトが多数あり、それぞれが複数のシリーズ、フランチャイズ、プラットフォームにわたるゲームのハックや翻訳に焦点を当てています。ROMハッキングに特化したオンラインサイトの中で最も有名なものの1つはROMhacking.net は、2005 年後半に初めてオンラインになりました。設立から 2024 年まで、ROM ハッキングに関するあらゆることのハブとして機能し、第3 世代から第 7 世代までの多くの有名およびマイナーなビデオゲームのハック、翻訳、ユーティリティ、ドキュメント、パッチのリポジトリをホストしていました。ROMhacking.com は ROMhacking.net の直前の前身であり、5 年前の 2000 年に「The Whirlpool」として立ち上げられ、2001 年から 2002 年の間は ROMhacking.org として短期間運営された後、元の名前に戻り、2004 年後半にオフラインになりました。[ 4 ] [ 5 ]
2024年8月1日現在 ROMhacking.net は、サイトの制御が及ばないさまざまな理由により、約 20 年間のホスティングの後、同日に新しい形式に移行し、ROM ハッキング プロジェクト用の読み取り専用ニュース サイトへと格下げされました。以前のデータベースとファイルは、発表と同じ日にインターネット アーカイブにアーカイブされました。新しい投稿も同日に永久に閉鎖され、サイト上のすべてのダウンロードは当面の間利用可能になります。[ 6 ] [ 7 ] [ 8 ] [ 9 ] ROMhacking.net の精神的後継者、Romhack.ing (RHDI) は、ROMhacking.net が読み取り専用形式に移行してから 2 週間後の 2024 年 8 月 15 日にアルファ版としてリリースされ、その後 2025 年 3 月 1 日に一般登録が開始されました。
ROMデータは、多くの異なるプログラマーやプログラミングチームによって作成されているため、非常に多様です。以下は、ROMハッキングで使用される主な手法の一部です。

ROMハッキングの最も基本的なスキルの1つは、 16進数エディタを使用してビデオゲームの16進数データを直接変更する、16進数編集です。16進数エディタは、ROMハッカーにとって最も基本的なツールの1つであり、通常はテキストの編集、構造が既知の他のデータ(たとえば、アイテムのプロパティ)の編集、およびアセンブリハッキングに使用されます。
テキストの編集は、ハッキングの最も基本的な形態の1つです。多くのゲームはテキストをASCII形式で保存しないため、テキスト編集を容易にするために、どのバイト値がアルファベットの文字に対応するかを示す専用の16進エディタが開発されています。これらのバイトと文字の関係を定義するファイルは「テーブル」ファイルと呼ばれます。その他のゲームでは、単純なテキスト圧縮技術(バイトペアエンコーディング、デュアルタイルエンコーディングまたはDTEとも呼ばれ、2つ以上の文字の特定の組み合わせを1バイトとしてエンコードする)を使用しており、適切な機能を備えた16進エディタで編集できます。
16進エディタは、データの構造と場所が既知であり、かつその情報を編集できるゲーム専用のエディタが存在しない場合、キャラクターやアイテムのプロパティなどを編集するための最適なツールです。一部の勇敢なハッカーは16進エディタでレベル編集を行うこともありますが、これは非常に困難です(ただし、レベルの保存形式が16進エディタでの表示形式とよく似ているゲームは例外です)。

もう一つの基本的なハッキングスキルはグラフィックハッキングで、これはゲームの環境、キャラクター、フォントなどの外観を変更することです。グラフィックデータのフォーマットはコンソールによって異なりますが、初期のコンソール(NES、スーパーNES、ゲームボーイなど)のほとんどは、8x8ピクセルのデータ単位であるタイルにグラフィックを保存し、画面上に配置して目的の結果を生成します。これらのタイルは16進エディタでも編集できますが、一般的にはタイルエディタ(Tile LayerやTile Molesterなど)を使用して行われます。タイルエディタはROMデータをグラフィカルに表示し、タイルを見つけて編集することができます。
グラフィックのハックは、単純な編集(マリオにアフロヘアをつけた、ルイージにゴルフクラブを持たせるなど)から、キャラクターをあるゲームから別のゲームに「移植」すること(例えば、後の世代のポケモンのピクセル化された(または「レトロ風」の)スプライトを作成して、第 1 世代から第5 世代のポケモンゲームで使用すること[ 10 ] )、本格的なテーマの変更(通常はパレットの変更を伴う。下記参照)まで多岐にわたる。
より高度なグラフィックハッキングでは、タイルや色だけでなく、タイルの配置方法やタイルグループの生成方法も変更することで、最終的な外観に対する柔軟性と制御性を高めています。これは、16進数エディタまたは専用ツール(特定のゲームまたは特定のシステム用)を使用して実現されます。このアプローチの一例として、未完成のポケモン Torzachがあります。これは、ポケモン ファイアレッドにまったく新しい世代のポケモンとタイルを追加しようとするハックです。このハックは既に開発が中止されていますが、当時利用可能だったツールで望ましい結果を達成することができました。[ 11 ]スーパーマリオランド 2 DX: 6 ゴールデンコインも別の例です。これは、オリジナルのゲームの強化版で、グレースケールのみのゲームにフルカラーサポートを追加したほか、オリジナルの画面のちらつきの問題の修正など、いくつかの利便性の向上も行っています。[ 12 ]
もう 1 つの一般的なハッキング方法はパレット ハッキングで、カラー値を変更してプレイヤーがゲーム内で見る色を変更します (これはグラフィック ハッキングと密接に関連しています)。パレット値は通常Hexで保存されます。NES ゲームのグラフィックは、ゲームが選択する ( YIQベースのカラー パレットを使用する) 事前定義されたカラー セットを使用するため、これは比較的簡単です。この場合のパレット ハッキングは、選択された色を変更することを意味します。Super NES ゲームや他のシステム ( Sega Mega Drive (Genesis)ゲームを含む) のゲームでは、絶対RGBカラー値を保存するため、問題は少し複雑になります。パレット エディタは通常シンプルで、レベル エディタやゲーム固有のグラフィック エディタとよく一緒になります。
ROMハッキングの中でも特に人気のある手法の一つであるレベル編集は、ゲームのレベルやマップを修正または再設計する作業です。これはほぼ例外なく、特定のゲーム専用に設計されたエディタ(レベルエディタと呼ばれる)を使用して行われます。レベル編集は、ゲームの難易度を上げたり、ストーリーの流れを変えたり、あるいは単に古いゲームに新しい要素を加えたりするために行われます。大規模なグラフィックハッキングと組み合わせることで、ゲームの見た目や雰囲気を大きく変えることができます。
多くのハッキング(特にロールプレイングビデオゲーム)の中核となる要素は、キャラクター、アイテム、敵などのプロパティといったデータの編集です。これは通常、データの場所と構造が分かっている場合は「手動」(16進エディタを使用)で、そうでない場合はこの機能を備えたゲーム専用エディタを使用して行われます。ハッカーはこれを利用して、武器の動作、敵の強さ、敵の行動などを変更できます。これは、ゲームを簡単にしたり難しくしたり、プレイヤーが直面する新しいシナリオを作成するために行われます。
より強力で、おそらく最も難しいハッキング手法は、ゲームの実際のコードを編集することであり、アセンブリハッキングまたはASMハッキングとも呼ばれます(「ASM」は「アセンブリ」の略で、CPUによって実行される低レベルのプログラミング言語を指します)。[ 1 ]アセンブリハッキングには決まったパターンはなく、コードはゲームごとに大きく異なりますが、熟練したアセンブリハッカーのほとんどは、組み込みのデバッガまたはトレーサを備えたエミュレータを使用するか、ROMを逆アセンブラに通してから、コードを分析して、必要に応じて16進エディタまたはアセンブラを使用して変更します。上記の比較的単純な方法と比較するとかなり難しいですが、アセンブリハッキングでは、通常はゲームプラットフォームのハードウェアとソフトウェアの制限内で「何でも」可能です。これには、敵のAIを変更することから、グラフィックの生成方法を変更することまでが含まれます。
開発者が型付き言語を使用した場合、ハッカーは適切なコンパイラにアクセスできれば、同じ言語でゲームのコードをコンパイルできる可能性があります。そのような例の 1 つは、 MIPS - GCCがNintendo 64 のコードをコンパイルできるため、Cを使用してNintendo 64 のゲームをハッキングすることです。 [ 13 ] [ 14 ]このアプローチは、特に逆コンパイルと呼ばれる方法に使用されます。アセンブリ ハッキングと同様に、この方法は、ゲームのバイナリ実行可能ファイルを逆コンパイルして、ゲームのソース コードを高レベルの人間が読めるプログラミング言語 (C など) で再作成することを含みます。これは、ゲームを逆アセンブルして、特定のCPU アーキテクチャに合わせた低レベルのアセンブリ言語コードを生成するのとは異なります。逆コンパイルからゲームを再構築すること (つまり、逆コンパイルされたコードをコンパイルすること) は、再コンパイルまたは静的再コンパイルとも呼ばれます。アセンブリハッキングと同様に、逆コンパイルを実行するためのルールはありませんが、コードが「完全」とみなされるためには、徹底的に分析および識別される必要があります。これは、「一致逆コンパイル」(つまり、元のコードとまったく同じようにコンパイルされるソースコードを作成すること)の場合と同様です。[ 15 ] [ 16 ] [ 17 ]
逆コンパイルは、上記の他の簡単な方法と比較すると、アセンブリ言語によるハッキングと同程度の難易度を維持しつつも、アセンブリ言語でゲームの実際のコードを逆アセンブルして変更するよりもいくらか簡単です(特に、プログラマーや愛好家が容易に理解できる人間が読めるコードを生成するため)。ただし、これはゲームが最初に逆コンパイルされている場合にのみ可能です。また、逆コンパイルは(いくつかの例外を除いて)ゲーム機の制限に縛られず、独自のゲームメカニクスを追加したり、ゲームエンジンを完全に書き換えたりするなど、アセンブリ言語によるハッキングでは不可能なことを可能にします。
デコンパイルは、Nintendo 64、PlayStationなど、第5世代以降のゲーム機を対象としたゲームに適しています。これらのゲーム機は、一般的に以前の世代よりも強力なハードウェアを備えています。また、非公式の改造、パッチ(ワイドスクリーン対応を含む)、PCなどの他のプラットフォームへのネイティブ移植も可能になり、[ 18 ]ビデオゲームの保存にも役立ちます。[ 17 ]
ROMハッキングのあまり一般的ではない方法として、音楽ハッキング(またはサウンドハッキング)があります。これは、ゲームの音楽トラック(または効果音)を新しいもの(オリジナル曲、アレンジ、または他のゲームからの直接移植)に置き換える、あるいは場合によっては、16進エディタなどのツールを使用して音楽トラック(および効果音)のデータを直接変更するものです。
音楽ハックは、ゲームが音楽データを保存する方法が多岐にわたるため(そのため、このデータを見つけて変更するのが難しい)、また新しい音楽を作曲したり(または他のゲームから音楽を移植したり)するのが難しいため、比較的まれです。音楽ハックは非常に珍しいため、多くのハックには移植または作曲された音楽は追加されていません。しかし、例えば最近のスーパーマリオワールドのハックのように、このアプローチを使用してカスタムメイドの音楽トラックを組み込んだハックもあり、オリジナルのゲームにはないカスタム楽器を使用することもあります。研究やハッキングコミュニティの一環として音楽ハックを利用した他のゲームには、NESのロックマンシリーズ、ファイナルファンタジーVI、セガメガドライブ(ジェネシス)のソニック・ザ・ヘッジホッグシリーズなどがあります。
ゲームボーイアドバンスの多くのゲームは音楽にM4Aエンジン(非公式には「Sappy Driver」、公式には「MusicPlayer2000」またはMP2kとして知られる)を使用しているため、SapTapperプログラムを使用してゲームボーイアドバンスの音楽データをハッキングできます。Sappy 2006など、このエンジンと連携するためのさまざまなユーティリティが作成されました。ゲーム間で同じエンジンが使用されているもう1つの例は、ニンテンドー64で、ほとんどのゲームが同じフォーマットを使用していますが、ゲームごとに異なるサウンドバンクを使用しています。N64 Midi Toolとして知られるユーティリティは、ニンテンドー64のほとんどのゲームで使用されるシーケンスを編集するために作成されましたが、スーパーマリオ64のように少し異なるエンジンを使用するN64のファーストパーティタイトルには対応していません。
セガ メガドライブ (ジェネシス) には、音楽や効果音の作曲に「SMPS」(一部の開発者からは「Sound-Source」とも呼ばれる)として知られる自社開発のサウンドエンジンを使用したゲームがいくつかあり、68000 ベースとZ80ベースの両方のバージョンが提供されていました。[ 19 ] [ 20 ]このエンジンは、本体のYM2612とSN76489のサウンドチップを活用し、主にこのシステム向けに開発されたさまざまな日本製ゲーム (セガの自社開発ゲームを含む) で使用されていました。[ 20 ]一部のゲームには、そのゲーム専用に調整されたエンジンの修正バージョンがありました。ハッカーたちはエンジンのさまざまなバージョンをリバースエンジニアリングすることに成功し、数十年にわたる研究とドキュメント(完全なサウンドデータの抽出を含む) [ 21 ]を提供し、SMPSエンジンを使用するゲーム(特にソニック・ザ・ヘッジホッグのゲーム)の音楽(および効果音)を変更および作成できるさまざまなユーティリティの作成も可能にしました[ 22 ] 。SMPSエンジンで作成された多くの作曲と編曲はSteamワークショップに出回っています。[ 23 ]
一般的に、ROMハッカーは通常、ゲームにコンテンツを追加することはできず、既存のコンテンツを変更することしかできません。これは、ROM拡張と呼ばれる方法で克服できます。ROM拡張とは、ROMイメージの合計サイズを増やし、より多くのコンテンツを格納するスペースを確保することで、より大きなゲームを作成する方法です。この方法の難易度は、ゲームが作成されたシステムによって異なります。たとえば、NES ROMの拡張は、ゲームで使用されているマッパーによっては困難、あるいは不可能な場合があります。たとえば、マッパーが16個のROMバンクを許可し、それらすべてが使用されている場合、ゲームを別のマッパーに変換しない限り、ROMをさらに拡張することは不可能です。この変換は、簡単にできる場合もあれば、非常に難しい場合もあります。一方、セガメガドライブ(ジェネシス)やSNESのROMの拡張は、ゲームがバンク切り替えを使用していない限り、比較的簡単です。追加されたスペースを利用するには、ゲームコードの一部を変更または書き換える必要があります(上記のアセンブリハッキングを参照)。比較的簡単にできる別のタイプのROM拡張は、ゲームボーイアドバンスのROMです。これは一般的にサイズが小さいですが、利用可能なメモリ容量は、場合によっては最大17倍までそれを超えることがあります。
ハックが完了すると(または不完全なバージョンが暫定リリースに適していると判断されると)、インターネット上に公開され、他のユーザーがプレイできるようになります。一般的に受け入れられている方法は、変更されていないROMに適用できる非公式パッチ(IPS形式など)を作成することです。 [ 1 ]これは、通常は何らかのドキュメントとともにアーカイブファイルに格納され、どこかにアップロードされます。IPSは、2つのバイナリファイル(この場合は、変更されていないROMとハックされたROM)の差異を記録するための形式で、ROMハックに適しています。 [ 24 ] IPSは現在でも小さなパッチに使用されていますが、ROMのサイズが大きくなるにつれて、この形式は使用されなくなり、NINJAやPPF(「PlayStation Patch Format」としても知られています)などのいくつかのファイル形式が作成されました。PPFは現在でも、 ISOイメージ(CD-ROMイメージを含む)やNintendo 64ゲームなどの大きなファイルのパッチに使用されています。 ROMハッキングコミュニティによって、IPSとPPFの後継となる新しいパッチフォーマットUPSも開発されました。[ 25 ] また、熱心なゲームボーイアドバンスROMハッカーによって、より新しいパッチフォーマットであるAPSパッチシステムも開発されました。[ 26 ]他のパッチフォーマットと比較すると、APSシステムはスペース効率が良く、可逆的で、前身よりも高速です。[ 27 ]
ハックをパッチ形式で配布する主な目的は、ROMイメージ全体を配布する際の法的側面を回避することです(また、著作権で保護されたコードを配布する際に発生する可能性のある著作権問題も軽減します[ 28 ] )。パッチはROM内で変更された部分のみを記録するため、パッチを配布しても通常は元のゲームの一部が配布されることはありません。また、パッチは通常、完全なROMイメージよりも大幅に小さくなります(NES ROMは 8KBから2MB 、スーパーNES ROMは256KBから 6MB 、セガメガドライブ(ジェネシス)ROMは512KBから4MBまで です)。
合法的な配信の斬新な例として、セガは以前のセガ メガドライブ (ジェネシス) ゲームのコレクションをSteamベースの仮想ハブとしてリリースし、 「Sega Mega Drive Classics Hub」と名付けました。このハブは、プレイヤーがこれらの古いゲームのエミュレート版をプレイできるだけでなく、Steam ワークショップを通じたユーザー作成コンテンツに対する Steam のサポートを活用し、提供されているゲームの ROM ハックの公式な配信を許可しています。[ 29 ] [ 23 ]
パッチ適用済みの ROM はエミュレータでプレイされることが多いですが、パッチ適用済みの ROM をオリジナルのハードウェアでプレイすることも可能です。[ 30 ]宛先カートリッジは、パッチ適用前の ROM が取り出された元のカートリッジ (通常は元の ROM チップを新しいものに交換する必要があります) またはフラッシュ カートリッジなど、同じタイプの別の互換性のあるカートリッジです。光メディアの場合、パッチ適用済みのゲームをCD-Rなどの記録可能な光ディスクに書き込む必要があります。これは、ファンによる翻訳、自作ゲーム、プロトタイプ、ROM カートリッジや光ディスクが製造されなかったゲーム、またはエミュレータでは利用できない正確なタイミングやオリジナルのハードウェアの他の要素を必要とするゲームで特に人気があります。
ROMハッキングの大部分はNESとSNESのゲームで行われています。これは、これらのゲームがNintendo 64やNintendo DSといったより高度なゲーム機のゲームに比べて小さくてシンプルだからです。Game Boy、Game Boy Color、Game Boy Advanceのゲームもハッキングの対象として人気があり、PlayStationやSega Mega Drive(Genesis)のゲームも、程度は低いもののハッキングの対象となっています。しかし、より新しいゲーム機向けのゲームもハッキングの対象から外れているわけではなく、コンピュータの処理速度が向上し、より多くのプログラムやユーティリティが開発されるにつれて、PlayStation、Sega Mega Drive(Genesis)、Nintendo 64、Nintendo DSのハックも増えています。
これらのゲームの中でも、人気のあるゲームはハッキングの対象としても人気があり、ソニック・ザ・ヘッジホッグシリーズ、マリオシリーズ、マリオカートシリーズ、ポケモンシリーズ、チップの挑戦、キャッスルヴァニア、ファイナルファンタジー、ゼルダの伝説、ロックマンシリーズ、ファイアーエムブレムシリーズ、アースバウンド、スーパーメトロイドなど、多くのゲームのハック版がリリースされています。
特筆すべき改造アーケードゲームとしては、 CPシステム版の『ストリートファイターII レインボーエディション』が挙げられる。このゲームは、ゲームスピードの向上や新たな必殺技の追加など、様々な特徴を備えていた。このゲームの成功を受け、カプコンは公式な対抗策として『ストリートファイターII ハイパーファイティング』をリリースした。
1980年代と1990年代の多くのコンピュータ雑誌は、ゲームに変更を加えるハックのためのチートコラムを毎月掲載していた。これらは個々のPOKEや小さなリストに焦点を当てており、例えばYour Sinclairには「Program Pitstop」や「Hacking Away」というコラムがあり、オリジナルのGauntletのレベルマッププリンターとエディターを紹介していた[ 31 ] [ 32 ] 。また、Zzap!64には「Zzap tips」があり、 Bomb Jackの無限ライフなどを紹介していた[ 33 ]。