トップ > 日記らしきもの
 

------------
日記らしきもの(超不定期更新)

ゲーム解析関係や、トップに書くほどでもない近況などを書いていく予定…
飽きたりして年単位で更新しなくなる可能性もあります。

・解析関連に関しては細かく説明することもありますが、
 大抵は「〇〇を解析した」ということやその感想程度の内容になると思います。
 前提となる情報を詳しく書いておらず、意味不明に見える場合もあると思います。
 また解析したものについて、必ずしも結果の公開やツール作成等をする訳ではありません。
・内容の正確性は保証しません。詳しく調査せずに勘違いしている可能性もあります。
・文中の用語・名称などは「私が勝手にそう呼んでいる」だけで正式な呼び方ではない場合があります。
・日付は「記載日」です。ページの更新日や実施日と一致しない場合があります。
 (基本リアルタイムではありません、ある程度溜まるか、他ページの更新と
  同時になることが多いかと思います)


[過去ログ]
 2024年
 2023年
 〜2022年

[解析情報リンク]
 電車でGO! FINAL ダイヤ・車両関連情報(判明している分だけ)
 電車でGO! プロフェッショナル2 ダイヤ関連情報


------------
2026/06/25
  CCFファイルの解析は下に長々書いておいてアレですが、
  なんとなく「SEGA AGES DATA.CCF」で検索したらDATA.CCFの構造および圧縮や画像について全部書いてあるページがありました。

  まあ自分で調べたくなってやったこと=他サイトで答えを探すという発想は元々なかったので
  無駄だったという訳ではないですが…


------------
2026/06/23
  AGES2500のガンスターの調査ですが、
  DATA.CCFの展開は前回の時点でできていて、
   CCF
   $00 "CCF"
   $04 CCFファイル全体のサイズ-8($08〜終端までのサイズ?)
   $08 データ数

   $20〜 データ情報 1データ分につき$20単位
   +$00 ファイル名
   +$18 データ開始位置(ファイル先頭="CCF"が基準)
   +$1C データサイズ
  という形で格納されているのですが、多くのデータが「SHR」で始まる圧縮データになっていて
  圧縮方式自体はFZCCと同じタイプと思われるが、圧縮データのbitの配置が違うようなので止まっていました。

  ちなみに圧縮データと判断した理由はROMイメージと思われるファイル内で
  本来「SEGA MEGA DRIVE」の文字列になるだろうと思われる部分にの2回目(MEGA)の「EGA 」部分が消えている、
  また未圧縮になっている文字列の途中で圧縮フラグと思われる1byteの値が挿入されていることで
  FZCCや他のPS2タイトルでも見かけるLZSS系の圧縮では?と判断しました。
  (また、一部文字が読める=FZCCで存在した非圧縮部分で展開先アドレスの下位8bitでXORを行うという難読化処理?は
   本作にはなさそうということも分かりました)
  bit毎の扱いはソフトによって異なるものの、PS2のソフトでは他ソフトでもよく見かける圧縮形式なので
  詳細はAZUCOさんのサイトのPS2 LZSSのページを参照してください。
  基本的には
   ・圧縮フラグ
    (この後の8つのデータが非圧縮(1byte)か圧縮データ(2byte)かを示す・bit単位で対応、0=非圧縮、1=圧縮)
   ・非圧縮or圧縮データ×8個
  の繰り返しで、非圧縮の場合はその値をそのまま1byte出力、
  圧縮データの場合、アドレスと長さの情報が含まれているので指定された(展開済みの)アドレスから長さ分コピーする
  という扱いになっています。(長さは実際にコピーする長さから3引いたものの場合があります)
  アドレス部は下位〇bit部分のみを示す(アドレス部にないbit部分は現在の展開先アドレスによる)ものもあれば、
  「〇byte前(からコピーする)」という情報になっている場合もあります。

  今回はエミュレーターでメモリダンプしたものと比較すれば分かるんじゃないか?と思い付き
  (ゲーム中は圧縮データのままではなく、展開したデータを利用するはずなので)
  PS2エミュレーター(PCSX2)でソフト内のガンスターヒーローズを起動した所でステートセーブ、
  「PCSX2のステートセーブファイルは実態としてはZIPファイル」なのでこれと展開、
  eeMemory.binがメインメモリのデータなので、ここからROMイメージ部分を探します。
  ↑の「SEGA MEGA DRIVE」を目印に探そうと、とりあえず「SEGA」で検索していた所、
  途中で恐らく開発中にROMイメージのチェック部で使っていたと思われる
   「memcmp((const char*) rom_data + 0x100, "SEGA", 4) == 0」という文字列が見つかって
  (恐らくチェックOKだった時に出す文字列と思われます)
  先述の「SEGA MEGA DRIVE」の部分はROMイメージの開始地点+$100の位置になるようです。
  ちなみに海外版のROMは「SEGA GENESIS」になっているようです。

  $597B00に「SEGA MEGA DRIVE」の文字列が見つかったので、そこから$100を引いた
  $597A00がROMイメージの開始地点となります。
  これを日本版ROMのファイルと思われるgunstar_heroes.shrと比較していきます。

  SHRは最初の12byteは"SHR"の文字、ファイルサイズ-8、展開後のサイズらしき値が入っているので
  メモリダンプ(=展開後のデータ)と比較します。先頭の方は下のような感じでした。

ADDR  00 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 
メモリダンプ(元データ)
      FF FF FF 00 00 00 02 00 00  00 04 4C 00 00 04 50 00 00 04 54 00 00 04 58 00  00 04 5C 00 00 04 60 00 00 04 64 00 00 04 68 00  00 04 40
圧縮データ                 ~~~~~~~~~       ~~~~~~~~    ~~~~~~~~    ~~~~~~~~    ~~~~~~~~~    ~~~~~~~~    ~~~~~~~~    ~~~~~~~~    ~~~~~~~~~
0D[01]FF FF FF 00 00 00 02<00 18>[2A]04 4C<00 40>   50<00 60>   54<00 80>   58[AA]<00 A0>5C<00 C0>   60<00 E0>   64<01 00>   68[BF]<01 20>40
↑SHR内のアドレス$0Cから記載

  メモリダンプ側にない値が圧縮に関わる値ということになり、
  先述した圧縮フラグと2byteの圧縮データのことを考慮すると、最初の$0Dは不明ですが、
  それ以降は[]の部分を圧縮フラグとし、上位bit→下位bitの順で1の時が圧縮データとすると
  <>の部分が圧縮データということになり、
  ちょうど元データに無い部分が圧縮データ部分になる(下線部分(~~~)が圧縮されていることになる)ので
  これで合っていそうです。

  次に2byteの圧縮データのうち、長さとコピー元アドレスがどうなっているのかを調べますが、
  最初以外は「00 00 04」の部分が繰り返し圧縮されていますが、
  値が増えていっているので最初ではなく直前のものを参照しているようです。
  圧縮データ部分の値を見ていくと、
   00 18 → $07から3byteコピー
   00 40 → $0C 〃
   00 60 → $10 〃
   00 80 → $14 〃
  アドレスが4増えると$20(10進で32)増える=8倍増えることから、
  2byte目は上位5bitがアドレス部ということになります。
  となると2byte目の残りの下位3bitはアドレス部ではない=長さ情報ということになります。
  (上記部分では長さ部の3bitは全て0になっていますが、3byte以上でないと圧縮の意味がない関係上、
   PS2 LZSSでは実際の長さから3引いた数(長さ3=0とする)になっている場合が多いです)
  この後の圧縮部分も見ていった結果、この推測は正しいようで、1byte目はアドレス部の上位部分になっていました。

  ※アドレス部は13bitしかないので、それ以上のbit部分は現在の展開先アドレスのものが使われます。
   その結果コピー元アドレスが展開先アドレスよりも後ろになる場合がありますが、
   この場合はコピー元アドレスは1周分手前、-$2000したアドレスになります。

  ちなみにFZCCのBIN.PAKは本作と逆で1byte目の上位bit側に長さ情報(こちらは4bit)が入っていました。
  (1byte目側がアドレス部の上位bit側という点は同じ)

  上記を基に、データを展開してみると、構造上データ部分が8個セットに固定されるためか、
  ファイル先頭にある展開後のサイズらしき値をを数バイトオーバーしてしまう
  (終了を示すデータがあるのかは不明)のですが、そのサイズ内のみで出力するようにすると
  めでたくデータが一致しました。

  …が、他のファイルで試してみたらエラーが出てしまいました。
  展開後サイズと大幅にずれたり、開始直後なのにまだ展開していないアドレスがコピー元になったり…と
  SHRファイルのアドレス$0Cの値が先程の$0Dではなく$0Eになっていたので、
  これが圧縮方法に影響していると思いましたが、
  先程の$0Dは10進数に直すと13になるので、もしかして圧縮データのアドレス部のbit数を示す値ではないか?
  と試してみたら運よくその通りでした。
  ※先述の「圧縮データのアドレス部が展開先より後の場合、コピー元アドレスは1周分手前」で
   引くアドレス値もアドレス部のbit数によって変わってきます。($0C(12bit)なら$1000、$0E(14bit)なら$4000)

  ということで圧縮データの展開ができるようになりましたので次に画像データです。
  FZCCではBMPかTIM2(PS2標準形式)だったのですが、本作では「IMA」で始まる独自形式?になっています。
  といってもバイナリデータを見ただけですぐわかる位、そのままなベタ形式(ヘッダ部分だけが独自)だったので
  こちらは苦労せずにBMPへの変換が出来ました。

  $00 49 4D 41 00 "IMA"
  $04 ファイルサイズ-8
  以降チャンク名 後に続くデータサイズ データの繰り返し

  ↓チャンク名    データ部分の解説
  "STAT"(53 54 41 54) 2byte単位で横サイズ→縦→08(ビット数)?
  "PALE"(50 41 4C 45) パレットデータ 各1byte単位でR→G→B→A(80が最大)×256色分繰り返し
  "PIXE"(50 49 58 45) ピクセルデータ 1byteで1ピクセル ↑のパレット番号が入っていく
  使用しているのが16色以下のデータでも256色データになってるから256色固定?
  TIM2の256色画像で発生するパレット番号の特殊処理(特定bitを入れ替える)の必要は無し
 

------------
2026/06/20
  2021年の項目で放置していたSEGA AGES 2500のガンスターヒーローズのファイル展開の調査を再度やってます。
  (というかこんなに前の話だったのかと驚き…2・3年位前の話かと思っていました)
  圧縮データに関しては実行時にメモリ上に展開されているはずなので、
  MDソフトのROMイメージ内にある「SEGA MEGA DRIVE」の文字列を目印に、
  エミュレータのステートセーブ内の展開後のデータと比較する方法で調査しました。
  その結果、FZCCとは圧縮データのbitの割り振りが違うだけだったようなので、
  もう少し時間が取れれば画像変換も含めてツールを作れそうです。
  (FZCCのツールのソースが行方不明で更新できないので同梱という形になる予定)
  fzcc_unpackの時はROMイメージの抽出関係(特にSYSTEM16版IIも含めたアーケード版のROMイメージ関係?)か何かで
  急にアクセスが増えたこともあって、何も書かずにひっそりと公開を止めた事があったのですが、
  (しばらく経ってから掲示板で要望があったので復活)
  今回もROMイメージが抽出できるのでトップの更新履歴にも書かずにサイレント更新しようかとも思ったのですが
  調べたら既に「PS2エミュレータのメモリダンプから抽出できる」という手法が出回っているようなので
  公開しても影響はなさそうなので今回は普通に告知しておきます。


------------
2026/06/12
  掲示板の方でごめんなさいが続いてしまっているので、せめてこれまで解析した情報とかを少しずつでも出していければとは思い、
  電車でGO! プロフェッショナル2 ダイヤ関連情報のページを作成しました。
  今の所、車両の設定とかまだ調べてない部分も多いのでFINAL程の情報量はありませんが…


------------
2026/05/03
  ずっと前からネタだけは考えていたデザエモンのセレクト100関連の動画をようやく投稿できました。
  最後の未使用曲ネタだけにしておけば良かったのに、既出ながら動画になってない(と思われる)ネタに補足的なものも入れたせいで
  やることが増えて大変でしたが、セレクト100関係でやりたいものはまとめて消化できたので良しとします。


------------
2026/03/17
  個人的メモ
  ・PS1ゲームをエミュレーターでプレイする時、操作できない場合はアナログ/デジタルモードの切り替えを試す


------------
2026/02/15
  山陽新幹線編の編成と性能変更に関するアドレスを並べておきます。
  []内は該当するメモリアドレスです。(PS2通常版/Win廉価版(公式の修正パッチ適用後)の順)
  全て2byte値です。性能の後ろの???となっている部分はどの部分に影響するかはよく分かりませんが、
  車両毎に対応した値になっているっぽいので一応載せてあります。
                                (↓修正パッチ適用後)
                            PS2通常版/Win廉価版 編成 マスコン画像      性能 ???
   00 : こだま563号 レールスター    広島 →博多  [278E94/4CE49C] 0020 0004  / [224736/51DB4E] 000E 0008 FFFF 
   01 : ひかり 51号 0系R+Rウエスト&シャトル   新大阪→博多  [278EB4/4CE4C0] 000E 0000  / [2249A6/51DDBE] 0005 0001 0000 
   02 : のぞみ501号 500系Wのぞみ    新大阪→博多  [278ED4/4CE4E4] 001C 0003  / [224C16/51E02E] 000C 0006 FFFF 
   03 : こだま491号 100系Gこだま    新大阪→広島  [278EF4/4CE508] 0014 0001  / [224E86/51E29E] 0008 0003 FFFF 
   04 : のぞみ 33号 300系Fのぞみ    新大阪→博多  [278F14/4CE52C] 001A 0002  / [2250F6/51E50E] 000B 0005 FFFF 
   05 : ひかり359号 ひかりレールスター    新大阪→博多  [278F34/4CE550] 0020 0004  / [225366/51E77E] 000E 0008 FFFF 
   06 : ひかり185号 100系Gひかり    新大阪→博多  [278F54/4CE574] 0014 0001  / [2255D6/51E9EE] 0008 0003 FFFF 
   07 : ひかり107号  0系Nひかり    新大阪→博多  [278F74/4CE598] 0000 0000  / [225846/51EC5E] 0000 0000 FFFF 
   08 : こだま625号  0系WRこだま    姫路 →広島  [278F94/4CE5BC] 0006 0000  / [225AB6/51EECE] 0003 0001 FFFF 
   09 : こだま579号  0系Qこだま    広島 →博多南 [278FB4/4CE5E0] 0010 0000  / [225D26/51F13E] 0006 0000 FFFF 
   0A : ひかり391号 500系Wひかり    新大阪→博多  [278FD4/4CE604] 001C 0003  / [225F96/51F3AE] 000C 0006 FFFF 
   0B : ひかり151号 300系Fひかり    新大阪→岡山  [278FF4/4CE628] 001A 0002  / [226206/51F61E] 000B 0005 FFFF 
   0C : ひかり141号  0系Skウエスト   新大阪→博多  [279014/4CE64C] 002A 0000  / [226476/51F88E] 0002 0001 FFFF 
   0D : ひかり 47号 100系Vグランド   新大阪→博多  [279034/4CE670] 0016 0001  / [2266E6/51FAFE] 0009 0004 FFFF 
   0E : ひかり381号 ひかりレールスター 新大阪→博多  [279054/4CE694] 0020 0004  / [226956/51FD6E] 000E 0008 FFFF 

   0F : こだま602号 300系Fこだま    三原 →新大阪 [279074/4CE6B8] 001B 0002  / [2222A6/51B6BE] 000B 0005 FFFF 
   10 : のぞみ  4号 300系Fのぞみ    広島 →新大阪 [279094/4CE6DC] 001B 0002  / [222516/51B92E] 000B 0005 FFFF 
   11 : ひかり164号  0系Nひかり    広島 →新大阪 [2790B4/4CE700] 0001 0000  / [222786/51BB9E] 0000 0000 FFFF 
   12 : こだま610号  0系Rこだま    新岩国→新大阪 [2790D4/4CE724] 000D 0000  / [2229F6/51BE0E] 0004 0000 FFFF 
   13 : ひかり352号 ひかりレールスター 博多 →新大阪 [2790F4/4CE748] 0021 0004  / [222C66/51C07E] 000E 0008 FFFF 
   14 : こだま672号  0系Qこだま    博多南→小倉  [279114/4CE76C] 0011 0000  / [222ED6/51C2EE] 0006 0000 FFFF 
   15 : ひかり158号  0系Rシャトル   広島 →新大阪 [279134/4CE790] 000D 0000  / [223146/51C55E] 0004 0000 FFFF 
   16 : ひかり128号 100系Vグランド   博多 →新大阪 [279154/4CE7B4] 0017 0001  / [2233B6/51C7CE] 0009 0004 FFFF 
   17 : こだま572号 100系Pこだま    博多 →広島  [279174/4CE7D8] 0019 0001  / [223626/51CA3E] 000A 0004 FFFF 
   18 : ひかり552号  0系Skウエスト   博多 →新大阪 [279194/4CE7FC] 0005 0000  / [223896/51CCAE] 0002 0001 FFFF 
   19 : ひかり554号  0系Rファミリー  博多南→新大阪 [2791B4/4CE820] 000B 0000  / [223B06/51CF1E] 0004 0002 FFFF 
   1A : ひかり374号 ひかりレールスター 博多 →新大阪 [2791D4/4CE844] 0021 0004  / [223D76/51D18E] 000E 0008 FFFF 
   1B : こだま656号  0系Rこだま     博多南→新大阪 [2791F4/4CE868] 0009 0000  / [223FE6/51D3FE] 0004 0002 FFFF 
   1C : のぞみ 26号 500系Wのぞみ    博多 →新大阪 [279214/4CE88C] 001D 0003  / [224256/51D66E] 000C 0006 FFFF 
   1D : ひかり174号 100系Gひかり    博多 →新大阪 [279234/4CE8B0] 0015 0001  / [2244C6/51D8DE] 0008 0003 FFFF 

   1E : ダイジェスト 0系Rこだま     小倉 →博多  [279254/4CE8D4] 0008 0000  / [226BC6/51FFDE] 0004 0000 FFFF 
   1F : ダイジェスト100系Vグランドひかり 小郡 →博多  [279274/4CE8F8] 0016 0001  / [226E36/52024E] 0009 0004 FFFF 
   20 : ダイジェスト300系Fひかり     岡山 →新大阪 [279294/4CE91C] 001B 0002  / [2270A6/5204BE] 000B 0005 FFFF 
   21 : ダイジェスト500系Wのぞみ     博多 →岡山  [2792B4/4CE940] 001D 0003  / [227316/52072E] 000C 0006 FFFF 
   22 : ダイジェストひかりレールスター  新大阪→広島  [2792D4/4CE964] 0020 0004  / [227586/52099E] 000E 0008 FFFF 

   23 : フリーラン 0系 下り               [2792F4/4CE988] 0008 0000  / [2277F6/520C0E] 0004 0000 FFFF 
   24 : フリーラン 0系 上り               [279314/4CE9AC] 0009 0000  / [2277F6/520C0E] 0004 0000 FFFF 
   25 : フリーラン 100系 下り              [279334/4CE9D0] 0016 0001  / [227A66/520E7E] 0009 0004 FFFF 
   26 : フリーラン 100系 上り              [279354/4CE9F4] 0017 0001  / [227A66/520E7E] 0009 0004 FFFF 
   27 : フリーラン 300系 下り              [279374/4CEA18] 001A 0002  / [227CD6/5210EE] 000B 0005 FFFF 
   28 : フリーラン 300系 上り              [279394/4CEA3C] 001B 0002  / [227CD6/5210EE] 000B 0005 FFFF 
   29 : フリーラン 500系 下り              [2793B4/4CEA60] 001C 0003  / [227F46/52135E] 000C 0006 FFFF 
   2A : フリーラン 500系 上り              [2793D4/4CEA84] 001D 0003  / [227F46/52135E] 000C 0006 FFFF 
   2B : フリーラン ひかりレールスター 下り        [2793F4/4CEAA8] 0020 0004  / [2281B6/5215CE] 000E 0008 FFFF 
   2C : フリーラン ひかりレールスター 上り        [279414/4CEACC] 0021 0004  / [2281B6/5215CE] 000E 0008 FFFF 

   2D : 入門                       [279434/4CEAF0] 0020 0004  / [228426/52183E] 000E 0008 FFFF 

  車両毎にまとめると下記のようになっているようです。
  左側に※付きのものは本編では運転できない編成のため、値は推測です。
          編成/マスコン/性能/???  ※編成は「下り(上り)」で記載
   0系N     : 00(01) 00 / 0000 0000  FFFF
  ※0系?編成  : 02(03) 00 / 0001? ※16両編成
   0系Sk    : 04(05) 00 / 0002 0001  FFFF
   Skシネマカー : 2A(2B) 00 / 0002 0001  FFFF
   0系WRウエスト: 06(07) 00 / 0003 0001  FFFF
   0系R新塗色  : 08(09) 00 / 0004 0000※FFFF ※こだま656号のみ0000ではなく0002
   Rファミリー : 0A(0B) 00 / 0004 0002  FFFF
   0系R旧塗色  : 0C(0D) 00 / 0004 0000  FFFF
   0系R+R連結  : 0E(0F) 00 / 0005 0001  0000
   0系Q      : 10(11) 00 / 0006 0000  FFFF
  ※100系X?   : 12(13) 01 / 0007?
   100系G    : 14(15) 01 / 0008 0003  FFFF
   100系V    : 16(17) 01 / 0009 0004  FFFF
   100系P    : 18(19) 01 / 000A 0004  FFFF
   300系    : 1A(1B) 02 / 000B 0005  FFFF
   500系     : 1C(1D) 03 / 000C 0006  FFFF
   ???    : 1E(1F) ?? / 000D? ※16両編成、表示不可
   レールスター : 20(21) 04 / 000E 0008  FFFF
  ※WIN350    : 22(23) ?? / 000F? ※資料館専用、運転用モデルなし
  ※922形    : 24(25) 00?/ 0010? ※資料館専用、運転用モデルなし
  ※0系?連結?  : 26(27) 00 / ????  ※6両編成、連結器あり
  ※0系R旧連結? : 28(29) 00 / ????  ※6両編成、連結器あり

  1E(1F)の編成は、レールスターのファイルが読み込まれるものの、編成中に存在しない番号が指定されていて
  正常に表示できません。恐らくはモデルデータすら収録できなかった没になった車両で、
  ダミーとしてレールスターの定義を入れてあるだけかと思われます。

  ちなみに車両性能のパラメータは後半部を中心に未使用と思われるものが多数あり、
  (ただし後ろの方で使用しているものもあり)
  パラメータ内に両数と思われるものがあるのですが(性能計算のみに使われ、変えても停止位置が変わったりはしない)
  中には10両+7両連結されているという設定のものもあります。(東北新幹線を作る予定だった残骸?)


------------
2026/02/01
  掲示板で電GO山陽新幹線編で資料館用のグラフィックを運転画面で表示できないか?という書き込みがあったので
  中々時間が取れないですがちょっとずつ調べていました。
  結論からいえばWindows版は(おそらく)可能(ただしちゃんとした確認はしていません)
  PS2版では難しそう(最低でも車両の定義部分の調査必須、それでもできるかどうかは不明、ベスト版は未調査)という状態です。

  この作品の車両モデルは資料館用(高画質)と運転画面用(低画質)で別ファイルになっています。
  Windows版だとtrain\pフォルダ内にあるものが資料館とダイジェストモードの選択画面用(ファイル名がdj_で始まるもの)
  その下のbcフォルダ内に入っているものが運転画面用と思われます。
  資料館でのモデル閲覧のみで元々運転画面用のモデルが無いものもあります。

  そもそも、低画質のデータを別に作ってある→そうせざるを得ない理由があるはずなので(メモリ不足など)
  やる前から難しいんじゃないかとは思いましたがとりあえず調査します。
  メモリ的にはWindows版の方が可能性がありそうですが、あまり解析を行っていないので
  まずはPS2版通常版で調査してみました。
  なお今回は0系などは編成違いが複数あってファイルと車両の対応が分からないので、
  レールスター編成の資料館モデルを運転画面で表示できるかを試してみる方向で進めます。

  まずは内部のファイル番号をとっかかりに調査を始めようと思います。
  (新幹線以降の電GOシリーズ(Windows版も)のデータ読込は基本的に内部ファイル番号で指定されているため)
  当サイトの画像表示ツールで車両のテクスチャを探してみると
  最初の方とFILE_1786〜以降に見つかると思います。
  前者は運転画面用、後者は資料館、ダイジェスト選択画面、在来線?(未使用、少なくともファイル番号による定義は見当たらず)
  の順で並んでいるようです。なお番号が1つ飛ばしなのはモデルデータ→テクスチャデータの順で交互に並んでいる為です。
  このFILE_****の番号から1を引いたものが内部ファイル番号になります。
  (内部ファイル番号は0から始まるがツールでは1から番号を振っているため1つずれる)
  ※なおFILE_****というのは正式なファイル名ではなく、
   他の対応作品と違ってWindows版のファイル名情報を流用できなかった
   (PS2版とファイル構成が違う)ので仮の名前としてFILE_番号の形にしています。

  レールスターのテクスチャは運転画面はFILE_0020(→$13)、資料館はFILE_1806(→$70D)なので
  ほかの用途との被りが少なそうな$70Dの方でPS2DISで16bit値検索してみます。
  すると$70C→$70Dと続くアドレス21B898のみがヒットします。$70Cはモデルデータの番号(と思われる)ので
  この辺りは車両定義に関するデータと思われます。
  この辺りのアドレスを指定している場所がないか、1つずつ32bit値検索すると
  アドレス21D0D4で21B890が指定されていました。
  この21D0D4周辺も何かのアドレス定義?が続いていますが、ファイル番号にあたる部分が近い値になっていたので
  編成別の定義アドレスのリストだったようです。
  その定義の先頭アドレスと思われる21D0B0で値検索するとアドレス28B2C0でこの値が指定されていました。
  この一つ下のアドレス28B2C4の値は265900となっていますが、こちらは運転画面用の編成の定義のようです。
  文章にするとややこしいですが、下のような構造になっていました。

   28B2C0 : 21D0B0 → 21D0B0〜資料館用の車両別の定義データのアドレスのリスト → (資料館用)各車両毎の定義データ
     28B2C4 : 265900 → 265900〜運転画面用 → (運転用)各車両毎の定義データ
        
  で、とりあえず資料館用と運転画面用のアドレスを逆にしてみました。
  資料館ではテクスチャの粗い運転画面用のものに切り替わったのでこれでいけるかと思ったのですが
  運転画面の方はNOW LOADINGの表示が出る途中でフリーズ…
  次はアドレス2658B8の運転画面用のレールスターのファイル番号を資料館用のものに書き換えてみましたが
  運転画面までは行けたのですがテクスチャや編成がおかしい状態でした。
  読み込みはされているようなので定義部分をいじればもしかしたら何とかなるのかもしれませんが、
  定義部分の構造を調べるのも面倒そうですし、調べた所でそもそも正常な表示にしようとすると
  やっぱりフリーズするのでは?という懸念もあるので厳しそうです。

  ただ、資料館で運転画面用のモデル表示はできていたので、
  もしフリーズの原因が単なるメモリ不足で、内部的には単なるモデル違いという扱いであれば
  Windows版なら表示できるかも…と思って試してみたら
  運転画面用のアドレスを資料館用に変更するだけであっさりと成功してしまいました。
  (一応、PS2版の車両定義データの値で値検索してWindows版の車両定義データを探し、
   参照元アドレスを調査するという手順だったのでPS2版の解析は無駄だったという訳ではありません)
 
  本格的シリーズ版+パッチ適用済みならメモリアドレス4EB46Cの値を0050A2C4→00507D14に変更、
  実行ファイルを直接書き換える場合、アドレスを-$400000した$EB46Cを507D14に書き換えてください。
  ただし、すれ違いなどで車両が増えたときに正常に処理されるかまでのチェックはしていません。

  
  
  編成番号の変更で運転用モデルが無いWIN350も表示されました。
  なお上記画像では、フリーランのレールスター下りの編成番号(アドレス$4CEAA8)のみを変えています。
  Windows版のダイヤデータはまともに調べておらず、他のダイヤや車両性能のアドレスは未調査なので
  これに関する質問は勘弁してください…
  (PS2版も含めて、ダイヤ毎のアドレスリストがあれば変更するのに楽になるのでいつかやっておきたいですが…)
  ↑その後調べたので上の2026/02/15の項目で記載しています

  ちなみに他の作品も含めプログラム内で車両毎の定義があるため、
  車両の入れ替えをしたい場合に単純なファイル入れ替えでは正常に表示されない可能性が高いです。

  (2026/03/28追記)
  mas maeさんの動画によると、PS2版でもダイヤによっては動く(ただし制限や不具合あり)そうです。


------------
2026/01/06
  (2025年は項目が少なかったので本年はページを分けずに続けます)
  PS2電GOのシンボル残り作品に「oddeven」という名前のメモリ領域があり(2か所あってそのうちの片方が対象)
  フレームごとに0と1を交互に切り替わるのですが、(プロ2と旅情編ではWinSwapDBという関数内で切り替え)
  これはインターレース表示用にそのフレームで奇数ライン・偶数ラインのどちらを表示させるかというものらしく
  エミュレーター上でどちらかに固定させてみると2D画像の上下の表示ブレが解消されました。
  (※実機では奇数・偶数のどちらかのライン分しか表示されなくなる=解像度が半分になってしまうので意味がないです)
  この辺の処理の流れが共通ならば、シンボル残りでない新幹線・FINALにも応用できるかもしれません。

  ※インターレース表示についての細かい説明は省きますが、簡単に言うと画面を奇数ライン・偶数ラインに分けて
   交互に表示させることで(限られた帯域内で)解像度とフレームレートを両立させるというもので
   ブラウン管テレビでは画面がちらついてみえるというデメリットもありました。


------------
2025/12/14
  PS2「甲子園 紺碧の空」、ゲーム本編じゃなくて某音楽ユニットっぽい感じの曲が入っているという理由で購入…
  (曲自体は'99甲子園からの流用なのでそちらでも良かったのですが、他の曲も過去作の流用が中心?)
  CDのラベル情報が「2002KOS」なので正式なタイトルになるまでは過去作同様「2002甲子園」のような形の
  仮タイトルだったのでしょうか。
  SOUND/ADPCMフォルダの*.ADPファイルが音楽データで、ステレオ、48000Hz、インターリーブ$5000です。
  KOSJIKK.VGSに実況と球場アナウンスの音声がまとめて入っているのですが格納情報および再生周波数がよくわからず…


------------
2025/11/27
  ライゼリートのBGM情報についてのメモが出てきたので忘れないうちにここに書いておきます。
  変換せずに聴けるようにいつかps2_adpcmconvに対応できれば良いですが…

  [*.pcm] 16bit 24000Hz ステレオのpcm形式
  $00 ファイルサイズ-$800、PCM部分の実データサイズ?
  $04 サンプル数?(↑の値÷4になる)
  $08 ループ開始位置(サンプル単位、ループしない場合は0)
  $0c ループ終了位置

  $400〜 何かデータが入っているが不明
  $800〜 PCMデータ本体

  なお、ループ終了位置以降にはフェードアウトするデータが入っている


  [*.gfs] ギターのミニゲーム用のデータ(同じ番号の*.pcmファイルがBGM)

  $0000〜 譜面情報(下記参照)
  $1000〜 音色の格納情報(4byte単位でデータの開始位置($1800が基準(=0))がデータ数分並ぶ)
  $17F0  音色の数
  $17F4  不明(23 00 00 00)
  $17F8  不明(05 00 00 00)
  $17FC  音色部分のサイズ(=ファイルサイズ-$1800)
  $1800〜 音色データ本体(ADPCM形式) 7000.gfs〜7003.gfsは22050Hz、7004〜7005は18000Hz位?

  譜面情報
  0x08単位
  +$00 時間位置(1/30sec単位)
  +$04 種類指定($01=赤,$02=緑,$04=青 / $10=小節線(太),$20=小節線(細))
     同時押しの場合は足した値
     Ex / Ex plus譜面の場合の譜面はどういう法則で作られるのかは不明
  +$06 音色番号(小節線の場合は0xFFFF)


------------
2025/10/26
  セレクト100関係の続きです。
  今回はプログラム側の解析を行いました。
  DuckStationはCPUデバッグ機能でブレークポイントという機能があり、
  特定のアドレスへのアクセス時に一時停止が出来て
  プログラムのどの部分でアクセスしているのかが分かるので非常に助かりました。

  ※前回の記事同様、アドレスは通常版の場合です。(SuperLite1500版は未調査)

  まず、前回の方法で複数データ使用の作品で1番目のデータしか聴けない点に対応するため、
  データ開始位置の参照位置をずらしてタイトル画面で2番目のデータを読むようにしてみます。
  ※メモリカード2枚使用作品はセレクト100上では一続きにプレイできますが、
   内部的にはセーブデータが2つ分そのまま入っていて、
   ゲーム側(セレクト100側)で「1番目の1〜3面、2番目の1〜3面の全6面」の様な情報を基にして
   途中でデータを切り替えています。(EASY EDITモードはこの機能の応用?)

  各ゲームのデータおよびコメント画像はSTRDATAというファイルにまとめられています。
  プログラムファイル内(MAIN.EXE)内に各作品毎の情報があり(メモリアドレス上では$8009dc7c〜)
  STRDATA内のデータ位置を指定する形でどのデータを読み込むかが設定されていて
  2byteずつで1番目のゲームデータの位置、2番目、3番目と続いています。
  (2024/09/05の記事参照、未使用部分はデータ位置は0000になっている、
   領域的には3つ分あるが収録作品は最大でも2つまで)
  1番目の作品である影狼のデータ開始位置の情報は先頭から$3cした$8009dc88ですが、
  最上位の$800...の部分は無視して良いみたいなので、$9dc88の読み込みで一時停止するように設定してみると
  リスト上でのゲーム選択後とゲーム開始時のどちらにおいても
  80034DE0のlhu a0,0x3c(v1)(値:9464003C)の部分で開始アドレスが読み込まれていました。
  ([v1レジスタの値+$3c]のアドレスの値(2byte)をa0レジスタへ読み込むという内容の処理です)
  これの3cの部分を3eにして(9464003E)読み込み位置を+2すると参照先が1つ分後ろにずれるので
  本来1番目のデータを読む所で2番目のデータを読み込むことになります。

  エミュレーターのチート機能でパッドコードと組み合わせるなどしてON/OFFを切り替えるように
  する必要がありますが、一応この方法で2つ目のデータの曲を聴くことが可能です。
  なお上記変更をした状態では、本来2つ目のデータを読み込む場面や、元々1つのデータしか使わない作品では
  使用しない次の番号を読み込んでしまうことになりますが、未使用部分のデータ開始位置0というのは
  影狼のデータ位置と同じなので、影狼のデータが読み込まれるだけでフリーズなどは起こらない(はず)です。

  ※これを書いた後にプログラムを解析するよりもパッドコードと組み合わせて
   読み込み位置の情報を直接書き換えた方が早かったんじゃないかと気付きました…

  で、そもそもDATA SAVEで全曲出力できるようにすればいいのでは?と思い、
  前回書いたBGM設定が入るアドレス$187230、$18CC18への読み込みアクセスを調べた所、
  DATA SAVEのメモリーカードチェック前(アドレス80034CC4)とセーブ中(80035E48/80035E60)が該当しました。
  このうち、前者に当たる80034CC4は00〜0Fの値をBGM設定の各項目と比較するような内容だったので
  値が一致しているかを比較する箇所、
   80034CCC beq v0, s0, $80034ce8 (値:10500006) を常に一致=無条件ジャンプ(10000006)に変更したら
  全曲出力されるようになりました。

  となると今度はDATA SAVE不可の作品をセーブ可能に…となりますが、
  作者の方の意向で不可になっているものもあると思うので迷いましたが、
  発売から25年以上経っていることもあるのでこの欄にこっそりに書いてしまいます。
  といっても、そもそも前述の2024/09/05の記事で、ゲーム毎の情報内にセーブ不可フラグの存在を
  書いてしまっているので、これを読み込んでいる所を調査するだけですが…
  DATA SAVE可能/不可の情報は各作品の情報の先頭から+$56した所にあるので(0=可能、1=不可)
  影狼では該当アドレスが$9dc7c+$56=$9dcd2になるのでここにブレークポイントを設定します。
  すると作品一覧での決定後と作品内メニューのカーソル移動時(8001472C)に
  それぞれアドレス80014454・8001472Cにて lbu v1, $0056(v0) という形で値が読み込まれていました。
  ここでv1へ読み込まれる値が常に0(=セーブ可能)になれば良いので
   addiu v1, zero, $0000(値:24030000)などに書き換えることで全作品セーブ可能になります。
  ※複数データ使用の作品では1番目のデータしか保存できないので、2番目のデータを保存したい場合は
   前述のデータ開始位置の参照位置をずらす方法を併用してください

  最後に、セレクト100はデザエモン+より音量が大きい?せいか音割れしやすいので
  音量を下げてみようと調査してみました。
  PS2DIS付属のPS1.MAPというファイル内にPS1のSPUのアドレス情報が書かれていたので
  まずはマスターボリューム(1F801D80(左)/82(右))を下げるようにしてみたのですが、
  音量自体は下がったものの音割れは改善しないので、
  各チャンネル、今回はch1の音量(1F801C00(左)/02(右))の書き込みをチェックしてみると
   1F801C00:8004C1A8で書き込み
   1F801C02:8004C288で書き込み
  という結果になっていました。
  ここに入る値はどちらの場合もレジスタa0とa1をor演算したものになるのですが、
  a1の方に音量らしき値($0000〜$3FFF?)が入るようなので
  手前のnopになっている箇所(8004C168/8004C248)をsrl a1,a1,1(00052842)にして
  a1の値を1bit右シフト(=値を1/2)にした所、音割れが軽減されました。
  ※まだ音割れがあるという場合はsrl a1,a1,2(00052882)にするなどして更に下げてください


  なおセレクト100のBGM指定の無い未使用曲のうち、No.30 BLUE GENOCIDEの7番の曲のみ
  例外的にDATA SAVEで出力されます。
  これは内部的にはSFC版同様に6面のBGM設定の領域(ステージ曲とボス曲の2つ)が残っていて、
  DATA SAVE時の使用番号チェックでこの領域の番号も調査してしまっている為です。
  通常はサンプルデータの番号(23番・27番、SFC版DAIOH GALEと同じ)なので影響はないのですが、
  当作品のみ?7番・10番が指定されている為、7番が使用されている曲と判断されて
  出力されるようです。
  (この7番・10番という設定はデザエモン+収録のSFCコンテスト作品のHARD MACHINEの6面と一致するので
   未調査につき推測ではありますが、恐らく裏技のコンテスト作品からユーザーデータへの出力機能で
   ここの部分が7番・10番に書き換わり、かつその後のデータ削除などでも初期化されずに残った為と思われます)


------------
2025/10/14
  デザエモンKids!付属のセレクト100に関して動画を作りたかったのですが
  作成する暇がなさそうなので文章だけで…

  ・セレクト100の未使用曲に関して
   セレクト100収録作品はDATA SAVEでのメモリーカードへのコピーを行う際、
   どの場面にも使用設定がされていない曲はなぜか空白データになってしまいます。
   (4面で終了設定だが5面に設定されている、という場合は大丈夫の模様)
   未使用曲をセレクト100内で簡易的に聴く方法として、エミュレーターのチート機能などで
   ゲーム中の曲番号の設定を書き換える方法を挙げてみます。

   ※下記のアドレスは通常版の場合、SuperLite1500版は未調査

   各作品をプレイ中、アドレス$18CC18〜に曲番号の設定情報が入り、このうち$18CC24にタイトル画面の曲番号が入ります。
   (※BGM番号は内部的には0から始まるので、エディタ上での番号と1ずれるので注意してください)
   このタイトル曲の番号を未使用曲の番号に書き換え、一度ゲームを始めてポーズ→ESCAPEでタイトル画面に戻ることで
   その曲を聴くことができます。
   なお、$18CC18〜の領域の最初のほうは1面の道中→ボス→2面道中→ボス...の順になっていますが、
   この部分はゲーム開始時にもう1つの設定情報の格納領域である$187230〜からコピーされて上書きされてしまうので
   1面の曲を変えたい場合はそちら側を書き換える必要があります。

   ただこの方法では制限があり、複数データを使用(メモリーカードを2枚使用)している作品では1番目のデータしか聴けない、
   一部のデータに存在する、ループ部分より後ろにあるフレーズを聴くことができないという欠点もあります。

   ちなみにどの番号が未使用かは当サイトのデザエモン+用画像表示ツールで確認できますが、
   未使用曲扱いとなっていても音が数音置かれている程度だったり、
   使用されている曲とほぼ同じだったりする可能性もあります。

   エディタ上の番号→メモリ上の値の対応
    No.01 → 00
    No.02 → 01
    No.03 → 02
    No.04 → 03
    No.05 → 04
    No.06 → 05
    No.07 → 06
    No.08 → 07
    No.09 → 08
    No.10 → 09
    No.11 → 0A
    No.12 → 0B
    No.13 → 0C
    No.14 → 0D
    No.15 → 0E
    No.16 → 0F


------------
2025/10/03
  ようやくWindows11環境に移行しましたが、タスクバーの仕様変更で2段表示とクイック起動が無くなってしまって使いにくく
  何でわざわざ変えてしまうのか?と思いました。
  そしてやっぱりエクスプローラーのフォルダツリーには横スクロールバーが無いんですね…
  なお電GOシリーズはdgVoodoo2併用でとりあえず起動はするようです。(ちゃんとプレイできるかはまだ未確認)

  (以下は個人的なメモ・以前も発生してすっかり忘れてた)
  ePSXeでゲームを起動しても真っ暗のまま落ちる場合
  メニューバーのオプション→CPUオーバークロックの設定が未設定になっているのが原因なので
  x1にチェックを入れる
  ※新規環境への導入後や設定情報を消した場合は確実に発生する?ので特に注意


------------
2025/09/07
  8月にyoutubeに山陽新幹線編の自動運転の動画を上げたのですが、
  元ネタとなる7/13の記事を今まで更新していませんでした。(すみません…)

  ちなみに自動運転と入門編の関係について補足すると、
  自動運転では1段階ずつなめらかにマスコンレベルが変化するのですが
  入門編では指示が出るのは変化が落ち着いてからになっているようです。
  自動運転では停車直前はブレーキが細かく上下して微調整しているのですが、
  入門編ではほぼ一定レベルで停止する指示になるものの、きちんと誤差10cm以内に停まれています。
  これに加え、指示から1段階ずれた状態でも指示で画面が止まらない場合があるのですが
  停車位置・時刻は毎回同じになります。

  このことと、プレイヤー側のマスコン状態が他のモードと別のアドレスになっている事から、
  おそらくプレイヤー側のマスコン状態は指示通りかどうかのチェックにしか使われておらず、
  運転そのものは自動運転のみで行われている(プレイヤーの操作は一切影響しない)と思われます。


------------
2025/08/10
  PS1エミュレーターのDuckStationってPS2のBIOSファイルも使えたんですね。
  ePSXeと違って実機BIOS必須と聞いていて、私にはPS1での吸出し環境が無く
  後でPS3のシステムアップデートファイルから取り出す方法を知ったものの、
  ソフトのインストールやら面倒だったので今まで使っていなかったのですが
  PS2のBIOSを使えると知っていたらもっと早く使っていたのに…

  ※なお、私はPS2-PAR3(無印版)+この方法を使ってDUMPBIOS_USB.ELFを実行して
   PS2実機よりBIOSを吸い出しています。(後から出たPAR3 Ver3.5は標準でELFファイル実行機能があるらしいです)
   現在は薄型PS2+FreeDVDBoot(+吸い出しツール&USBメモリ)という方法でPAR無しでも出来るようです。


------------
2025/07/13
  掲示板での対応で今更気付きましたが、電GO山陽新幹線のATC9999km/hのコードの1行目って
  無くても動くような気がするのですが、もし何かあったら嫌なのでそのままにしておきます。
  確か最初やってた方法で効果が無い場合があって別な方法に変えた記憶はあるので
  その時の残骸なのかもしれませんが…

  このコードを作る時に見つけたATC関連のアドレスですが、
  PS2初期版の場合、(※以降のアドレス情報も全てPS2初期版のもの)
   28C6E0 $28C6E8と同じ値?(使用箇所不明)
   28C6E4 速度計のATC表示値
   28C6E8 ATC制限速度
   28C6EC ATCの段階(下から何段階目かを示す、こことATCの速度パターン定義から制限速度が決まる)
  になっています。(いずれも値は整数値、ATC制限のないフリーランモードでもここに値自体は入る)
  これらのアドレスは毎フレーム書き換えされるのですが、コードではその部分で28C6E4/28C6E8の値を固定しています。
  また27C4A0〜には2byte*11単位(*18種類?)で車種別?のATC速度パターン定義があります。


  また、本作の入門編はマスコンやブレーキが指定された段階に入っていないと画面が止まるタイプですが、
  ATCの速度を変えるとマスコン指示もそれに従って変わります。(ATC9999km/h改造ではマスコン最大指示になる)
  つまりあらかじめ設定したものを固定で出しているのではなく、ちゃんと現在の速度とATC速度を基に計算されているようです。
  この計算する部分を見つけて、その値を現在のマスコン・ブレーキ段階が入るアドレスにコピーするようにすれば
  他のモードで自動運転ができるんじゃないか?と思って調べてみました。

  まずはマスコン指示が出た時にその値を絞り込み検索してアドレスを探しましたが、
  意外にも入門編では他のモードおいて現在のマスコン・ブレーキ段階が入るアドレスに指示される値が直接入り、
  (28C57C:ブレーキ、28C580:マスコン、シリーズ他作品と順番が逆なのは新幹線の運転台に合わせてと思われます)
  現在の状態は別のアドレス(ブレーキ28CB94/マスコン28CB98)に格納されるようになっていました。

  で、入門編の28C57C/28C580への書き込み箇所をエミュレーターのブレークポイント機能で調べてみた所、
  状況によってばらつきはあるものの、アドレス201430から始まる関数の中で行われていました。
  201430の呼び出し元は2箇所あり、そのうちの片方である2013BCは処理をさらに手前に辿っていくと
  17351C〜で「アドレス28C51Cの値が0以外」ならば(2013B0経由で)処理を行うようになっていました。
  この28C51Cは普段は入門編で1になりるのですが(メニューに戻ってきた時点で0に戻る)
  試しに通常の運転モードで1にしてみると、指示が出ることもなく自動運転になりました。
  ※フリーランだと発車時にマスコンとブレーキが同時に入って出発できないので(出発前の演出が無いせい?)
   手動でメモリを書き換えるなどしてブレーキを切る必要あり
   なおフリーランではATC制限が無いが、内部的には制限速度の取得自体は行われるので
   走行〜停車自体は問題無く動作する

  201430へのもう一つの呼び出し元に関してはどういう処理で使われるのかは不明ですが
  まあ今の状態で動くからいいか、ということで今の所はこれ以上の調査はしないつもりです。
  自動運転機能そのものが入っていて、しかも特定アドレスの値を1にするだけでできるとは思いませんでしたが、
  自前で処理を作ったりする手間が省けて助かりました。

  バージョン・機種ごとの書き換えるアドレスは下記の通りです。
  PS2初期版:28C51C
  PS2ベスト版:28F7AC
  Windows版:71660E
  (本格的シリーズ版+アップデート適用後の場合)
  上記アドレスを1にすると自動運転になります。


------------
2025/06/22
  SIRENの音声抽出は掲示板で書いた通り、一部で2つのファイルにまたがるデータがあるので
  ps2_adpcmconv用のリストではなく、単体の抽出・変換ツールとして作っているのですが
  いざ実際に動かしてみると出力にものすごい時間が掛かる上に、
  ムービーの抽出と合わせて容量が約10GBも必要になる(ADPCM音声をWAVに変換すると容量が3倍位になるため)
  結構大きな問題が(今更)発覚しました。
  とはいっても音声が5000以上あるのでps2_adpcmconvだとスクロールが面倒など操作性が悪いので
  本当はタイトーメモリーズの再生ツールのように、ファイルリストとファイル内データの
  2つの選択リストに分けた形の再生機能が付いたツールを作れば
  データを書き出さずに再生できて一番手軽に使えると思うのですが、
  状況的に作るのは厳しいのでとりあえず現状の形(変換のみ)で公開します。
  ※一応、外部の重複データ削除ツールのログを基にして、
   割と数の多い重複データを出力しないようにもしました。

  あと今回気付いたのですが、adpcm.dllが終了フラグが無いデータを変換しようとすると
  終端に余分なデータを出力してしまうというバグが今更発覚しました。
  ※ps2_adpcmconvでは強制的にファイル終端に終了フラグを入れているので
   この問題は発生しません。(多分…)

  他にも掲示板でまだ対応できていない件があるのでこちらも何とかしないと…


------------
2025/05/31
  掲示板でps2_adpcmconvへの対応依頼があったSIRENですが、
  持ってないソフトは出来ない…と思いつつも結局は気になるので買ってきました。

  ファイル構成ですが、SIREN.000〜SIREN.008にメインのデータが512MB($20000000)単位に分割されて格納されている様です。
  この時点で「次のファイルにデータがまたがっている場合がある」場合の対応が必要になる可能性が出てきました。
  SIREN.TBLが格納情報っぽいですが、これはそのまま情報が格納されているのではなく、
  一旦全データをビット反転する必要があります。(解析対策?)
  何でビット反転だと気づいたのか?というと、この時は「これまでの経験から、何となく」ではあるのですが
  根拠としては32bit値(4byte値)の連続としてみた場合、最上位byte(4byte目)にFFが多く、
  ここに入るであろう、開始位置やサイズがそんな大きな値ばかりになる訳がなく、
  (ビットを反転した)00であるほうが自然なので、難読化の為?にビット反転させているのではないかと思いました。

  ビット反転させると、以下のような構造になっていました。
   $00 4byte 'SDT4' 53 44 54 34
   $04 4byte 0F 02 00 00 (=020F)  データ数
   $08 4byte B0 41 00 00 (=41B0)  TBLファイル自体のサイズ
   $0C 4byte 9E A6 79 E7      不明
   $10 4byte 20 00 00 00      ファイル情報開始位置?
   $14 4byte D4 18 00 00 (=$18D4) ファイル名群開始位置

   $20- 4byte*3*n データ開始位置→データサイズ→ファイル名位置の順
           これがファイル数分連続して格納されている

   データ開始位置は$15F90=SIREN.000の先頭となる
   以降、値が1増えるごとに開始位置が$800ずつ後ろになり、
   SIREN.000の終端のあとはSIREN.001の先頭、以降同様にSIREN.002〜SIREN.008と続く
   おそらくここの値はDVD-ROMのセクタ番号での指定と思われる
   (ISOイメージから読み出す場合、単純にここの値*$800の位置から読み出せば良い)
   ファイル名位置は$14のファイル名群開始位置(=$18D4)が起点(=00)となる

  とりあえずこの情報を基にとりあえずファイル単位で切り出してみました。
  前述の「データがSIREN.000〜008の各ファイルをまたぐ時の処理」を作るのが面倒だったので
  イメージ化したISOファイルから読み込むことにしました。
  ムービーはmovieフォルダ、音声はstrフォルダに入っていたのですが、strフォルダの音声が曲者で、
  恐らくステージ単位で使う音声を1つのファイルにまとめてあるのですが
  ファイル内に格納情報的なものは無く、プログラムデータからも見つけることはできませんでした。
  この為、無音を検出して区切ってリストを出力する形にしました。
  さらに大抵の音声はモノラルですが、各ファイルの先頭の方にあるイベント音声と
  途中にあるbgm(といっていいのものかは分からないですが)はステレオなのと、
  bgmは終端ギリギリまで音が続くので無音で区切る処理がうまくいかず、
  ほぼ確実に次の音声が入ってしまうので、この辺りはリストを手動で修正する必要があります。
  (現在、ここの作業をやっている途中です)

  そして内部でのファイル単位で調査してきたので、この結果をSIREN.000〜008の各ファイルに対応した
  アドレスに戻さないといけない&前述のファイルをまたぐ処理を作らないといけないという作業が残っています。
  なので完成にはもう少し時間が掛かりそうです。6月中には公開できれば良いですが…
トップページに戻る