GBAコード変換方法
最初に次の事を理解してください
多くの方がGBAゲームのサーチに使っているのはVBAです
そしてネット上に公開されているVBAコードを変換する事で
PARやXTAで使う事の出来るコードに為ります
これはkajaさんが暗号化の仕組みを解析された事で出来る様になった物です
この解析結果がなければ、皆さんが知りたがっている
PARやXTAのコードは作れませんでした
本来VBAの改造機能はおまけで、変換はおまけのおまけ
VBAでサーチしている方達にPARやXTAのコードを聞くのは間違いです。
VBAで遊ぶのに暗号化の必要は無く、暗号化して投稿や掲載しているのは
サーチされた方の好意からです。
自分達で変換して下さい
注意事項
PAR⇔VBA⇔XTA
XTAコードからXTA生コードに変換した物をPARコードにしたい時と
XTAコードが生コード(変換前のコード)だった時に
コードがXTA生コード3・8(0・1に直す)以外で始まっていた場合は
kajaさんのHPにある[GBAPAR解析部屋]に書かれている
変換した時のコードの種類を見て、それぞれのコードの意味を調べ
相互に該当する物が合ったら、その数値の形式に変えて変換して下さい
無い機能の場合は基本的には変換できません
PAR暗号コードからPAR生コードに変換した物をXTAコードにしたい時に
変換した時のPAR生コードが0・1・2(3・8に直す)以外で始まっていた場合は
kajaさんのHPにある[GBAPAR解析部屋]に書かれている
変換した時のコードの種類を見て、それぞれのコードの意味を調べ
相互に該当する物が合ったら、その数値の形式に変えて変換して下さい
無い機能の場合は基本的には変換できません
GBA PAR暗号コード⇔XTA生コード相互変換
PAR暗号コードは一般的にPARコードと呼ばれている物の事です
PAR暗号コード(PAR生コードタイプ0・1・2・D)と
XTA生コードタイプ3・8・(7・A・B・C)を相互変換します
XTA連続書きこみコードタイプ4を
PAR暗号コード(PAR生コードタイプ1)に変換できます
VBAでしか使え無いと思いますが一応
PAR暗号コード(PAR生コードタイプ6)と
XTA生コードタイプ88も相互変換できます
VBA⇔PAR
変換に必要な物
ふぁおさんのHP「ふぁおのぺえぢ」にある変換プログラム
GBAPAR数値変換 (ver 1.1)(WIN) をDLする
readme.txtを良く読む事
D-RAMさんのHP「zero memory」にある
GBAPARコード変換スクリプトを利用する
ページにかかれている説明を良く読む事
「Software Powrup Fourm」からGAMOさんの
GBA PARコード生成ツール(DOS)をDLする
補足.TXTを良く読む事
kajaさんのHP[かぢゃぽんのお部屋]から
GBACODE(DOS)をDLする
Gbacode.txtを良く読む事
私の処にあるスクリプトを利用する
ページにかかれている説明を良く読む事
以上の全てには相互変換機能があります
VBAコードから変換する時には入力する時に
アドレス部の先頭数値に注意しなければなりません
VBAデータが8ビット(0〜FF)の時は0のままで変換してください
0******* **
VBAデータが16ビット(0〜FFFF)の時は1に変えて変換してください
1******* ****
VBAデータが32ビット(0〜FFFFFFFF)の時は2に変えて変換してください
2******* ********
アドレス部の先頭が0以外の数値8桁の場合は、そのままで変換してください
ただし、XTAから変換したコードの場合は注意事項参照
注意事項
YUYさんの所のGBA―PAR変換スクリプト
YUYさんの所に有るスクリプトを使うときは
データ部を8桁にしなければなりません
半角英数で
0******* 000000**
1******* 0000****
2******* ********
として下さい
それからVBAコードを変換する時、掲載されているまま
区切りに使われている:まで一緒に暗号化している方がいますが
間の:は必要無くスペース
私の処にあるスクリプト
「GBA-PAR暗号変換プラスくんH!」には先頭数値を変える機能があります
GBA-PAR暗号変換プラスくんH!
GBA−PARとVBAの復号化と暗号化を行い+**hする事が出来ます
図で説明していますので此方を見てください
GBA-PAR暗号変換プラスくんH!の使い方
1つだけの変換、連続してアドレス部・データ部のどちらか片方に+**hして変換
連続してアドレス部・データ部のどちらにも+**hして変換する事が出来ます
VBA連続暗号変換プラスくんH!
使い方は、此方を見てください
VBA連続暗号変換の使い方
ワカラ無いと言われてしまったので、こんな物を作りました
コードへッド変更
VBAコードをXTA生コードとPARコードの
暗号化前の形式と暗号化PARコードにします
XTAでデータが8桁の物は自動的に2行のコードになります
VBA⇔XTA
新情報
XTAは暗号化しなくても生マスターコードなら
暗号化前の形式の改造コードが使えます
コードの先頭数値*の変更等をするだけです
* コードヘッド・コードタイプ・コードの種類の事です
これは下に書いてある3・8になおして下さい
XTA生マスターコードについて
XTA生マスターコードの1行目は下のページ
www.gamesark.co.jp/advterm/mastercode.html
(こちらのページは2003/05/26に更新されました)
ゲームスアークのHPのマスターコード一覧に載っています
2行目は00000000000Aにして下さい
私が調べて動作確認出来たマスターコードは、此方に掲載しています
マスターコード
この中に無い場合はゲームテックのHPの
「↑最新ウラワザコードを最速でお届け」超☆速報コードエクスプレス
又はコード本などに載っている物を復号化して出た1から始まる物を使って下さい
2行目は0から始まっているコードです
この2行のコードがXTA生マスターコードです
生マスターコードは次の様になっています
1*******0007
0*******000A
(00000000000Aで大丈夫です)
この2行のコードをマスターコードとして入力します
生マスターコードの場合、改造コードはVBAコードを暗号化する必要が無く
暗号化する前のコードの形式(先頭数値を8ビット・16ビットで変える)です
VBAデータが8ビット(0〜FF)の時は
0******* xx
アドレス部の最初の数値を3に変えデータ部に00を追加します
3*******00xx
VBAデータが16ビット(0〜FFFF)の時は
0******* xxxx
アドレス部の最初の数値を8に変えます
8*******xxxx
VBAデータが32ビット(0〜FFFFFFFF)の時は
データ部を2つに分け、上に書いた16ビットの場合のやり方でコードにします
2番目のコードはアドレス部の数値に+2hします(hは16進数という意味です)
元のVBAコード
0aaaaaaa bbbbcccc
2つに分ける
8aaaaaaacccc
8(aaaaaaa+2h)bbbb
(bbbbが00**だったら3(aaaaaaa+2h)00bbでもOKです)
VBAコードを、この様に変える事で使う事が出来ます
ワカラ無いと言われてしまったので、こんな物を作りました
コードへッド変更
VBAコードをXTA生コードとPARコードの
暗号化前の形式と暗号化PARコードにします
XTAでデータが8桁の物は自動的に2行のコードになります
捕捉
9から始まる暗号化されたマスターコードの場合は、生コードは使えません
XTA生マスターコードの場合は、暗号化コードは使えません
暗号化コードと生コードの同時使用は出来ません
注意事項
暗号化・復号化に必要な物
生マスターコードが公開されているので
以前の暗号化コードを復号化する時に使う事に為ると思います
kajaさんのHP[かぢゃぽんのお部屋]内の
[ツールのお部屋]からGBACODE(DOS)というツールをDLします
相互変換機能があります
変換方法はGBACODE.comに付属しているTXTに書かれていますが
理解しにくい事が有ると思うので、そこを書いておきます
*マスターコードを入力します。
必要なマスターコードは9で始まる1行分(12桁)だけです
これが暗号化される時の乱数の種元になります
*コードを入力します(12桁)
ここで暗号化でVBAコードを入力する場合
アドレス部8桁とデータ部4桁で入力します
上の「XTA生マスターコードについて」に書いてある
暗号化する前のコードの形式を読んでください
ただし、PARから変換したコードの場合は注意事項参照
表形式のコード
放課後に掲載されているEXE3 ライブラリMAXコードなどは
下の様な表になっていますね・・・
これは改造コードをサーチされた事の有る方、
バイナリエディタ等を使った事の有る方、などには見なれた物です
各列は00000000〜0000000F
00000010〜0000001F
つまり16進数で10のアドレス分が表示されているわけです
そのアドレスは表の上に書いたのが1の位のアドレスです
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F(1の位)
00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000010: 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
00000010の列をPARに変換する為のVBAコードにすると
先頭数値 0の場合は 並んでいる順番通りに16個にしてください
00000010 11 00000011 12 ・・・・ 0000001F 26
次からはリトルインディアン形式のため小さいアドレスのデータが後ろに来ます
これはCPU等の所為で、WINDOWSのゲームでも同じです
変だと思っても、絶対変える事の出来ない規則です
先頭数値 1の場合は
10000010 1211 10000012 1413 10000014 1615 10000016 1817
10000018 2019 1000001A 2221 1000001C 2423 1000001E 2625
先頭数値 2の場合は
20000010 14131211 20000014 18171615
20000018 22212019 2000001C 26252423
この様になります
XTAに変換する為のVBAコードにする場合
(判りやすくする為アドレスとデータの間を空けてありますが、詰めて12桁にして下さい)
先頭数値 3の場合は 並んでいる順番通りに16個にしてください
30000010 0011 30000011 0012 ・・・・ 3000001F 0026
先頭数値 8の場合は
80000010 1211 80000012 1413 80000014 1615 80000016 1817
80000018 2019 8000001A 2221 8000001C 2423 8000001E 2625
これをライブラリMAXコードの表に、当てはめれば変換できます
VBA変換コード&生コードの相互変更方法
kajaさんのHPにある[GBAPAR解析部屋]を参考にしました
PAR⇔XTA
単純書き込みコード
0******* xx ⇔ 3*******00xx
1******* xxxx ⇔ 8*******xxxx
2******* xxxxyyyy ⇔ 8*******yyyy と 8(*******+2h)xxxx
条件比較コード
D******* 0000xxxx ⇔ 7*******xxxx
XTA⇒VBA⇒PAR
4は連続書き込みコードですがGBAPARコードに有る短縮コードは
(3000****)同一のデータをアドレスを指定して書きこむと言う物です
延々とアドレスをコードとして書きこまなければ為りませんが
データ数値が同一ならば変換可能です
これ以外の変換コード&生コードは今の所、変換不可能です
0は2行目に書かれるコードでマスターコードと
連続書き込みに使われています
1はマスターコードのフックアドレスで
PARのFに相当しますが互換性はありません
9は暗号化する時にだけ使われます
Dはキーコードです。詳しくは下を見てください
2・5・6・A・B・C・E・FはVBA未サポートのようです
これらについてはkajaさんのHPを見てください
私の説明文はいずれ書くかも知れません
PAR⇒VBA⇒XTA
D******* 0000xxxx以外は変換不可能
Fはマスターコードですが互換性がありません
3000は連続書き込みコードですが
アドレスを指定する&データ数値固定というコードなので
アドレスが等間隔ならばXTA生コードタイプ4に変換できます
GBAPARコードに有る短縮コード(3000****)は
同一のデータをアドレスを指定して書きこむと言う物で
延々とアドレスをコードとして書きこんでいます
指定アドレスの値加減算コード
3010・3020・3030・3040・3050・3060全て変換不可能
6はROM領域を書きかえるPAR独自のコードなので変換不可能
ただしVBAコードブレーカーの8コードでは使用できます
6******* を8(*******×2)
スイッチ書き込み
8a1・8a2・8a3全て変換不可能
スローモーション
80F00000は変換不可能
条件比較コード
Eは変換不可能
不明・DEADFACEは変換不可能
この他にもコードの種類が有るかも知れないそうです
XTAのDコードについて
海外のサイトに掲載されているコードを調べて
XTAのDコードについて少しだけ判りました
Dコードはキーコードの様で、指定されたキーが押されると
次の行のコードを実行します(キーが押されている間だけ)
D0000020****
XXXXXXXXYYYY
****は指定されたキーデータの合計値
0001 A
0002 B
0004 SELECT
0008 START
0010 →
0020 ←
0040 ↑
0080 ↓
0100 R
0200 L
D0000020ですが20でなく10でもVBAでは使えました
ここの数値の意味は今の所わかりませんが
使われていたのが20だったので
D0000020で使うのが安全でしょう
ねこかぶさんのHPに有る、ねこかぶさんの友人さんが
解析された情報によると、実機では20が指定数値が一致した時
10が指定数値と一致しない時だそうです
XTA連続書き込み4コードについて
VBAコードブレーカー
4******* aaaa
0000bbbb cccc
アドレス*******から、bbbb回繰り返し、
ccccをアドレスに加算しつつ、
データaaaaを連続で書き込みます
書き込みデータは16ビット(2バイト・ハーフワード)
2バイト書き換えなので対象アドレスは偶数になります
XTA実機
4******* aaaa
xxxxbbbb cccc
アドレス*******から、bbbb回繰り返し、
ccccをアドレスに加算しつつ、
データaaaaにxxxxを加算しながら連続で書き込みます
書き込みデータは16ビット(2バイト・ハーフワード)
2バイト書き換えなので対象アドレスは偶数になります
ねこかぶさん&パンヤヲさん(ねこかぶさんの友人さん)が
kajaさんの掲示板に書かれた情報です
XTA連続書き込み5コードについて
5******* xxxx
12345678 9abc
def01234 5678
9abcdef0 1234
******* が書きこみ開始アドレス
xxxx が書きこむ数(ハーフワード単位)
2行目からは書きこむデータを記述
ただし、アドレス順に書かなければ為りません
(データ部分はビックエンディアン形式で記述)
12345678 9abc
def01234 5678
9abcdef0 1234
PAR連続書き込みコードについて
3000xxxx yyyyyyyy
aaaaaaaa bbbbbbbb
cccccccc ........
........ 00000000
xxxx が書きこむ数(xxxx-1回)なぜ-1かと言うと
yyyyyyyyをアドレスと勘違いして書き換えるから・・・
yyyyyyyy が書きこまれるデータでワード固定(32ビット4バイト)
2行目からは書きこむアドレスを記述
aaaaaaaa bbbbbbbb
cccccccc ........
........ 00000000
PARスイッチ書き込みコードについて
8*1***** 000000xx
PARスイッチが押された時にアドレス0*0*****に1バイト書きこむ
8*2***** 0000xxxx
PARスイッチが押された時にアドレス0*0*****に2バイト書きこむ
8*4***** xxxxxxxx
PARスイッチが押された時にアドレス0*0*****に4バイト書きこむ
PAR条件比較コードについて
D******* 0000xxxx
アドレス*******の数値がxxxxと同じだった時
この次のコードを実行
XTAの条件比較コードの7と同じです
D******* 0010xxxx
アドレス*******の数値がxxxxとは違っていた時
この次のコードを実行
D******* 0020xxxx
アドレス*******の数値よりxxxxが大きいか等しかった時
この次のコードを実行
D******* 0030xxxx
アドレス*******の数値よりxxxxが小さいか等しかった時
この次のコードを実行
xxxxデータは16ビット(2バイト・ハーフワード
)
この様に変えて変換します
実行される次の行のコードの変換は
通常と同じです
E0yyxxxx 0*******
アドレス*******の数値がxxxxと同じだった時
この次からのコードをyy数スキップする
E0yyxxxx 1*******
アドレス*******の数値がxxxxとは違っていた時
この次からのコードをyy数スキップする
E0yyxxxx 2*******
アドレス*******の数値よりxxxxが大きいか等しかった時
この次からのコードをyy数スキップする
E0yyxxxx 3*******
アドレス*******の数値よりxxxxが小さいか等しかった時
この次からのコードをyy数スキップする
xxxxデータは16ビット(2バイト・ハーフワード)
この様に変えて変換します
スキップされる次の行のコードの変換は
通常と同じです
ゲームスアークから発売予定のXTAサーチツールキット『ADVTerm』について
キットと完成品が、秋葉原のゲームスアーク・雑誌の通販
インターネット通販で販売が始まりました
たちばなみお(元Sitrus)さんとパンヤヲさんが
kajaさんの掲示板に書かれた情報を
参考にさせていただきました
最新追加変更 03/06/15 YCAT
上の記事のままでの転載&掲示板での直リン等ご自由に