Super Castlevania IVおよびRock n 'Roll Racingのパスワード生成

こんにちは、ユーザーの皆様。

私は最近、最初と2番目のRoad Rashのパスワードの生成に関する投稿を書きました。 記事へのコメントで、私はゲームRock n 'Roll Racingのパスワードシステムがどのように配置されているかを明確にするように求められました。 これについて、私はあなたと話をしたいと思います。 しかし、私はゲーム「Super Castlevania IV」から始めたいと思います。 さあ、始めましょう。

画像

スーパーキャッスルヴァニアIV


私はSNESのゲームを「クラック」したことはありません。 まあ、1点まで。 私は兄がこのゲームをプレイしているのを見ました そして彼は、Super Castlevania IVのパスワードを生成できれば非常に良いだろうとさりげなく言いました。 考え直すことなく、仕事を始めました。 眠れぬ夜を3回過ごした後、パスワードを保存する方法と方法を理解しました。

理論

パスワードは16個のセル(位置)で構成され、各セルは2ビットで構成され、合計16 * 2 = 32ビットです。 これらのビットには、次のゲームパラメータが格納されます。

ここで、未加工のパスワードの構成を見てみましょう。

*ビットの数は括弧内に示されます。
C4 (1) 、C4 (0)D (1) 、D (0)(1) (0)C2 (1) 、C2 (0)
C6 (1) 、C6 (0)N (15) 、N (14)U1 (1) 、U1 (0)C5 (1) 、C5 (0)
U2 (1) 、U2 (0)C1 (1) 、C1 (0)(1) (0)L (1) 、L (0)
N (13) 、N (12)C3 (1) 、C3 (0)L (3) 、L (2)U3 (1) 、U3 (0)

指定

? -常にゼロに等しい。
U-未使用ビット。
D-(クエスト-1)(1-4)バイナリシステム。 (00-通常の難易度、01-難易度の増加。インターネット上でクエスト3および4のパスワードが見つかりませんでした。何らかの理由でゲームがこのデータを記録します。難易度は上がりませんが、突然、4番目のクエストを完了すると、秘密の結末が開きますか?...ほとんど何も変わらないでしょう。)
Nは、バイナリ表記の名前の値です。 名前の値の合計が初期値から差し引かれます。

*文字の値は角かっこで囲まれています。
* []-スペース。
A(11)B(12)C(13)D(14)E(15)F(16)G(17)H(18)私(19)
J(20)K(21)L(22)M(23)N(24)O(25)P(26)Q(27)R(28)
S(29)T(30)U(31)V(32)W(33)X(34)Y(35)Z(36)[](0)
1(2)2(3)3(4)4(5)5(6)6(7)7(8)8(9)9(10)


L-(レベル番号(0-14)div3)バイナリシステム。

*レベルB-3は3つの部分で構成されています。
レベル名前の初期値
01-12040
12-110240
23-114340
34-134826
45-110256
56-143026
67-151226
78-143042
89-147142
9A-155343
10B-114388
11B-3(1)63543
12B-3(2)2104
13B-3(3)18489
14B-434874


チェックサム

C1 = N (1) 、N (0) + D (1) 、D (0)
C2 = N (3) 、N (2) + C1 (3) 、C1 (2) + U2 (1) 、U2 (0)
C3 = N (5) 、N (4) + C2 (3) 、C2 (2) + U1 (1) 、U1 (0)
C4 = N (7) 、N (6) + C3 (3) 、C3 (2) + U3 (1) 、U3 (0)
C5 = N (9) 、N (8) + C4 (3) 、C4 (2)
C6 = N (11) 、N (10) + C5 (3) 、C5 (2)

1つのチェックサムからの2つの高位ビットが次のチェックサムに移動するという事実に注意を喚起したいと思います。

コーディング

画像

0(00)-空。
1(01)-x。
2(10)-聖水。
3(11)-ハート。

パスワード生成の例
これらのパラメーターを保存するパスワードを作成します。
  • 名前:「AWL [] VITA」
  • クエスト(4)
  • すべての未使用ビットは1に等しい
  • レベルB-3(2)


値を2進数システムに変換します。

レベル番号(12div3 = 4)= 0100
クエスト(4)= 4-1 = 3 = 11

名前の値を計算します:

AWL [] VITA = 11 + 33 + 22 + 0 + 32 + 19 + 30 + 11 = 158
2104-158 = 1946 = 11110011010
N (15) 、N (14) = 00
N (13) 、N (12) = 00
N (11) 、N (10) = 01
N (9) 、N (8) = 11
N (7) 、N (6) = 10
N (5) 、N (4) = 01
N (3) 、N (2) = 10
N (1) 、N (0) = 10

チェックサムを計算します。

C1 = 10 + 11 = 0101
C2 = 10 + 01 + 11 = 0110
C3 = 01 + 01 + 11 = 0101
C4 = 10 + 01 + 11 = 0110
C5 = 11 + 01 = 0100
C6 = 01 + 01 = 10

受信したデータをテーブルに書き込みます。

10110010
10001100
11010000
00010111

数字をグラフィック画像に変換することは残っています。


ロックンロールレース


私はこのゲームを長い間「クラック」し、その後ビット解析の方法を使用しませんでした。 したがって、このゲームへのアプローチは少し異なります。

画像

理論

パスワードは、これらのゲームパラメータが保存される12の位置で構成されます。


ここで、選択したゲームパラメータに応じてポジションの値がどのように変化するかを見てみましょう。

難易度1ポジション4ポジション
ルーキー+0Xor5
ベテランXor8Xor1
戦士XOR16XOR13

部門1ポジション7ポジション
AXor8+0
B+0+2

2ポジション3位9ポジション
グリッチ+0+0+0
グリッチ+0XOR16+4
グリッチ(自己破壊車)Xor1+0+8
エアーブレードXor1XOR16+12
マローダーXor2+0+16
ダートデビルXor2XOR16+20
ハバクXor3+0+24
バトルトラックXor3XOR16+28

マシンカラー2ポジション8ポジション
Xor20+0
緑色XOR16+1
Xor28+2
Xor4+4
グリッチ(ピンク-酸性-緑色)+0+5
黄色Xor12+6

エンジン1ポジション10ポジション11ポジション
1+0+0+16
2Xor4+0+0
3Xor8+1+16
4Xor12+1+0

タイヤ1ポジション4ポジション10ポジション
1+0+0+6
2XOR16+0+4
3+0XOR16+2
4XOR16XOR16+0

アーマー3位9ポジション
1Xor4+1
2+0+0
3Xor12+3
4Xor8+2

ペンダント3位10ポジション
1+0+8
2Xor1+0
3Xor2+24
4Xor3+16

ニトロ/ジャンプ1ポジション2ポジション11ポジション
0+0+0+8
1+0XOR16+10
2Xor1+0+12
3Xor1XOR16+14
4Xor2+0+0
5Xor2XOR16+2
6Xor3+0+4
7Xor3XOR16+6

スパイク/鉱山2ポジション11ポジション12ポジション
0+0+1+0
1Xor2+1+8
2Xor4+1+16
3XOR6+1+24
4Xor8+0+0
5XOR10+0+8
6Xor12+0+16
7XOR14+0+24

ミサイル/弾薬2ポジション3位12ポジション
0+0+0+0
1+0Xor8+1
2+0XOR16+2
3+0Xor24+3
4Xor1+0+4
5Xor1Xor8+5
6Xor1XOR16+6
7Xor1Xor24+7

惑星1ポジション7ポジション8ポジション
沼地+0+1+0
新しいモハベXor1+1+8
Chem VIXor2+1+16
ドラコニスXor3+1+24
グリッチXor4+0+0
グリッチXor5+0+8
ニョXOR6+0+16
インフェルノXor7+0+24

キャラクター1ポジション3位4ポジション7ポジション
タルキム+0Xor1XOR16+0
ジェイクバッドランスXOR16Xor1XOR16+4
グリッチ+0Xor1+0+8
オラフ(秘密のキャラクター)XOR16Xor1+0+12
サイバーホーク+0+0XOR16+16
ヘビのサンダーXOR16+0XOR16+20
カタリーナライオンズ+0+0+0+24
イヴァンザイファーXOR16+0+0+28


ここで、金額からポジションがどのように変化するかを見てみましょう。

X 1z。 X 2z。 X 3秒。 X 4z。 000ドル

金額を1000で除算し、残りをポジションの変化を決定する必要があります。

1ポジション= XOR(x $ div 200)
2ポジション= XOR(x $ div 100が偶数の場合は3s。+ 0、奇数の場合は+16)
3ポジション= XOR(4z。* 2)
4番目の位置= XOR(x $ div 400)
5番目の位置=((x $ div 100)mod4)XOR((x $ div 20)mod5)
(↓)
(結果の数値は変換されます)
に従って
0→13
1→5
2→29
3→21

6番目の位置=((x $ div 10)mod2)XOR 4z。
(↓)
(結果の数値は変換されます)
に従って
0→12
1→28

コーディング

位置の文字は、値「BCDFGHJKLMNPQRSTVWXYZ0123456789!」を取ります。ここで、B = 0、C = 1 ... 9 = 30 、! = 31です。

パスワード生成の例
これらのパラメーターを保存するパスワードを作成します。
  • 難易度(ベテラン)
  • 部門(A)
  • 車(汚れた悪魔)
  • マシンカラー(赤)
  • 惑星(ニューモハベ)
  • キャラクター(サイバーホーク)
  • アーマー(1)
  • エンジン(3)
  • ペンダント(2)
  • タイヤ(4)
  • スパイク/鉱山(5)
  • ニトロ/ジャンプ(3)
  • ミサイル/弾薬(7)
  • お金($ 1,257,000)

お金を計算します:
1257000/1000 = 1257
1ポジション= 1257 div 200 = 6 = XOR6
2ポジション= 5+(1257 div 100)= 5 + 12(数値が偶数であるため+0)= 5 + 0 = XOR5
3ポジション= 7 * 2 = 14 = XOR14
4ポジション= 1257 div 400 = 3 = XOR3
5ポジション=((1257 div 100)mod4 = 0→13。13XOR(1257 div 20)mod5 = 13 XOR 2 = 15
6ポジション=((1257 div 10)mod2 = 1→28.28 XOR 7 = 27

次に、位置の値をテーブルに書き込みます。
* p。-位置。
1ページ2ページ3ページ4ページ5ページ6ページ7ページ8ページ9ページ10ページ11ページ12ページ
XOR6Xor5XOR14Xor31527+1+8+20+1+16+8
Xor8Xor2XOR16Xor1+0+0+16+0+1+0+14+7
Xor8Xor20Xor4XOR16+0+0+0+0+0+0+0+0
Xor8XOR10Xor1XOR16+0+0+0+0+0+0+0+0
XOR16XOR16Xor24+0+0+0+0+0+0+0+0+0
Xor1Xor1+0+0+0+0+0+0+0+0+0+0
Xor1+0+0+0+0+0+0+0+0+0+0+0


必要な計算を行い、以下を取得します。
30,8,3,2 15,27,17,8 21,1,30,15

次の行をエンコードします。

9LFD T6WL 0C9T


おわりに

さて、ロックンロールレーシングと混同しないでください。 読んでくれてありがとう。

Source: https://habr.com/ru/post/J304160/


All Articles