【PSP】地球防衛軍2 PORTABLE【CWC】2
■ このスレッドは過去ログ倉庫に格納されています
需要があったので一応うp
ただ、>>612 のコードが必要
後、方向キー横を押すとローリングする不具合あり
解決方法としてはNPC専用のコントロールにすればいいのですが
C++を少ししか覚えていない私には無理でした・・・
>>277 の改良なので先に伝えておきます。 下記URLからどぞー
ttp://www1.axfc.net/u/3058531
ttp://www1.axfc.net/u/3058531.zip
最後に解説があったらよかったりと思っていたりします。
(クレクレになりますね・・・)
もしかしたら更新するかもしれません。 俺はコードしか無理だけど、
全力でサポートします! >>788俺もコードなら大丈夫だ。
_C0 HELI guns custom
_L 0xD0000000 0x10000320
_L 0x2005BBE0 0x0E2388D0
_L 0xD0000000 0x10000380
_L 0x2005BBE0 0x00000000
_L 0xD0000000 0x10000310
_L 0x2005BBC8 0x0E2388D0
_L 0xD0000000 0x10000340
_L 0x2005BBC8 0x00000000
ヘリ系のやつあげてみた。
L+R+十字キーで銃の左右撃てるか撃てないかの調整
十字キーの詳細は忘れた・・・
確か、→か↑でヘリの銃の左右どっちかが撃てるようになって、
↓か←でヘリの銃の左右どっちかが撃てなくなる。
どれがどうかわかったら、パッドコードを調整してもいいかも。
>>741のやつと合わせたらいいかも
中途半端な状態ですまん。 続いて。
_C0 Heli weapons buffalo
_L 0x201AE2D0 0x70616557
_L 0x201AE2D4 0x535C6E6F
_L 0x201AE2D8 0x67746F68
_L 0x201AE2DC 0x30316E75
_L 0x201AE2E0 0x6F562E30
_L 0x201AE2E4 0x00000062
_L 0x201AE2B8 0x70616557
_L 0x201AE2BC 0x535C6E6F
_L 0x201AE2C0 0x67746F68
_L 0x201AE2C4 0x30316E75
_L 0x201AE2C8 0x6F562E30
_L 0x201AE2CC 0x00000062
ヘリの武器変更コード使ってみたとき使えなかったので、使えない人はどうぞ。
ただヘリの左右の武器の読み込み自体を変えるやつなので、
以前のやつのように簡単に武器を自分で変えられないかも・・・
変えたい人はこのコードの文字列の読み込み出力先を変えればいいです。
このコードでは左右ともにバッファローにしています。
副作用で、武器が消えたり、発射口が真ん中になったりします。
左右同時に出るので、上のコードで調整してみるといいかも。 >>787
乙です!
ソースコードのCreated byのところは自分のハンドルネームに書き換えたり追記したりしていいのよ
>>790
乙です! バイナリ直書きでエアバイクを車っぽい形に変えてみた
ttp://www1.axfc.net/u/3060576.zip
コンバータ作るの難しそうだな http://rfi.a.la9.jp/sateweb/scurl/edfple.html
http://rfi.a.la9.jp/sateweb/scurl/znple.html
お世話になります。
私、責任者の加茂と申します。以後、宜しくお願い致します。
http://www.karilun.com/img_shop/15/ss52_1368685958.jpg
浪速建設様の見解と致しましては、メールによる対応に関しましては
受付しないということで、当初より返信を行っていないようで、今後につい
てもメールや書面での対応は致しかねるというお答えでした。
このように現在まで6通のメールを送られたとのことですが、結果一度も
返信がないとう状況になっています。
私どものほうでも現在までのメール履歴は随時削除を致しております
ので実際に11通のメールを頂戴しているか不明なところであります。
弊社としましても今後メールでのやり取りを差し控えたく、浪速建設様
と同行の上でお会いさせていただきたい所存です。
http://rfi.a.la9.jp/sateweb/scurl/bd3ple.html 乗り物の各操作ボタンをコードを用いてカスタマイズしようとしているのだが、なんかいい案ない? >>789 自分も一回やろうとして
パッド関係管理しているアドレスを探してやったが
元々押しているパッドも出てしまうから無理だった気がする
(ペイルならレイピア打ちながら飛んでしまう。) 戦車
_L 0x1005FD40 0x0000xxxx # 射撃 (デフォルト:8200 □orR)
_L 0x1005FD80 0x0000xxxx # 射撃 ※上と同じ値が望ましい
_L 0x1005F880 0x0000xxxx # 砲塔上昇 (デフォルト:0010 ↑)
_L 0x1005F9B8 0x0000xxxx # 砲塔上昇 ※上と同じ値が望ましい
_L 0x1005FAEC 0x0000xxxx # 砲塔上昇 ※上と同じ値が望ましい
_L 0x1005FC00 0x0000xxxx # 砲塔上昇 ※上と同じ値が望ましい
_L 0x1005F7F8 0x0000xxxx # 砲塔下降 (デフォルト:0040 ↓)
_L 0x1005F834 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005F848 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005F930 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005F96C 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005F980 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005FA64 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005FAA0 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005FAB4 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005FB78 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005FBB4 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005FBC8 0x0000xxxx # 砲塔下降 ※上と同じ値が望ましい
_L 0x1005F7FC 0x0000xxxx # 砲塔左回転 (デフォルト:0080 ←)
_L 0x1005F934 0x0000xxxx # 砲塔左回転 ※上と同じ値が望ましい
_L 0x1005FA68 0x0000xxxx # 砲塔左回転 ※上と同じ値が望ましい
_L 0x1005FB7C 0x0000xxxx # 砲塔左回転 ※上と同じ値が望ましい
_L 0x1005F7C4 0x0000xxxx # 砲塔右回転 (デフォルト:0020 →)
_L 0x1005F8FC 0x0000xxxx # 砲塔右回転 ※上と同じ値が望ましい
_L 0x1005FA30 0x0000xxxx # 砲塔右回転 ※上と同じ値が望ましい
_L 0x???????? 0x???????? # 前進 ※アドレス0x5FC58でレジスタ$a0に読み込まれる値がアナログパッドのY軸
_L 0x???????? 0x???????? # 後退 ※上と同じ
_L 0x???????? 0x???????? # 左旋回 ※アドレス0x5FC78でレジスタ$a0に読み込まれる値がアナログパッドのX軸
_L 0x???????? 0x???????? # 右旋回 ※上と同じ
※砲塔関係の処理がなぜか分岐していて、変更する箇所が多い
ヘリコプター
_L 0x1005BB68 0x0000xxxx # 射撃 (デフォルト:8000 □)
_L 0x1005BBA8 0x0000xxxx # 射撃 ※上と同じ値が望ましい
_L 0x1005B9E4 0x0000xxxx # 上昇 (デフォルト:4000 ×)
_L 0x1005BA48 0x0000xxxx # 左ラダー (デフォルト:0100 L)
_L 0x1005BA6C 0x0000xxxx # 右ラダー (デフォルト:0200 R)
_L 0x???????? 0x???????? # 前進 ※アドレス0x5BA1Cと0x5BA28でレジスタ$a0に読み込まれる値がアナログパッドのY軸
_L 0x???????? 0x???????? # 後退 ※上と同じ
_L 0x???????? 0x???????? # 左旋回 ※アドレス0x5B95Cでレジスタ$a0に読み込まれる値がアナログパッドのX軸
_L 0x???????? 0x???????? # 右旋回 ※上と同じ
エアバイク
_L 0x10059158 0x0000xxxx # 射撃 (デフォルト:8200 □orR)
_L 0x10059198 0x0000xxxx # 射撃 ※上と同じ値が望ましい
_L 0x???????? 0x???????? # 前進 ※アドレス0x590C0でレジスタ$a0に読み込まれる値がアナログパッドのY軸
_L 0x???????? 0x???????? # 左旋回 ※アドレス0x5904Cと0x59060でレジスタ$a0に読み込まれる値がアナログパッドのX軸
_L 0x???????? 0x???????? # 右旋回 ※上と同じ
xxxx = パッド値
詳細は http://www21.atwiki.jp/cwcwiki/pages/90.html#id_3db43fb6
????????のところはアナログ操作なため不明
ただしやり方によっては判明しているアドレスの前後のコードをいじることで
デジタルパッド操作に変更できるかもしれない >>800を見ていて思ったのだが、
うまく使えばプログラムでAI専用キーとかって作れるのかね? >>800乙です
やっぱりパッドコードとは少し使用が違うな。
なぜか、x=3000などにすると、
○と△のどちらか一方でも押したら適用される・・・
あと>>800のような奴をサーチするなら32ビットの16進に
0x3084nnnn
nnnn=操作するときのパッド値の合計
でサーチすればおkのはず。
ただ、変動しないから1回目でヒットした奴を一個ずつ調べるしかない。
まあ、プレイヤーとか乗り物とかはアドレスの位置がある程度決まっているからそこから調べればいいかと >>779
お疲れ様です
v2.01では秒数や残り敵数によってイベントを発生させることができましたが、
もしアップデートすることがあれば、本家にあるような
秒数がある値以下になれば成功にしたり
条件分岐(秒数が30秒経過または残り敵数が25体以下、など)をできるような構文を
用意していただけると俺歓喜なのですが実装は可能でしょうか >>803
v2.01では最終Wave(例えば最後は第五波としておきます)で
void Wave5(30.0){}
と書いておけば敵がいても30秒経過後にクリアになりますし
void Wave5(25){}
と書いておけば残り敵数が25体以下でクリアになります
v3.00ではコールバック設定のところで
syscall 510
ldstr "Clear"
push 1.0
push 0
syscall1 500
push 30.0
syscall1 501
syscall 511
と書いておけば敵がいても30秒経過後にクリアになりますし
syscall 510
ldstr "Clear"
push 1.0
push 0
syscall1 500
push 25
syscall1 520
syscall 511
と書いておけば残り敵数が25体以下でクリアになります
v2.01ではコールバック関数が省略されていて実装が難しいですが
v3.00では複数のコールバック関数を設定できるので
秒数経過でクリア、残り敵数が25体以下でクリア、特定の敵を倒すとクリアというような条件を
複数組み合わせたミッションを作ることもできます
また、複数の条件の内どれかが成立した場合、その後の敵の配置などを変えるような条件分岐も可能です
その場合、条件が成立した場合の関数内でグローバル変数にフラグを立てるようにして
すでにフラグが立っていれば以後の処理を無視するようにするといいと思います
v2.01で複数のコールバック関数を設定したい場合
関数の最後に
#asm func1 510
#asm push "Wave3" // ここは"Clear"でも良い
#asm push 1.0
#asm push 0
#asm func2 500
#asm push 30.0 // 30秒経過でWave3関数を実行
#asm func2 501
#asm push "Wave4" // ここは"Clear"でも良い
#asm push 1.0
#asm push 0
#asm func2 500
#asm push 25 // 残り敵数が25体以下でWave4関数を実行
#asm func2 520
#asm func1 511
#asm push 0
#asm func2 1006
#asm loadms 0
#asm addms 1
#asm ret
このように書くと複数の条件での関数実行が可能です
また、次Waveの()の中に書いている条件は無効になります
ただしこの書き方はWave2以降で有効です >>804
最後のところミス
ファイル生成中に関数名を変えていたことを忘れてた
#asm push "Wave3"
は
#asm push "Func_3"
#asm push "Wave4"
は
#asm push "Func_4"
だった サンプルミッション
ttp://www1.axfc.net/u/3065151.zip
最初に倒す敵によってその後の展開が変わります
全ての流れを確認してないので、途中で意図しない展開に変わるかもしれません
入っているソースはカスタムミッションジェネレータv3.00用です
ソースコードが2000行を超えていたため、v2.01用に書き直すのは諦めました
ランダムマップジェネレータも作ってみたいけどこっちも難しそう
それと4つ目の天候は「日没」らしい
マップごとに天候の各色が若干違うことにも気がついた >>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
レアリティによって、どのミッションとどの難易度でドロップするのかが決まる ■ このスレッドは過去ログ倉庫に格納されています