GetCharacterCODE type II “GCCODE2”

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

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

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

~2015.2.19追記~
GCCODE2を用いて「SFCドラクエ5のモンスターリストを取得する方法」から基礎を学ぶ
テキストコンバータをつくろう2015
コンテンツを作りましたのでそちらも御一読下さい。


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 のアイテムテーブル周辺にスクロール。
をしたものです。

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


その他のテキスト解析やコンバータ作成方法については、
旧『GCCODE』のコンテンツをご参照下さい。
Irregular child : 家庭用ゲームのテキストコンバータを作る!

GetCharacterCODE type II “GCCODE2”” への1件のコメント

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

コメントを残す

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