トップページ > 記事閲覧
【改造依頼】 Javardry THE KING 【SSG】
投稿日 : 2016/07/13(Wed) 07:46
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
対象ソフトタイトル
Javardry THE KING
Javardry THE KING 本体 Ver2.00-D*
*ミス修正ファイルその11*(2016/04/10更新)

形態
フリーソフト

ソフトの開発エンジン等
JAVA 8u91(32bit)(※64bit版JAVAは不可。SpoilerALが64bit未対応の為)
Oracle Java Archive

環境 Win7x64

データフォーマット
SSGファイル

改造内容
HPや魔法回数の変更等…

SSGが完成されました
>>1

JAVA(u101)(u102)対応はこちらに
>>31
amateurさん、解析&制作ありがとうございます。

現在の最新更新はこちらです。
>>40
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.1)
投稿日 : 2016/07/13(Wed) 22:20
投稿者 amateur◆kR..xsXL6RU
ID情報 : IzIlm2ag5v77B79JQnhL.1
参照先
一応完成版となりました(7/17)
動作環境は下記のとおりです。JavaやJavardry本体のVerが異なると動かないと思います。
--------------------------------------------------------
ゲームのVer:2.00-D(「ミス修正ファイルその11」適用)
Javardry本体のVer:0.331
JavaのVer:(32bit版) 8 Update 91 (8.0.910.14)
OS:Win7(64bit)
※上記以外での動作確認はしていません。
--------------------------------------------------------
(重要)
このSSGが動作するには、
「SSGを投稿したり、ゲーム解析について語るスレ」の (No.4)で
変態紳士さんがアップされている、SpoilerAL本体の修正パッチ適用が必要です。

(追記)
添付ファイル(SSG)を差し替え(7/17 17時ごろ)

記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.2)
投稿日 : 2016/07/13(Wed) 23:38
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
制作ありがとうございます。
助かりました!(全滅したパーティを救うために向かったパーティがまた全滅するという2重遭難に陥ってまして・・・)

Javardryのバージョンだけ最新のJavardry_v0362へ更新してあったので…同梱されてるバージョンへ戻した所OKでした。
ちょっとした事でアドレスがずれるのですね@@;

解析お疲れ様です
このポインタの数は本当にスゴいです。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.3)
投稿日 : 2016/07/14(Thu) 01:54
投稿者 amateur◆kR..xsXL6RU
ID情報 : tvoyxW.1lgr7EnfgYM8nB/
参照先
>>2
ポインタが多すぎて疲れると臨時板の方で愚痴っていましたが、
一応、ポインタの数が少なくて済む経路がありました。
最初は、各種データベース・ステータス等・キャラ作成時データ、
の3つでそれぞれベースアドレスが違うと思い込んでいたのですが、
実は、どのベースアドレスから辿っても、途中で全く同じアドレス(各データへ分岐するポインタ群の基準アドレス)を経由することに気付きまして・・・

各種データベースのものだと思っていたベースアドレスからの経路がどうやら全ての項目で使えるようです(この経路が一番ポインタが少なくて済む)
今のところ、共通で使える経路が3つあって、どれでも良さそう?な感じで、どれが正解かは分かりません(謎)

各データへ分岐するポインタの基準アドレスがあるっていう特徴は、Unity製と似たような感じですね。
あれも、一つの基準アドレスからポインタがずらっと並んでいたので。
ポインタが連続して並んでいる領域があって、ポインタ一つずつチェックすれば、芋づる式に分かるってのも似てます。

ついでに、文字列の格納方法も似たような感じです(Unicodeなのも一緒)。
文字列の格納方法は、ポインタ → +0x8 にポインタ → (+0x8が文字数)+0xC から文字列格納っていう構造です。
上記の途中の「+0x8 にポインタ」の部分を省略したのがUnity製の文字列格納の構造でした。
そのおかげで、あっちのスレのN0.1の記事にアップしたUnity製用のリスト作成ファイル等を少し修正すれば使えました。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.4)
投稿日 : 2016/07/14(Thu) 07:24
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
amateurさん詳しい解析ありがとう。

>使える経路が3つあって、どれでも良さそう?な感じで、どれが正解かは分かりません(謎)
ほむほむ。
環境依存しそうな場合使えそうですね。
しかし、よく調べましたね脱帽です。

>文字列の格納方法は、ポインタ → +0x8 にポインタ → (+0x8が文字数)+0xC から文字列格納っていう構造です。
確かにunityに似てます。

それと、なんとか無事帰還しました。
ありがとうございます。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.5)
投稿日 : 2016/07/14(Thu) 22:27
投稿者 amateur◆kR..xsXL6RU
ID情報 : SMaiYoJt.q5pf7Mu96G9V1
参照先
少しだけ修正した分を>>1で差し替えアップしました。
修正内容は、
・「状態異常」の項目が完成(これで全部の状態異常を正常に戻せる、と思います)
・「ステータス上限解除」(サーチ補正要)について、「種族上限値解除」を追加。
これで、種族上限値(各種族の初期特性値+15)を超えても強制修正されない、と思います。
ただし、あくまで一時データですので、セーブデータをロードすると、元に戻る仕様です。

セーブ用データ部分のステータス書換えも近々実装予定ですのでもう少しお待ちください。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.6)
投稿日 : 2016/07/14(Thu) 22:53
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
更新ありがとうございます。
これは大作SSGですね。

(報告は「雑談スレ」に…。)
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.7)
投稿日 : 2016/07/15(Fri) 21:37
投稿者 amateur◆kR..xsXL6RU
ID情報 : KYWosI7Yn2TXRdUEb1i.e/
参照先
>>1のSSGを更新しました。
(更新内容)
・変態紳士さんのSpoilerAL修正パッチの最新版への対応
・「ダンジョンマップ踏破フラグ」につき、「一時的データ」と「セーブ用データ」の二つに分離
なお、更新前に実装していたのは「一時的データ」のみですので、実質は「セーブ用データ」の追加です。
両者の相違は、
「一時的データ」:ゲーム上で即時反映されるが、SSGによる書換えだけではセーブはされない
「セーブ用データ」:セーブはされるが、ゲーム上で即時反映されないので、一度リセット等してロードする必要あり
となります。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.8)
投稿日 : 2016/07/16(Sat) 02:06
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
>>7
amateurさん更新ありがとうございます。
全てのMAPが埋まりました。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.9)
投稿日 : 2016/07/17(Sun) 01:21
投稿者 amateur◆kR..xsXL6RU
ID情報 : cKe8XuGH3zP5.HhAB8w/m1
参照先
>>1のSSGを更新しました。
(更新内容)
・「各キャラのステータス」に「セーブ用データ」を追加
  ※ 更新前に実装していたのは「一時的データ」
・「各キャラのステータス」の「一時的データ」に、「特性値の補正値」と「補正後の特性値」を追加。
  「特性値の補正値」:この値 + 素の特性値 = 括弧内の値
  「補正後の特性値」:特性値の括弧内数値。デフォルトでは99が上限(上限解除の機能もあり)

《 「一時的データ」と「セーブ用データ」についての詳細説明 》
「各キャラのステータス」と「各パーティのデータ」、「ダンジョンマップ踏破フラグ」の各項目については、
「一時的データ」と「セーブ用データ」の2種類が存在します。
「セーブ用データ」は、こちらの項目から書き換えても、ゲーム上で即時に反映はされません。
一度、メニューを開閉する等してセーブデータに記録してから、
「R」キーでリセットした後、再開すると書換えが反映されていると思います。

なお、「一時的データ」の方は、書換えで即時にゲーム上で反映されます(メニュー開閉等で画面更新は必要)が、
こちらを書換えるだけでは、セーブデータに反映されません(リセット後に再開しても書換えた部分が元に戻ります)。
ただし、書き換えた後に当該項目が「ゲーム上のプログラム処理」(戦闘等でEXPや所持金が増える等)で変動した場合は、
その変動後の値がセーブに反映されるようです。
ただ、キャラの種族や性格・性別等のゲーム上で変動しない項目は、
「ゲーム上のプログラム処理」で変動させることができないため、
「一時的データ」で書き換えてもセーブデータに結局は反映されません。
したがって、本来ゲーム上で変動しない項目or変動させるのが困難な項目は、
「セーブ用データ」の方を書き換えてください。

色々書きましたが、面倒ならば「セーブ用データ」を書き換えてから、「R」キーでリセットした後に再開すればOKです。

なお、「各パーティのデータ」の中の、「現在地のダンジョンID」の項目については、
「一時的データ」を書換えても即時反映はされません。
「セーブ用データ」の方の「現在地のダンジョンID」を書き換えた後、
中断や「R」キーでリセットした後に再開すると、パーティのいるダンジョンが変わっていると思います。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.10)
投稿日 : 2016/07/17(Sun) 08:44
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
amateurさん
機能強化あり〜。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.11)
投稿日 : 2016/07/17(Sun) 17:48
投稿者 amateur◆kR..xsXL6RU
ID情報 : AFINlN1HMCmOtRG/Iqyf4.
参照先
>>1のSSGを更新しました(一応の完成版)。
(更新内容)
・「各パーティのデータ」の「セーブ用データ」に、「各魔法効果」を追加(「一時的データ」には無い項目あり)
・「商店の各アイテムの在庫数」追加(「一時的データ」と「セーブ用データ」の両方)

「各パーティのデータ」の「各魔法効果」についての補足を。
「保護」(AC低下)や「命中」(命中修正)等の各キャラのステータスが修正される効果に関しては、
各キャラで装備し直す等してステータスの再計算(ゲームプログラム処理)が必要です。
オススメは、「ワイドヒーリング」等の全体回復呪文を使うことです。
この方法なら全員のステータスが再計算され、「保護」や「命中」等によるステータス修正が全員に反映されます。
>>9に書いたとおり「セーブ用データ」を書き換えてからリセットした後に再開すれば無問題なんですけどね。

取り敢えず、これで一応の完成版とします。
各種データベースについては、種族の初期特性値や装備制限解除を除き手付かずですが、
これについては、一度クリアした後、公式のリンク先から、
クリア時に表示されるパスワードを入力して生のゲームデータをDLし、
同梱(Javardry公式からDLでも可)のエディターで好きなように弄ってください、ということで・・・
(臨時板でも書きましたけど、アイテムデータ等は文字列で格納されている等、厄介な仕様なのでSSG化は難しいのです・・・)

次やるとしたら、Javardry本体を最新版にバージョンアップして、アドレス修正等くらいですかね。
Javardry本体のVerが異なると、SSGが使えないそうなので(Javaの更新でも使えなくなりそうですが・・・)
まあ、そのアドレス修正が面倒そうなんですけど・・・
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.12)
投稿日 : 2016/07/17(Sun) 18:40
投稿者 amateur◆kR..xsXL6RU
ID情報 : ckBO1IaPJ0EDLczDPlo.O1
参照先
「特性値の上限解除」の項目についての補足を。
上記項目(サーチ補正適用が必要。項目を選択すれば勝手にサーチが始まる)をON(下位項目の一括書き換え可能)にすれば、
特性値(補正後の値を含む)の上限(99)と、種族毎の上限(初期特性値+15)が解除され、
強制的に上限値に修正されることは無くなるのですが、
このゲームはセーブデータが1個しかなく、ゲームを起動した瞬間にセーブデータがロードされ、
同時に、特性値が強制的に上限値に修正されてしまいます。
つまり、ゲーム起動後に「特性値の上限解除」の項目をONにしても、システム上、間に合わないのです。

じゃあ、上限値超えた特性値にするには、ゲーム起動する毎に特性値を書換え直す必要があるのか、となりそうですが、
実は、これについても対処法が存在します。
方法は、
@ ゲーム起動「前」に、特性値が上限を超えたセーブデータ(dataフォルダ内にある「save.bak」と「save.dat」)を別の場所にバックアップする。
A ゲーム起動後、SSGの「特性値の上限解除」の項目を全部ONにする(この時点で、特性値が強制的に上限値に修正されている)
B 上記@でバックアップしたセーブデータを、元の場所(dataフォルダ内)に上書き保存する。
C 上記Bの後、現在の状態がセーブデータに記録されない内に(メニューの開閉等をしないこと!)、「R」でリセットする。
D ゲームを再開すると、「特性値上限解除」の機能がONになった状態で、特性値が上限を超えたセーブデータがロードされているので、
  結果的に、特性値が強制的に上限値に修正されるのを回避できる、ということです。
  ただし、稀に「特性値上限解除」で書き換えるアドレスがリセット等で変動して「特性値上限解除」機能が無効になる場合がある?ようなので、
  その場合は、ゲームとSpoilerAL両方を終了して、上記@からやり直してください。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.13)
投稿日 : 2016/07/17(Sun) 19:19
投稿者 amateur◆kR..xsXL6RU
ID情報 : ckBO1IaPJ0EDLczDPlo.O1
参照先
>>12に書いた方法は、元のセーブデータが、キャラ(パーティ)が街の中にいる状態でゲームを終了した場合の方法です。
元のセーブデータが、キャラがダンジョン内にいる状態でゲームを終了した場合ならば、下記の方法でもOKのようです。
@ ゲーム起動後、タイトル画面でSSGの「特性値の上限解除」の項目を全部ONにする(この時点で、特性値が強制的に上限値に修正されている)
A 上記@の後、「ゲーム開始」してから、即座に「R」でリセットする(現在の状態がセーブデータに記録されない内に。メニューの開閉等をしないこと!)。
B ゲームを再開すると、「特性値上限解除」の機能がONになった状態で、特性値が上限を超えたセーブデータがロードされているので、
  結果的に、特性値が強制的に上限値に修正されるのを回避できる

この方法ならば、わざわざセーブデータのバックアップを取り、元に戻すという作業が不要なので、
面倒ならば、ダンジョン内でゲームを終了するようにすれば良いかと思います。
(システム上、セーブデータが1個しかなく、戦闘終了・メニュー開閉等で自動セーブという仕様上、セーブデータのバックアップ自体はやっておいた方が良いでしょうが)

なお、素の特性値上限(デフォルト設定では99)は、128以上にすることは不可能です(128以上は、符号有りでマイナス値と扱われるため)。
もっとも、>>9に書いた「補正後の特性値」は、「特性値の上限解除」機能により、
128以上にすることは可能(「特性値の補正値」自体には元々上限値なし)ですので、
実質上は、特性値を128以上にすることは可能です(ただし、表示上は問題なくてもオーバーフロー起こす可能性はあるかも?)。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.14)
投稿日 : 2016/07/18(Mon) 00:17
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
>・「商店の各アイテムの在庫数」追加
これはスゴい。ありがとう御座います。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.15)
投稿日 : 2016/07/18(Mon) 01:00
投稿者 amateur◆kR..xsXL6RU
ID情報 : en6H560nCAslCiYhic6y6.
参照先
アイテムの在庫数は、実はかなり簡単に実装できました。
ここまで来ると流石に「一時的データ」と「セーブ用データ」の2つあるんだろうな、と予想できましたし。
検索結果が最終的に2つ残り、メモリ上の値を書き換えてゲーム上に反映する方が「一時的データ」、
メモリ上の値を書き換えてもゲーム上に反映しない方が「セーブ用データ」なんだろうな、と。
で、よく見ると両方とも、これまでの解析中で見覚えのある領域でしたので、ポインタもあっさり判明。
そして、既に作っていたアイテムリストを流用で呆気なく終了という感じです。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.16)
投稿日 : 2016/07/20(Wed) 01:04
投稿者 amateur◆kR..xsXL6RU
ID情報 : HRD3yau4iog6f9AaW597K1
参照先
>>1でアップしたSSGの中で、
各パーティの「魔法効果」の「歩数」について、
プラスとマイナスの値が同じ効果のように書いてしまってますが、
Javardryのマニュアルを読むと、持続時間としてはプラスでもマイナスでも同じだが、
プラスの歩数だとダークゾーンに入ると無効になり、
マイナスの歩数だとダークゾーンに入っても無効にならないそうです。
ですので、ダークゾーンで無効にされたくない場合は、歩数にマイナスの値を入力してください。

他にも、マニュアル読むと解析の参考になることが結構書いてますね・・・
解析する前に先に読んでおくべきでした。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.17)
投稿日 : 2016/07/20(Wed) 01:07
投稿者 amateur◆kR..xsXL6RU
ID情報 : HRD3yau4iog6f9AaW597K1
参照先
それと、試しにJavardry本体のVerを最新の0.362にして、少しだけ解析したところ、
全ての項目共通の経路が分かりました。

デフォルトのJavardry本体のVer0.331での経路は、
_MName::jvm.dll=>mo;[:$mo+0x3C:]=>pe;[:$mo+$pe+0x154:]+$mo=>data;[:$data+0x11B10:]=>base; [:[:[:[:$base:]+0x24:]+0x5*0x4+0xC:]+0x180:]

Javardry本体のVer0.362での経路は、
_MName::jvm.dll=>mo;[:$mo+0x3C:]=>pe;[:$mo+$pe+0x154:]+$mo=>data;[:$data+0x11B10:]=>base; [:[:[:[:$base:]+0x24:]+0x73*0x4+0xC:]+0x180:]

上記のとおり、ベースアドレス(変数「base」)は全く同じです。
そして、ベースアドレスから先の経路も、途中のオフセット部分の
「+0x5*0x4+0xC」が「+0x73*0x4+0xC」に変わっただけです。
ちなみに、上記のアドレスが、各データへ分岐するポインタ群のある領域の先頭アドレスです。

よって、Javardry本体のVer0.362だと、
_MName::jvm.dll=>mo;[:$mo+0x3C:]=>pe;[:$mo+$pe+0x154:]+$mo=>data;[:$data+0x11B10:]=>base;[:[:[:[:$base:]+0x24:]+0x73*0x4+0xC:]+0x180:]=>sta; [:$sta+(オフセット):]
のような感じで書くと、今後の本体Verアップに伴うアドレス修正がし易くなると思います。

ただ、少しだけメモリ上の値を見た限りでは、ステータス部分は結構追加部分が多く、
アドレスがずれてるみたいですので、共通経路を修正するだけでは済まない模様です。
いずれにせよ、今はアドレス修正する気力が湧かないのですけど・・・
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.18)
投稿日 : 2016/07/21(Thu) 06:47
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
amateurさん
情報ありがとう。

最新版Javardry本体では恩恵が…
Joyパッドの入力が使えるのでコントローラーでプレイ出来るんですよ(環境のせいか0.331ではコントローラーが使えなかったです)
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.19)
投稿日 : 2016/07/21(Thu) 22:09
投稿者 amateur◆kR..xsXL6RU
ID情報 : .O3X6iQgHsj8Pe/wTvUyO1
参照先
>>18
コントローラーでプレイできなかったですか・・・
私の方は、エレコムの変換機に繋いだPS2のコントローラーを「JoyToKey」で使えてましたが。

変態紳士さんが実装してくださった変数機能を使って、書き直してみようかなとも思いますが、
もう需要ないかもしれませんね・・・
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.20)
投稿日 : 2016/07/22(Fri) 07:52
投稿者 (仔猫)◆KCezBilYINU
ID情報 : ArhoNq5YdBPYfbKlW2MYW/
参照先
>>19
>私の方は、エレコムの変換機に繋いだPS2のコントローラーを「JoyToKey」で使えてましたが。
なんと!こちらはサンワサプライ製の変換器+PS2コントローラーです(汗
amateurさんの所と殆ど同じ環境なのですね。

>JoyToKey
あ!JoyToKeyでキー入力に変換すれば0.331でも使えたのかな?(後から気がつく)
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.21)
投稿日 : 2016/07/23(Sat) 18:46
投稿者 amateur◆kR..xsXL6RU
ID情報 : bMask9yucm5i1NN7v6x0W1
参照先
>>20
PS2コントローラーは役に立ちますよね(笑)
PS2本体自体はここ数年埃かぶったまま放置ですが、コントローラーは大活躍です。

話変わりますが、別スレで大七星さんが「Javaも中間言語なので、ソースレベルまで逆コンパイルできます」とおっしゃっていましたので、
色々探してみたところ、JD-GUIというツールならば、
このツールを実行し「Javardry.jar」フィイルを読み込むだけで、
各classファイルのソースを簡単に閲覧できて、物凄くお手軽でした(ド素人の私にはこれが向いてそう)。

Javassistでclassファイルを改造というのは私にはハードル高そうですが、
上記ツールでclassファイルの中身読めるだけでも、かなり解析の役に立ちそうですね。
キャラステータス等の各領域につき、どんな項目があるかとか並び順等が実際にメモリの値と見比べれば大体分かるので、
これ見たら、解析の手間が大分省けそうです。
セーブ用データの各項目のポインタの並び順とか、ツール上での表示そのまんまみたいですし。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.22)
投稿日 : 2016/09/29(Thu) 08:18
投稿者 キグナス
ID情報 : ZR3nWeD8uFp2KGbD42dcU1
参照先
何故か「読み込みに失敗しました」と出て数値を書き換えできません
ボーナスPや特性値の値も【??】と表示されています
Javardryのバージョンや動作環境、SpoilerAL本体の修正パッチ以外にも何か必要なのでしょうか?
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.23)
投稿日 : 2016/09/29(Thu) 21:19
投稿者 amateur◆kR..xsXL6RU
ID情報 : 23nr/ymj3m2nnmrRm2WBh1
参照先
何が原因かは私には分かりませんが、可能性としては以下が怪しいかな、と。(このゲームはJavaで動いてるそうなので)
・「Java」が「32bit版」ではなく「64bit版」になっている。(64bit版の場合、多分ゲーム自体が64bitアプリ扱いになるのでSpoilerALでの改造は根本的に無理)
・「Java」を最新版にアップデートしている。
  SSGの情報欄に書いているとおり、このスレにアップしたSSGは、「JavaのVer:(32bit版) 8 Update 91」が動作条件です。
  ※Javaの現在の最新Verは、「Version 8 Update 101 」(Java公式の情報)
   上記の最新Verでは、ポインタがズレているのでSSGが動作しないことを確認済みです。

なお、SpoilerAL本体修正パッチは、該当スレでは「2016.09.17」が最終更新日になってますが、
実際にはその後にパッチの不具合が修正されてファイルが差し替えされています。
パッチを作成されている変態紳士さんも仰ってますが、
パッチを当てた状態で何か不具合があれば、まず「日付は無視して更新」してください。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.24)
投稿日 : 2016/09/30(Fri) 17:20
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
>>22
おお、Javardry THE KING
愛好家が・・・

>>23
amateurさん
僕のところでは問題なく動くので、たぶん最新javaを使ってるのじゃないかなと?と予想。
最新(さっき確認したらu102になってました)を拾ってきて調べた所、以下のオフセットへ修正すれば動くことを確認しました。
0x14360(+90h)

0x143F0


各パーティのデータ
0x11B10(+50h)

0x11B60
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.25)
投稿日 : 2016/09/30(Fri) 21:20
投稿者 amateur◆kR..xsXL6RU
ID情報 : UrxYn59puyl7ut3Epo3sm0
参照先
>>24 (仔猫)さん
情報ありがとうございます。
やはり、Javaのアップデートが原因でしょうかね。
実際、「8 Update 101」にした際にも、ベースアドレスがズレてましたので。
以前、別スレにアップしたサンプルSSG書くときに調べた結果と、(仔猫)さんの情報をまとめると、
以下のようにベースアドレスが変わるようですね。
----------------------
 // まず、「jvm.dll」の.dataセクション開始アドレスを定義
 [define Z] MName::jvm.dll=>mo;[:$mo+0x3C:]=>pe;[:$mo+$pe+0x154:]+$mo=>data

( 8 Update 91 のベースアドレス)
_{Z};[:$data+0x11B10:]=>base

( 8 Update 101 のベースアドレス)
_{Z};[:$data+0x11B48:]=>base

( 8 Update 102 のベースアドレス)
_{Z};[:$data+0x11B60:]=>base
----------------------

それと、
0x14360(+90h)

0x143F0
については、
0x143F0(u91)→ 0x14360(u102)でしょうか?
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.26)
投稿日 : 2016/09/30(Fri) 21:44
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
写し間違えました。
キャラ作成時
0x13E30(u91)

0x13EC0(u102)
です。

0x143F0を使ってる項目が似てたので間違えました。
ということは漏れ?この0x143F0も変化してる可能性があります。

そう言えば、ふと思ったのですが
JAVA本体の古いバージョンはダウンロード自体が可能でしょうか?
無理となると今後同じケースが・・・。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.27)
投稿日 : 2016/09/30(Fri) 22:21
投稿者 amateur◆kR..xsXL6RU
ID情報 : UrxYn59puyl7ut3Epo3sm0
参照先
>>26
古いバージョンのDLは、ここからできるようです。
詳しい説明は、ここに書いてますね。
ただ、古いバージョンに戻すのはセキュリティ上問題があるかも、ですね。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.28)
投稿日 : 2016/09/30(Fri) 22:25
投稿者 amateur◆kR..xsXL6RU
ID情報 : UrxYn59puyl7ut3Epo3sm0
参照先
このスレでアップしたSSGは、以下の3通りの経路で書いてますが、どれでも結果(アクセスアドレス)は同じだと思います。
 // まず、「jvm.dll」の.dataセクション開始アドレスを定義
 [define Z] MName::jvm.dll=>mo;[:$mo+0x3C:]=>pe;[:$mo+$pe+0x154:]+$mo=>data

_{Z};[:$data+0x143F0:]=>base; [:[:[:[:[:[:[:[:$base:]+0x44:]+0x58:]+0x18:]+0x18:]+0x24*4+0xC:]+0x1CC:]+0x1C8:]

_{Z};[:$data+0x13E30:]=>base; [:[:[:[:[:[:$base:]+0x12C:]+0x40:]+0x24:]+5*4+0xC:]+0x180:]

_{Z};[:$data+0x11B10:]=>base; [:[:[:[:$base:]+0x24:]+0x5*4+0xC:]+0x180:]

ですので、一番ポインタの数が少なくてすむ3つ目で書くのがよいと思います(もしかしら、もっと短い経路があるのかも・・・)
・・・何故経路を統一しなかったのかというと、3つ目の経路で全部書けることにSSG作成途中に気付いたのですが、
その時点でSSGが相当長くなっており、修正するのが面倒かつ修正ミスが怖かったのでそのままにしたからです・・・
今なら、[define]を使って大幅に記述を簡略化できると思いますが。
共通経路部分までを先に[define]で次のように定義すれば、Java更新に伴う修正作業も楽になりますし(最初の定義部分だけ修正すればOK)
 [define Z] MName::jvm.dll=>mo;[:$mo+0x3C:]=>pe;[:$mo+$pe+0x154:]+$mo=>data;[:$data+0x11B10:]=>base; [:[:[:[:$base:]+0x24:]+0x5*0x4+0xC:]+0x180:]=>base

もし自力で修正等されるなら、別スレの(No.126)の添付SSGが参考になるかも。
リンク先の分は、Javardry本体がVer0.362 のSSGなので、
0.331で作ったこのスレのSSGとは共通経路だけでなく、共通経路以降の箇所も大分違ってるみたいですが。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.29)
投稿日 : 2016/09/30(Fri) 22:44
投稿者 (仔猫)◆KCezBilYINU
ID情報 : igMbiif6SuGvdJWXVnNbQ0
参照先
>>27
amateurさんありがとうございます。
リンクをタイトルへ追加しておきました。

>>28
>別スレの(No.126)の添付SSGが参考になるかも
ふと気になって読み返してみると
最新Javardry_v0362へ対応してるじゃないですか!(気がつかなかった)
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.30)
投稿日 : 2016/10/01(Sat) 00:54
投稿者 amateur◆kR..xsXL6RU
ID情報 : hAg8/VEDeE3sNSqWxN82k1
参照先
>>29
0362対応というか、[define]の書き方を試すのに丁度いいかとサンプル的に少し書いただけでして・・・
項目が少なすぎてほとんど役に立たないかと思います。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【ゆっくり】 (No.31)
投稿日 : 2016/10/01(Sat) 03:34
投稿者 amateur◆kR..xsXL6RU
ID情報 : hAg8/VEDeE3sNSqWxN82k1
参照先
SSGを更新。
Javaについて、「8 Update 91」「8 Update101」「8 Update 102」に汎用的に対応するよう修正しました。
「8 Update 102」については、 (仔猫)さんの提供くださった情報を利用させていただきました。ありがとうございます。

SSGを読み込み後、一番上の項目「Javaのバージョン選択」で、インストールしているJavaのバージョンを選択してください。
該当バージョンを選ぶと、SSGの各項目が使用可能になる、と思います。
なお、「Javaのバージョン選択」項目で、インストールしているJavaのバージョンを選ばないと、全項目が使用不可のままです。

※ 対応するJavardry本体のVerは、「0.331」のままです。

(追記)
SSGを更新。詳細は>>34を参照

(追記 10/21)
SSGを更新。詳細は>>35を参照

記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.32)
投稿日 : 2016/10/01(Sat) 16:30
投稿者 (仔猫)◆KCezBilYINU
ID情報 : SzycEX2TAWquIqbhGWdJV.
参照先
amateurさん更新ありがとうございます。
あとは、キグナスさんの動作報告待ちですね…。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.33)
投稿日 : 2016/10/02(Sun) 01:24
投稿者 キグナス
ID情報 : ZVuOMSDi2pWD6/cevRz8g1
参照先
更新ありがとうございます。Update101で動作確認致しました。
Java 8 Update 91を入れ直したり、色々試行錯誤してもダメで諦めかけていたのでとても助かりました。

>>24
THE KING面白いですね。
作者様の世界観と色々なゲームから元ネタ引っ張ってきている図鑑のフレーバーテキストがたまらないです。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.34)
投稿日 : 2016/10/04(Tue) 21:25
投稿者 amateur◆kR..xsXL6RU
ID情報 : IgQ2QfTm5h7LA/RA.6qb0/
参照先
>>31のSSGを更新。
現在インストールしているJavaのファイルバージョンを表示する機能を追加しました。
一番上の「Javaのバージョン表示」をクリックすると、自動的にサーチが開始しますので、
サーチ結果の補正値をダブルクリックして補正値を適用してください。現在のJavaのバージョンが表示される、と思います。
表示例)【 8.0.1010.13 】なら「1010」がUpdate「101」に相当すると思われます。(【8.0.910.14】なら、8 Update 91)
この表示を参考にして、下の「Javaのバージョン選択」でバージョンを選択してください。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.35)
投稿日 : 2016/10/21(Fri) 01:09
投稿者 amateur◆kR..xsXL6RU
ID情報 : iQxErmQvHkOhUC5/ybamN.
参照先
>>31のSSGを更新。
Javaの最新Ver「8 Update 111」に対応しました。
といっても、>>24で(仔猫)さんが書いてくださったu102のオフセットと全く同じでしたので、
更新前のSSGでも、JavaのVer選択で「8 Update 102」を選べばそのまま使えるのですけど。

Javaを「8 Update 111」に更新した場合は、
「Javaのバージョン選択」で、「8 Update 111」を選択し、【 8 Update 111(または102) 】と表示されればOKです。
 ※「Javaのバージョン表示」で【 8.0.1110.14 】となっていれば、「8 Update 111」です。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.36)
投稿日 : 2016/11/03(Thu) 01:24
投稿者 amateur◆kR..xsXL6RU
ID情報 : ycD0cQ.gVbDYYx1F3Lovj1
参照先
>>31のSSGについて、別スレにて最近話題になったエクスポート関数を使ってベースアドレスを記述してみたので、試しにアップします。
ベースアドレスを、
[:MName::jvm.dll::_JVM_FindPrimitiveClass@8 +0x58:]+0x3C
と書いてみたのですが、たまたまベースアドレスに辿り着いた関数を適当に書いただけですので、
Javaのバージョンアップに伴うベースアドレスのずれに対応できるかは不明です。
一応、Java 8 Update 111では動作確認していますが、他のVerで動くかは不明です。

添付SSGでは上記のようにベースアドレスを書きましたが、
実際には、もっと別の適切な経路があるかもしれません。
jvm.dllのエクスポート関数が矢鱈と多くて全部チェックする気になれないため、
たまたま見つけた経路を書いただけです。(面倒になって他は途中で確認するの止めました)

経路に使えそうな関数を調べる際には、
「(ベースアドレス-0x200),(ベースアドレス)」くらいで数値範囲検索(境界ベースチェックは外す)し、
ヒットしたアドレスに近いアドレスのエクスポート関数(アドレスの昇順に並べ替えておく)がないかチェックし、
該当しそうなエクスポート関数のアドレスを逆アセンブル → 関数内でベースアドレス(orそれに近いアドレス)を指定しているか確認、
という方法で探しているのですが、これだとエクスポート関数の中のCALL命令で呼び出したサブルーチンにベースアドレスへのポインタ等がある場合は見つけられないので・・・

きちんと調べるには、上記の検索でヒットしたアドレスから、
呼び出し元のCALL命令のアドレスを調べる必要があるのですが、それを調べる方法で困ってます。
実行でブレークすれば、スタックの値(うさみみなら「Stack dump」の値を見れば簡単に分かる)から戻り先のアドレスが分かるのですが、
ブレークしない場合もあって、そんな場合は私にはお手上げです・・・(どうやって調べるんだろう)
もっとも、CALL命令→サブルーチン→CALL命令→サブルーチン・・・、と何度も繰り返していて調べるのが面倒になって投げ出す場合もありますが・・・

2017.04.19 追記;
Java「8 Update 111」と「8 Update 121」ではベースアドレスが
 _[:MName::jvm.dll:=.data +0x11B60:]
だったのが、最新版のJava「8 Update 131」では、
 _[:MName::jvm.dll:=.data +0x11B70:]
となっており、.data先頭からのオフセットが変わっていましたが、
 _[:MName::jvm.dll::_JVM_FindPrimitiveClass@8 +0x58:]+0x3C
と、上述のようにベースアドレスをエクスポート関数を使用して書いたこの記事に添付したSSGは、
「8 Update 111」、「8 Update 121」、「8 Update 131」のいずれのJavaでも動作しているようです。

なお、別スレで変態紳士さんが教えてくださったobjconv等のツールで
モジュール(このゲームだとjvm.dll)を丸ごと逆アセンブルすれば、
上に「困ってる」と書いたcall命令等の参照元アドレスも簡単に分かりますね。
うさみみにも一応、モジュール丸ごと逆汗する機能があり、参照元アドレスの表示機能もありますが、
これでは関数の参照元アドレスが分からない場合も結構あるので、
そういう場合に上記のようなツールを使えば便利ですね。

記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.37)
投稿日 : 2017/06/13(Tue) 17:33
投稿者 help
ID情報 : neBw.EudKJ1rsBK2urD991
参照先
SpoilerAL.exeでJava.exeを開けませんでした。
皆さんはどうやって対処されたのでしょうか。解決策をお教えいただければ幸いです。

SpoilerAL ver 6.2 (2017.05.10版)
java ver 8 Update 131

No.36様のssgを使用した結果のログが以下となります。
 スクリプトを展開しました。ツリー上から、書き換えたい項目を選択してください。
Parsing「java.exe」→[0x0]
Parsing「mo」→[0x0]
Parsing「$mo」→[0x0]
Parsing「0x3C」→[0x3C]
Parsing「+」→[0x3C]
Parsing「java.exe」→[0x0]
Parsing「mo」→[0x0]
Parsing「$mo」→[0x0]
Parsing「0x3C」→[0x3C]
Parsing「+」→[0x3C]
対象のプロセスを開けません。
Parsing「java.exe」→[0x0]
Parsing「mo」→[0x0]
Parsing「$mo」→[0x0]
Parsing「0x3C」→[0x3C]
Parsing「+」→[0x3C]
Parsing「java.exe」→[0x0]
Parsing「mo」→[0x0]
Parsing「$mo」→[0x0]
Parsing「0x3C」→[0x3C]
Parsing「+」→[0x3C]
Parsing「jvm.dll」→[0x0]
Parsing「mo」→[0x0]
Parsing「$mo」→[0x0]
Parsing「0x3C」→[0x3C]
Parsing「+」→[0x3C]
Parsing「jvm.dll」→[0x0]
Parsing「mo」→[0x0]
Parsing「$mo」→[0x0]
Parsing「0x3C」→[0x3C]
Parsing「+」→[0x3C]
対象のプロセスを開けません。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.38)
投稿日 : 2017/06/13(Tue) 18:28
投稿者 仔猫in軒下◆KCezBilYINU
ID情報 : 5n4u.CmlQNn40hh4AIoq30
参照先
>>37
もし見当違いだったらすいません

x64版のJAVA環境で実行してるのでは…?と(ALの仕様上、x64のプロセスにアクセスできないのです)

ということで他にJAVAを使う予定がないのであれば
x86(32bit版)のJAVA本体をインストールしていただくしかないかなぁと…。

追記:
>>39
helpさん
原因が当たってたようで何よりです。が、まだ解決には至ってないようで…。

>>40
amateurさん更新ありがとうございます。
こちらで確認したところVer2.00Dとその修正パッチでOKです。

追記2:
もしやと思ってゲーム配布サイトを訪れたらゲーム本体がVer2.10へ上がってました。
helpさんはVer2.10を使ってるのかな?
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.39)
投稿日 : 2017/06/13(Tue) 19:12
投稿者 help
ID情報 : neBw.EudKJ1rsBK2urD991
参照先
仔猫in軒下◆KCezBilYINU 様
まさにそのとおり64bit版を使用しておりました。
32bit版をインストールしjavaにアクセスできました。
基本的なことをお教えいただきありがとうございます。

javaバージョンはサーチできましたが、肝心のゲームデータのサーチがうまくいきません・・・
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.40)
投稿日 : 2017/06/13(Tue) 19:30
投稿者 amateur◆kR..xsXL6RU
ID情報 : 5mrl6DhcZoRUTWOolyQLN/
参照先
>>39 helpさん
64bitのJavaだったのが原因のようですが、一応、ゲームのプロセス捕捉方法を変更したものをアップします。
肝心のSSGが動作しない原因ですが、咄嗟に思い付くのは以下のものです(SSGの情報欄にも追記しました)。

SpoilerALの修正パッチのスレッドトップにも注意事項として書かれていることですが、
古いSpoilerAL修正パッチでは「version.dll」をSpoilerALのフォルダ内に置く仕様でしたが、
現在は「winmm.dll」を同フォルダ内に置く仕様となっており、
不要な「version.dll」がフォルダ内に残っていると、SpoilerAL修正パッチが正常に機能しない場合がありますので、
もし「version.dll」が残っていれば削除してください。
「version.dll」が残っていると、SSGは動作しないと思います。

それと、インストールされているセキュリティソフトによっては、SpoilerALの動作を阻害する場合があるようですので、
SSGが動作しない時は、SpoilerALの実行ファイル(SpoilerAL.exe)やSpoilerALの修正パッチファイル(winmm.dll)、
あるいはSpoilerALのフォルダを丸ごと、リアルタイムの監視対象から外す(例外設定)等を試してみてください。

また、これはこのサイトのFAQにも記載されている基本的なことなので既に実行済みかもしれませんが、
SpoilerALを管理者権限で実行されているでしょうか。
Win10の場合は、ゲームとSpoilerALの両方とも管理者権限で実行、
もしくは、両方とも管理者権限「なし」で実行、のいずれかでないとSpoilerALは正常に動作しないようです。
(Win7/8の場合は、SpoilerALのみを管理者権限で実行すれば足りると思います。)


>>38 仔猫さん
フォローありがとうございます。
Javaは32と64bit版があって、罠みたいな感じですね。
私の使ってるブラウザは全て32bitで、他に64bitのJavaを使う必要もないので32bit版しか入れてませんが。
64bitのゲームが主流になる時代もいずれやってくるのでしょうか・・・(OSが128bitになればアプリも64bitにせざるを得なくなるのかな?)

記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.41)
投稿日 : 2017/06/13(Tue) 21:36
投稿者 help
ID情報 : neBw.EudKJ1rsBK2urD991
参照先
amateur◆kR..xsXL6RU 様
早速のご対応ありがとうございます。

依然としてサーチがうまくいかず。
ゲーム本体をVer2.10でやっているのが最大の原因とおもいます。
小さい更新ではなかったのですね・・・

不要な「version.dll」の再確認実施済み。
(6.1を新しくダウンロードし、winmm.dllをフォルダ内に格納)

ウィルス対策ソフトの例外設定も済み。
FAQにある権限設定も実施ずみ。
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.42)
投稿日 : 2017/06/13(Tue) 21:57
投稿者 amateur◆kR..xsXL6RU
ID情報 : 5mrl6DhcZoRUTWOolyQLN/
参照先
>>38 仔猫さん、追記2の情報ありがとうございます。
ゲーム自体がいつの間にか更新されていたんですね。
Ver2.10だと、確かにSSGは動作しないです。
ベースとなる「Javardry」が Ver0.375になっているのが原因のようです。(Ver2.00-DではJavardryのVerは0.331)
以前、Javardry Ver0.362のexeに差替えると色々アドレスがずれてSSGが使えなかった覚えがありますので、
これが原因っぽいですね。(どうも、Javardry本体のVerと、JavaのVerによってSSGが動作するかが決まるようです。両方同じなら、ゲーム自体が違っても動作するような・・・)

Javardry絡みという以外関係ない話ですが、Javardry好きの間では、最近「Javardry CoC」というのが未完成ながら話題になってるようですね。
Javardry THE KING 以来の期待作扱いみたいですが、いつ完成するかも含めてどうなるか・・・

>>41 helpさん
仔猫さんの推測どおり、やはりゲームのVerアップが原因のようですね。
SSGに手を入れるとなるとほぼ全面修正になりそうなので、ちょっとキツイものが。
修正中にさらにゲームのVerアップとかあると目も当てられないですし・・・
(Javardry本体の最新版はVer0.379になっていて、相変わらず精力的に更新されているようで・・・こちら側の勝手な都合ですが、SSG作成する人間にとっては辛いです)
記事編集 編集
Re: 【改造依頼】 Javardry THE KING 【SSG】 (No.43)
投稿日 : 2017/06/14(Wed) 22:42
投稿者 amateur◆kR..xsXL6RU
ID情報 : EgpyCWqUNWAc8zhurhqDX.
参照先
SSGをVer2.10に対応させるのは今のところやる気が起こらないのですが、
代わりの方法的な情報を書いておきます。
更新前のVer2.00-Dでゲームクリア済みで、
クリア特典の生データのDL用パスワード(クリア後に表示されるメッセージがDL用のキーワード)を知っているなら、
Ver2.10用の暗号化されていない生のゲームデータがDLできます。
DLしたファイルを解凍したら、「JavardryEditor.exe」という実行ファイルがあるのでこれを実行すると、
ゲームデータの編集が可能になります。(操作方法はオンラインならこのページを参照。DLしたファイルにもマニュアルは入ってます)
ここを参考に、「デバグコマンド使用可」にチェックを入れて、このページの「データの保存、シナリオデータの生成」に書いているとおりにして作ったファイルを、ゲームの「data」フォルダ内に上書き保存します。
すると、ゲーム中にデバッグコマンドが使用可能になりますので、SSGを使わなくてもゲーム中に色々改造できます。
デバッグコマンドの使用方法は、このページの「デバグコマンド」を読んでください。

更新前のVer2.00-D、最新の2.10のいずれでもゲームクリアしてない、もしくはDL用パスワードを知らない(保存していない)とこの方法は使えませんが・・・
私はこの方法が使えるのでSSG使わなくても何とかなるという理由もあって、SSG更新する気にならないのですけど。
ちなみに、エディターのマニュアルを読めばゲーム自体を都合の良いように改造できますので、尚更SSG要らないということになりまして・・・
記事編集 編集
件名 スレッドをトップへソート
名前
メールアドレス
URL
ファイル添付


暗証キー
画像認証 (右画像の数字を入力) 投稿キー
コメント

- WEB PATIO -