zaralaのチラシの裏・掲示板 @ Z-Z BOARD

過去ログ10 2025/9/7 11:03

▼zarala
>>通勤急行さん
>特定の改造コードを指定ボタンで有効化、または無効化する方法を教えていただけないでしょうか?

まず前提条件として改造コードをある程度自分でいじることが出来る程度の知識が必要があります。

条件分岐コード(Dコード・Eコード)とボタン状態が格納されるアドレス(パッドアドレス)を組み合わせる形になります。
(コード自体の用法は「pcsx2 チート」などで出てきます
これに特定のボタンを押した時に有効にするコードと無効にするコードを作ります。
山陽新幹線編の初期版のパッドアドレスは407202で、値はマイナス形式です。
(パッド値の形式については↓を参照してください。)
http://zarala.g2.xrea.com/code/memo/pad.html#pad_b

例えば自動運転(アドレス28C51C)をL2+←(パッド値:FE7F)でON(1)、L2+→(FEDF)でOFF(0)にしたい場合、
patch=1,EE,D0407202,extended,0000FE7F
patch=1,EE,2028C51C,extended,00000001
patch=1,EE,D0407202,extended,0000FEDF
patch=1,EE,2028C51C,extended,00000000
のような形になります。
(動作するかはテストしていないので動かなかったらすみません)

有効化するコードはパッド値との条件分岐コードの後に通常のコードをくっつければいいと思います。
(複数行ある場合は条件分岐コードのスキップ行数の設定忘れに注意)

ただし、0〜2コードでプログラム部分以外の値を固定し続けるタイプのコードの場合、この方法だと押した瞬間しか有効化・無効化できない場合があるので
パッド値の条件分岐で使っていないアドレス(100000より前が無難?)の値を書き換える(有効化のボタンで1に、無効化で0に戻す)
実際の値を書き換えるコードでは↑のアドレスが1の時だけ実行するように
条件分岐コードを組み合わせる、といった対応が必要になります。

無効化は基本的には元の値に戻せばいいので、事前にエミュレーターのメモリビューアーを見るなどして有効化前の値を憶えておいて、通常コードのデータ部分を元の値に書き換えるコードにすればいいと思います。
ただし、有効化前でも値が変化するアドレスの場合や、「プログラム書き換えの結果、別のアドレスの値が書き換わることによって効果が出る」ようなコードの場合はこれだと不完全なので、
その場合は個別に調査して対応する必要があります。

なおパッドアドレスの情報が無い場合はエミュレータのメモリサーチ機能を使って調べます。
最新版のPCSX2の場合は以下の手順で行います。
・メニュバーの「ツール」→「高度な設定を表示」を有効にする
・「デバッグ」→「デバッガーを開く」でデバッガー画面を開く
・「memory search」タブでメモリサーチ画面を表示
 (なければデバッガーのメニュバーのWindows→Add Another→Memory Searchを選択)
・Typeを2Bytes(16Bits)にする
・ゲームを実行中、特定のボタンを押しながらエミュを一時停止(Escキー)
・そのボタンのパッド値をValueに入れてサーチ(search)(マイナス形式の場合見つかる可能性が高い)
・別のボタンを押しながら絞り込みサーチ(Filter Search)を繰り返してアドレスを特定 Up 9/7 11:03


▼zarala
>>EXさん
自動運転の動画へのリンク、ありがとうございます。
先に日記に書いてはいたのですがサイト自体を更新していなくて情報不足になっていました。
>例の自動運転モード、Type2コントローラ接続時(を再現したエミュ)に有効化してみたところ、マスコンの5段制限を無視した挙動になっていました。
>入門編ではちゃんと接続したコントローラの段数に応じたマスコン指示が出ますが、そっちは自動運転とは別の処理で計算されているっぽいですね。

推測ですが、入門編でも内部的には元々の新幹線のマスコンレベル数で処理されていて、指示を出す段階で各コントローラ用に調整しているかと思われます。


▼通勤急行
連続投稿すみません。。。

特定の改造コードを指定ボタンで有効化、または無効化する方法を教えていただけないでしょうか?(個人的には自動運転を停車時の時だけ無効化できれば完璧なんじゃないかと思いました!他にも色々とオンオフしてみたいです。)

また、車両を1両単位で変更するにはどうしたらいいんでしょう?


▼通勤急行
Re:EXさん
お恥ずかしながらこちらの動画拝見したことありませんでした…。
大変有意義な情報ありがとうございます!

管理人様も大変貴重な動画投稿ありがとうございます!
早速試してみます♫

実質ATOなんですね✨
山陽新幹線にATO導入の日は10年以内に来るのでしょうか…。


▼EX
Re:通勤急行さん
自動運転のコードについては管理人様の動画に掲載されています。

走行車両の変更に関しては触ったことがないので分かりません。


▼通勤急行
Re:EXさん
ここのスレを過去から拝見しました。
電車でGo!山陽新幹線編でいくつか気になる点がありましたので知ってたら教えてください!

自動運転モードはどのようなコードで実現できますか?
Youtube動画にあった走行車両を1両単位で変更するにはどうしたらいいですか?


▼EX
例の自動運転モード、Type2コントローラ接続時(を再現したエミュ)に有効化してみたところ、マスコンの5段制限を無視した挙動になっていました。
入門編ではちゃんと接続したコントローラの段数に応じたマスコン指示が出ますが、そっちは自動運転とは別の処理で計算されているっぽいですね。
https://i.imgur.com/974tN5X.png


▼zarala
Re:zaralaさん
書き忘れましたが、このコードはPS2ベスト版用・PAR復号化形式のコードです。


▼zarala
元の書き込みが消えてしまったようなのですが
電GOプロ2で音楽鑑賞室(サウンドテスト)で聴けるもの以外の音声を聞く方法は無いか?といった趣旨の書き込みがあったと思うのですが
サウンドテストの処理をいじって全ファイルからファイル番号を直接指定して再生できるコードを作ってみました。
(ただし、音声以外のファイルも指定できてしまう(ノイズ音になる)ので注意)
他の書き込みから順番に対応していたら遅くなりすみませんでした。
※運転士の音声・発車メロディ・車内チャイムなどは効果音(内蔵音源)扱いでこのコードでは対応していません。
A0193380 3C020049
A01933B0 8C4257D0
A01933B4 24040064
A01933B8 00822018
A01933C0 00902021
A0193258 28410008
A02AC530 00000021
A02AC534 00000064

このコードを有効にすると、音楽鑑賞室で音声の再生時に
「音楽の番号×100+音声の番号」のファイル番号のデータを(音声データでなくても)無理矢理再生します。
(番号が999までしか表示できないのでこのような仕様になっています。なおカーソルが「音声」に合っていないと音声は再生できません)

ファイル番号はWindows版と共通っぽいので
Windows版と同じであれば音声の番号は
164〜608、627〜657、750〜1300、1643〜1722、1795〜3217
になると思います。ただし完全に一致しているかの確認は取れていません。

Windows版のファイル名との対応
http://zarala.g2.xrea.com/code/train_pro2_voicelist.txt
「番号」は指定するファイル番号、
「16進」はファイル番号を16進数に直したもの、
(このコードで使う分には不要な情報なので特に気にしなくて大丈夫です)
「サウンドテスト」はコード未使用時にその音声を再生できる番号です。
(通常再生できないものは-1) Up 7/6 13:49


▼通勤急行
Re:zaralaさん
ありがとうございます!大変感激です。
本当にZaralaさんには頭が上がりません。

> なお合格点の件とATC速度に関してはメモリサーチ機能のあるチートツール(メモリプロセスエディタ)を使って該当値のアドレスを探し、
> pcsx2のデバッガのブレークポイント機能(特定アドレスの実行や読み書き時に一時停止させる機能)とPS2DIS(逆アセンブラ)を使ってプログラム内で該当アドレスを読み書きする箇所を探して処理を書き換える、という手順でやっています。
詳しくありがとうございます。大変勉強になります。
かなり大変な手順で調査とご作成、ありがとうございます。
該当値のアドレスを探し出す(絞り込み)がなかなか大変で挫折してしまいましたが、もう一度チャレンジしてみます。


119

掲示板に戻る