the M.G.C'sHP




サーチ画面がキャプチャできない件
りもてjoyでもできねー

凄く作りたいわけでもないからマターリ行くよ
目指すはこれ

M203氏が作成
見やすいやつ撮れた

武器値

textサーチで武器値が割り出せる
_C0 M16M203 UP
_L 0x617A0350 0x00000002
_L 0x00020001 0x00000000
_L 0x617A0350 0x00001114
_L 0x00020001 0x00000010
早速テスト

無理
グラフィック無し、名前none、アサルトライフル

武器値・ハッシュ諸々があってないと表示されない?
ということでブリーフィングで強制装備

固定武器なんだな…どうでもいいところ凝ってんな
出撃

やはり無理
武器値上位24bitと弾数の確認に成功したからいいか
武器値…0x00005914
弾数…30/30発

こちらからは進みそうにないな、保留

BOSSRUSH


パイソンと共演できる有名シーン※うそです

パイソンの所持武器から解析を進めてみる

まず武器値でサーチ
部隊内の兵士のアドレスと関係ないアドレスしか当たらない

武器関連からメモリサーチでいけるか…
瀕死になりながら弾数サーチ

見つけた
_C0 PaiM16
_L 0x601D9FE0 0x00000000
_L 0x00030001 0x000004B0

リロードしまくるおっパイソンさん

周囲に武器値らしきものは見つからなかった
ちなみに一個下はグレランの弾数
_C0 PaiM204
_L 0x601D9FE0 0x00000000
_L 0x00030001 0x000004AC

どうでもいい物まで見つける
すーぱーおっパイソンさん

体力バーが青光りとかパネェっす
_C0 PaiHP
_L 0x601D9FE0 0x0000012C
_L 0x00010001 0x00004C68
_L 0x601D9FE0 0x0000012C
_L 0x00010001 0x00004C6C
_C0 PaiSTM
_L 0x601D9FE0 0x00003B08
_L 0x00020001 0x00004C70
_L 0x601D9FE0 0x00003B08
_L 0x00020001 0x00004C74
どちらも上二行が現在値、下二行が最大値
体力が32bit管理…兵士の構造から違うのだろう

RaY氏のお言葉通りやってみる
まだちょっとしか進んでいない
breakで調べたらボスラッシュ時にしか流れないぽい

zr:0x00000000 at:0xDEADBEEF v0:0x00000001 v1:0x00000002
a0:0x08964F9C a1:0x00000002 a2:0x00000000 a3:0x00000000
t0:0x09FBF9D8 t1:0x00000000 t2:0xDEADBEEF t3:0xDEADBEEF
t4:0xDEADBEEF t5:0xDEADBEEF t6:0xDEADBEEF t7:0xDEADBEEF
s0:0x098E6400 s1:0x00000000 s2:0x098E6400 s3:0x098E6340
s4:0x089A5EC0 s5:0x00000000 s6:0x00000000 s7:0xDEADBEEF
t8:0xDEADBEEF t9:0xDEADBEEF k0:0x09FBFB00 k1:0x00000000
gp:0x0898C040 sp:0x09FBFA10 fp:0x09FBFAC0 ra:0x088A1364

0x088A1360: 0x8E640010 '..d.' - lw $a0, 16($s3) //武器値ロード
0x088A1364: 0x86650026 '&.e.' - lh $a1, 38($s3) //a1=サプレッサー値
0x088A1368: 0x8E640010 '..d.' - lw $a0, 16($s3) //武器値ロード2回目?必要か?
0x088A136C: 0x0E2040B6 '.@ .' - jal 0x088102D8 //じゃんぷ
0x088A1370: 0x0040F021 '!.@.' - move $fp, $v0 //v0をfpへ(退避?)

サブ
0x088102D8: 0x308400FF '...0' - andi $a0, $a0, 0xFF //武器値8bitに?
0x088102DC: 0x2C82002A '*..,' - sltiu $v0, $a0, 42 //a0>2Aならばv0=1、それ以外0
0x088102E0: 0x0002200A '. ..' - movz $a0, $zr, $v0 //武器値が2A未満ならならばa0=0
0x088102E4: 0x00041140 '@...' - sll $v0, $a0, 5 //a0を32倍
0x088102E8: 0x18A00006 '....' - blez $a1, 0x08810304 //サプレッサーが無い時分岐
0x088102EC: 0x24440008 '..D$' - addiu $a0, $v0, 8 //a0=v0+8

!---sprがない時のみ流れる---!
0x08810304: 0x0A2040BC '.@ .' - j 0x088102F0
0x08810308: 0x24440004 '..D$' - addiu $a0, $v0, 4 //

サブ
0x088102F0: 0x3C030896 '...<' - lui $v1, 0x896
0x088102F4: 0x24634E7C '|Nc$' - addiu $v1, $v1, 20092 //v1=0x08964E7C
0x088102F8: 0x00641821 '!.d.' - addu $v1, $v1, $a0 //v1+a0
0x088102FC: 0x03E00008 '....' - jr $ra
0x08810300: 0x8C620000 '..b.' - lw $v0, 0($v1) //v0=変な値

0x088A1374: 0x8E640010 '..d.' - lw $a0, 16($s3) //また武器値
0x088A1378: 0x02202821 '!( .' - move $a1, $s1 //spr値は破棄,s1=0x00000000?
0x088A137C: 0x0E2040C3 '.@ .' - jal 0x0881030C
0x088A1380: 0x0040B821 '!.@.' - move $s7, $v0 //v0をs7へ(退避?)

サブ
0x0881030C: 0x308400FF '...0' - andi $a0, $a0, 0xFF
0x08810310: 0x2C82002A '*..,' - sltiu $v0, $a0, 42 //a0<2Aならばv0=1、それ以外0
0x08810314: 0x0002200A '. ..' - movz $a0, $zr, $v0 //武器値が2A未満ならならばa0=0
0x08810318: 0x2CA30004 '...,' - sltiu $v1, $a1, 4 //a1>4
0x0881031C: 0x0003200A '. ..' - movz $a0, $zr, $v1 //
0x08810320: 0x000420C0 '. ..' - sll $a0, $a0, 3
0x08810324: 0x00852021 '! ..' - addu $a0, $a0, $a1
0x08810328: 0x3C020896 '...<' - lui $v0, 0x896
0x0881032C: 0x24424E7C '|NB$' - addiu $v0, $v0, 20092
0x08810330: 0x00042080 '. ..' - sll $a0, $a0, 2
0x08810334: 0x00822021 '! ..' - addu $a0, $a0, $v0
0x08810338: 0x03E00008 '....' - jr $ra
0x0881033C: 0x8C820010 '....' - lw $v0, 16($a0)

0x088A1384: 0x8E430054 'T.C.' - lw $v1, 84($s2)
0x088A1388: 0xAFA20004 '....' - sw $v0, 4($sp)
0x088A138C: 0x24020006 '...$' - li $v0, 6
0x088A1390: 0x1062FFE5 '..b.' - beq $v1, $v0, 0x088A1328
0x088A1394: 0x24020007 '...$' - li $v0, 7

現在ここまで

CopyRight Team-M.G.C Co.,ltd.