れーすのエグゼ流星Blog

読者です 読者をやめる 読者になる 読者になる

れーすのエグゼ流星ブログ

ロックマンエグゼ6の解析を主に行っている情報学生のBlog。プロフィールのidをクリックしてもらえると詳しい詳細が見れます。 Twitter @EXE_race

ロックマンエグゼ6 ハックについてのまとめ(仮)

※※※この記事は自分の考えの下書きとしても使っています※※※

※※※和訳しながら読んでいるのでまだ元記事のすべてを読んでいないです。理解も完全じゃないので不十分な箇所がありますがご理解ください※※※

 

 

めちゃくちゃ久しぶりに記事書きます。

前回までは流星の熱帯でしたが、今回はエグゼです

そもそものきっかけは海外エグゼフォーラムのこの記事

forums.therockmanexezone.com

だいぶ昔に目を通したんですが、実際にやってみてもわけわかんなくて投げ出し。

 

しかし、最近ブルーさんに簡単な流れを教えてもらい再度挑戦することに

まずはフォーラムの内容にざっと目を通し自分であれこれ試してみました

そこでわかったハックの全容を説明していきます

 

 

準備するもの

ロックマンエグゼ6のROM(吸出し機を用いて吸い出してください)

・VisualBoyAdvance(メモリビュアー機能があればどのバージョンでもいいです)

 

解説

 

そもそもゲーム内部ではどのように動作しているのか?

 

フィールドを歩く→エンカウントする→メモリを読み込む→メモリの値からバトル状況が構築される→バトルスタート

 

今回のハックにおいては3番目の「メモリを読み込む」という部分に着眼点をおいています

本来起こりえるバトルとは別のバトルを、メモリの値を変えることにより再現しているというわけです

 

実行する場所は秋原町のHPで、「メットール3×2 キャタック」の下記の場合のみ可能となります

同じ構成でもウイルスの場所が違うパターンが1つあり、その場合だとできません。

f:id:rai17321:20151003173157p:plain

f:id:rai17321:20151003173201j:plain

 

 

 

それではVBAツール→メモリビュアーに飛んでください

メモリビュアーを起動したら今回使用するバージョンにしたがって下記のアドレスを右側の検索ボックスに打ち込み、ジャンプしてください

Faltzer Version (Japanese) = 080B5CB5
Grega Version (Japanese) = 080B7515

今回使用するのは下記の画像の範囲です(フォーラムから引用してるのでこの画像のアドレスは海外verのものを使っています)

f:id:rai17321:20151003173930g:plain

画像を見ればわかると思いますが、アイコン毎に囲ってあるのがそれぞれのナビやウイルスのメモリになります

トルエンカウント前にこの値を弄り、バトルに突入することで自在にバトル状況を変えることができます

 

ここで注意ですが、数値を変える→更新(または自動更新のチェックを入れる)する→エンカウントの流れです

バトル中に値を変えても何も変化しないのでご注意ください

 

それではロックマンは飛ばし、キャタックから解説していきます

11  25  25  00

 

11に当たるのはKindType(種族値)です

11だと敵扱いとなり、例えばA0にするとメタルキューブに変わります

下記のリストがkindTypeの値になりますKind L

Kind List

00= Copy Megaman
01= Enemy Megaman
11= Enemy Team
12= Your Ally
20= Mystery Data
30= Rock
70= Flag
80= Rock Cube
90= Guardian
A0= Metal Cube
F0= Cut off (ends the battle at this value)

 

2番目の25は位置情報となります

 

00  01  02   03    04  05  06  07
10 [11][12][13]|[14][15][16] 17
20 [21][22][23]|[24][25][26] 27
30 [31][32][33]|[34][35][36] 37
40  41  42   43     44  45  46  47

 

[]で囲まれた部分が実際のエリア

この場合の25というのは敵エリア中央ですね

 

3番目の25はウイルスの種類になります

下記のリストがウイルスリストです

Virus List

00= TestVirus (not normally encountered)
01= Mettaur
02= Mettaur2
03= Mettaur3
04= MettaurSP
05= RareMettaur
06= RareMettaur2
07= Piranha
08= Piranha2
09= Piranha3
0A= PiranhaSP
0B= RarePiranha
0C= RarePiranha2
0D= HeadyA
0E= HeadyH
0F= HeadyW
10= HeadyE
11= RareHeady
12= RareHeady2
13= Swordy
14= Swordy2
15= Swordy3
16= SwordySP
17= RareSwordy
18= RareSwordy2
19= KillerEye
1A= DemonEye
1B= JokersEye
1C= KillerEyeSP
1D= RareKillerEye
1E= RareKillerEye2
1F= Quaker
20= Shaker
21= Breaker
22= QuakerSP
23= RareQuaker
24= RareQuaker2
25= Catack
26= Cateen
27= Catapult
28= CatackSP
29= RareCatack
2A= RareCatack2
2B= Champy
2C= Chumpy
2D= Chimpy
2E= ChampySP
2F= RareChampy
30= RareChampy2
31= WindBox
32= VaccuumFan
33= WindBox2
34= VaccuumFan2
35= RareBox
36= RareFan (not normally encountered)
37= Trumpy
38= Tuby
39= Tromby
3A= MuteAnt
3B= Xylos
3C= TrumpySP
3D= OldStove
3E= OldStove2
3F= OldStove3
40= OldStoveSP
41= RareOldStove
42= RareOldStove2
43= HauntedCandle
44= HauntedCandle2
45= HauntedCandle3
46= HauntedCandleSP
47= RareHauntedCandle
48= RareHauntedCandle2
49= Kettle (only hurt by fire)
4A= Kettle
4B= SuperKettle
4C= KettleDX
4D= KettleSP (black)
4E= RareKettle (not normally encountered)
4F= Puffy
50= Puffy2
51= Puffy3
52= PuffySP
53= RarePuffy
54= RarePuffy2
55= StarFish
56= StarFish2
57= StarFish3
58= StarFishSP
59= RareStarFish
5A= RareStarFish2
5B= EarthDragon
5C= ThunderDragon
5D= WaterDragon
5E= WoodDragon
5F= WhiteDragon
60= BlackDragon
61= ScareCrow
62= ScareCrow2
63= ScareCrow3
64= ScareCrowSP
65= RareScareCrow
66= RareScareCrow2
67= PulseBulb
68= PulseBulb2
69= PulseBulb3
6A= PulseBulbSP
6B= RarePulseBulb
6C= RarePulseBulb2
6D= BigHat
6E= BigHat2
6F= BigHat3
70= BigHatSP
71= RareBigHat
72= RareBigHat2
73= BombCorn
74= MegaCorn
75= GigaCorn
76= BombCornSP
77= RareBombCorn
78= RareBombCorn2
79= Shrubby
7A= Shrubby2
7B= Shrubby3
7C= ShrubbySP
7D= RareShrubby
7E= RareShrubby2
7F= HoneyBomber
80= HoneyBomber2
81= HoneyBomber3
82= HoneyBomberSP
83= RareHoneyBobmer
84= RareHoneyBomber2
85= Gunner
86= Shooter
87= Sniper
88= GunnerSP
89= RareGunner
8A= RareGunner2
8B= FighterPlane
8C= FighterPlane2
8D= FighterPlane3
8E= FighterPlaneSP
8F= RareFighterPlane
90= RareFighterPlane2
91= DarkMech
92= ElecMech
93= DoomMech
94= DarkMechSP
95= RareDarkMech
96= RareDarkMech2
97= SnakeArm
98= SnakeArm2
99= SnakeArm3
9A= SnakeArmSP
9B= RareSnakeArm
9C= RareSnakeArm2
9D= Armadill
9E= Armadill2
9F= Armadill3
A0= ArmadillSP
A1= RareArmadill
A2= RareArmadill2
A3= Cragger
A4= MetalCragger
A5= BigCragger
A6= CraggerSP
A7= RareCragger
A8= RareCragger2
A9= Nightmare
AA= BlackMare
AB= DarkMare
AC= NightmareSP
AD= RareNightmare
AE= RareNightmare2
AF= Dustman Mini-Game 1
B0= Dustman Mini-Game 2
B1= Dustman Mini-Game 3
B2= *CRASHES GAME*
B3= *CRASHES GAME*
B4= One Trash flies at the enemy.
B5= Tomahawkman Mini-Game 1
B6= Tomahawkman Mini-Game 2
B7= Tomahawkman Mini-Game 3
B8= Tomahawkman Mini-Game 4 (glitched)
B9= Tomahawkman Mini-Game 5 (glitched)
BA= Tomahawkman Mini-Game 6 (glitched)
BB= No Name Mettaur
BC= No Name Mettaur2
BD= No Name Mettaur3
BE= No Name MettaurSP
BF= No Name RareMettaur
C0= No Name RareMettaur2

 

また、エグゼ5の没データ?があるそうです

下記のリストとなりますが試したい方は試してみてください

C1= Mettaur1
C2= Mettaur1EX
C3= Mettaur2
C4= Mettaur2EX
C5= Mettaur3
C6= Mettaur3EX
C7= Tuby
C8= TubyEX
C9= Tuby2
CA= Tuby2EX
CB= Tuby3
CC= Tuby3EX
CD= Flag
CE= Rock
CF= Otenko
D0= RockCube
D1= IceCube
D2= NO NAME
D3= NO NAME
D4= BombCube
D5= BlackBomb
D6= Wind
D7= Fan
D8= TimeBomb
D9= TimeBomb+
DA= NO NAME
DB= Anubis
DC= PoisonPharoah
DD= Fanfare
DE= Discord
DF= Timpani
E0= Silence
E1= DarkSonic
E2= VDoll
E3= Guradian
E4= Voltz
E5= AirSpin
E6= ChaosLord
E7= RedFruit
E8= ChemicalFlash
E9= ModMegaman
EA= BassCrossMegaman
EB= BLANK NAME
EC= BLAMK NAME ("EX" in JP version)
ED= BLANK NAME
EE= BLANK NAME
EF= *CRASHES GAME*
F0= *CRASHES GAME*
F1= *CRASHES GAME*
F2= *CRASHES GAME*
F3= *CRASHES GAME*
F4= *CRASHES GAME*
F5= *CRASHES GAME*
F6= *CRASHES GAME*
F7= *CRASHES GAME*
F8= *CRASHES GAME*
F9= BLANK NAME
FA= BLANK NAME
FB= *CRASHES GAME*
FC= *CRASHES GAME*
FD= *CRASHES GAME*
FE= *CRASHES GAME*

 

4番目の00ですが、これはウイルスとネットナビの判定値となります

00でウイルス 01でナビです

01に変え、下記のリストから値を引用するとナビなどに変更できます

 

00= Test Virus = Megaman
01= Mettaur = Heatman
07= Piranha = Elecman
0D= Heady = Slashman
13= Swordy = Killerman
19= KillerEye = Chargeman
1F= Quaker = Aquaman
25= Catack = Tomahawkman
2B= Champy = Tenguman
31= Windbox = Groundman
37= Trumpy = Dustman
3D= OldStove = Protoman
43= HauntedCandle = Blastman
49= Kettle = Diveman
4F= Puffy = Circusman
55= Starfish = Judgeman
5B= EarthDragon = Elementman
61= Scarecrow = Hakushaku (Japanese version only, otherwise it does nothing)
67= Pulsebulb = Colonel
6D= BigHat = Bass
73= BombCorn = Grega (Grega version only)
79= Shrubby = Faltzer (Faltzer version only)
7F= HoneyBomber= Crossover Hakushaku (Japanese version only)
85= Gunner = Grega Beast Out
8B= HoneyBomber= Faltzer Beast Out
91= DarkMech = Megaman
97= SnakeArm = Megaman
9D= Armadill = Playable Navi Names
A3= Cragger = Megaman
A9= Nightmare = Crashes game

 

ここまでのまとめとしては、ウイルスの値は

種族値- 位置 - ウイルス -ナビ判定 となります

 

 

続いてはロックマンのメモリに入っていきます

このあたりから現時点では曖昧です。

 

F0 00 22 00 00

 

最初のF0は以前のバトルの値となります (The first value, F0 is from the previous battle.) ???

 

2番目の00はkindListの00、つまりロックマンの値となります

 

3番目の22は以前もやった位置情報の値です

 

4番目はウイルスリストを引用でき、例えば6Dにするとロックマンからフォルテに変わります

 

5番目はネットナビの判定値です

 

ここでもし操作キャラをロックマン以外に変更する場合、下記のコードが必要になります

82034080 0002
8203A9D8 01A0

 

このコードを適用しないと操作不能となります