GetCharacterCODE type II “GCCODE2”

はじめに

 ファミコンや初代プレステなどのレトロゲームは、PCとは異なる文字コードを採用していることが多く、バイナリエディタでROMイメージを開いても
メッセージが読めない場合が多々あります。

 『GCCODE2』はゲームソフトのROMイメージを解析し、差異を吸収することでテキストを可読化し、PCで閲覧可能なフォーマットに変換することを目的としたツールです。

・・・要は『テキストコンバータ開発支援ツール』です。
Download : GCCODE2 Ver1.40 (gccode2_v140.zip)

GCCODE2がテキストをサーチできる理由
 PC用の文字コードはASCII、JIS、Shift-JIS、UTF-8、など共通規格があるのに対して、ファミコンゲームなどのレトロゲーの場合、文字コード=キャラクタ番号でしかありません。

 シフトJISの半角カナは「”ア”=0xB1、”イ”=0xB2…」で、DQ1のキャラ番号は「”あ”=0x0A、”い”=0x0B」のような割り当てになっており、それらの数字の割り当てに互換性が無いからROMイメージをバイナリエディタで開いても「テキストを読めない」のです。

 たとえばDQ1を「半角カナ”ヤクソウ”」でサーチすると
ヤクソウ = D4 B8 BF B3
 上記バイトがヒットしますが、この4バイトの前後同士の差を求めて…
D4 – B8 = 1C
B8 – BF = -F9
BF – B3 = 0C
 この”1C、-F9、0C”の差を持つデータの並びを探しています。

 そしてDQ1に存在する”2D 11 18 0C”というパターンが「やくそう」では? と候補がピックアップされます。
 これらの前後の差を求めると…
2D – 11 = 1C
11 – 18 = -F9
18 – 0C = 0C
 以上のようにピッタリ差が一致します。

 ここで半角カナのD4(ヤ)と、DQ1の2D(や)の差を求めると、
D4 – 2D = A7
 これが「DQ1→半角カナ変換に用いる差」です。

 GCCODE2は「あ=0x0A」に+A7を足して「あ=0xB1=半角かな”ア”」に補正することで原文を復元しようと試みます。
 そのままでは「あ」が半角カナ「ア」になってしまい読みづらいので、GCCODEの表示枠は「画面中央が半角」「画面右が全角」「カナ→かな変換」が出来るように設計しています。


ちなみに上の写真は
1.GCCODE2を起動後、F1キーを押してSFC版ドラクエ5のROMイメージを読み込ませる。
2.続いてF2キーを押して同梱のテーブルファイル”DQ5暫定テーブル.txt”を読み込ませる。
3.アドレス 0011D3A0 のアイテムテーブル周辺にスクロール。
をしたものです。

 テーブルファイルが存在しない(新規解析)の場合は右下の「検索用文字列」に半角カナなどでアイテム名、キャラクタ名、セリフなどを適当に入力+サーチして差異フィルタをかけて簡易閲覧も可能です。


 その他のテキスト解析やコンバータ作成方法については、下記コンテンツをご覧ください。

えりかとさとるの夢冒険で学ぶ、隠しメッセージの探し方
https://i486.mods.jp/ichild/erisato

SFCドラクエ5のモンスターリストを取得する方法
テキストコンバータをつくろう2015

下記は旧バージョン(GCCODE1)の記事
Irregular child : 家庭用ゲームのテキストコンバータを作る!

GetCharacterCODE type II “GCCODE2”」への1件のフィードバック

  1. ピンバック: “GCCODE2″をWordPressに移動 | Irregular child 2nd

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です