【PSP】地球防衛軍2 PORTABLE【CWC】2
レス数が900を超えています。1000を超えると表示できなくなるよ。
>>811 無理じゃない? そうなると火炎放射器の座標を変えないと
いけない訳ですし。
後、蟻とかのAIってボタンで操っている訳では無いのに
どうやって攻撃してるんだろ・・・? なんか動画でジェットエンジンがあったけど実際どうやって作ったのだろうか 武器のベクトル変える的なコードはどうやってサーチするの? まだ無いようなので、EDF2.DATの中にあるミッションを抽出するのに便利な情報をまとめてみた
カスタムミッションを作るのに便利かもしれない
http://www1.axfc.net/u/3096545 >>815 乙です。
後、DATの中に通信関係が入っているかと思ったらそうでもないのか・・・ モーションを20倍にするようなコードはないですかね? ほしいです カスタムミッションジェネレータVer3.0についてですが
テキストボックス内に入力できる文字数をもっと多くしていただけないでしょうか 多レスですまんが
name "hoge"//0
とした場合に値をインクリメントするにはどうすればいいんだ? ペイルウイングのブースターエフェクトを炎に変えようとしたがフリーズするな
なかなか難しい
>>812
AIが設定されているオブジェクトは適切なタイミングでランダムにパッドコードが生成されるようになってる
プレイヤーも蟻も同じようなパッドコードで動いてるよ
>>815
乙です カスタムミッションジェネレータセット v1.01
ttp://www1.axfc.net/u/3097944.zip
>>779の修正版(主にカスタムミッションジェネレータ v3.00のバグ修正)
・エディットボックスのバッファサイズを32MBに拡張
・>>807のサンプルミッションを追加
・資料に新しい拡張コードを追加
>>818
エディットボックスのバッファサイズがデフォルトの32KBのままになってたようです
v3.01で修正しました
>>819
load 0 // hoge変数から値をロード
inc // 値をインクリメント
store 0 // hoge変数に値を格納
こうですかね >>821
乙です
incが使えるって事はdecやsub,addなどの命令も使えるという認識でよろしいでしょうか >>820 ありがとうございます。
ということはcpu専用キーを作るか
行動を判定にするのが安定になるのかな? >>822
使えますね
資料の「2. アセンブラについて.txt」に書いてるオペコードは全て使えるはず ペイルジェットウイング
_L 0x101BE214 0x0000xxxx
_L 0x200544B0 0x00000000
_L 0x200538EC 0x0A200400
_L 0x20053918 0x0A200400
_L 0x20001000 0x26040810
_L 0x20001004 0x3C05yyyy
_L 0x20001008 0x34A50FDB
_L 0x2000100C 0x0E259F06
_L 0x20001010 0x44856000
_L 0x20001014 0x3406270F
_L 0x20001018 0xAE060884
_L 0x2000101C 0x26040770
_L 0x20001020 0x26050810
_L 0x20001024 0x26060550
_L 0x20001028 0x3C073F80
_L 0x2000102C 0x0E2388D0
_L 0x20001030 0x44876000
_L 0x20001034 0x0A214E3C
_L 0x20001038 0x3C05BE80
xxxx = ブースターエフェクトの代わりの武器
008A: 火炎放射器 F6
009E: 爆殺かんしゃく玉 ※ダメージ注意
00D7: グロームX
その他の武器は>>821の資料に入っている「武器インデックス一覧.txt」を参照してください
yyyy = 発射する方向
BFC9: 真下
3FC9: 真上
ペイルウイングの装備2が強制的にxxxxの武器に変更され、その武器だけ弾が無限になります
飛行中、装備2の武器を、指定した方向に向かって発射し続けます >>824
資料読んでなかった・・・激しくサンクス >>612のコードを使っています
追加された隊員だけHPを無限にするコードはありますか? >>612を修正
ミッション開始時、プレイヤーと同じところに隊員を追加
_C1 Mission Start Add EDF (1)
_L 0x20001000 0x0000xxxx
_L 0x20001004 0x00000000
_L 0x20001008 0xyyyyyyyy
_L 0x2000100C 0x00000100
_L 0x20001010 0x0000zzzz
_L 0x20001014 0x00000000
_L 0x20001018 0x0000wwww
_L 0x2000101C 0x00000000
_L 0x2019D5E8 0x0A200408
_L 0x2019D5EC 0xAFB00000
_L 0x20001020 0x3410pppp
_L 0x20001024 0x1A000023
_L 0x20001028 0x8E250004
_L 0x2000102C 0x8E260008
_L 0x20001030 0x3C07089B
_L 0x20001034 0x34E71CAC
_L 0x20001038 0x3C080880
_L 0x2000103C 0x8D081000
_L 0x20001040 0x55000001
_L 0x20001044 0x24E70014
_L 0x20001048 0x3C043F80
_L 0x2000104C 0x44846000
_L 0x20001050 0x0E2358AE
_L 0x20001054 0x34080001
_L 0x20001058 0x3C04089C
_L 0x2000105C 0x8C84F1C8
_L 0x20001060 0x0E236B89
_L 0x20001064 0x00402825
_L 0x20001068 0x10400010
_L 0x2000106C 0xAFA20004
_C1 Mission Start Add EDF (2)
_L 0x20001070 0x34040001
_L 0x20001074 0xAC440158
_L 0x20001078 0x00402025
_L 0x2000107C 0x0E248063
_L 0x20001080 0x3405tttt
_L 0x20001084 0x3C050880
_L 0x20001088 0x34A51000
_L 0x2000108C 0x1000ssss
_L 0x20001090 0x3C04089B
_L 0x20001094 0x3485E1F8
_L 0x20001098 0x0E213706
_L 0x2000109C 0x8FA40004
_L 0x200010A0 0x8FA40004
_L 0x200010A4 0x0E247F67
_L 0x200010A8 0x3405gggg
_L 0x200010AC 0x1000FFDD
_L 0x200010B0 0x2610FFFF
_L 0x200010B4 0x0A267676
_L 0x200010B8 0x8FB00000
_L 0x2004A8F8 0x0E20042F
_L 0x200010BC 0x8CA60000
_L 0x200010C0 0x34C68000
_L 0x200010C4 0x0A2484CB
_L 0x200010C8 0xACA60000 >>828の続き
xxxx = 兵種
0000: 陸戦兵
0001: ペイルウイング
yyyyyyyy = 旋回速度
3F000000: 0.5
3F800000: 1.0
zzzz = 陸戦兵の場合の装備
wwww = ペイルウイングの場合の装備
0000: AS−18
0002: レイピア
0147: アルマゲドン・クラスター
その他の武器は>>821の資料に入っている「武器インデックス一覧.txt」を参照してください
pppp = 追加する人数
0001: 1人
000A: 10人
tttt = チーム
0000: 味方
0001: 敵
0002: 傍観者
0003: 乗り物
ssss = 装備について
0002: zzzzやwwwwの武器を使用
0001: zzzzやwwwwの代わりにプレイヤーの装備1を使用
gggg = 無敵フラグ
0000: 通常
0001: 無敵
※ssssを0001にすると操作タイプや旋回速度などもプレイヤーと同じになってしまいます
その場合、操作タイプがノーマル以外だと、追加した隊員の動きが安定しなくなります モーション速度の解析方法全然わかんないや
0x0004C458の関数がプレイヤーの下半身のモーションを決定してることまではわかってるんだが・・ >>829
動作確認しました
ありがとうございます カスタムミッションジェネレータ v3.01について
bvmファイルを開いた時のコメントが// ?になってますが、syscall1 3002は隠れ市民追加関数です。
また、サンプルミッション2のRoute9_2で // マザーシップの発進口の設定?となっていますが、
上の方は1回目の投下時の設定で、下の方は2回目以降の投下時の設定です。 サンプルミッション2のRoute7_4最後
// スタック領域を開放
adds 1
とすべき所が
// スタック領域を開放
subs 1
になっています >>832
>>833
乙です!
素人が質問…
何故、爆発エフェクトはあんなに重いのですか?
プラズマの爆風はあんなに軽いのに… カスタムミッションジェネレータv3.01の入力支援ツールを作ってみた
http://www1.axfc.net/u/3106394.zip
注意点
*ジェネレータ作者さんとは無関係ですので、作者さんにこのアプリケーションについて
質問しないでください
*動作の保証は一切しません >>832-833
ありがとうございます
次のバージョンアップ時に修正しておきます
>>835
乙です!
自分の環境はXPなので、.NET Framework 4.5のインストールができず動作が確認できませんでしたが
支援ツールを作って頂き感謝です 多分Windows XPでも実行できるようになりました
http://www1.axfc.net/u/3107034.zip
-XPでも実行できるであろう実行ファイルを追加
-細かな修正 >>837
乙です
XPでの動作報告です
「MSVCR110.dllが見つからなかったため、このアプリケーションを開始できませんでした。」
と出たため、下記のランタイムをインストールしたら使えるようになりました
Microsoft Visual C++ 2012 Runtime
http://www.microsoft.com/ja-jp/download/details.aspx?id=30679
内容もすごく分かりやすくて便利ですね
改めて乙です カスタムミッションジェネレータセット v1.02
ttp://www1.axfc.net/u/3109760.zip
・ジェネレータv3.0のサンプルミッション2で指摘されていたバグを修正
・ジェネレータv3.0のファイルサイズを削減
・資料「2. アセンブラについて.txt」の内容を更新
使用可能なシステムコール関数の番号と変数の数を全て書いています
※関数の内容や変数の型がまだ分かってないところが多いです
・資料の更新に伴い、ジェネレータv3.0でbvmファイルを開いたときに出るコメントも更新しました 支援ツールアップデートです。
http://www1.axfc.net/u/3127993.zip
v2.00
-asmファイル作成機能を追加
(カスタムミッションのソースコードを機能別に分割して入力,asmファイルに出力できます.)
-若干表現の修正
自動入力補完機能が鬱陶しかったら設定-CMCS2-入力予測を無効化(&O)をチェックしてください >>842
ミスがあったので再アップロードしました
こちらのurlからダウンロードするようお願いします
http://www1.axfc.net/u/3128011.zip 乙です。
かなり使いやすいので6個くらいミッション作ろうかな
ちなみに今1つ完成 カスタムミッション作成支援 v2.01
http://www1.axfc.net/u/3129122.zip
- 全般_ショートカットキーの設定
| Ctrl + O CMCS2_開く
| Ctrl + S CMCS2_保存
| Ctrl + P CMCS_出力ボックスの内容をコピー
| Ctrl + Q CMCS_出力ボックスの内容をクリア
- 全般_更新履歴.txtを追加
- CMCS_タブ「コールバック設定」を追加
- CMCS_サンプル「皇帝都市」の追加
- CMCS2_いくつかのバグを修正
- CMCS2_表記を統一(入力予測->入力補完)
| これに伴い「入力予測.txt」から「入力補完.txt」にリネームされていますので注意してください
- CMCS2_入力補完表示を少し高速化 >>845
またしょーもないミスしてました
非常に申し訳ないですがダウンロードはこちらからお願いします
http://www1.axfc.net/u/3129262.zip >>846の支援ツールにEDF隊員のAI付きの兵士をサンプルとして
追加してみたけど使ってみたい人はどうぞ。 下記URLから
ttp://www1.axfc.net/u/3130870.txt
使い方 サンプルにこの.txtを追加してあげるだけ >>844ですが、未完成ですが1つだけ完成させたのでうp
正直、絶対包囲クリアしてる人からすれば余裕かも
使い方、 カスタムミッションコードをONにしてから
ミッション1を自分の好きな難易度でプレイしてくれればおk
ttp://www1.axfc.net/u/3131423.zip >>850 NPCをアクティブにしないと敵に攻撃されるまで動かなくて
アクティブにすると勝手に建物に引っかかって攻撃が殆ど通らないので
ネックなんですよね・・・・
隠れ敵属性みたいのがつけられれば場所も誘導できますが、
できないので予想しているようなNPCは難しいかも すっかりEDF2P離れしてきたな、最早別ゲーレベルだ
流石です ミッションジェネレータで追加したNPCの装備はどうやってへんこうするんですか? 陸戦武器のpushの数字を変更すればおk
ちなみに武器表を詳しくは見てね。 >>854 ありがとうございます!
EDF4のDLCミッションを再現させたら面白そう EDF3の1面のミッションを再現してみたものを作ったのでうp
原作と武器は違うけど処理の都合で変更しました。
再現性はかなり低いかもしれないので期待しないで・・・
ttp://www1.axfc.net/u/3137182.zip EDF4に飽きたので
マザー墜落中の爆発エフェクト変更
_L 0x2007AE58 0x24A5xxxx
マザー投下口を攻撃した時に出る爆発エフェクト変更
_L 0x2007DF4C 0x24A5xxxx
マザー墜落後の爆発エフェクト変更
_L 0x2007C08C 0x2484xxxx
エフェクトは>>299 ダロガ透明化
_L 0x200946E8 0x00000000
ディロイ頭透明化
_L 0x2009C3FC 0x00000000
超爆透明化
_L 0x20072DD0 0x00000000
マザーリングビーム攻撃変更
_L 0x200834AC 0x26D6xxxx
数値は>>334
攻撃変更はこれで全部出たかなチンコバルカンは(゚听)シラネ 乙です!
ブルートフォース作戦をEDF2pで再現させたらフリーズしたw >>410氏のおかげでEDFのモデルが見ることができた
今更だが非常に良いツールをありがとう
デフォルトポーズはT字じゃなくて直立なのか
動かしたときに余計なもん引っかかりそうなんだが…
部品毎にレイヤー分けてるし影響範囲外指定してるのかね?
こうなると他のシリーズのも見てみたくなるな
IAのトルーパーはとあるサイトで見たことがあるがあれもなかなかすごい作りだったし
暇な外人がぶっこ抜いてくんないだろうか… >>868
そのツールでの3Dモデル変換はまだ未解読部分があって
特に隊員や蟻などの関節のあるモデルで出力してないデータがある
たぶんその未解読データがボーンや影響範囲に関係あるデータかもしれない
レイヤーごとに位置と角度のデータがあったからそれを使って適当に組み立てたら直立になった
角度データに修正が必要だったり(間違ってる場合)、ボーンなどをうまく解析できたら
もしかしたらT字型のポーズになるかもしれない EDF2PV2なんてものが発表されたが
2P改造して兵科追加することってできないんだろうか
ベースは陸戦兵だしモデルにチョチョイと手を加えれば作れそうな気も… 【ID】midorinosetuna
【罪状】ファンメ
【階級】少佐
【説明】
http://i.imgur.com/hbppnFH.jpg
貧乏人はエクソア使うなだとよww
そんなにこっちが適当に使ったのにエクソアミラー負けたの悔しかったのか ツールすごくありがたい 中の計算や数値を知りたくて勉強しつつ見ています
質問なのですが、syscall系で判明しているものの内容を見る方法はあるのでしょうか?(特にAddEnemy系)
よろしくお願いします >>872
逆アセンブルすることを前提として
Before、Mission、Afterで使えるsyscall関数のアドレスは0x001B2070から並んでます
(0x001B2070+((syscall1の値)&0x7F)*4)にそのsyscall関数のアドレスが入ってます
このsyscall関数はラッパー関数のようなもので、関数内でさらにsyscall1の値を比較し、実際の関数を呼び出しています
例えばAddEnemyの場合は(0x001B2070+(1500&0x7F)*4)=0x001B21E0
0x001B21E0には0x0899D470が格納されているので、それを0x08800000引いて0x0019D470
0x0019D470ではsyscall1の値比較が省略されているので、すぐ下のjalで呼び出している関数が実際のアドレスです
jalの上にあるlwやlwc1が引数です
// 敵を単体追加 アドレス0x000D62B8 $a1=pos $a2=dir $3=pathVob $f12=power $t0=active
int AddEnemy(char *pos,char *dir,char *pathVob,float power,bool active){
int objectIndex=clGameSystem::CreateSystemObject(pos,dir,pathVob);
clKksBaseObject *object=clGameSystem::GetObject(objectIndex);
if(object){
object->SetPower(power);
object->sub_121118(1);//オートコントロールフラグの設定?
object->AddToTeam(1);
short teamID=object->GetTeamID();
object->m_E8=sub_11E5F0(teamID);//不明
unsigned char *resource=object->resource;//ここからVobファイル先頭のClassIDを取得しているが使われていない。デバッグ用の残骸かも
char classID[9];
*(unsigned int *)&classID[0]=*(unsigned int *)&resource[0];
*(unsigned int *)&classID[4]=*(unsigned int *)&resource[4];
classID[8]=0;
if(active==1)sub_605F8(*(unsigned int *)0x1BDEB0,object);//アクティブ化
}
return objectIndex;
}
// 敵を円状に複数追加 アドレス0x000D63A8 $a1=pos $f12=range $a2=pathVob $f13=power $a3=count $t0=active
void AddEnemyCircle(char *pos,float range,char *pathVob,float power,int count,bool active){
//※長いので省略
//天井のないマップ用のアルゴリズムだと思う
}
// 敵を箱状に複数追加 アドレス0x000D6874 $a1=pos $f12=rangeX $f13=rangeY $f14=rangeZ $a2=pathVob $f15=power $a3=count $t0=active
void AddEnemyBox(char *pos,float rangeX,float rangeY,float rangeZ,char *pathVob,float power,int count,bool active){
//※長いので省略
}
// 敵を球状に複数追加 アドレス0x000D6CF8 $a1=pos $f12=range $a2=pathVob $f13=power $a3=count $t0=active
void AddEnemyCave(char *pos,float range,char *pathVob,float power,int count,bool active){
//※長いので省略
//洞窟などの天井のあるマップ用のアルゴリズムだと思う
}
// 敵を連結して複数追加 アドレス0x000D711C $a1=pos $a2=dir $3=pathVob $t0=count $f12=power $t1=active
int AddEnemyCentipede(char *pos,char *dir,char *pathVob,int count,float power,bool active){
//※長いので省略
//戻り値は先頭オブジェクトのobjectIndex
} こんな辺境のスレでなんちゅうもん出しとるんだwww EDF! >>874
位置や解説までありがとうございます!
逆アセンブルをするファイルはEBOOT.BINであってますか?
0x001B21E0からの値が書いて頂いたのと違って不安。
ELFにまでは出来た。linuxも少し必要そうか… のんびりやろう >>876
>>873でのアドレスは全てCWCでの逆アセンブル機能を前提として書いています
ps2disで逆アセンブルするときは、CWCの最初の比較サーチでダンプファイルを作って
それで作成されたMEMDUMP0.dmpをps2disで読み込みます
このときメモリアドレスを08800000にして読み込んでください
この方法では実機のアドレスになるので>>873でのアドレスは全て0x08800000足した値になります
自分は復号したEBOOT.BIN(中身はELF)をIDAで逆アセンブルしています
この方法ではアドレスが変化し、実機のアドレスから0x08804000引いた値、>>873でのアドレスから0x4000引いた値になります
(例)
CWCでのアドレス0x00012345は
実機やps2dis(ダンプファイルを08800000に読み込む方法)では0x08812345
復号したEBOOT.BIN(ELF)を逆アセンブルするツール(MIPS R4000で解析できるもの)では0x0000E345になると思います
ちなみにps2disで復号したEBOOT.BINを開くと全く違うアドレスで読み込まれました 早朝4:30に始めたジェノサイドガンのローポリモデルが完成したぞぉ
このスレ的に改変モデルって需要あるんだろうか?
4版も作りたいけど画像検索しても参考画像が2つしかない…
トリガー周りの造形が分からん…ぐぬぬ >>878
乙です!自分には需要ありますぞぉ
3Dモデル作るのすごく苦手だからそういうのをうpしてくれる人がいるとうれしい
>>870のレスを見て3Dモデル変換ツールを改良したいと思ったけど
ボーンや影響範囲、モデルのアニメーション関係とかがまだ勉強不足だった…
既存データのモデル部分だけ置き換えるツールでもいいかな >>880
ありがとう!
短時間でここまで作れるってすごいな ダンプファイルとps2disで見えました。感謝!
イヤッホー!(今日までcwcの存在を知らなかったのは秘密)
書いていただいたのと関数リストを参考にSetPowerを調べようとしています。
(現状 SetPowerを調べようとし、jalr a1で詰まっている。a1を定めるa0を求めるため、次は手前の関数やAddEnemyの前の関数を見る予定)
>>873で書いてくれているような、C言語みたいな形への変換はどうやっているのでしょうか。
変数名は手作業にしても、それらの関係を逆コンパイル(?)出来るツールはありそうか。ここまで考えたらググって探すべきな気がしてきた。 >>882
lw $a0,8(インスタンス用レジスタ) ;インスタンス用レジスタから8バイト目にクラスメソッドリストのアドレスがある
addiu $a0,オフセット ;オフセットは8の倍数、ここでどのメソッドを呼び出そうとしているかわかる
lh $a1,0($a0)
lw $a2,4($a0) ;メソッドのアドレスを取得
jalr $a2
addu $a0,インスタンス用レジスタ,$a1
このような場所は継承クラスの特定のメソッドを呼び出しています
インスタンス用レジスタにはクラスインスタンスのthisが入っています。$a0、$s0、$s1の場合が多いです
例えばアドレス0x0011B5A0の関数を見てみると
エラー処理の中に"clKksTeamManager::AddObject(IdError:%d)"という文字列があります
この場合、この関数はclKksTeamManagerクラスのAddObjectメソッドだということがわかります
このようなデバッグ用のエラーメッセージからクラス名やメソッド名、変数や引数の意味を推測しています
アドレス0x00167418の関数がこのエラーメッセージを処理しているので
これを逆参照するとエラーメッセージを探しやすいです
それとメソッドの最初の$a0には必ずそのクラスインスタンスのthisが入っているので
そのメソッドを呼び出す直前の$a0を追っていけば、他の関数のクラス名が推測しやすいです
>>873はそれらの結果から脳内逆コンパイルして書いてみました
解析用資料をうpした記憶があって探してみたら3年前のがまだ残ってたw
ttp://www1.axfc.net/uploader/Sc/so/297344.zip 武器や乗り物の追加(差し替えではなく)ってできないんだろうか
もしできるならこのゲームの可能性も広がりそうなんだが >>884
どちらもVobファイル作成の段階で今のところバイナリ直書きしか方法がないね
Vobファイルが作れるようになったとして追加用のコードは、武器の場合は下のようになるかな
乗り物は操作方法を使い回すなら追加用のコードは必要無し
カスタムミッションジェネレータで、追加したい乗り物のVobファイルを指定するだけでおk
操作方法まで新しくすると追加用のコードが膨大になる
自分はそこまでコードかけない
武器の追加 ※動作未確認。ドロップした新規武器を拾ってセーブしたときにどうなるかわからない
_C1 New Weapons (1)
_L 0x200356A8 0x2CA4xxxx # (328+新規武器の数)を16進数で
_L 0x100356E4 0x0000xxxx # 上と同じ
_L 0x10035764 0x0000xxxx # 上と同じ
_L 0x1003596C 0x0000xxxx # 上と同じ
_L 0x200356A4 0x0A200400
_L 0x20001000 0x10800007
_L 0x20001004 0x00001025
_L 0x20001008 0x24A5FEB8
_L 0x2000100C 0x000520C0
_L 0x20001010 0x00842821
_L 0x20001014 0x00851021
_L 0x20001018 0x3C040880
_L 0x2000101C 0x34841028
_L 0x20001020 0x03E00008
_L 0x20001024 0x00441021
_C1 New Weapons (2) # 武器情報リスト
_L 0x20001028 0x0000xxxx # 兵種 0000=陸戦兵用武器 0001=ペイルウイング用武器
_L 0x2000102C 0x0880xxxx # Vobパスアドレス (下の文字列コードでは 2000 でorz.Vobを指定できる)
_L 0x20001030 0x0880xxxx # 武器名 (下の文字列コードでは 2010 でhttpレーザーという名前を指定できる)
_L 0x20001034 0x0000xxxx # カテゴリ 0000〜000E (0000でアサルトライフル 0007で近距離兵器)
_L 0x20001038 0xYYYYYYYY # レアリティ 0.0〜5.0 float型で指定
_L 0x2000103C 0xYYYYYYYY # ドロップ率 0.0〜1.0 float型で指定
# 2つ目以降はアドレスを+18して追加
_C1 New Weapons (3) # Vobパスや武器名などの文字列
_L 0x20002000 0x70616557 # "Weapon\orz.Vob"
_L 0x20002004 0x6F5C6E6F
_L 0x20002008 0x562E7A72
_L 0x2000200C 0x0000626F
_L 0x20002010 0x70747468 # "httpレーザー"
_L 0x20002014 0x5B818C83
_L 0x20002018 0x5B815583
_L 0x2000201C 0x00000000
武器の説明はWeapon\WeaponCommentList.Vfsを展開して、説明用のテキストを追加して再パックしないといけない
(VFSの再パックツールはまだ作ってなかった気がする)
Lvの計算式は、Lv=(レアリティ÷4×99+1)。Lvが0未満なら0、100以上ならSP
レアリティによって、どのミッションとどの難易度でドロップするのかが決まる 丁寧な解説thx
どちらも今は難しいが不可能ってわけじゃないんだな
俺、乗り物追加が可能になったらEJ24戦闘機作るんだ… なるほど。
デバック用メッセージからつけてたのか!
すごく詳しくて親切だからまさかとは思ってたけどやはりツールつくった人か
>>885の情報も見ると、武器の出現範囲・確率や敵体力の計算も特定してそう
自分で出来てなくてくやしいけど聞きたいです。
3Pと4のINFで調べた体力のパターンが単純には低難易度に適応出来なくて困ってます 難易度 パワー(ベース、倍率) ドロップレアリティ(最低、最大、範囲)
EASY (4, 4) (0.2, 0.8, 0.3)
NORMAL (-0.15, 8.15) (0, 1, 0.3)
HARD (15, 15) (0.83, 2, 1)
HARDEST (30, 40) (1.76, 3, 2.4)
INFERNO (100, 60) (2, 4, 2.4)
IMPOSSIBLE (270, 10) (0, 0, 0)
アドレス0x001BBB98から328個分の武器情報が並んでます
1個分の武器情報は>>885と同じで
兵種、Vobパスアドレス、武器名アドレス、カテゴリ、レアリティ、ドロップ率 と並んでます
アイテム4種類のうち、武器がドロップする確率は
アドレス0x001BDA58にある比率から、どのミッション、難易度でも2÷(4+1+2+5)=約17%で固定
各ミッション、難易度で出現する武器の判定は、難易度別ドロップレアリティの数値を使用し
最大レアリティ=最低+(最大−最低)×(各ミッションNo÷全ミッション数) ※全ミッション数はEDF2Pの場合78
最低レアリティ=最大レアリティ−範囲 ※最低レアリティが0未満になったら0に修正
この計算で、プレイヤーと同じ兵種用の武器が、最低レアリティから最大レアリティまで出ることがわかります
さらに一つのミッション内で、ドロップすると判定された全ての武器の
ドロップ率を足した数値とランダム数から実際にドロップする武器が決定されます
その武器に決定される確率=その武器のドロップ率÷ドロップすると判定された全ての武器のドロップ率を足した数値
これらの情報から武器の出現範囲と確率の計算ができると思います
敵の体力や攻撃力の計算は、難易度別パワーの数値を使用し
基本値=ベース+倍率×出現時のパワー×(((ミッションNo−1)÷(全ミッション数−1)×2)+1)
体力=基礎体力×基本値×0.1×難易度別補正値
攻撃力=基本値×0.5×難易度別補正値
敵の種類によって若干変わるけど大体こんな感じ
基本値の計算方法は全敵共通だと思います
出現時のパワーは、ミッションファイル内で指定されます。通常は1.0
基礎体力はVobファイルのオフセット0x20に書いてあります
難易度別補正値はプログラムコード内に書いてあります。蟻の場合は、EASY〜HARDで3.0、HARDESTで2.0、INFERNO〜IMPOSSIBLEで2.5
蟻全般のこの計算自体はアドレス0x00064E8Cの関数(clGiantAntクラスの出現時初期化メソッド?)に書いてます
(例) ミッション1NORMALの噛み蟻と酸蟻の、体力と攻撃力
基本値=-0.15+8.15×1.0×(((1−1)÷(78−1)×2)+1)=8
体力=60×8×0.1×3.0=144
攻撃力=8×0.5×3.0=12 …だけど実際は15ダメージくらうから、どこか計算が間違ってるはず!体力計算も間違ってるかも ありがとう!!流石に完全には把握してないか
難易度別補正値 それだ!
例外処理の方法が予想より凝ってた!予測値も多少間違えてたな
ドロップ率も気のせいでなく本当にあるのか。新武器のある2PV2で確率を出すのは無理そうだな……
武器範囲の計算でミッションNo.から-1していないのは、略しているor把握してないという認識でいいでしょうか?EDF4のデータでは-1してるっぽかったので。
EASY以外の蟻の体力の計算だと、その難易度補正値をかけない値が正しい値になるっぽいです。
実測値からの予測を表にしたもの。ttp://edf2pv2.ari-jigoku.com/weapon,health.html
スレ違いかもしれないけど過疎ってるから気にしない。 アドレス0x00034BA4の関数とアドレス0x00034F68の関数(こっちはアドホック用)でアイテムをドロップしてます
この中で呼び出しているアドレス0x0003493Cの関数が、武器の種類を決定している関数です
この関数の最初で
lw $a1, dword_1BE138
lw $a1, 0x294($a1)
というところがあります
ミッションをプレイ中にCWCでこのメモリを見てみるとミッションNoがそのまま書いてありました
その後の処理でも−1してる形跡がないのでEDF2Pではこの計算で合ってると思われます
この計算とLv計算を足し合わせると最終ミッションINFERNOでSP武器が出るように見えますが
実際はSP武器のドロップ率が0.0になっているためドロップしません
>>889の表を見てオンライン人数で体力が変わることを初めて知った
PSPLINKも復活したので改めて処理を追ってみました
まず難易度EASYのパワー(ベース、倍率)の値が間違ってたので修正
EASY (0, 4)
それとプレイ人数補正値を難易度別補正値と誤認してたらしい
攻撃力の正確な計算方法は結局わからなかった
基本値=ベース+倍率×出現時のパワー×ミッション補正値
体力(int型)=基礎体力×基本値÷10 ※ここで一回目の小数点以下切り捨て
体力(int型)=体力(int型)×プレイ人数補正値 ※二回目の小数点以下切り捨て
ミッション補正値のデフォルト値は1.0
ミッションスクリプトの syscall1 50 を実行すると、ミッション補正値=スクリプトの引数(float型)
ミッションスクリプトの syscall1 51 を実行すると、ミッション補正値=((ミッションNo−1)÷(全ミッション数−1)×2+1)
プレイ人数補正値 ※アドホックモードでの実験はやってないので、もしかしたら順番が逆なのかも
ソロプレイ:1.0
アドホック0人:3.0 ※たぶん例外処理
アドホック1人:3.0 ※ソロプレイで無理やりアドホックモードの処理を通過させた場合
アドホック2人:3.0
アドホック3人:2.5
アドホック4人:2.5
アドホック5人:2.0 ※5人…?一応そのような処理あり
体力は、プレイ中は小数点以下の計算もされますが、敵出現時は小数点以下切り捨てでおkです
以下PSPLINKで実機の値を確認したもの
ミッション3EASYでの黒蟻の体力はソロで25、アドホック1人で75でした
ミッション3NORMALでの黒蟻の体力はソロで50、アドホック1人で150でした
CWCコードではなくツールをたくさん上げてたけど気にしない。 もっと別なプレイはないものかと思って、初めてここ訪ねたら、全く皆さんの言ってる意味が解らないw
こんな初心者にオリジナルマップ導入法とかを教えてくださる方などはおりませぬか。
CWCはいれてます! 【ID】o3430-4
【罪状】ファンメ
【画像】http://i.imgur.com/c5S08ez.jpg
【説明】
ゼロ使って、こっちのマスターの横格に全く対処できないで死んでファンメしてきた
検索したらトロフィーが出てきた
http://psnprofiles.com/o3430-4 >>891
とうこそ!
まず、>>410のEDF2Pファイル変換ツールセットと、>>839のカスタムミッションジェネレータセットをダウンロードしておきます
ファイルの展開(1.)&差し替え(2.〜4.)方法
1. ファイル変換ツールのVFS展開.batにEDF2.DAT(disc0:\PSP_GAME\USRDIR\data\jpn\EDF2.DAT)をドラッグ&ドロップ
2. メモリースティックのルートディレクトリに「EDF2 PORTABLE」というフォルダを作ります
3. そのフォルダの中に差し替えたいファイルを入れます
(例) ペイルウィングのモデルデータとテクスチャを差し替え
. EDF2 PORTABLE
. └Object
. ├Player2.Vob
. └Player2.HgtConv.Hgt
4. >>8のコードをONにするとメモリースティック内のファイルを優先して読み込むようになります(差し替え完了) マップの確認(1.〜4.)&作成(1.と5.〜7.)&差し替え(8.)方法
1. 3DCGソフトウェアとしてBlenderをインストールしておきます。(無料で、かつDAEファイルの読み書きに対応しているので)
2. EDF2.DATを展開し、MAPフォルダから拡張子が.KKMのファイルを探します
3. >>349の「マップを3DCGソフトウェアで読み込む方法」を参考にKKMファイルをDAEファイルに変換し
Blenderでファイル→インポート→COLLADA(.dae)からDAEファイルを読み込みます
4. マップを見ながらある程度仕組みを理解しておきます
(マップの大きさの確認、部品ごとに細かく分かれていたり、ジオメトリ名の@マーク以降によって種類が分けられていたり)
5. Blenderでマップを作ります。すでに作ってあるマップを読み込んでもおk
>>410にサンプルマップがあります
6. >>410の「マップ変換での仕様やバグなど」と「テクスチャ変換での仕様やバグなど」を読んでおきます
7. >>410の「マップ自作方法」を参考にKKMファイルとKKTファイルを作成します
8. 上記のファイル差し替え方法を参考にマップを差し替えます
(例) 住宅街マップを差し替え
. EDF2 PORTABLE
. └Map
. ├Map07.KkmConv.Kkm
. └Map07.KktConv.Kkt ミッション内容の確認(1.〜3.)&作成(4.)&差し替え(5.〜6.)方法
1. EDF2.DATを展開し、確認したいミッションをMISSION001〜MISSION078から選びます
MISSION079は没ミッション、MISSION999は対戦用ミッションっぽいです
2. カスタムミッションジェネレータ v3.02 でBVMファイルを開きます
3. ミッション内容が専用の言語で表示されます(理解できなくてもおk)
4. ランダムミッションジェネレータ v1.02 を起動し、「ミッションファイルを作成」ボタンをクリックします。
5. 「EDF2 PORTABLE」というフォルダが生成されるので、そのフォルダをメモリースティックのルートディレクトリに入れます
(例) ミッション3を差し替え
. EDF2 PORTABLE
. └Mission
. └Mission003
. ├Before.bvm
. ├Before.Kkps
. ├Mission.bvm
. └Mission.Kkps
6. Readme.txt内の Load Custom Mission Files と書かれたコードをONにすると、指定した番号のミッションが差し替えられます
より複雑なミッションを作りたいときは、カスタムミッションジェネレータ v1.04〜v3.02 を使いますが作成難易度が上がります
>>845-846にカスタムミッション作成支援ツールが有志者により上げられています
このツールを使うことで作成難易度を下げることができます >>896
>>895
>>894
わぁお、こんなに詳しく説明していただけるなんて思ってもみませんでした!
ありがとうございます!手こずりながらもやってみようと思いますw
あと、邪道かもしれませんが、PSPだけでの改造などは可能でしょうか?PSPFilerは入れているので、もともとのデータファイルを改造データファイルに置き換えることで改造できちゃう...なんてことは、やはり浅はかな考えでしょうか... まだ差し替えられるものがあったの忘れてた
BGM、Voice差し替え
>>226を参照
AT3ファイルの作成はこのスレが参考になると思う
http://kanae.2ch.net/test/read.cgi/gameurawaza/1265727589/
ムービー差し替え
>>233を参照
PMFファイルの作成方法は忘れた
ググったら簡単に見つかると思う
他ゲーのPMFに差し替えて再生できることは確認してる
>>898
PSPFilerでどこまでできるか分からないけど
EDF2.DATは専用フォーマットで圧縮されていて、この中身を直接差し替えることはできないと思う
BGM、Voice、ムービーは一つ一つがそのままファイル化されているので
この3種類は、UMDを吸い出してできたISOファイルの中のファイルを置き換えることで直接差し替えることができると思う
あと英語版EDF2.DAT(disc0:\PSP_GAME\USRDIR\data\usa\EDF2.DAT)を
日本語版EDF2.DAT(disc0:\PSP_GAME\USRDIR\data\jpn\EDF2.DAT)に上書きするという荒業もあった
(動くかどうかは別としてミッション名と説明が英語表記に変わる。それ以外になにが変わるかわからない。武器名はプログラム内に直書きされているので日本語のままのはず)
PSPだけでのファイル差し替え方法は今まで考えてなかった
元々のデータを置き換えるより、差し替え用のCWCコードで動的に差し替えた方が簡単な気もする
配布されてるカスタムミッションやカスタムマップをPSPのインターネットブラウザーでダウンロードして
ファイラーアプリでzip内のファイルを指定された場所に展開
あとは差し替え用のCWCコードを実行するだけ
他にも他ゲーからAT3ファイルやPMFファイルを指定された場所にコピーして
上記の「BGM、Voice差し替え」や「ムービー差し替え」のCWCコードを実行して差し替える方法もあるね >>899
ここは神様ばっかりのスレなのか。ホントにありがとうございます!
頑張ってみます! 武器のテクスチャのサイズって変更しても問題ない?
流石に16x16は見るに堪えない…
陸戦兵のテクスチャは128x128だから大丈夫なような気はするんだけど >>901
2の累乗になってれば問題ないと思うよ
ただ、今のファイル変換ツールではHGTファイルを作るとき128x128以外のサイズは正常に変換できなかったような気がする
今ツール作り直し中 >128x128以外のサイズは正常に変換できなかったような
あらら、そうなのですか
最低でも128以上で作った方がいいかね
x64で作ってたテクスチャ作り直さなきゃ…
変えること自体に問題は無いみたいで一安心
おーし礼賛乙つくるどー テクスチャ変換ツール 暫定版
斧にうpできなかったのでこっちに上げました
http://ux.getuploader.com/EDF2_Portable/
変換ツールセットのテクスチャ関連のバグを修正したもの
代わりにBMPやTIM2などの変換ができなくなったので、変換ツールセットに上書きしない方がいい
・TGAファイルの24bitフォーマット、32bitフォーマットに対応
・128x128以外のサイズでも正常な変換ができるようになった(と思う)
※HGTに変換するとき、TGAには256色パレットが必須です
※横幅は 16, 32, 64, 128, 256, 512 のみ対応
※高さは 8, 16, 32, 64, 128, 256, 512 のみ対応
最大サイズが512までなのはゲーム側の仕様
最小サイズが16x8までなのはツール側の都合 今さら始めたけど、面白いな
やっぱりEDFはチート使えてなんぼだわ
3Pや4も面白かったけどさ >>880のジェノサイドガンいろいろ改修したやつができたんだけど需要あるカナ?
っていうか前の上げてからもう4か月も経ってる…
そもそもこのスレ人残ってるんだろうか…
よく見りゃこれが今年初の書き込みだし レス数が900を超えています。1000を超えると表示できなくなるよ。