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

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

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


[過去ログ]
 2023年
 〜2022年

[解析情報リンク]
 電車でGO! FINAL PS2版 ダイヤ・車両関連情報(判明している分だけ)



------------
2024/09/05
  ↓の画像表示ツール、セレクト100への対応を進めています。
  セレクト100のゲームデータはSTRDATAにまとめて格納されていて
  格納情報はプログラムデータ(MAIN.EXE)内にあるという形になっています。
  データの格納方法は元々調査済みで、データをゲーム毎にバラすツールを先に作ってあるので
  これを同梱する手もあったのですが、1つのツールで完結した方が楽だと思うので…
  なおコピー不可の作品は作者の方の意向を考えれば閲覧不可にすべきなのかもしれませんが
  Kids!の発売年から考えても25年以上経過していることもあり、結局そのままにしました。

  格納情報は以下の通りになっています。
  ちなみにどうやってこの格納情報のアドレスに辿り着いたかは憶えていません。

  -----
  通常版ではメモリアドレス$8009dc7c、MAIN.EXE上では$8e47cから格納情報がある
  (SuperLite1500版ではメモリ$8009d148、MAIN.EXEでは$8d948から)
  メモリアドレスから$8000f800を引いたものがMAIN.EXE上でのアドレスになる

  1ゲーム分につき88($58)byteの情報、これが収録ゲーム数分だけ続いている
    +$00 4byte	作品名のメモリアドレス(文字は独自文字コード(2byte単位)・詳細は下記参照)
    +$04 4byte	賞の名前のメモリアドレス(これだけフォントが異なる為文字コードも違う)
    +$08 4byte	都道府県のメモリアドレス
    +$0c 4byte	作者名のメモリアドレス
    +$10  2byte	コメント画像のページ数
    +$12- 2byte*n	コメント画像の開始位置(*$800したものがSTRDATA内での開始アドレス)
    +$3a  2byte	使用するゲームデータの数
    +$3c- 2byte*n	ゲームデータの開始位置 領域的には3つまで指定可能?
    +$42- 1byte*n	ステージ毎に使用するゲームデータの番号(データ番号は0から始まる)
    +$4c- 1byte*n	↑のデータ毎の何番目のステージを使用するかの設定(1面:00 〜 5面:04)
            (1データのみの場合は00 01 02...09となっている模様)
    +$56  1byte	1ならDATA SAVE(ゲームデータのコピー)不可
    +$57  1byte	2つ以上のデータを使用する場合、全何面か
	        (1データの場合は常に00、その場合は組み立てデータの設定を参照?)

  ゲームデータのサイズは$1dd90
  グラフィック、組み立て、音楽部分のみ格納されている
  デザエモン+のセーブデータにおけるスコア、コンフィグデータ、チェックサム部分は含まれない

  画像データはTIM形式 データサイズは$2DE20 256色画像 366*512ドット

  2つ以上のゲームデータを使用する場合、タイトルや自機などの設定は1番目のデータが使われ
  ゲームデータが切り替わっても引き継がれる(EASY EDITモードと同等の仕様)

  メモリを書き換えればコピー不可作品のDATA SAVEも可能になるが、
  データを2つ使用する作品の場合、セーブされるのは1番目のデータのみ
  (2番目のデータを保存したい場合データ開始位置も書き換える必要がある)
  またDATA SAVEは未使用曲は書き出されずに空白データになってしまう仕様になっている

  文字コードは2byte単位で最上位bit($8000)が立っていない場合半角、立っている場合は全角
  ソフトで使用する文字しか用意されていないので全ての文字が使える訳では無い

  [タイトル・都道府県・作者名]
  ・半角
   0123456789DEVIL
  'SNGHTMARカシオペアh
  eUltimaForcPCOK-
  YZツラギWgndkB()

  ・全角
  BLASTV京都府朝原邦夫さんR
  EDFNG東石井祐次影狼鹿野善之
  I大阪山岡青年KYCO−M兵庫県
  永江博V群馬佐藤久哲ドラゴンブレ
  ス千葉鈴木啓’H角掛敏春UP福内
  田健超絶闘神タホイザー西村道男x
  plosin埼玉関秀平Z児島森重
  慶三中浩二能力警察!クル愛知達志
  ひかりのなへ行(フェゾ)北海ポテ
  ィサジグォ和歌崇actQur葵ァ
  斉光史宮城阿部吉隆heだるま奈良
  榊稔松竜太デビ賀建宏代黄昏義時空
  バトマシ河本m新潟渡邊正96小勇
  人細等ッリベャ媛清水巌茨植一・川
  智章モウ澤剛むし〜負け犬会岩友彦
  2口俊郷誠紅くれいカツギそっとび
  ミちゃ岐阜勝也W高脇Wゼア鳥取子
  修治0134578おめでうござす
  プ応募パワは「」。王兼片裕華エX
  稲垣守g熊ハ銃天使甲洋介学戦争青
  塚順矢郎鱗装オ広紀静倉方充撃俣康
  手津雄策冒険濱理央飯明辺己橋英ネ
  コや古武術荒横上拓ロ樋ヤ芦源蔵嶋
  db暁日呂祝ゲム邪悪者畠宣安卓紘
  鎌釜幸孝満鬼直樹貴ど旅キ々革命記
  陽捕らわユ笹徳菜魔女娘メ林

  [賞の名前]
  ・半角
  0123456789GRAPH.
  SOUNDIC

  ・全角
  入賞0123456789タイトル
  クリアグランプバス企画テナ選審査
  員奨励佳作
  -----


------------
2024/08/25
  デザエモン+の画像表示ツール、何とか公開できました。
  本当はKids!付属のセレクト100のデータにも対応させたかったのですが
  このペースだと延々と公開できない状態が続きそうなので一旦公開することにしました。


------------
2024/08/06
  7/1で軽く触れたデザエモン+のセーブデータの画像表示ですが、
  最初はこんな感じで、5/21に書いた画像関連でテストに表示していた画像を
  パレットデータに対応させるだけだったので比較的簡単に作れました。
   
  でもこれだと16x16ドット以外のキャラクタがバラバラのままですし、
  どのキャラがその項目で使われているのかが分からないので
  組み立てデータを調べてみることにしました。
  基本的にはエミュレーターで1箇所ずつ変えてセーブ、メモリーカードデータの変化を比較という形で
  やっていますが、さすがに時間が掛かって面倒すぎるので、
  途中からはエミュ用のチートツールのメモリビューアーも併用しています。
  (項目ごとに位置がバラけているものの、格納される値自体は共通のようです)
  この辺りの情報もいつかまとめられたらなと思っています。

  自機やタイトル画像などは単純に16x16単位での画像番号が並んでいるだけなので比較的楽なのですが、
  ザコ敵は一旦64種類(空白含む)の画像を登録し、この登録した0〜63番の画像を並べるという形に
  なっているので処理が少し増えます。
  一番面倒だったのはBG関連で、これをやるにはマップも表示させたいということになるのですが
  ザコ敵同様に一旦画像を登録する形になるのですが(こちらは128種類) 
  実際のエディタでの操作通り、ここから
  ・横16(14+左右の空白)×縦4ライン分を1つのパーツにする
  ・↑のパーツ単位(4ライン単位)でマップを配置
  ・敵表示(これも1ライン単位でのグループを定義して、それを並べていく形)、
  ・ウインドウ内に全体が入りきらないので縮小してマウス操作で切り替え
  …とここだけでやること多く相当時間がかかったうえ、プログラムも非常に長くなってしまいました。

   
  ↑表示情報が増えた分ウインドウも大きくなってしまいました(画像クリックで拡大)
   またエディタ上での表示と一致させるため、左側の画像の並びも変えています

  完全に自分用で作っていたのですが、公開しても良さそうなレベルになってきたので
  すぐでは無いと思いますが、もう少しいじったら配布するかもしれません。


------------
2024/07/01
  デザエモン関係の調査はちょこっとやって終わりのはずだったのですが
  セーブデータの画像を表示できるようにしようとか、
  大きな敵キャラの画像を表示できるように組み立てデータも調べてみようとか
  気になる事が増えていって終わらなさそうな事態に…
  あと、Kids!のセレクト100収録のゲームは作品データをデザエモン+用にメモリカードに
  セーブできる機能があるものの、音楽データがCD-ROM上のデータと一致しない場合があるのですが
  もしかすると未使用(どこにも設定されていない)の曲データは空白データとして
  出力されてしまっているのではという疑惑が出て、さらにやることが増える羽目に…
  →やっぱり未使用の曲は出力してくれないようです。何故こんな仕様に…

------------
2024/06/23
  レトロフリークのカートリッジアダプタ+非公式ツールでSFCのデータ吸出しが出来るそうなので
  (レトロフリーク本体のインストール機能は暗号化されてその本体でしか使えない仕様)
  SFC版デザエモンと共に購入してみましたが、やはりPS版収録のコンテスト作品のデータは
  SRAM70〜73.DATの4ファイルを連結するとSFC版のセーブデータとして使えました。
  なので、長々と書いた5/21のPS版で無理矢理遊ぶ件は必要性が無くなってしまいました…


------------
2024/05/31
  5/21のデザエモン+の件でプレイ動画を投稿したのですが、 → 動画1 動画2
  もらったコメントによると、時間経過で上昇する内部ランク(敵弾の速度などに影響、上限あり)が
  ミスしても下がらない一方で(これ自体はSFCもそうらしい?パワーダウンする分の上限値の減少はあり)
  ステージクリアすると初期値に戻るという情報があったので確認してみたら確かにそうでした。

  この仕様の為、ノーミス・ノーコンティニュであればランクが上がりきらない状態で進める箇所が、
  戻り復活設定やコンティニューで同じ場面をやり直した方がランクが高くなる場合があるという
  妙なバランスになってしまっています。
  もっとも、ノーミスであってもランク上限に達する場面まで来れば
  以降はミスの有無に関係なく同じであり、パワーアップが初期状態なら
  EASY設定であれば10秒未満、NORMALでも30秒ほどで上限に達するので
  大きく気にする程でも無いですが…

  ボスの自機狙い弾の仕様など、SFC版と処理の違いが多い様ですが、
  十分な開発期間が取れなかったのか、もしくはPS版はSFC版とプログラム担当の方が違うので
  (詳しい資料が残っていないなどで)細かい仕様までを再現できなかったのかもしれません。

  ちなみにランクと関係すると思われる値(ランク値そのものかは不明)は
  $14E113(1byte)、$14E1EA(2byte)の2箇所あり、前者が敵弾の発射間隔、
  後者が敵弾の速度に関係していると思われますが、上昇量が比例しているのでどちらかだけを
  見ても問題ないと思います。
  ※アドレスはPS実機では$80xxxxxxのような形の様ですが、上位の80の部分を省略しています

  なお下記の様に、ランク値の上限自体は隠し難易度のDIFFICULTよりもHARDの方が高いです。
  ただ、DIFFICULTでは敵を倒すと大量の撃ち返し弾が発生するのでそれを考量した調整と思われます。
  (HARDとは難易度を上げる方向性が違うといった方がいいでしょうか)
  ザコ敵が出ない場合のボス戦ではHARDの方が難易度が高くなるといえます。

  アドレス $14E1E3  $14E1EA
  上昇量  2秒毎に+1 1秒毎に+4 ※あくまでも大体の時間(厳密な調査はしていません)
  初期値  $1C    $200  ※各ステージ開始時にこの値に戻る
  難易度毎の上限値(基本値)
  EASY    $20    $220 (8秒) ←ランクが上がりきるのに掛かる時間
  NORMAL  $2C    $280 (32秒)
  HARD   $44    $340 (80秒)
  DIFFICULT $34    $2C0 (48秒)
  パワーアップによる上限値上昇
  (初期状態を+0とする、ミスした場合は初期状態(+0)に戻る
  1段階毎  +4    +$20  (最大で8秒*3) 
  ステージ進行による上限値上昇 ※1面を+0とする
  1面毎   +1    +8   (最大で1秒*(ステージ数-1))

  ※他に変化要因があるかは未調査
   パワーダウンで上限値が減少して現在のランク値よりも低くなった場合、
   ランク値は上昇時よりも速いペースで減少していく
   パワーアップ・ステージ番号で変化するのは「上限値」で
   ランク値そのものが変化するわけではない点に注意

  ちなみに前後のアドレスは以下の様になっていました。
  $14E1E4 01で時間でランク上昇、00だと上限まで一気に上がる(後者はボステストなどで使用)
  $14E1E6 難易度設定(00-03)
  $14E1E8 パワーアップ段階(00-03) 4以上にすると攻撃が出なくなる
  $14E1E9 01だと敵が弾を撃たなくなり、当たり判定も無くなる(ゲームオーバー時に使用)


------------
2024/05/25
  デザエモン+に入っているコンテスト受賞作品の「JUSTICE」ですが、
  面数は通常通り6面となっているものの、実際にはデータが2つに分かれていて
  データ1に1面、5面(実質ラスボス)、6面(エンディング)、データ2に2〜4面のデータが入っています。
  (ちなみに、6面がエンディング演出の面となっているせいか、全ステージクリア後の
   GRAPHIC/MUSIC/THANKSのエンディング表示が無いという特殊な仕様になっています)
  データが分かれているのはソフト1本ではグラフィック領域が足りなかったからと思われますが、
  1面・5面道中で敵が殆ど出てこないのも同様の理由なんでしょうか。
  なお同作者の「Night Mare」(デザエモンKids!付属のセレクト100に収録)も内部的にはデータが2本に分かれています。


------------
2024/05/21
  ※今回、日記的な文章と説明文章が合わさって長くて読みづらいです。すみません。

  全然書き込みをしてませんでしたが、
  2か月程前にPS版「デザエモン+」でちょっと変なことをしてました。

  このソフト、前作にあたるSFC版のコンテスト受賞作品(一部除く)がプレイできるのですが
  それらしきデータのファイル名が「SRAM〇〇.DAT」となっていたので、
  これはもしかしたらSFC版のセーブデータ(SRAMデータ)がそのまま入っているのはないか、
  もしそうならこれらのファイルをネットで配布されているSFC版のセーブデータに差し替えて
  (ISOイメージを書き換えてPS1のエミュレータで)遊べるのではないか
  …と以前から思っていたのですが、SFC版のセーブデータは1Mbit(=128KB)らしいのに対し、
  こちらは32KBのファイルが6つあり(SRAM70、SRAM71、SRAM72、SRAM72R、SRAM73、SRAM73R)
  SRAM72と73は名前にRが付くものとそうでないものの2種類があるのが怪しくは思うものの、
  それぞれの関連性が良く分からず、一旦は諦めていたのですが改めて調べてみました。

  PS版の実行ファイル(DEZA.EXE)内の文字列を見る限り、
  使用されているのはSRAM70、71、72R、73Rの4つ(=計128KB)で、
  RのつかないSRAM72.DAT、SRAM73.DATは読み込まれないようです。
  このことから、恐らくRが付かない方はSFC版用の元データで、PS用に変換したものがSRAM72R(73R).DATと思われます。
  また、SFC版の隠しメッセージに入っているセーブデータのアドレス情報と照らし合わせると(参考)
  スコア情報やチェック用の文字列の位置からして、(名前にRのつかない)SRAM70〜73.DATの方は
  SFC版のセーブデータを単純に32KB単位で分割したもののようです。
   ※環境が無いので未確認ですが、(そもそもその環境が無いのでこんなことをしているのですが)
    SRAM70〜73.DAT(72/73はRが付かない方)の4ファイルを連結すれば
    SFC版のセーブデータ(SRAMファイル/拡張子.srmなど)になると思われます。
    元から入っているコンテスト受賞作品もそうですが、PS版はSFC版とは動作や音が異なる為、
    (エミュレーターなどで)SFC版でプレイした方が作者の方の意図通りになるかと思います。

  問題となるSRAM72/73 → 72R/73Rへの変換ですが、
  バイナリエディタで見る限り全然違うデータに見えるので作業が止まっていたのですが
  この部分はグラフィックデータの様なので、無理矢理画像として表示してみれば
  (運よく画像っぽいものになれば)手掛かりが見つかるかもしれないと思いつき、試してみることにしました。

  本作の仕様から16色=4bitデータと予想し、まずはPS版用に変換されたSRAM72R.DATで
  4bit画像として表示してみたらあっさりと表示できてしまいました。
  画像サイズは256*256で、1byte(8bit)=横2ドット分で下位4bitが左側、上位4bitが右側のドットに対応しています。

  ※以下の画像は隠しサンプルのDAIOH GALE・SFC版仕様(SAMPLEフォルダ)のものです。
   (パレットは分からないのでとりあえず白黒の階調にしてあります、意外とこれでも判別できます)
   

  一方、同じ処理を名前にRの付かないSRAM72.DATでやったら
  (予想はしていましたが)全然画像に見えない状態になりました。
   
  32*32のブロックで分かれている感じで、かつ1つ飛ばしで似たようなパターンが出てくるのですが、
  答えが分かった今ならともかく、この時はどうすればいいか分かりませんでした。

  4bit単位で出てくる数の分布(0〜Fの分布)が両データで異なるものの、
  1bit単位でビットが立っている数は一致しており、bit単位で何らかの並び替えをすればいいと思うのですが、
  連続した4byteから同じ位置のbitを取り出す、2bit*2で取り出すなどしても
  うまくいかず止まってしまいました。
  (タイトル画像っぽいものが(おかしいながらも)見えてきたので、
   その過程で8*8ドット単位のブロックになっている(SRAM72R.DATは単純に横方向に連続)、
   SRAM72R.DATと違い128*512ドットという点までは分かったのですが)

   

  仕方が無いのでSFCの画像データ・VRAM構造に関して調べてみました。
  その結果、下記のサイト内に答えがありました。

   SNES Graphics Infomation(SNES Graphics Formatの部分)
   ※下記の8*8 2bit画像についてはこちら(SNES Assembly Adventure 03: Creating Your First Sprite)の方が分かりやすいかと思います。

  SFCの画像の最小単位は8*8 2bit(4色)=16byte($10byte)のデータで、
  2byteで横8ドット分を表しますが、連続した2bitを取るのではなく、
  1byte目・2byte目のそれぞれから対応した同じ位置のbitを1bitずつ取るような形になっていて
  (左端なら最上位bit〜右端なら最下位bit、1byte目が2bit画像の下位bit側になる)
  4bit(16色)画像の場合、この8*8 2bitの画像を2キャラ分を合わせて1つの4bit画像になるようです。
  (1つ目のキャラが4bitデータ(色番号)の下位2bit、2つ目のキャラが上位2bitになる)

  一番左上のドット(X=0,Y=0)の場合、
  アドレス$11の最上位bit(bit7) ↑4bitデータの上位bit側に対応
      $10の最上位bit
      $01の最上位bit
      $00の最上位bit の各bitを合わせて4bitデータになります。
  (右隣のドット(X=1,Y=0)の場合、最上位の一つ下の位(bit6)から取る、
   一つ下(Y=1)の場合、アドレスが2byteずれて$13,$12,$03,$02になる)

  SRAM72.DAT、SRAM73.DATもこの形式になっていて、無事画像を表示することに成功しました。
   
  あとはこの128*512の画像の下半分を右側に移動して256*256ドットの画像とすることで
  SRAM72R.DAT、SRAM73R.DATと同等になります。

  ここまでたどり着くのにかなり時間が掛かりましたが、画像形式が分かったので
  ネットで配布されているSFC版のセーブデータ(結局ごくわずかしか見つかりませんでしたが…)を
  分割および画像変換をして、ISOイメージ内のコンテスト作品データへ上書きすることで
  PS版+エミュレーターで動作させることに成功しました。

  なおISOイメージの書き換えに関しては、以前別件でPSのISOイメージからXAファイルを取り出すという
  プログラムを作ったことがあり、それの読み込み先・書き込み先を逆にするだけなので
  こちらに関しての作業は殆ど必要なく、こんな所で約に立つとは思いませんでした。
  (同時に、フォルダ名の処理にミスがあったことが発覚して今回修正しましたが)

  ※下記サイトの(SFC版用の)セーブデータを使っています。
   Gamers' HideOut - Dezaemon (SFC/JP) Original Game "Shooting Monner"
   ひろーみんの○○になるもん! - デザエモンのBOSSという自作ゲームデータ配布について 

     
     


  追記:上記文章が読みにくいのでまとめると、

  プレイ可能なコンテスト受賞作のデータは下記の6ファイルがある
   SRAM70.DAT、SRAM71.DAT、SRAM72.DAT、SRAM73.DAT
    → SFC版のセーブデータを32KB単位で分割したもの
   SRAM72R.DAT、SRAM73R.DAT
    → グラフィックデータであるSRAM72.DAT、SRAM73.DATをPS用に変換したもの

   SRAM72.DAT / SRAM73.DAT は連続した8*8ドット 2bit(16byte)の画像を2つ重ね合わせた4bit画像が
   横に16セット、縦に64セット分並んだ128*512の画像
   8*8 2bitの画像ブロックは1つ目のブロックが4bit画像の下位2bit、2つ目が上位2bitに対応
   各ブロックは2byteで横8ドット分で、1byteずつ横8ドット分の色情報の下位bit、上位bitに分かれている
   (下記の例を参照、各bit位置がそのまま横8ドット分に対応、左端:最上位bit〜右端:最下位bit)
   これが縦8ドット分並んだ16byteのデータになっている

   例)横8ドット分の色情報(2bit、0〜3)が
      0 0 2 2 3 3 1 0  の時、それぞれの値をbit単位で分割して
       ↓↓↓↓↓↓↓↓
      0 0 0 0 1 1 1 0 下位bit分 → 16進数で$0E
      0 0 1 1 1 1 0 0 上位bit分 → 16進数で$3C
     この場合のデータは$0E、$3Cとなる
     データから各ドットの色情報に戻す時はこの逆の手順を行い、
     16byte先にあるもう1つの画像ブロックと合わせて4bit画像になる

   SRAM72R.DAT / SRAM73R.DAT は 256*256の4bit画像
   1byte=8bitなので1byteで横2ドット分(下位4bitが左側、上位4bitが右側のドット)
   下記のSFC版のデータとは違ってブロック単位ではなく単純に横方向に連続しており、
   下半分の画像(128*256ドット分)が右側に移動して256*256ドットになっている



------------
2024/03/24
  PS2のTrain Simulatorシリーズの「東急」と「京成・都営・京急」の2作品の音声データですが、
  データ名の拡張子が.ADPながら、「RIFF」で始まるので(WAVファイルと同じヘッダ形式)
  そのまま聞けるのかと期待したのですが、PS2とは違う形式のADPCMデータ?のようで断念…
  TS Realシリーズ(山手線・京急)と同じかと思っていたのですが考えが甘かったようです。
トップページに戻る