トップ > 日記らしきもの > 2023年
最近の書き込みに戻る
------------
2023/10/31
dgVoodoo2の設定ファイルを色々書き換えてたら、電GO!FINALのスクリーンショット機能で
(※改造パッチかレジストリ書き換え(snapshotを1に変更)の上でF1キー)
出力される画像が色化けするようになってしまいました。
結果、下の2023/07/13の項目でDepthBuffersBitDepthをforce32bitにしていたのが原因で
force24bitにしたら直りました。(元記事の該当部分にも追記しておきました)
月1ぐらいで何かしらの更新をしたかったものの、
当面は趣味関係に手を出す時間が取れずに殆ど更新できなさそうですが
PS2(PC移植含む)の電GOで使われている、複数データがまとめられているDATファイルの
データの分解と再結合の両方が出来るようにはなったので
いつかこれを使って何か出来ればいいかな…とは思っています。
(※解析用に作っている=自分用に特化した仕様なので現状プログラムの公開の予定はありません)
試しにWindows版のFINALの車両のテクスチャ画像を他のものに入れ替えたりしてみましたが、
元の画像より大きいものや色数が違うものにしても表示できました。
Windows版はテクスチャはそれぞれ独立して管理されるのか、元画像よりサイズが大きいものにしても
他のテクスチャデータの領域に影響することは無いようでした。
(全テクスチャを変えたりした場合はどうなるかは分かりませんが)
※Windows版の車両テクスチャは、1つまたはいくつかのパーツが描かれた画像データが
複数入っている形になりますが、
PS2版ではビデオメモリに展開されるデータがそのまま入っていると思われる、
「全パーツの画像部分とパレット部分が混在した1つの画像データ」になっていて
Windows版とは大きく異なります。
なお車両ごとにテクスチャのパーツの組み合わせや位置が違う為、
単純にファイルの入れ替えだけでは「特定パーツだけ別形式のものにする」ということはできません。
またWindows版ではテクスチャ画像の座標はドット単位ではなく
UV座標(両端を0.0〜1.0とした小数で表す)になっているようで、
大きな画像を用意できればそれだけ細かく表示できそうなので
BMPファイルとの相互変換ができれば色々遊べそうな気がします。
といっても、電GO側の画像形式にまだ分かっていない部分があったり、
透明度の処理などの課題もあるのでそう簡単には出来なさそうですが…
↓車両側面のテクスチャデータの1つを旅情編の写真に差し替え(右側) 元のテクスチャより解像度が高い(画像が細かい)のが分かるでしょうか
------------
2023/09/17
そういえば電GOシリーズの多くは発車時刻=戸閉め灯が付く時刻ですが
プロ2は発車時刻2秒前に戸閉め灯が点灯して、最短でマスコンを入れると
発車時刻=電車が動き出す時刻になるように設定されています。
------------
2023/09/07
プロ2の発車前待機時間の件、京都駅の修正だけでなく各放送の音声の再生時間を調べて
それぞれが丁度良い時間になるようにしました。
(ただし機械的に設定しているので最後の方が途切れる場合があるかもしれません)
これに伴い、メロディ有り時の待機時間の入力はメロディ再生時間変更の項目へ移動しました。
こちらは仕様上駅・ダイヤ毎に変更することができないので2段階のままです。
(固定値+指定値で書き込む処理ができれば良いのですが…)
------------
2023/08/22
ということでプロ2の発車前アナウンスですが、京都駅で発車メロディがあるのは
上りの特急白鳥と下りの3番目のダイヤ(221系新快速)の2つのみでした。
とりあえずこの2つを修正すれば良さそうです。(鳴る・鳴らないダイヤの違いは何なのでしょうか)
ちなみに発車メロディの番号指定は$258〜になっていますが、
再生リストの方でも$258なら$86000000、$259なら$86000001...で同じ音が鳴らせるようです。
そちらで再生すれば無限ループ再生の電子ベル音以外は最後まで鳴らせるので
標準で時間が余っているのならそうして欲しかったですが…
それができればメロディを流す時間を変更する項目と統合(フルで流す&丁度の時間で発車)できるのですが
再生リストの部分に隙間が無く追加できる領域が無い上、
メロディは違うが流す音声リストのアドレスが共通(=別々のデータにしないといけない)
というものまであるので、再生リスト部分をいじるのは諦めました。
ちなみにWin廉価版でのアドレスは下記の通りです。(メモリ上のアドレス)
駅間アナウンス / 発車前アナウンス
条件 音声
湘南新宿:58CB18 / 57D0E8 / 58E5E8
鶴見:584180 / 55F928 / 58EB70
湖西:589430 / 5714A8 / 58F080
瀬戸大橋:57FDE8 / 551168
長崎:584BC8 / 561C68
車両登場時:58E228
------------
2023/08/15
プロ2のアナウンス関係ですが、
過去にPS2版で解析した時のメモを見返してみると、以下のような形になっているようです。
※以降のシンボル名はPS2版(ベスト版)のものです(Windows版にはシンボル情報はありません)
なおPS2版では音声の再生リストとして指定されている各アドレスにもAnnounce〜で始まるシンボル名がついています
アナウンス関係はSetAnnounce、PlayAnnounce、発車メロディはPlayStChaimeあたりで処理
車両登場時のアナウンス:Annouce_start
4byteずつ、各ダイヤ毎の音声の再生リストのアドレスが並んでいる
※ダイヤ番号はゲームでの並び順と異なり下り(南行)→上り(北行)の順、
また途中に未使用ダイヤも含まれている点に注意
音声の再生リストに関しては番号→待機時間(通常は0)の繰り返し、ffffffff×2で終了
番号の値は通常の音声はファイル番号だが、効果音扱いの車内チャイム・接近チャイムは
86000008、80000033といった80000000以降の番号で指定されている(詳細は未調査)
ファイル番号はWindows版の場合、実行ファイルの後ろの方にあるファイル名一覧を逆にしたもの
(後ろから読んでいったもの)と一致している(廉価版の場合アドレス$1CE83C〜)
(厳密にいうと、$1B9F30〜の文字列へのアドレス一覧に対応(こちらは順番通り先頭から対応)
ただし実行時のメモリ上のアドレスが書かれているのでEXEファイル上のアドレスではない点(-$400000する)に注意 )
発車前のアナウンス・メロディ定義:Announce_Station_〇〇
(〇〇には路線名が入る、Shonan/turumi/kosei)
なおワンマン運転時の「ドアを閉めます」の音声はここでは定義されていない
$34単位でダイヤや駅の番号などの再生する条件と、音声リストのアドレスが定義されている
+$00 駅番号
+$04〜ダイヤ番号 以降に続けて複数指定可能 ffffffffで終了
+$2c 発車メロディとして鳴らす効果音番号? ffffffffの場合は無し
(音声リストの効果音指定とは番号の法則が異なる)
+$30 再生する音声リストデータのアドレス
(音声リストの形式は車両登場時のものと同じ)
運転中の車内アナウンス
条件定義:Ann_Dat_〇〇 ($38単位)
再生リスト:annlst_〇〇 ($c0単位)
(〇〇には路線名が入る、SSLine/Turumi/Kosei/Seto/Nagasaki)
それぞれ1対1で対応(登場時・発車前のような再生リストのアドレス指定が無い)
Ann_Dat_〇〇での条件定義($38単位)
+$00〜ダイヤ番号 以降に続けて複数指定可能 ffffffffで終了
+$28 前駅の番号? ffffffffなら無指定(上下線共通)?
+$2c 次駅の番号? ffffffffの場合もある
+$30 0=出発後 1=到着前 2=中間 3=通過
+$34 再生を開始する距離
+$30に関してはここの値に応じてtuka/chukan/tochaku/syupatuというシンボル名の領域のいずれかに
該当するAnn_Dat〜、annlst〜のアドレスが書き込まれる模様
↓の件については上記の情報の内、発車前のアナウンス・メロディ定義(Announce_Station_〇〇)の部分を
調査すれば発車メロディのあるダイヤが分かるので、それによって再度パッチデータを調整予定です。
------------
2023/08/06
プロ2の改造パッチ、発車前の待機時間短縮項目でミスがありました。
京都駅でダイヤによっては発車メロディがあるのを見落としていて
放送が終わる前にドア閉めになってしまうことがあります。(上り特急白鳥で確認)
直すとなると、全ダイヤのアナウンス情報をチェックしないとダメっぽいので
ちょっと時間が掛かりそうです。
------------
2023/08/02
↓修正したものをアップし直しました。
また前からやりたかった、プロ2の徐行予告の距離変更もできたので追加してあります。
こちらは以前に一度作ったのですが、エラー落ちする場合があるのが発覚して没となり
今回再度作り直したのですが、もしまだエラーが発生することがあったらすみません。
------------
2023/08/01
電GOプロ2はPS2版では早朝の時間帯だと朝焼けのような空になるのですが
Windows版だと自分の環境だと昼と変わらない状態になってしまいます。
山陽新幹線編でパレットテクスチャに未対応だと夕焼けにならない問題と同じ感じなのでしょうか。
それと、この前公開したプロ2の改造パッチの描画位置をずらす項目ですが、
チェック用の値が間違っていて、正常なのにファイル内容が異なりますと表示されてしまっていました。
次の更新で修正します。
------------
2023/07/13
Windows版の電GO!山陽新幹線編は建物のテクスチャがチラつくのが気になるのですが
以降の作品と違ってZバッファ設定が無いので何とかできないかと思っていた所、
初期の電GOシリーズの描画を正常にするのに使っていたdgVoodoo2というツールに
深度バッファのビット数を強制変更する項目がありました。
ただし設定プログラムからは変えられない項目で、
設定ファイル(dgVoodoo.conf)内をメモ帳などで開き、
[DirectXExt]セクション内のDepthBuffersBitDepthをappdrivenから
forcemin24bit、もしくはforce32bitにするとテクスチャのチラつきが軽減されました。
(※説明文によれば後者は非推奨とのことですが山陽新幹線編では大丈夫でした)
↑追記:force32bitではFINALのスクリーンショット機能で色化けするので24bitが無難なようです
設定ファイルの場所はゲームと同じ位置に置いてある場合はそのファイルを、
そうでない場合はC:\Users\(ユーザー名)\AppData\Roaming\dgVoodoo\内にあります。
(前者の場合でprogram files以下にインストールしていて変更が反映されない場合、
C:\Users\(ユーザー名)\AppData\Local\VirtualStore\program files(x86)\以下に
同名のファイルがあればそちらを書き換えてください)
電GoのWindows8以降の対応状況のページに初期作品はdgVoodoo2使用時の状況を書いておきながら
使い方を一切解説していないので本当は簡単な解説を書いておくべきだとは思うのですが
自分でもそもそも意味が分かってない項目があって解説できる立場ではないので今の所は難しいです。
------------
2023/07/07
プロ2の初期版の一部の隠しダイヤが出ないなどの設定ミスって、当時出た攻略本だと
どう書かれているのかと気になりましたが、攻略本の中古価格もネットだと2000円位するんですね。
さすがにそれだけの為に出すのはちょっと…
------------
2023/07/04
電GOの改造パッチを更新しましたが、内容は
[プロフェッショナル仕様]
・天候選択可能(金星クリアしなくてもスペースキーで変更可能)
[プロフェッショナル2]
・フリーモードでも時刻を表示
・天候選択時に?を選ぶと強い雪になる
・時刻誤差の運転評価への影響を厳しくする(誤差平均10秒毎に-1点→平均1秒毎に-1点に変更)
の4つです。一番下以外はこの動画用に必要だったので作成したものだったりします。
ダウンロードしなくても更新内容が分かるように、説明書をサイトから見れる方にした方がいいのでしょうか…
なお同じ動画で使っている天候毎の加速抵抗・ブレーキ性能の値の設定項目も付けたかったのですが
項目が増えてスペースが無さそうなので今回は見送りました。
ページを切り替えて表示する機能を付けないと追加できなさそうですが、
ページ切替処理の度にオブジェクトを消したり再設置したりといった管理が面倒そうです。
ページ数分だけあらかじめウインドウを作っておいて、ページに対応したウインドウだけを表示する形式に
してしまいましょうか…
「時刻誤差の運転評価への影響を厳しくする」は運転評価でなるべく高得点を目指す場合、
通常は停車時は時刻が多少ズレても停車位置の方を優先すれば良いのですが、
(設定ミスなのか、全駅での時刻誤差の平均が10秒以上にならないと減点されないため)
これを有効にすると時刻と停車位置を両立させる必要があります。
誤差平均1秒未満でないと減点されるのは厳しすぎる気もするので
本当は2秒毎に減点するとか、値を変更できるようにしたかったのですが…
(一番いいのは誤差平均〇秒以内なら減点なし、以降は〇秒ごとに-1点という形だと思いますが)
------------
2023/06/20
FINALも天気で車両性能が変わっていない疑惑が出てきました…
↓のgetweatherslipと同じらしき処理を見つけたのですが、肝心の参照する天候の値が常時0で変わらないので
実質機能していませんでした。(設定値が同じ様なので、機能していてもプロ2同様ほぼ変わらないと思いますが)
ただ他の所で車両性能を変えている可能性があるので、大阪環状線の#1(103系・晴)と#3(103系・雨)で、
乗車率を同じに変更した上で、時速100キロからブレーキ6で停止するまでの距離を調べた所全く同じでした。
------------
2023/06/05
電GOプロ2のWindows版パッチで通常モードでも天候選択可能というのを作った時に
雨に変更してもブレーキが変わっていないような感じだったので、
もしかしたら見た目しか変わっていない可能性があるの車両性能に反映されているかは未確認と記載していたのですが
どうも元々の時点で、悪天候による影響が誤差レベル程度しかない、というのを今更ネット上の動画で知りました。
ということで、どんな感じになっているのかをPS2版で調べてみました。
天候の値はPS2版は395D14ですが、GetGameStatusという関数でGameStatusという名前のアドレス(395d00)を取得した上で
GameStatus+$14という形でアドレスを指定している関係で逆参照解析に引っ掛からないので
エミュレーターのブレークポイント機能で395D14を読み込んでいる場所を特定します。
その結果、天候の値を読んでいる箇所の内、走行に影響しそうな部分は下記の2箇所の様です。
148180(getWeatherSlip、ブレーキに影響?)
14978C(RunRegist内、加速に影響?)
前者は晴れ/曇りの場合は1.0、それ以外は 1.0-(Kassou_time×天候による値) がセットされ、
値が小さい程ブレーキの効きが悪くなるようです。
※Kassou_time=通常は1.0、トンネルに入ると徐々に減少して0でストップ、トンネルから出ると1.0に戻る
ここの「天候による値」が雨:約0.003、雷雨:約0.006、雪:約0.009と天候による差は一応設定されているものの
元のブレーキに対する影響が小さすぎて実質ほぼ変わらない状況になってしまっている様です。
後者は晴れ/曇りの場合は1.0、雨や雪の場合は天候によって1.01〜1.03程度の値がセットされ
この時セットされた値が大きい程加速が鈍くなるようですが、こちらも実質ほぼ変わっておらず、
停止状態から1分ほど加速し続けて走行距離が数m変わる程度でした。
ちなみにこれらの処理を見る限りでは、内部的には天候の値は0〜7まで指定可能になっているようなので
通常は選択できない5〜7に変更してみた所、
5:雪(通常より降る量が多い) 元々用意されたものなのか、たまたまこうなっているだけなのかは不明
6・7:空は晴れだが雨が降る(音はしない) 音がしないことからこちらは未設定と思われる
あと環境によるのかもしれませんが、Windows版はPS2版よりも雪が小さく表示される?(位置が奥にズレてる?)ようです。
(改造パッチのせいかと思い未改造のもので起動してもやっぱり同じでした)
PS2版(左が通常の雪、右が多く降るバージョン) ※画像クリックで拡大表示
Windows版
------------
2023/06/05
PS2版吉宗の2006年に発売されたプレミアムパチスロコレクション版が3桁価格で売っていたので買ってみましたが
パッケージにロゴがある通り、BGMはADX形式が採用されているので(全部かは不明ですがボイスも)
当サイトのADX再生ツールにAFSファイルを突っ込めば解析せずに聴くことができました。
また紹介文にグラフィック・サウンドがグレードアップと書かれていた通り、2004年版よりサンプリングレートが上がっていました。
(2004年版は22000Hzだったのに対し、こちらは44100Hz/48000Hz)
2004年版には無い、サントラ収録のインスト版・リミックス版からも何曲か収録されていました。
(ただし、2004年版の方のオリジナル曲(タイトルやメニュー画面の曲など)はそちらの方でしか聞けませんが)
そもそも、同じゲーム機で同一パチスロ機種のシミュレーターを2回もリリースするというのも異例ですよね。
2004年版がよっぽど売れたのでしょうか、と思って調べてみたら60万本も売ったそうで…
------------
2023/05/23
ここ数日はWindows版の電車でGO!3の画像データを解析していました。
最初はPS2版をps2_adpcmconv用のリスト作成でムービーデータの格納位置を探すために調べていて、
その際にPS2標準のTIM2形式の画像データも見つかったのでついでに調べていたのですが、
他の形式があったり、データが多重に格納されていたりして調査が面倒そうなので、
先にWindows版を調べれば参考になるんじゃないかということで変更しました。
Windows版はある程度のデータ分類毎にファイルが分かれています。
(MAP.BIN(マップデータ?)、Hitex.bin(テクスチャ)、BGM.BINなど)
以前にBGMデータの格納情報を調べたことがあって、その周辺をバイナリエディタで見てみると
他にも拡張子付きの内部データ名らしき列挙があり、その手前に格納情報があるという形になっていました。
これらの格納情報とファイルの対応を一番最後のデータの開始位置とファイルサイズから推測すると、
下記アドレスに格納情報が入っていました。
※本格的シリーズ版+修正パッチ適用時
$93F80〜 DOBJLIST.BIN (2D画像)
$AAD18〜 SOBJLIST.BIN (2D画像)
$AB4E8〜 TOBJLIST.BIN (2D画像)
$B2970〜 BG.BIN (運転画面の背景画像)
$B2D70〜 BGM.BIN (BGM・車内アナウンス)
$B43C8〜 MAP.BIN (マップデータ?)
$B4770〜 PARTS.BIN (ポリゴンデータ?)
$B5690〜 MOTION.BIN (モーションデータ?)
$B5A70〜 SE.BIN (効果音)
$B7500〜 Lowtex.bin (テクスチャ(低画質設定時))
$B7CF0〜 Hitex.bin (テクスチャ(ノーマル設定時))
格納情報は基本的に12byte単位で、
4byte毎に開始位置、データサイズ、データ名のアドレス (メモリ上のアドレス、EXEファイル上では-$400000する)です。
(開始位置が$FFFFFFFFの場合はそのデータ本体は無いのでスキップする)
SOBJLIST.BINのみデータサイズの部分がなく8byte単位、
SE.BINはヘッダ情報があるアドレス($FFFFFFFFならデータ無し)、PCMデータの開始位置、データ名のアドレスとなっています。
データ数や終了を示す情報は見当たらなかったので、
調査用に切り出しツールを作る際は手動で終了位置を設定しました。
データ名の拡張子が.BMPのものがあったのですが、残念ながらWindowsビットマップ形式ではありませんでした。
また.BMZという、圧縮されてそうな感じのデータがありましたが、
偶然実行ファイル内に「inflate 1.1.3 Copyright 1995-1998 Mark Adler」という文字列を見つけ、
inflate形式の圧縮は別件でzlibを使ったDLLで展開したことがあるので、試してみたら展開できてしまいました。
($20からが圧縮データ本体)
画像データは基本的には16bit画像でRGB各5bit(残り1bitは不明ですが透過(透明色)フラグ?)です。
基本的には最初の8byteに4byteずつに縦横のサイズが入ってその後の$08からピクセルデータという形ですが、
ピクセルデータ部分に圧縮が掛かっていたり(SOBJLISTは圧縮無し)
.BMZを展開したものはエンディアンが逆だったり、(TOBJLISTでもピクセルデータのみが逆)
テクスチャデータ(.mtdZ、これも圧縮データ)は他と違って4byteの値(詳細不明)の後、
64*64(hitex)/32*32(Lowtex)のピクセルデータ×2、の繰り返しでR(赤)とB(青)が逆、かつ上下が逆と
ファイルによって対応が変える必要がありました。
ということで、テクスチャデータは自信が無い所もありますが(特に2個1セットの後半のデータ)
画像データは見られるようになりましたが、
DOBJLIST.BINにはゲーム中では見られない無印版のタイトル画像や試作時らしきのもの、
また「中央線 103」「篠栗線 DE10」「九大本線 キハ125」「九大本線 キハ31」といった
構想段階で没になったと思われる文字の画像もありました。
通勤編の発車前に表示される路線図は山陰本線だけフォントが違うのが謎です。
ちなみにPS2版はWindows版と同じ名前でもサイズが違っているものがあったり、
データ名の拡張子が.BMZではなくPS2用に変換したと思われる.PSZというものも確認しているので
また別処理が必要になるかと思いますが、Windows版の画像が見れた時点で満足してしまったのでやらないかも…
------------
2023/05/07
中々サイト向けのネタに取り掛かれていませんが、久々にPS2_ADPCMconv用のリストを追加しました。
DDR系のBGMデータはツールを作って「Svag」で検索しただけですが
他のKCET開発のソフトにも使えるかもしれないので
toolフォルダ内にsvag_search.exeとして収録しています。
------------
2023/03/24
(↓の件の続き)既存の対向出現ポイントの値を変えてみた所、
まだ分かっていないfloat値2箇所を変えると対向列車が出なくなったので
ここを正しく指定する必要があるようです。
近い位置にあるイベントは似たような値になっているので位置に関係ある値らしいのですが
なぜか0付近の値が無い(-6.5〜-2前後と+2〜+6.5前後の値しかない)とか謎が多いです。
(良く分からないですが、何かの向きとかベクトルとかの値か?)
出現位置を隣の線路にずらす程度の誤差は許されている様なので
近い位置のイベントの値の中間の値を取るとかでOKならは良いのですが…
(2023/03/31)
全部は出せてない?ようですが、上記の荒業(近い位置のイベントの値から推測)で
少なくとも数か所は新たに出てくるようになりましたが、今度は車両が動かないという問題が発生、
対向列車データ自体は他と合わせてあるはずなのに何なのこれ…という感じです。
------------
2023/03/14
↓の件でプロ2の対向列車の出現ポイントを増やせないか試してみたのですが何故か効果なし…
イベント情報でまだ分かってない値があるのでこれが原因なのか分かりませんが残念です。
------------
2023/03/11
対向列車の出現ポイントの情報はイベントデータ内に入っていました。
これは速度制限や停止位置などの情報が入ったデータで、FINALではmap.dat内、他はevent.bin
(プロ2ではダイヤ毎にevent??(数字).binになっています)というファイルです。
これをいじれは出現位置をずらしたり増やしたり出来るのかもしれませんが、
位置の指定が下記の線路区間番号で行うのと、「一番近いメインルートの線路番号」の指定が必要
(これをちゃんと指定しないと出現しない)なのでいじるのは結構大変そうな感じです。
------------
2023/02/12
FINALの分岐情報をいじって車庫?に行っている動画ですが、
もう少し詳しく解説すると、
FINALでは線路をある程度の距離で括った区間単位で管理していて、
下図の様に両端の接続先の区間番号が最大2箇所設定されています。
(通常は1箇所のみで分岐では2箇所、行き止まりではその方向は設定無し
なお接続先が入っていない箇所はFFFFFFFFが指定されています)
また、各ダイヤや対向列車にはそれぞれ走行ルート番号が設定されているのですが
ルート番号毎に各線路区間でどちらの接続先へ行くかが入った分岐情報が別データにあり
これによって実際の走行ルートが決まります。
上の図の例だと右方向へ進む時、区間A右側の分岐で1番目の接続先を使うように設定されていると上方向へ、
2番目の接続先を使う場合は下方向へ進むようになります。
※ルート番号0の時はこの分岐情報は使わず常に1番目の接続先へ行くようです。
その為か分岐している所では1番目の接続先がメインルートの方向になっていることが多い様です。
とはいえ、マップデータを見て区間番号を特定した上でファイルを書き換える、というのは面倒なので、
線路区間が書き換わる所で特定のボタンを押していると1番目もしくは2番目の接続先を強制的に使う、
というのが出来れば面白いんじゃなかいかと思ってPS2版で区間番号が書き換わる場所を調べてみたのですが、
どうも区間の外側に出ているかの判定がどちら側にいるか(上り側・下り側)で別処理になっているっぽく、
両方に対応させないといけないので、もし作れたとしても結構面倒そうです…
------------
2023/02/07
プロ2は主に経路の違いで同じ路線でもマップフォルダが複数あるのですが、
(例えば瀬戸大橋線は岡山〜琴平、岡山〜高松、琴平〜高松の3種類(さらにそれぞれ日中・夜の2パターン))
湘南新宿ラインは同じ大宮〜横浜が入ったフォルダが3種類あったりします。
(上下線や高崎線・宇都宮線の違い?)
てっきり、途中の区間でフォルダが分割されているのかと思っていたのですが違いました。
一方で湖西線は上下線とも共用の1種類のみです。
あと、新幹線のマップデータを見てみましたが、体験版では道路に経路が設定されている箇所が多いようです。
(製品版は一部箇所を除き単にオブジェクトとして置かれているだけになっています)
体験版ではデータ作成上の都合か何かで線路と同じ扱いになっていたのでしょうか。
また製品版のPS2初期版では空中に謎の経路が設定されている箇所が複数あります。
(飛行機が通る経路とも違う←飛行機の経路はマップデータとしては定義されていないようです)
アウタービューのカメラ移動にでも使うつもりだったのでしょうか。
------------
2023/01/27
↓のマップデータを調べて分かったことですが、
ゲーム中にマップ読込が発生する時、奥の方に新たに建物が表示され、同時に後ろの方の建物が消えますが、
この処理、新しく増えた部分だけが別ファイルになっていて読み込んでいるのかと思っていたら、
引き続き表示される部分も含め、完全に別ファイルに切り替わって処理していたようです。
つまり、読込後に消える後ろの部分をA、読込後も表示される部分をB、新しく表示された部分をCとして
表示される領域が A B → B C となった時、
てっきりA、B、Cの部分がそれぞれ別ファイルで、2ファイル分をメモリに読み込んでおいて
マップ読込地点に来たらAの部分を消してCの部分を読み込んでいるのかと思い込んでいたのですが
[AB]の部分で1つのファイル、[BC]の部分で1つのファイルになっていて(=どちらもBの部分のデータを含んでいる)
マップ読込時に完全に切り替わるようになっているようです。
古いノートPCでプロ2をやっていた時、描画距離を伸ばしすぎるとマップ読込時に数秒止まることが
あったのですが、手前の分も含めて全部処理していたのであればスペック不足で止まるのも納得です。
また新幹線〜プロ2のareapac??.datですが、FINAL以外ではテクスチャデータも含む、
(FINALではテクスチャは別ファイル)
作品によっては座標がfloat値ではなく整数値だったりする等、
作品毎にデータ内容の違いもありますが、データの種類や並び順は大体同じ様です。
データ内容に多少の違いがあっても座標の部分だけ分かればいいので
下の記事のマップ表示ツールで新幹線、旅情編、プロ2のマップも見れるようにしましたが
旅情編は道路(車や歩行者の移動ルート)も線路と同じ扱いになっている様です。
------------
2023/01/16
FINALの改造コードの修正で2023年は始まりましたが(しかも年またぎ案件…)
夜ダイヤは画面が見づらいのもあって全然プレイしていなかったので
今まで全く気付きませんでした。やっぱり掲示板はあった方が良いですね…
ここ最近、プライベートでPCに触れる時間が中々取れないので
やりたいことがあっても全然作業が進まないのですが
去年位からチマチマと電車でGO!FINAL(Windows版)のマップデータを調べていました。
(対向列車の線路番号について探したかったのですが、結局それはまだ発見できず…)
これを元に何かしょうもない動画でも作ってみようかとも思ってはいますが、
今の状況でそんな時間が取れるかも分からない、
とはいえこのまま何もしないのも勿体ないので、たまには解析の過程について触れておきます。
(自分で読んでも意味わかりにくい文章になってしまっているので、参考になるか怪しいですが…)
当シリーズのマップは区間ごとに分割されてareapac(番号).datというファイルになっており、
それとは別にmap.datにもマップ内で共通の情報が入っている様なのですが
今回はareapacの方を調べてみました。
(map.datの方は線路などの共通モデル・テクスチャ、速度制限とかのイベント情報等が入っている様です)
まずareapac??.datは「DAT」で始まる複数データが格納されたファイルであり、
4byte単位で"DAT"→データ数→データ1開始位置→データ1サイズ→データ2開始位置…
のようになっています。(開始位置は"DAT"の部分が基準)
DATファイルを分割するプログラムも作成して調査していきます。
FINALの場合、現在分かっている範囲では次の様になっています。
さらにDATファイルが入っている場合もあってややこしいです。
01-4byteの値(不明)の後、さらにDATファイルがある 線路や建物などの情報
[↑のDATデータの内容]
01-01 線路区間の情報(区間ごとの接続情報やareapac内の線路番号との対応など)
01-02 線路情報1(上り・下りのどちらか1本のメインルート分?のみが入っている)
01-03 線路情報2(上記以外の線路(走行ルートになってない、関連するオブジェクトも含む?)
01-04 ???(適当にいじったら架線や線路の表示が消えるのでそれ関係?)
01-05 ???(↑の何かのインデックス情報?)
01-06 ???(01-04と同様の形式、01-04が線路1、こっちが線路2の分かも?)
01-07 ???(↑の何かのインデックス情報?)
01-08 建物の配置情報
01-09 ???(↑の何かのインデックス情報?)
02-(さらにDATファイル) マップオブジェクトのモデルデータ?(※テクスチャは別ファイル(sectxm??.dat))
03-Localmod<->Globalmodのオブジェクト番号の対応表
04-Localmod<->Wallのオブジェクト番号の対応表
FINALのWindows版では各マップフォルダに
globalmod_(路線名).h
localmod_(路線名)_(番号).h ※番号は多分areapacの番号と対応
wallid_(路線名).h
という、オブジェクトのデータ名と番号の定義が書かれたファイルが残っており、
areapacの2番目のDATファイルのデータ数と、localmod〜.hで定義されている
オブジェクトの数が一致していることから、このデータはマップオブジェクトのデータと推測できます。
また3番目、4番目のデータは最初の2byteの値がそれぞれglobalmod〜.h、wallid〜.hの
定義数と一致していることや、それを元に実際にデータを変更した結果から
それぞれglobalmod、wallの各番号のオブジェクトに対し、2番目のDATファイルの何番目の
モデルデータを使うかという情報が入っている様です。
建物などの配置情報ではlocalmodの番号ではなくglobalmod〜.h、wallid〜.hの
「全体を通して共通の番号」が使われているようで、
(恐らく、最初は1つの大きなマップとして作成していて、最終的にPS2のメモリに合わせて
区間を分割して、各区間毎に必要なデータだけを格納していると思われます)
その対応にこれらのデータを使う様です。
最初の2byteが上述のように定義数、その後2byte単位でglobalmod/wallidの各番号に対し、
(アドレス$02が(global/wallの)番号0、$04が番号1、以下同様)
areapac内の何番目のモデルデータを使うか(FFFFなら未使用=対応するデータが無い)という
情報が定義数分続き、その後にも何か値(詳細不明)が入っています。
ちなみに後者の方はファイル名がwall(壁)となっていますが、本作では主に架線に使われているようです。
残る1番目のデータですが、最初の4byteの値はとりあえず無視して
DATファイルの方を調べてみます。
各データがまず何なのか調査する手っ取り早い方法として、
(エラー落ちしない程度に)データを書き換えて、影響のあった箇所から何のデータかを推測してみます。
整数値は変にいじるとメモリの読み込み先がおかしくなってソフトが落ちる可能性がありますが
float値は大抵は座標とか角度、倍率とか、計算に使われることが多いので
変更しても比較的安全(表示がおかしくなる程度で済むことが多い)なので
(整数値の羅列?で未だに良く分からないデータもありますが)
まずはfloat値を中心に変更してみて線路の表示がおかしくなったからこれは線路のデータ、
みたいな感じで影響のあった箇所から何のデータかを種類を推測していきます。
なおfloat値は00000000以外は3F800000、42100000、CF000000みたいに
最上位の桁が3、4、B、Cになることが多いので判別がしやすいです。
(ちなみに2FFFFFFF≒0.00000000046566125、50000000=8589934592
AFFFFFFF≒-0.00000000046566125、D00000000=-8589934592
float値は最上位bit(+$80000000)が立っているとマイナスになります)
これが分かっていると、整数値とfloat値が混在しているデータで
4byte単位でfloat、float、float、float、整数、float、float、float、float、整数…
となっているから4byte×5(float値×4+整数4byte)で1セットのデータだな…のような推測がしやすくなります。
(0だと判別がつかないですし、未使用とかでfloat値の部分がFFFFFFFFみたいになっている
場合があるかもしれませんが)
そしてこういうパターンが分かれば、プログラムでfloat値部分をまとめて書き換えて調査できます。
(バイナリエディタで手動で書き換えても、建物数か所が変わっただけでは中々変化が見つけられないですし)
例えば上記のfloat、float、float、float、整数…のデータで、float値の2番目をまとめて+50したら
全ての建物の高さが変わったからこのデータは建物のデータで、floatの2番目はY座標、と分かります。
(※なお上記の例は実際のFINALの建物データとは違います)
…その後色々いじってみましたが、データを変更するだけでは限界があり、
またちょっとやってみたかったので
座標(と思われる値)を元に画面上に位置を表示するプログラムを作ってみたら
調査しやすくなってもっと早い段階で作っておくべきだったと思ってしまいました。
その反面、マップを見ているだけで満足してしまう(&時間を浪費する)
悪い癖も出てしまってますが…
(画像クリックで拡大表示)
上記画像は山手線のYamanoteA_Dフォルダ(Aが西側、Bが東側で分割されている)の
areapac01.datに含まれている池袋付近(多分)の座標データを表示してみた結果です。
3D処理をする気は起きない(というか技術が無い)のでY座標(高さ)は無視して
X座標を横、Z座標を縦として表示しています。
青い点がマップオブジェクト、他の点が線路関係(※実際に線路のポリゴンがあるとは限らない)です。
薄い灰色と青色の範囲がそれぞれ線路、建物の置かれている範囲です。
(単に各座標の最低値・最高値から取っているので、その範囲内のものが全て設置されているとは限らない)
単純に座標で分割しているのか、左下の方は線路がつながりそうなのに途切れています。
ちなみに線路と建物自体は一定範囲内しか配置されていませんが、
赤の線路区間の情報(前述のDATデータの01-01の項目)はルート処理上必要なのか
路線全体の分が入っています。(下の画像は東海道線、全体が見えるように縮小した状態)
ただこのデータ、殆ど同じデータ(微妙に違う)がmap.dat内にも入っていて
どう使い分けているのかは不明です。
(最低限、ローカルの線路番号との対応はareapacの方が使われるはずですが)
データを見てみると、車両基地や他の路線など、対向列車が走らない線路は
「線路のテクスチャを貼っただけ」のマップオブジェクトを置いてあるだけかと思ったら、
ちゃんと線路扱いになっている(実際に走行できるかは不明)ことが多い様です。
(データ作成上、これらも線路として配置した方がメリットがあるのかもしれません)
また、他の方がアップしている「走れない路線動画シリーズ」でも分かる通り、
ゲームでは見えないような位置にある他社路線にまで線路データがあるのは
(大抵はポリゴンは配置されず透明なことが多い)不思議に思っていましたが、
今思うと、マップを作成する場合はまず線路を敷いてその周りに建物を置いていくという形に
なると思うので、位置取りの為にも配置しておく必要があったのかなとも思いました。
(開発ツール上では線路は見えているが、ゲーム上ではポリゴンを設置する必要が無いので
そのまま線路情報のみが残る形になったのかな、と…)
おまけ
大阪環状線、森ノ宮〜大阪城公園間にある車両基地ですが、ゲームでは木に遮られて良く見えないにも関わらず
線路配置はかなりそれっぽくなっています。
ゲーム上の配置 Yahoo!地図の同地点
トップページに戻る