update 2004.06.26

プレイステーション版「モンスターファーム」 テキスト変換


概要
PS版モンスターファーム(初期ロット)のイベント・アイテム名などの、
独自文字コードを用いたテキストデータをShift-JISにコンバートします。
なお、今現在公開している情報はベータ版で完璧な出力は得られません。
一部、出力データに文字欠け・誤字が含まれていますのでご了承ください。

準備
この解析・変換ツール作成には以下のものを使用します。
・GCCODE 文字コード解析支援ツール
・VisualC++6.0 ツール作成用です。Borland C++ Compilter(フリー)などで代用できます。
前回までは解析にバイナリエディタを多用しましたが、現時点のGCCODEは
バイナリエディタ無しである程度の解析が可能になっているので、今回は使用しません。

解析
ホリィさん萌え
基本的に漢字が混じるとサーチがしづらいので、このように単調なセリフの画面を探します。
さらに、ところどころに制御コードが混ざっており、語句によってはヒットしない場合もありますので、
ヒットするまでいくつも候補をサーチします。
(なお、テキストが格納されているのは MF_DATA.OBJ というオブジェクトファイルです)。
序盤に
で、あなたの方には
こちらから指定の調教助手を
派遣させていただきますね
というセリフがあり、この「あなたの方には」をワイルドカード検索を入り混ぜて、
GCCODEでア?ナ?タ?ノ???ニ?ハと検索することでオフセット001a687cにヒットします。
(候補発見 001) OFFSET 001a687c : 01 00 15 00 10 00 19 00 e2 10 16 00 1a 
文字列テーブル出力(半角カナ 暫定)
 ア:01 イ:02 ウ:03 エ:04 オ:05 カ:06 キ:07 ク:08 ケ:09
 コ:0a サ:0b シ:0c ス:0d セ:0e ソ:0f タ:10 チ:11 ツ:12
 テ:13 ト:14 ナ:15 ニ:16 ヌ:17 ネ:18 ノ:19 ハ:1a ヒ:1b
 フ:1c ヘ:1d ホ:1e マ:1f ミ:20 ム:21 メ:22 モ:23 ヤ:24
 ユ:25 ヨ:26 ラ:27 リ:28 ル:29 レ:2a ロ:2b ワ:2c ン:2d
差異 : KANA ア(0xb1) - 0x01 = 0xb0
ここから先は…気合です(ぉ
私自身は MF_DATA.OBJ 全領域に対して簡易変換を行うサンプルを組んで、
全80メガバイトほどのデータ全てを1つずつ調べるというアホな手を使いました。
(何時間かかったやら……)。

あとはフォントテーブルを1つずつ埋めてゆきます。

変換処理プログラムを組む
フォントテーブル・出力したい範囲が把握できればいつもどおり、
二次元配列を用いた変換ルーチンを組み合わせてコンバータを作ります。
当然、制御コード周りが出力結果に害を与えないように処理してやります。

Cソース
VisualC++ 6.0で作ったコンバートサンプルプログラムです。
コンパイル済みのEXEファイルやドキュメントを同封しています。
プロジェクトは Win32 console application の "Hello,World!"アプリケーション を選択し、
丸ごとメインのソースに上書きすればコンパイル&ビルドができます。
Borland C++ Compilerでは1行目の#include "stdafx.h"を消去してからコンパイルしてください。
>>コンバータ本体・Cソースのダウンロード


TOPに戻る